mirror of
https://github.com/alexhopeoconnor/dnsmasq-webui.git
synced 2026-10-04 04:18:13 +10:00
- Dnsmasq page: Config (Main config, Managed file, Config set) under Service configuration; remove Paths/Leases (in Effective config DHCP); EffectiveConfigSection collapsible groups; StatusSection flex-wrap - Hosts: HostsFileSection always shows table; 'No host entries' in tbody when empty - Models: reorganize into sub-namespaces (Config, EffectiveConfig, Hosts, Dhcp, Status); move EffectiveConfig/Status/Logs components under Dnsmasq - Test harness: prepare-test-mount.sh runs 'docker compose down' before mount+up so all containers (including DHCP clients) restart; exclude testdata/leases from sync (unit tests only); testdata/README
# Test data Source for the Docker test harness: `scripts/prepare-test-mount.sh` syncs this dir to `testdata-mount/`, which is bind-mounted as `/data`. Unit tests use the copy in the test output dir (copied at build via the .csproj). ## Layout | File / dir | Purpose | |------------|--------| | **dnsmasq-test.conf** | Harness main config (`/data/dnsmasq-test.conf`). DNS + DHCP; `conf-dir=/data/dnsmasq.d`, multiple server/addn-hosts/address/dhcp-range. | | **dnsmasq.conf** | Minimal main (conf-dir only). Used by unit tests when conf-dir is absent. | | **dnsmasq.conf.example** | Commented example; not used by harness or tests. | | **dnsmasq.d/** | Included configs (alphabetical order). | | **dnsmasq.d/01-other.conf** | `domain=local`. Not managed. | | **dnsmasq.d/02-servers.conf** | Extra `server=` / `local=` (readonly in UI). | | **dnsmasq.d/03-more.conf** | `resolv-file=`, `dhcp-option=`. Not managed. | | **dnsmasq.d/dhcp.conf** | `dhcp-host=`; managed by app in real use, used as-is in harness. | | **hosts** | First addn-hosts file; system hosts when `Dnsmasq:SystemHostsPath` points here. | | **hosts.extra** | Second addn-hosts file. | | **resolv.dnsmasq** | Minimal file for resolv-file= in 03-more.conf; must exist so dnsmasq does not fail/warn. | | **leases** | Sample DHCP leases for unit tests only; not synced to the harness. The harness uses the path from config (`dhcp-leasefile=` in dnsmasq-test.conf); the app discovers and monitors that file; dnsmasq creates it when DHCP clients obtain addresses. | Harness usage (start/stop/tidy): see **agents.md** in the repo root.