mirror of
https://github.com/rzuasti/oott.git
synced 2026-07-08 19:21:54 +02:00
Add passive mDNS/Bonjour discovery scanner
Introduce a second discovery module that passively listens for mDNS multicast announcements (224.0.0.251:5353) and feeds discovered devices into the existing devices/events/notifications pipeline, running in its own task alongside the ARP scanner. Since mDNS carries an IP and hostname but no MAC (the device key), the module resolves IP->MAC via the OS ARP cache with a targeted ARP-probe fallback. The advertised hostname is stored in a new optional `name` column on devices (blank for ARP-only devices); the single `update` writes `name` only when set so ARP rescans never clobber it. Device names are included in event/notification messages. Adds a GET /api/mdns_scanner/status endpoint (is_listening, devices_seen, last_device_seen_seconds_ago) wired into OpenAPI, an optional [mdns_scanner] config section, and the corresponding Nix module option. Also aligns the Nix module's stale `timings` section with the current `arp_scanner` schema. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
2fe850c070
commit
ca83009944
@@ -28,6 +28,19 @@ pub struct ArpScanner {
|
||||
pub scan_duration: DurationString,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize, Clone)]
|
||||
pub struct MdnsScanner {
|
||||
pub probe_timeout: DurationString,
|
||||
}
|
||||
|
||||
impl Default for MdnsScanner {
|
||||
fn default() -> Self {
|
||||
MdnsScanner {
|
||||
probe_timeout: DurationString::try_from("2s".to_string()).unwrap(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize, Clone)]
|
||||
pub struct Pushover {
|
||||
pub token: String,
|
||||
@@ -71,6 +84,8 @@ pub struct Settings {
|
||||
pub web_server: WebServer,
|
||||
#[serde(default)]
|
||||
pub retention: Retention,
|
||||
#[serde(default)]
|
||||
pub mdns_scanner: MdnsScanner,
|
||||
}
|
||||
// End configuration structure
|
||||
// -----------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user