mirror of
https://github.com/alexhopeoconnor/dnsmasq-webui.git
synced 2026-10-03 22:12:00 +10:00
- EffectiveDnsmasqConfig: overridable single-value options (no-hosts, addn-hosts, flags, dhcp-leasefile, cache-size, port, etc.) from dnsmasq source/docs. - Hosts UI: allow editing when no-hosts but SystemHostsPath is in addn-hosts; HostsController and Hosts.razor check pathInAddnHosts. - Config comments: managed file ensures one addn-hosts line in our file only; DnsmasqOptions/validator docs for SystemHostsPath and addn-hosts. - Test harness: dnsmasq logs to /data/dnsmasq.log (log-facility + log-queries in dnsmasq-test.conf); entrypoint touches log file for write access. - dnsmasq-status.sh: simulates systemctl status output in container (ps/pgrep); Dockerfile copies and chmod +x; StatusShowCommand/LogsCommand use script and tail /data/dnsmasq.log. - Project: Models/Config namespace, typed HTTP clients, combined DHCP+Leases page, ProcessRunner, shared models (PascalCase).
51 lines
1.8 KiB
YAML
51 lines
1.8 KiB
YAML
# Run the app with real dnsmasq and a DHCP client so hosts/leases are real.
|
||
# Prepare mount: ./scripts/prepare-test-mount.sh [--prepare-only | --no-build | --recreate | --source DIR | --mount DIR]
|
||
# Or set TESTDATA_MOUNT to override the data volume (default: ./testdata-mount).
|
||
#
|
||
# No systemd in container (dnsmasq runs as a process from entrypoint, like most dnsmasq images).
|
||
# StatusShowCommand/LogsCommand use ps so the Service status / Recent logs sections show something
|
||
# (process info). On a host with systemd you'd use systemctl status dnsmasq and journalctl instead.
|
||
# cap_add NET_ADMIN for dnsmasq.
|
||
#
|
||
# Networks: testnet 172.28.0.0/16 so dnsmasq can hand out 172.28.0.10–50.
|
||
services:
|
||
app:
|
||
build:
|
||
context: .
|
||
ports:
|
||
- "8080:8080"
|
||
cap_add:
|
||
- NET_ADMIN
|
||
environment:
|
||
DNSMASQ_CONF: /data/dnsmasq-test.conf
|
||
Dnsmasq__MainConfigPath: /data/dnsmasq-test.conf
|
||
Dnsmasq__ManagedFileName: zz-dnsmasq-webui.conf
|
||
Dnsmasq__SystemHostsPath: /data/hosts
|
||
Dnsmasq__ReloadCommand: "pkill -HUP -x dnsmasq"
|
||
Dnsmasq__StatusCommand: "pgrep -x dnsmasq"
|
||
# Simulated systemctl status + real logs (dnsmasq logs to /data/dnsmasq.log via log-facility in dnsmasq-test.conf)
|
||
Dnsmasq__StatusShowCommand: "/app/dnsmasq-status.sh"
|
||
Dnsmasq__LogsCommand: "tail -n 100 /data/dnsmasq.log 2>/dev/null || echo '(no log file yet)'"
|
||
volumes:
|
||
- ${TESTDATA_MOUNT:-./testdata-mount}:/data
|
||
networks:
|
||
testnet:
|
||
ipv4_address: 172.28.0.2
|
||
# no depends_on: app is the only service the client needs
|
||
|
||
dhcp-client:
|
||
image: alpine:3.20
|
||
command: ["sh", "-c", "sleep 5 && udhcpc -i eth0 -f -n"]
|
||
networks:
|
||
testnet: {}
|
||
depends_on:
|
||
- app
|
||
|
||
networks:
|
||
testnet:
|
||
driver: bridge
|
||
ipam:
|
||
config:
|
||
- subnet: 172.28.0.0/16
|
||
gateway: 172.28.0.1
|