Add per-scanner enable/disable configuration

Each scanner (ARP, mDNS, SSDP/UPnP, DHCP) can now be turned off via an
`enabled` flag in its config section, defaulting to true so existing
deployments are unchanged. A disabled scanner's entry function returns
early and never starts.

Documented in the README options table (also fixing the stale `timings.*`
key names to the actual `arp_scanner.*` keys), and added to the TOML
samples and the NixOS module.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
rzuasti
2026-06-01 19:00:56 -04:00
co-authored by Claude Opus 4.8
parent 4e975598f9
commit 08ee4fc0ea
9 changed files with 160 additions and 30 deletions
+20
View File
@@ -31,6 +31,11 @@ in {
description = "Log level for the oott service";
default = "info";
};
arp_scanner.enabled = mkOption {
type = types.bool;
description = "Whether to run the ARP scanner.";
default = true;
};
arp_scanner.wait_between_scans = mkOption {
type = types.str;
description = "Wait time between scans. This does not include the scan time.";
@@ -46,16 +51,31 @@ in {
description = "How long to wait for response packets on each scan (5m to 10m is a good timeframe for a class B or C network).";
default = "10m";
};
mdns_scanner.enabled = mkOption {
type = types.bool;
description = "Whether to run the mDNS/Bonjour scanner.";
default = true;
};
mdns_scanner.probe_timeout = mkOption {
type = types.str;
description = "When an mDNS-discovered IP is not in the OS ARP cache, how long to wait for a targeted ARP probe reply to resolve its MAC address.";
default = "2s";
};
ssdp_scanner.enabled = mkOption {
type = types.bool;
description = "Whether to run the SSDP/UPnP scanner.";
default = true;
};
ssdp_scanner.probe_timeout = mkOption {
type = types.str;
description = "When an SSDP/UPnP-discovered IP is not in the OS ARP cache, how long to wait for a targeted ARP probe reply to resolve its MAC address.";
default = "2s";
};
dhcp_scanner.enabled = mkOption {
type = types.bool;
description = "Whether to run the DHCP scanner.";
default = true;
};
notifications.method = mkOption {
type = types.str;
description = "For now just pushover, you can set this to none to avoid sending notifications (it will just log).";