From e32499b7f6d1d23aa0155a882c4d4009bfddf996 Mon Sep 17 00:00:00 2001 From: Jared Vititoe Date: Wed, 4 Nov 2026 23:40:17 -0500 Subject: [PATCH] Add AT&T modem monitoring and device pages; replace Link Debug Modem and WAN: - Poll the BGW320 status pages read-only for light levels, PON and WAN state, with a WAN / Fiber panel, 7-day Rx trend, and alerts on WAN down, optical limits, and Rx drift - Read WAN outages and Smart Power restarts from the UniFi system log, since outages can be over between 5 minute polls Device pages: - Add device search to the dashboard and a page per host, switch, router, AP, PDU, or modem - Move all Link Debug data into expandable rows there; /links redirects - Collect UDM ports and UniFi device details (firmware, load, WAN, outlets) - Reorder the dashboard Monitoring fixes: - Alert when a configured host stops reporting: its series disappear rather than reporting down, so a dead host never raised an alert - Alert on Prometheus outages instead of blanking the dashboard - Treat a failed Pulse ping as unknown rather than host unreachable - Stop new switch ports reporting lifetime bytes as one interval's rate - Run database sessions in UTC: other server time zones shifted displayed ages and timed suppression expiries Also log every avatar 404 reason, add a favicon, and correct the WAN link labels (1G on Port 9, not 10G SFP+). Co-Authored-By: Claude Opus 5.5 --- README.md | 129 ++++-- app.py | 82 +++- db.py | 95 +++++ devices.py | 153 +++++++ docs/img/link-debug-sfp-warning.png | Bin 50541 -> 0 bytes docs/img/link-debug-sfp.png | Bin 72442 -> 0 bytes docs/img/link-debug-switch.png | Bin 211071 -> 0 bytes docs/img/link-debug.png | Bin 148277 -> 0 bytes modem.py | 287 +++++++++++++ monitor.py | 572 ++++++++++++++++++++++++-- schema.sql | 9 + scripts/demo/capture.py | 21 +- static/app.js | 262 +++++++++++- static/device.js | 454 +++++++++++++++++++++ static/style.css | 85 ++++ templates/_modem_panel.html | 12 + templates/base.html | 15 +- templates/device.html | 25 ++ templates/index.html | 289 ++++++++------ templates/inspector.html | 1 + templates/links.html | 598 ---------------------------- tests/test_app.py | 93 +++++ tests/test_devices.py | 127 ++++++ tests/test_modem.py | 257 ++++++++++++ tests/test_monitor.py | 375 +++++++++++++++++ 25 files changed, 3120 insertions(+), 821 deletions(-) create mode 100644 devices.py delete mode 100644 docs/img/link-debug-sfp-warning.png delete mode 100644 docs/img/link-debug-sfp.png delete mode 100644 docs/img/link-debug-switch.png delete mode 100644 docs/img/link-debug.png create mode 100644 modem.py create mode 100644 static/device.js create mode 100644 templates/_modem_panel.html create mode 100644 templates/device.html delete mode 100644 templates/links.html create mode 100644 tests/test_app.py create mode 100644 tests/test_devices.py create mode 100644 tests/test_modem.py create mode 100644 tests/test_monitor.py diff --git a/README.md b/README.md index 55b3c3b..b30b447 100644 --- a/README.md +++ b/README.md @@ -27,17 +27,7 @@ A Proxmox/Ceph cluster lives or dies by its network, and network problems are sn ![Host cards](docs/img/host-cards.png) -**Link debug**: per-interface speed, duplex, carrier flaps, error and drop rates, and **SFP optical readings** (temperature, TX/RX power) with colour-coded thresholds. Here a fibre with weak receive power is flagged while its neighbour is healthy. - -![Link debug](docs/img/link-debug.png) - -| Weak receive power on a fibre link | Healthy fibre link | -|---|---| -| ![SFP warning](docs/img/link-debug-sfp-warning.png) | ![SFP healthy](docs/img/link-debug-sfp.png) | - -Switch ports are shown too, with PoE draw and the LLDP neighbour on each port: - -![Switch ports](docs/img/link-debug-switch.png) +**Device pages**: search by hostname, IP, MAC, model or interface from the dashboard, then open one page per host, switch, router, PDU or modem. Each interface or port is one row with its state, speed, traffic and neighbour. Expanding a row shows duplex, carrier flaps, error and drop rates, PoE, LLDP, and **SFP optical readings** (temperature, TX/RX power) with colour-coded thresholds. **Network inspector**: chassis diagrams for each UniFi switch. Click a port for its stats, LLDP neighbour and a side-by-side switch/server path check. @@ -83,6 +73,7 @@ Two processes share a MariaDB database: [UniFi Controller] ──▶ monitor.py ──▶ MariaDB ◀── app.py ──▶ nginx ──▶ Authelia ──▶ Browser [Pulse Worker] ──▶ [SSH / ethtool] ──▶ +[AT&T BGW320] ──▶ ``` ### Data Sources @@ -93,6 +84,7 @@ Two processes share a MariaDB database: | **UniFi API** (`https://10.10.10.1`) | Switch port stats, device status, LLDP neighbor table, PoE data | | **Pulse Worker** | SSH relay — runs `ethtool` + SFP DOM queries on each Proxmox host | | **Ping** | Reachability for hosts without `node_exporter` (e.g. PBS) | +| **AT&T BGW320** (`http://192.168.1.254`) | Fiber light levels, PON and WAN state, WAN counters, scraped read-only from the gateway's status pages (no login) | ### Monitored Hosts (Prometheus / node_exporter) @@ -112,31 +104,35 @@ Ping-only (no node_exporter): **pbs** (10.10.10.3) ## Pages ### Dashboard (`/`) +- Device search (see Device pages below) +- Active alerts first, then the WAN / Fiber panel, hosts, UniFi devices, topology, and recently resolved alerts - Real-time host status grid with per-NIC link state (UP / DOWN / degraded) -- Network topology diagram (Internet → Gateway → Switches → Hosts) +- Network topology diagram (Internet → Modem → Gateway → Switches → Hosts) +- WAN / Fiber panel: WAN and PON state, Rx/Tx power, optics temperature, throughput, errors, gateway uptime and last restart, 7-day Rx trend, recent WAN outages - UniFi device table (switches, APs, gateway) - Active alerts table with severity, target, consecutive failures, ticket link - Quick-suppress modal: apply timed or manual suppression from any alert row - Auto-refreshes every 30 seconds via `/api/status` + `/api/network` -### Link Debug (`/links`) -Per-interface statistics collected every poll cycle. All panels are collapsible -(click header or use Collapse All / Expand All). Collapse state persists across -page refreshes via `sessionStorage`. +### Device pages (`/device/`) +One page per host, switch, router, AP, PDU, or modem. Reach them from the search box on the +dashboard (`/` focuses it), or from any device name. Search matches hostname, IP, MAC, model, type, +interface and port names, and LLDP neighbors. -**Server NICs** (via Prometheus + SSH/ethtool): -- Speed, duplex, auto-negotiation, link detected -- TX/RX rate bars (bandwidth utilisation % of link capacity) -- TX/RX error and drop rates per second -- Carrier changes (cumulative since boot — watch for flapping) -- **SFP / Optical panel** (when SFP module present): vendor/PN, temp, voltage, - bias current, TX power (dBm), RX power (dBm), RX−TX delta, per-stat bars +- **Overview**: status, IP, MAC, model, firmware, uptime, CPU, memory, clients, temperatures, power draw +- **Alerts**: active and past alerts for this device +- **WAN** (routers): connection state, speed, latency, availability +- **Connected to** (hosts): switch ports that see this host over LLDP +- **Outlets** (PDUs): per-outlet state, power, and auto power-cycle setting +- **Interfaces / Ports**: one row each with state, speed, RX/TX rate, and neighbor, filterable. + Expanding a row shows duplex, auto-negotiation, carrier changes, error and drop rates, + traffic bars, PoE, LLDP detail, and the **SFP / optical panel** (vendor/PN, temperature, voltage, + bias, TX/RX power, RX−TX delta) +- **WAN / Fiber** (modem): the same panel as the dashboard -**UniFi Switch Ports** (via UniFi API): -- Port number badge (`#N`), UPLINK badge, PoE draw badge -- LLDP neighbor line: `→ system_name (port_id)` when neighbor is detected -- PoE class and max wattage line -- Speed, duplex, auto-neg, TX/RX rates, errors, drops +These replaced the Link Debug page; `/links` now redirects to the dashboard. Hosts that Prometheus +sees but `config.json` doesn't list still get a page, with their state shown as unknown because +they aren't alerted on. ### Inspector (`/inspector`) Visual switch chassis diagrams. Each switch is rendered model-accurately using @@ -174,6 +170,7 @@ layout config in the template (`SWITCH_LAYOUTS`). | `USL8A` | UniFi Switch Lite 8 PoE | 8×SFP (2 rows of 4) | | `US24PRO` | UniFi Switch Pro 24 | 24×RJ45 staggered + 2×SFP | | `USPPDUP` | Custom/other | Single-port fallback | +| `UDMPRO` | Dream Machine Pro | 9×RJ45 + 2×SFP+ | | `USMINI` | UniFi Switch Mini | 5-port row | Add new layouts by adding a key to `SWITCH_LAYOUTS` matching the `model` field @@ -197,7 +194,32 @@ returned by the UniFi API for that device. | UniFi device offline (≥`unifi_failure_threshold` consecutive checks) | P2 High | | Proxmox host NIC link-down regression (≥2 consecutive checks) | P2 High | | Host unreachable via ping (≥2 consecutive checks) | P2 High | -| ≥3 hosts simultaneously reporting interface failures | P1 Critical | +| Configured host has no metrics in Prometheus (host or `node_exporter` down, ≥2 consecutive checks) | P2 High | +| Prometheus unavailable, so host and interface alerting is paused (≥2 consecutive checks) | P2 High | +| ≥3 hosts simultaneously reporting interface or metrics failures | P1 Critical | +| WAN down: broadband or optical status not Up, or PON not in O5 (≥`modem.failure_threshold`) | P1 Critical | +| Modem not responding (≥`modem.failure_threshold`) | P2 High | +| Fiber Rx/Tx power or optics temperature in the module's alarm range, or a supply voltage or Tx bias alarm flag (≥`modem.failure_threshold`) | P2 High | +| Fiber reading in the module's warning range (≥`modem.failure_threshold`) | P3 | +| Rx power `rx_drift_db` or more below its 7-day median (≥`modem.failure_threshold`) | P3 | +| Modem pages unreadable, e.g. after a firmware update (≥`modem.failure_threshold`) | P3 | +| UniFi logs that Smart Power auto power-cycled the modem | P3 | +| UniFi logs that the WAN failed multiple times in 24 hours (at most one ticket a day) | P2 | + +A failed Pulse ping check counts as "unknown": it neither raises nor resolves `host_unreachable`. + +### WAN modem notes + +The alarm and warning limits are read from the gateway on every poll, so they are never hard-coded here. +Those limits are wide (warning at -27.9 dBm on a link that normally sits near -17), so `fiber_rx_drift` +compares each reading to the link's own 7-day median to catch a damaged connector earlier. It stays quiet +until `rx_drift_min_samples` readings exist (about a day at a 5 minute poll). + +Outages can be over between polls: two real ones lasted about two minutes against a 5 minute poll. +So WAN outages and modem restarts also come from the UniFi system log, and a drop in the modem's uptime +records a restart even if nothing logged it. A single short outage only appears in the panel's history. + +To silence modem alerts during maintenance, create a `host` suppression with the modem's `name`. ### Baseline Tracking @@ -269,6 +291,10 @@ Shared by both processes. Located in the working directory (`/var/www/html/prod/ "ping_hosts": [ { "name": "pbs", "ip": "10.10.10.3" } ] + }, + "modem": { + "url": "http://192.168.1.254", + "name": "att-modem" } } ``` @@ -293,6 +319,12 @@ Shared by both processes. Located in the working directory (`/var/www/html/prod/ | `monitor.unifi_failure_threshold` | Consecutive failures before ticketing a UniFi device as offline (default: same as `failure_threshold`). Set higher than `failure_threshold` — UniFi switches/APs can take several minutes to rejoin after a firmware-update reboot, so a low threshold cuts tickets for momentary maintenance reboots instead of real failures. | | `monitor.cluster_threshold` | Hosts with failures to trigger cluster-wide P1 (default: 3) | | `monitor.ping_hosts` | Hosts checked only by ping (no node_exporter) | +| `modem.url` | AT&T gateway base URL. Omit the `modem` block to disable modem monitoring. Must be reachable from the monitor host. | +| `modem.name` | Name used for the modem's alerts, tickets, and suppressions (default: `att-modem`) | +| `modem.timeout` | Seconds to wait per status page (default: 10) | +| `modem.failure_threshold` | Consecutive failures before ticketing a modem alert (default: same as `failure_threshold`). Raise it if gateway reboots or automatic firmware updates cut tickets. | +| `modem.rx_drift_db` | Rx drop below the 7-day median that raises `fiber_rx_drift` (default: 3.0) | +| `modem.rx_drift_min_samples` | Readings required before drift alerts start (default: 288) | --- @@ -409,17 +441,28 @@ systemctl restart gandalf gandalf-monitor ## Troubleshooting +### Avatar photo missing (`/api/avatar` returns 404) +`journalctl -u gandalf | grep -i avatar` gives the reason: `no ldap.host / ldap.bind_dn` (missing config), +`ldap3 not installed` (run `pip3 install -r requirements.txt`), `LDAP avatar lookup failed` (bind or network), +`LDAP has no photo` (or `Remote-User` doesn't match a uid), or a cached `no photo` marker, which expires +after `ldap.cache_ttl` seconds or can be removed from `ldap.cache_dir`. + ### Monitor not creating tickets - Verify `config.json → ticket_api.api_key` is set and valid - Check `journalctl -u gandalf-monitor` for `Ticket creation failed` lines - Confirm the Tinker Tickets API is reachable from LXC 157 -### Link Debug shows no data / "Loading…" forever +### WAN / Fiber panel missing or showing "unavailable" +- The panel stays hidden until `config.json → modem.url` is set and the monitor has completed a cycle +- Test from the monitor host: `curl -s -o /dev/null -w '%{http_code}\n' http://192.168.1.254/cgi-bin/fiberstat.ha` should print `200` +- `modem_data_invalid` means the gateway answered but its pages couldn't be parsed. AT&T updates firmware automatically, so compare the page against the parsers in `modem.py` (markup confirmed on BGW320-505 firmware 6.35.8) + +### Device pages show no interface data - Check `gandalf-monitor.service` is running and has completed at least one cycle - Check `journalctl -u gandalf-monitor` for Prometheus or UniFi errors - Verify Prometheus is reachable: `curl http://10.10.10.48:9090/api/v1/query?query=up` -### Link Debug: SFP DOM panel missing +### Device page: SFP / optical panel missing - SFP data requires Pulse worker + SSH access to hosts - Verify `config.json → pulse.*` is configured and the Pulse worker is running - Confirm `sshpass` + SSH access from the Pulse worker to each Proxmox host @@ -467,17 +510,21 @@ curl http://10.10.10.48:9090/api/v1/query?query=up | jq '.data.result[] | select gandalf/ ├── app.py # Flask web app (routes, auth, API endpoints) ├── monitor.py # Background daemon (Prometheus, UniFi, Pulse, alert logic) +├── modem.py # Read-only AT&T gateway status page client and parser +├── devices.py # Device inventory for search and device pages ├── db.py # Database operations (MariaDB via pymysql, thread-local conn reuse) ├── schema.sql # Database schema (network_events, suppression_rules, monitor_state) ├── config.json # Runtime configuration (not committed with secrets) ├── requirements.txt # Python dependencies ├── static/ │ ├── style.css # Terminal aesthetic CSS (CRT scanlines, green-on-black) -│ └── app.js # Dashboard JS (auto-refresh, host grid, events, suppress modal) +│ ├── app.js # Dashboard JS (auto-refresh, events, suppress modal, search, modem panel) +│ └── device.js # Device page rendering └── templates/ ├── base.html # Shared layout (header, nav, footer) ├── index.html # Dashboard page - ├── links.html # Link Debug page (server NICs + UniFi switch ports) + ├── device.html # Per-device page + ├── _modem_panel.html # WAN / Fiber panel, shared by the dashboard and modem page ├── inspector.html # Visual switch inspector + LLDP path debug └── suppressions.html # Suppression management page ``` @@ -511,7 +558,10 @@ under `unifi_switches..model`), then add to `SWITCH_LAYOUTS` in - `network_events`: one row per active event; `resolved_at` is set when recovered - `suppression_rules`: `active=FALSE` when removed; `expires_at` checked at query time -- `monitor_state`: key/value store; `interface_baseline` and `link_stats` are JSON blobs +- `monitor_state`: key/value store; `interface_baseline`, `link_stats`, and `modem_stats` are JSON blobs +- `monitor_state` also holds `wan_history` (WAN outages, modem restarts) and `unifi_log_cursor` (how far the UniFi log has been read) +- Database sessions run in UTC (`db.py`), whatever the server's time zone +- `modem_samples`: optical readings per poll, kept 90 days; created automatically at monitor startup ### Security Notes @@ -547,11 +597,16 @@ under `unifi_switches..model`), then add to `SWITCH_LAYOUTS` in |---|---|---| | `lint.yml` (python-lint) | flake8 on all `.py` files | Every push and PR | | `lint.yml` (js-lint) | ESLint on `static/` | Every push and PR | -| `test.yml` | pytest — 33 tests for `diagnose.py` static methods | Every push and PR | +| `test.yml` | pytest — `diagnose.py`, `modem.py`, and `monitor.py` alert logic | Every push and PR | | `security.yml` | bandit `-ll` (medium+ severity) | Every push, PR, and weekly Monday 6am | | `deploy` job in `lint.yml` | Calls the `gandalf-deploy` webhook on CT157 (10.10.10.61) | Push to `main` only, after both lint jobs pass | Branch protection is enabled on `main` — both lint jobs must pass before any PR can merge. -Tests live in `tests/test_diagnose.py` and cover `DiagnosticsRunner` static methods: -`build_ssh_command`, `parse_output`, `parse_sysfs_stats`, `parse_ethtool`, and variants. +Tests live in `tests/`: +- `test_diagnose.py`: `DiagnosticsRunner` static methods (`build_ssh_command`, `parse_output`, + `parse_sysfs_stats`, `parse_ethtool`, and variants) +- `test_modem.py`: gateway page parsing, optical status, and WAN state +- `test_monitor.py`: alert logic for dead hosts, Prometheus and Pulse outages, and modem and WAN log events +- `test_devices.py`: device inventory behind search and device pages +- `test_app.py`: page and API routes diff --git a/app.py b/app.py index d208004..8d452ae 100644 --- a/app.py +++ b/app.py @@ -18,9 +18,10 @@ import uuid from datetime import datetime, timezone from functools import wraps -from flask import Flask, jsonify, make_response, render_template, request, send_file +from flask import Flask, jsonify, make_response, redirect, render_template, request, send_file, url_for import db +import devices import diagnose from monitor import PulseClient @@ -196,6 +197,18 @@ def _annotate_suppressions(events: list, suppressions: list) -> None: ev['is_suppressed'] = db.check_suppressed(suppressions, 'host', name, detail) +def _state_json(key: str) -> dict: + """Return a monitor_state JSON blob as a dict, or {} if missing or unreadable.""" + raw = db.get_state(key) + if not raw: + return {} + try: + return json.loads(raw) + except Exception as e: + logger.error(f'Failed to parse {key} JSON: {e}') + return {} + + # --------------------------------------------------------------------------- # Page routes # --------------------------------------------------------------------------- @@ -235,8 +248,14 @@ def index(): @app.route('/links') @require_auth def links_page(): - user = _get_user() - return render_template('links.html', user=user) + """Link Debug moved to the per-device pages; keep old bookmarks working.""" + return redirect(url_for('index')) + + +@app.route('/device/') +@require_auth +def device_page(name: str): + return render_template('device.html', user=_get_user(), device_name=name) @app.route('/inspector') @@ -315,6 +334,60 @@ def api_links(): return jsonify({'hosts': {}, 'unifi_switches': {}, 'updated': None}) +@app.route('/api/modem') +@require_auth +def api_modem(): + """Latest WAN modem status plus optical history for the trend chart.""" + try: + hours = max(1, min(int(request.args.get('hours', 168)), 2160)) + except ValueError: + return jsonify({'error': 'hours must be an integer'}), 400 + + raw = db.get_state('modem_stats') + if not raw: + return jsonify({'configured': False}) + try: + data = json.loads(raw) + except Exception as e: + logger.error(f'Failed to parse modem_stats JSON: {e}') + return jsonify({'configured': False}) + + # A history failure shouldn't take the current readings down with it. + try: + # Keep roughly 200 points regardless of range; never finer than the 5 min poll. + data['history'] = db.get_modem_history(hours, max(300, hours * 3600 // 200)) + except Exception as e: + logger.error(f'Failed to load modem history: {e}') + data['history'] = [] + data['wan_history'] = _state_json('wan_history') + data['configured'] = True + return jsonify(data) + + +@app.route('/api/devices') +@require_auth +def api_devices(): + """Device list for the home page search.""" + return jsonify({'devices': devices.build_index( + _state_json('network_snapshot'), _state_json('link_stats'), _state_json('modem_stats'), + )}) + + +@app.route('/api/device/') +@require_auth +def api_device(name: str): + """Everything known about one device, for its detail page.""" + detail = devices.device_detail( + name, _state_json('network_snapshot'), _state_json('link_stats'), _state_json('modem_stats'), + ) + if detail is None: + return jsonify({'error': f'No device named "{name}"'}), 404 + events = db.get_events_for_target(name) + _annotate_suppressions(events, db.get_active_suppressions()) + detail['events'] = events + return jsonify(detail) + + @app.route('/api/events') @require_auth def api_events(): @@ -559,6 +632,7 @@ def api_avatar(): ldap_cfg = _config().get('ldap', {}) if not ldap_cfg.get('host') or not ldap_cfg.get('bind_dn'): + logger.warning('Avatar unavailable: config.json has no ldap.host / ldap.bind_dn') return '', 404 # Build a safe cache filename from the username (alphanumeric + - _ .) @@ -589,6 +663,7 @@ def api_avatar(): # Skip LDAP if we already know this user has no avatar try: if os.path.exists(sentinel) and now - os.path.getmtime(sentinel) < cache_ttl: + logger.info(f'Avatar for {username!r}: cached "no photo" marker is still valid') return '', 404 except OSError: pass @@ -627,6 +702,7 @@ def api_avatar(): pass if not avatar_data or len(avatar_data) < 100: + logger.warning(f'Avatar for {username!r}: LDAP has no photo (or no user with that uid)') with open(sentinel, 'w'): pass return '', 404 diff --git a/db.py b/db.py index 08001ce..1e1a461 100644 --- a/db.py +++ b/db.py @@ -34,6 +34,9 @@ def _new_conn(cfg: dict): cursorclass=pymysql.cursors.DictCursor, connect_timeout=10, charset='utf8mb4', + # All app code treats database times as UTC. Without this, a server in another + # time zone shifts displayed ages and timed suppression expiries by its offset. + init_command="SET time_zone='+00:00'", ) @@ -145,6 +148,24 @@ def upsert_event( return cur.lastrowid, True, 1, None +def get_events_for_target(target_name: str, limit: int = 25) -> list: + """Return a device's events, unresolved first, then most recent.""" + with get_conn() as conn: + with conn.cursor() as cur: + cur.execute( + """SELECT * FROM network_events WHERE target_name=%s + ORDER BY resolved_at IS NOT NULL, COALESCE(resolved_at, last_seen) DESC + LIMIT %s""", + (target_name, limit), + ) + rows = cur.fetchall() + for r in rows: + for k in ('first_seen', 'last_seen', 'resolved_at'): + if r.get(k) and hasattr(r[k], 'isoformat'): + r[k] = r[k].isoformat() + 'Z' + return rows + + def resolve_event(event_type: str, target_name: str, target_detail: str = '') -> None: detail = target_detail or '' with get_conn() as conn: @@ -332,6 +353,80 @@ def purge_old_resolved_events(days: int = 90) -> int: return n +# --------------------------------------------------------------------------- +# WAN modem optical history +# --------------------------------------------------------------------------- + +def ensure_modem_schema() -> None: + """Create the modem history table so deploys need no manual migration.""" + with get_conn() as conn: + with conn.cursor() as cur: + cur.execute( + """CREATE TABLE IF NOT EXISTS modem_samples ( + sampled_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP PRIMARY KEY, + rx_power_dbm DECIMAL(5,1) NULL, + tx_power_dbm DECIMAL(5,1) NULL, + temp_c DECIMAL(5,1) NULL + ) ENGINE=InnoDB""" + ) + + +def record_modem_sample(rx_power_dbm, tx_power_dbm, temp_c) -> None: + with get_conn() as conn: + with conn.cursor() as cur: + cur.execute( + """INSERT INTO modem_samples (sampled_at, rx_power_dbm, tx_power_dbm, temp_c) + VALUES (NOW(), %s, %s, %s) + ON DUPLICATE KEY UPDATE rx_power_dbm=VALUES(rx_power_dbm), + tx_power_dbm=VALUES(tx_power_dbm), temp_c=VALUES(temp_c)""", + (rx_power_dbm, tx_power_dbm, temp_c), + ) + + +def get_modem_rx_values(days: int = 7) -> list: + """Return recent Rx power readings (dBm) for computing a drift baseline.""" + with get_conn() as conn: + with conn.cursor() as cur: + cur.execute( + """SELECT rx_power_dbm FROM modem_samples + WHERE rx_power_dbm IS NOT NULL + AND sampled_at > DATE_SUB(NOW(), INTERVAL %s DAY)""", + (days,), + ) + return [float(r['rx_power_dbm']) for r in cur.fetchall()] + + +def get_modem_history(hours: int = 168, bucket_seconds: int = 3600) -> list: + """Return optical history averaged into time buckets, oldest first.""" + with get_conn() as conn: + with conn.cursor() as cur: + cur.execute( + """SELECT FLOOR(UNIX_TIMESTAMP(sampled_at) / %s) * %s AS ts, + ROUND(AVG(rx_power_dbm), 1) AS rx_avg, + MIN(rx_power_dbm) AS rx_min, + ROUND(AVG(tx_power_dbm), 1) AS tx_avg, + ROUND(AVG(temp_c), 1) AS temp_avg + FROM modem_samples + WHERE sampled_at > DATE_SUB(NOW(), INTERVAL %s HOUR) + GROUP BY ts ORDER BY ts""", + (bucket_seconds, bucket_seconds, hours), + ) + return [ + {k: (float(v) if v is not None else None) for k, v in row.items()} + for row in cur.fetchall() + ] + + +def purge_old_modem_samples(days: int = 90) -> int: + with get_conn() as conn: + with conn.cursor() as cur: + cur.execute( + 'DELETE FROM modem_samples WHERE sampled_at < DATE_SUB(NOW(), INTERVAL %s DAY)', + (days,), + ) + return cur.rowcount + + def check_suppressed(suppressions: list, target_type: str, target_name: str, target_detail: str = '') -> bool: """Check suppression against a pre-loaded list (avoids per-call DB queries).""" for s in suppressions: diff --git a/devices.py b/devices.py new file mode 100644 index 0000000..6502c1c --- /dev/null +++ b/devices.py @@ -0,0 +1,153 @@ +"""Device inventory built from the monitor's cached state. + +Pure functions with no I/O: app.py passes in the JSON blobs the monitor stored, +so search and the per-device pages always agree about what a device is. +""" +import re +from typing import Dict, List, Optional + +# UniFi reports PDUs as switches or APs, so model codes take priority over type. +_PDU_MODELS = {'USPPDUP', 'UP6', 'USPDA2B'} +_KIND_BY_TYPE = { + 'usw': 'switch', 'udm': 'router', 'ugw': 'router', 'uxg': 'router', + 'uap': 'ap', 'usp': 'pdu', +} + + +def unifi_kind(unifi_type: str, model: str) -> str: + if model in _PDU_MODELS: + return 'pdu' + return _KIND_BY_TYPE.get((unifi_type or '').lower(), 'device') + + +def _mac_forms(mac: str) -> List[str]: + """Return a MAC with and without separators, so either spelling is searchable.""" + return [mac, re.sub(r'[^0-9a-fA-F]', '', mac)] if mac else [] + + +def _search_text(*parts) -> str: + flat = [] + for p in parts: + if isinstance(p, (list, tuple, set)): + flat.extend(str(x) for x in p if x) + elif p: + flat.append(str(p)) + return ' '.join(flat).lower() + + +def _port_neighbors(ports: dict) -> List[str]: + return [p['lldp']['system_name'] for p in ports.values() + if (p.get('lldp') or {}).get('system_name')] + + +def build_index(snapshot: dict, link_stats: dict, modem: Optional[dict]) -> List[dict]: + """Return every known device as {name, kind, status, ip, model, ..., search}.""" + snapshot = snapshot or {} + link_stats = link_stats or {} + devices: Dict[str, dict] = {} + + for name, host in (snapshot.get('hosts') or {}).items(): + link_ifaces = (link_stats.get('hosts') or {}).get(name) or {} + ifaces = sorted(set(host.get('interfaces') or {}) | set(link_ifaces)) + devices[name] = { + 'name': name, 'kind': 'host', 'status': host.get('status', 'unknown'), + 'ip': host.get('ip', ''), 'mac': '', 'model': '', 'source': host.get('source', ''), + 'interface_count': len(ifaces), + 'search': _search_text(name, host.get('ip'), 'host server', ifaces), + } + + # Prometheus also sees hosts that aren't in config.json, e.g. LXC app servers. + # They have link stats but no alerting, so their state is reported as unknown. + for name, ifaces in (link_stats.get('hosts') or {}).items(): + if name not in devices: + ip = next((i.get('host_ip') for i in ifaces.values() if i.get('host_ip')), '') + devices[name] = { + 'name': name, 'kind': 'host', 'status': 'unknown', 'ip': ip, 'mac': '', 'model': '', + 'source': 'prometheus', 'interface_count': len(ifaces), + 'search': _search_text(name, ip, 'host server', list(ifaces)), + } + + switches = link_stats.get('unifi_switches') or {} + for d in snapshot.get('unifi') or []: + name = d.get('name', '') + ports = (switches.get(name) or {}).get('ports') or {} + kind = unifi_kind(d.get('type', ''), d.get('model', '')) + devices[name] = { + 'name': name, 'kind': kind, 'status': 'up' if d.get('connected') else 'down', + 'ip': d.get('ip', ''), 'mac': d.get('mac', ''), 'model': d.get('model', ''), + 'source': 'unifi', 'interface_count': len(ports), + 'search': _search_text( + name, d.get('ip'), _mac_forms(d.get('mac', '')), d.get('model'), + d.get('type'), kind, list(ports), _port_neighbors(ports), + ), + } + + # A switch can have link stats while the device list is unavailable this cycle. + for name, sw in switches.items(): + if name not in devices: + ports = sw.get('ports') or {} + devices[name] = { + 'name': name, 'kind': unifi_kind('usw', sw.get('model', '')), 'status': 'unknown', + 'ip': sw.get('ip', ''), 'mac': '', 'model': sw.get('model', ''), + 'source': 'unifi', 'interface_count': len(ports), + 'search': _search_text(name, sw.get('ip'), sw.get('model'), list(ports), _port_neighbors(ports)), + } + + if modem and modem.get('name'): + name = modem['name'] + if not modem.get('reachable'): + status = 'unknown' + else: + status = 'down' if modem.get('wan_problems') else 'up' + devices[name] = { + 'name': name, 'kind': 'modem', 'status': status, + 'ip': modem.get('lan_ip', ''), 'mac': '', 'model': modem.get('model', ''), + 'source': 'modem', 'interface_count': 0, + 'search': _search_text( + name, modem.get('lan_ip'), modem.get('wan_ip'), modem.get('model'), + 'modem gateway fiber wan at&t att', + ), + } + + return sorted(devices.values(), key=lambda d: d['name'].lower()) + + +def uplinks_for_host(name: str, switches: dict) -> List[dict]: + """Find the switch ports whose LLDP neighbor is this host.""" + found = [] + for sw_name, sw in (switches or {}).items(): + for port_name, port in (sw.get('ports') or {}).items(): + lldp = port.get('lldp') or {} + if lldp.get('system_name') == name: + found.append({ + 'switch': sw_name, 'port': port_name, 'port_idx': port.get('port_idx'), + 'host_interface': lldp.get('port_id', ''), 'up': port.get('up', False), + 'speed_mbps': port.get('speed_mbps', 0), + }) + return found + + +def device_detail(name: str, snapshot: dict, link_stats: dict, modem: Optional[dict]) -> Optional[dict]: + """Return everything known about one device, or None if it doesn't exist.""" + match = next((d for d in build_index(snapshot, link_stats, modem) if d['name'] == name), None) + if match is None: + return None + link_stats = link_stats or {} + detail = {k: v for k, v in match.items() if k != 'search'} + switches = link_stats.get('unifi_switches') or {} + + if match['kind'] == 'host': + states = ((snapshot or {}).get('hosts') or {}).get(name, {}).get('interfaces') or {} + link_ifaces = (link_stats.get('hosts') or {}).get(name) or {} + interfaces = {i: {'state': s} for i, s in states.items()} + for iface, stats in link_ifaces.items(): + interfaces.setdefault(iface, {}).update(stats) + detail['interfaces'] = interfaces + detail['uplinks'] = uplinks_for_host(name, switches) + elif match['kind'] == 'modem': + pass # the page renders the shared WAN / Fiber panel from /api/modem + else: + detail['ports'] = (switches.get(name) or {}).get('ports') or {} + detail['info'] = (link_stats.get('unifi_devices') or {}).get(name) or {} + detail['updated'] = link_stats.get('updated') + return detail diff --git a/docs/img/link-debug-sfp-warning.png b/docs/img/link-debug-sfp-warning.png deleted file mode 100644 index b13687ed5d00fec2191c0685036db1bd38072c14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50541 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 A#{d8T diff --git a/docs/img/link-debug-sfp.png b/docs/img/link-debug-sfp.png deleted file mode 100644 index 37c1a8df76e19e4f2b7fc559c0f2b533aa092f8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72442 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

xf_rea@3w3{a^DQ71}*s~pMdna2}Wj9`+ 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

Or69 zWAWngz8);`D=Z_kw0QP>UrSe7nGwrCTQ4q5R`@J+tKrNceU8Mf-7fRGQ@lN8Z^6I7w! zK315nDM)mZc=-ngCbTpnzN_UR7x9kCu5D}`bQa?Z8!Qhoi4m58$M-N=-5-T+I)pF2 zUo~euUJgHJL&Ex5b@JZEOqZ9@-g0>MN!sw-WQpaK%v%pSCL`0Fu&a7&{%pW~xISPZ5bXQmZnFOu z5|^vp&|qV6fN$XfVr%z*Mn{WPxKe~)ouDo4N`ls&VtNV>*jrsh34Cqj&cA%6`AtLN zJBd@!vD=>Zg?#ED;_)&ZqTAknsZd}WqnqktudZmeS=EU%aPj3m1yZ3ix@M~sn-_wB%Z>#eWK^5cd zhsZ1F0ecj^6}?s*?k6b|Gs12pYb7yS}yhHGXh^Ph-CtQ&lV&s<<8HT*gBm= zrak>3qmF}twY?>;r-Z6ie_ZJ&_N*D&JHBsNV|6$zw|W2ghhnb7O_i!4zC@JifCpI z6Lbm>KM?>$GNM^rKI4n@9239Z^>3;yxPp9muN1lh=il-cl_UPaWF)7R?yr;b^#$3) zcL;=#K=8$fg+JzRb4TC5$HG8gn|ldc%PsB9e$Ls&&AElGzQCszj6Z9$n|}m5A7}dC zlyru);^vwJ44l!T=HP>=WIsfVj=VEpV9=ERyk=%hJ2Y(d-@Q$|K(s$!pMTsZ&5W$5FYVR-_r&J20n-?rcWMz>WOe&_HDD_|v26mu7&vIZxLA%-_2 zI9LSo9z?nhn-}a_q_O#SGNv8=;T}5u`z3vsIm|A^!=W0Yu8!MKNG$l-%BuTpq)?`$ z_u&4{@OH%W1tvc5h0lL5dgZIvowU$h&A-=~roG4>_+K{C?rrGD` z^s8Mr@YbDhKj!Qs;CSp~x^M7@vXI#aL98?ISgXx?cMPS4QkuKKcWJ)~R)U)a8TGTA z$@R#ff~CngOJtOah224Vp*3tIVaf3k6EFf;PgbiGWmLmiM7+`O`)isb%Ta9W6v6Q| z9w#>cb+=)MnVTdVQ$n9mf)a2(+dfKBpzyvVLKqdn)Da^wv**%tN0Q%anXrXz_V}v9J7Ncu#?nZ(vOU2|GhLc1-y; zwFT9SKRFh;S8q(5jD9WGRpvis8U|wEN+&84qNOY10193fSOAnuhEm+Zq6No3D|W5s z$>F!$r~nav6(nLN_=%kM5SO1#U7A@NV(?z1u~Qe%-%0DZQu8*en*UN2u}8r&g#J`h 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 mUEDb1vB+1N|y6E)4p{rks*zQSu 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 z

{umhYim=5jF13v zi&m(`1;2^NKJK?Qymvd*H_GMJ!Q;xqP$=9NSl7`UV1x6fyO6bbrR)yv_|J zJjcN)f4zt*RzF*)2p*f9XMBjw|7^coG3r7#KLoA9tIGeC?)f>Ux=XZTbLMC3K0ggs zRpDYk4g_BM`OCC#SU^%>qZuJNtezwFW99qavHde>D7!*g>BR+pMYBbk2En(FAPvMR zAg2(veYlj(Z3|N0EegFk>U83MGtXD_)3C>BA5Y2v;Pu=$GjE)z1>ANEdqNQH6NOtq zVcR7;l`R*qQxBq|VqPh2>xboRK!mnxuE(ke@+f%R5G$svqt4)-=P59CpFFf zVs~O4`+s>j*i8fJ2nObz;Iod~Gr;w%u=H@}*~6YZQ{(I~KNN?UeI!1&dg%dHsH8YQ zf{MSw-r8t+TtPT~*yxw{21U3wLX`XIbKtI>)ryHZAkz`N`|}Fdq}c4O>sb-mP#VAI zYH-k4pCk9J%dHfwanq>oK*(b>ilwaia9&SWC#CpS1CnPlaE2SMeR(oX{d>L027HnY z$Rx7NtxW#{cAscPFN1|t?ZJ%m{s|2X5hu;b4K*At%%^7S`QsEfY;JJ_pT0f2sXG)b zKW&W?w|*GMUvi%fwc@oo-T;_1lO56`!?LF-!#Nrk#zU!;lvIaQ&-lDopQE&ikW&+F zv76%jCBU+AVrU zUHV$zd)3&gr)kW9J%%2GD9loOuxT3k9QtofRtKzHG}u$UE~0LF=~kOjI~wuj1rbQd z1p41Rr9u^i3*Nj2kl<}t86L8F*l;NYUsjN#m>#u-ydHUSY@U4d>-sZT-`{5~L%i!5KpB+-mH8I@ zhvS&}vYaE{c2UUIsV8~G@YrcShDQvl7qW~cqLMY)Owdm!bF&VYbmXr1%_Eh^?~D%< zA-y;P4kFSO^_A6coF?@NyXjarR=@{4v-{D3wa8$xeB71-qaHBXqa{=^_lmAa?19P^ zNWU>K9_yO_#x2QOMb}?^O*-*bf6+7sN=GaR4UtjBv^-Yl-~9F|;A{g~lO%(N=aDrk zX|)H6b_1DavR1*0dC#!Tp8pKs6w>9+jSboa;y7#z810szrnI{Jyo0kfw@sAnV6w#K ze`EzC7#=)7&>Sh#@r5Y)1ViaSqBp0bbdZX<%`ZvyA5V6&K*%FS1lqhG(EuU!70F{U zZX+PCJ(lyI;kE`P)OfkkSSTGPphLDm+t7qpe@+PwFdPsmR*piQ0e?jKpEggNo0w_( ziQh)zhLSDW>{T*zUCCsvzC_VKpTMdHk?{IxKjtR^W`N|%>KUFH{WDFz2zx-+;Za)3 zU#pQ;ULf<_R8>a*D~ZaZ$iWM!V2&j6TpD75K84%yz7#+ak!7r4Hl^V14Yqp9uOdO> zxeg*kf3MDvXDxR zF?ppCPq(lzLGI*?1%P3x??C@BQWWd^DVGS4h4|<_mKaw=CnRzAas0b^uww`6K;8tk z5`+!}i1b6oiwhuB-IJE(-jJO@U_)q<pl$}dS7^zm&U)-MLz&f z(;p+T73nPR@0Nc|l+7|#NwI0d%aP2GQIfw-k(6^k4|a}o_ZMaNFU$B?wUklGlF#ao=eK47Mmd!Nbi=isgU11YB`B zNaOqh{r0gMde3L=O;;wWUh!X=j8llhT6fQ8rJb#Zd#_e^)*w3NeH*T|My7TOC3Tm# zhL=_EN4LvRlP27zmyb>mF&5G)>=%FL2oZQwE^a*x7{61^tHzVgbDZZ`&GAPaRrOn??w?*YpRDot7fP5a zzxFMy*g8#gx8o$A8#T_v+g03DT4=1zCMFN%#&qysTC;xqC7*6$*mBlyAXhv???7hgb~>2;x9-) zjwblY0>MvfGc&^eBB4Ei!1pyhUVIdE(Y45?wHW3UD6HS!o}uqTeJEM^-Ux1 z1mtD5{W+SF2$%u-~q zFd63X6u_|x8hDO8)kL;&eX@UVekFoZ;EtLt+6drJt@a~F4bXvV`uNSGPGUtn@ql{- z#g2q65$fQ_L>!Ps`H_`0ekff#Sx}+><6QTug-~K;BOHI6dxeuSV6)9D@gSLqu1u1fBPr_8Wd0T+){u zv!;56bLFQ3T{gZ?CIK=oxf*S<-t7P0E;^0iP<&zQL=qRM^8$^O>aOwbsDMxJpOr`qHD?$D-XP3Q<}Wg&esoIAUG4SyXWQtRk7!<>+|oBJ zn=20pqa*!vw9t|UZhOwkdQ2vVXA50Yw-p-q*+!8!F{YOH|X&8Uj; zS5aWUvqKJSM_p@tSs_lFtik7;rCc#43|#~KkQKZ~&1x+!mR2ExHTZCFq^?d0v(qI1 zqDgu8yWgJH51nP}s~#o!))ufR=_dXJnaU4`{RW@2e;(gSVJA7T$M}g$U|%?(mB@X% zK;OnPGo7KBa6p47)y7$-#YAYbT%tn{u`ru`1CDnqEGzo}dxSpdO&e_~Cct!I))~WnKS&qwmRIn7XY(^) zm(W+owKgdE7S>}f0pG=YuzJoZTC9v(4GQy368j%x;f)Vpb%!5wYEUg9lM3jyQc4z~ zc5sLcQb}^!WRdC6NBwHhlX}3j2mDM$eRP?NIMDixIw&nyP*xgOk}|{8=s;$x(e8O$ zedGegswW%b&vT}G5 z%Zz>;E1vs9s~YraZqMVFY9dl zm{+ZMQ(&O=c4rcDzWX0eatwv1PZ<+Cuey`IpV&^WLfvAeTr!K0A;Q43YAkS_To_N` z0?)0391tSutoGBc3}y#@IK#8xw{t~o6=J{{MhIgQb@6B#*98wf^$=U$4>fuW%R(dN zxIUue*lwu$SZ#I-FRrW-Q97BaR^%Qh{%?-uV>g=}3DysmAiyJtuyAv|KKtYXuBbz$ z&r8?{n59|rG(j-Rl%V0sK>qV79iUKJ#DH!aupiC!7Yn-6E>M6wUF6X|`idU^>8lK2 zR|BsycEIiK#BAx2je#|W%tsDvY;3)oF|vMPB?C4a#Vo%-OC;i-x+4_ZD1>q3+M5-7 z?Pw~P{ju_P25hzUf9aFNbw4qr`Z`=zEP5UPsRETO4*%0XOL6oZKoTqkY^~1OxjlAuN!vvxt9_nHsSs1H z3`sN2__yU(5JtB$XMU_*`y*4RMlxI%{J2L$GLS4=#F{a1abxd| zCR}dg&LhL4i$yB_4i;SIUAQF1fQ3y-A1xMiwV_iUMhkBO8IQ8ks=D9RY5cvLy7j-t z)&9=?9@~E&$MS#H{Rxm5NqijLb+I9nmnoJxo}pL^uU=9xPH)lu*8pgAUB8GLW1QG0IB3dg%huPh@`b^&!}TDAh)Na59qmf((I% zR;>SW<5#*_DC2=7nU=^?VUpmasM2b=gn|OwfPt3!lk^an<91xZHh(!cwMw8pJ2{bP z@fdlpD(4E@|2>jd>RGGMTxHBk;=ygjJaxT}GG-daRHP#8Hb^kZ`XuGQxd0hnGpJom z9N2`xE~;(PQj-K&r?_aze@%BevYL=Xo3j`;pCljh>7vbR#wn0W|F>diby}suAAf0* z*d=`mXlky;LYs)|5W_A>+)JQ7*bVC>vXjnK|FeaS_(6wRk#?_bSNirDO(6CFnwhXcm2TCZ(+`@5kqon_oarYWGo}aeFD|nqP(CM^onq8XYFA5%R= z^|PlEFDYbCJNPduUF`bKJ@_>ELZSxbX}n`S-fw&;H1D~ zfjgVSUh(>o8Q*^o2fYD>(*m{med~=v26p-f$U+?it6n``lv?L?z`kPM??R6Su8m*% zf#SJPs3km@l1s0CfWX|+*deXBM{c6FU$wk7B&K9oM_u6NwtH;9J!!2kw;mAmRd`Bm z$qTE{*tr4;;2CMYcNzfcD~s*PHWdWt-wBk#LpmEzPb_j4o|g@!BzwYxfsA)rQi5LI zP5B8P;)op1_-8k|DyAERDu*<20hp^^sfmvBud-Tt1Bow{n0uB}4tgB}S+MQbJWH|Omu3CM!%=QZE*&V>I$j#$&}}%H$R@2xf;BM)BG#q|3c((v z1Wdx#p!Upi${**ZciHnH2#+S~0?BhKEU8Te;hs&G*~?5ScY50Pv zS%~s;#OChVtNE_*xy1AxYHE|=L#Reu=1GqFEYRCrruGfd0g~wf`fevxQq87(m^VFo z_1ZoNhoy@p(L*g_r7PMqj@SN9iQ!Bxt7?2?ORO z9l1(~OqwbAKZwIWrg30}OkSA3_Td=<`}}d)Rmn8vf|YbK5tW@jK_VSf0cA@_cZ`@Q zR-R6FRjgedP>MFUTqcA@(%4J0a83;^M;R&xCwp0YO_bVM%R)=G*P3z4D86n7Ol@%; zZ1v<3*!CKwRjw$3-J^O?y-;iT&P6 zsGW@Ue&e(cJR9fR%_EFEQ7hB%*))wTFbx?wc~4#qV)KvLvndVp|9?zzx1d?Af{UUiZ?~(k*9k zNj?GURvZxlWd{RO-UWn`aBcpReht>0z+jNiUh?8bQn?eH2R8ySq?5mHg0t0VH|hSn zlbBp1FmQH}09fH)i_V6-eQ2L9ymTTUMCLME;7Q#G(CxjYrZq4DgA(EJx2o|u$ln2j30PhJS6lsj1p1s#=SP>hwE9Ow(Bo;#&c1(!{3HU0 z-xPJ{;|a)vuQnTq!+gs1hayCFFQiaCg)P5Wl-t@FoG`F*tuFj$@G*4uI_vqc?Rb^( zHjX+4XUi4KWnSgpzt>Z;i7ko`vyP?2NEoEZQ7eW6Jh?CBxoBzF^#5yDZfb*(N~FS~>Io zDp02!vEJoWtRMz)>Szdi;a0lhh*2&3hqBxWoMnNS>pIfHNFz;ch?%1^`GbZA;u9?W zcMkP`C$J{D^!(kVVl$LjU6%CDzP9VWz~1iNhn{l9++2IRte=1jZnhAW+EZC8~$y(&DG^h&Ha%|Ojj+Veqq z6a}5mIQNk%4$Hq=V2r?&P!es%iTZz*5G)oF8L#_9<>o^@14}DQ+7(3WzMDNcVM(jR zO3-|s3B>0Ue{{Q@?bt|O5G4#UN$Nf7#4jvNveF}FVM=vGEnX~00 zFQPG73|Qdr%Vaoa(kT6^fs3RMyjZ3Gl;`O_v5=?q{qDTv2`OL`f2u?U6rJVVyDvF! zWSwMkVdZ5k5S!-d@_8)L%RpP~J6qWlN?^(@B_&Q1^&^1uf?qb=hWn;$)ihQN!awNj zO|Zx7zy(MK5kXcLbm1yxFs()vU@Pa6b#;SV329gj3IE4Few%3AF4o%{kzX`d zE={V3cp%upbY(VN{-13-NRX_K5A#CpoV>idzR(=;6PcJ0sd0E>9utl|7~^dl9LgdL4f`5Mx1uOyGt_9UVI0+f zPG$IV`73L6xQxIb9r?H-)dIlZL5VKe6LDEdui|N_-{Zw9Gu(#*!iVbrvien$xf>x# zAx6bm-5pKisO>Z=b-5+_;=QGFkrlZU##ulW-2)Z@nWr{(kZ!N~k}YX0tD~OD|M^}! zcf(s4iHAjeCk~U1p;i{qTYND&#?1HF4iR~RAYwlU$TN@K` zouB`+@G9|`EtPFOmfjy+^2F0BYzLP1EY1CmDVicOZ4-lhhPPBZa9X72fl@nT12*BG zJ+;#R^R&e=uq~B`rO>Of^cpG}d<*5~!!=@xl8KsA0G{zL>e8xLX5HE(8sqM8jabik z!6|vDj7dEIYZfLmDSe~r&4(kE9S?alrQPz3DrJcKDpkEkRxib1@h4{hzJLR&R!b<% zB;M|j^|p|#u>r=6LORIuzmPQ5Mo1wtb>`Sl{_oBAJi3aOP-TMdxM1%%N;=4wAR2IN zuQ?~~r@5dez?uWzvqDCshWP&x3MS!V@IhFY6WX%Csi);wKQ4$nFINM!@h(vsx2f^qzDBXDAvl*GPKB(ct|uo)d;;) zFGbTIGv(h)U!mb8f^zD{e$B36;;<6lk7*Aa&%4LfZFxw~UM_34OTPVdM%Ql#-K|nP zs8p6r7g=bkWNPC-oxxeoab$Ci0gmGB+Q%|_0xn*JYAicAATEAQt4*myYr)ULiRw%o zUGfPg92>I;s|+ytn52N@Q^X3v7VFI|7-M!NjF?hg!UX*07>I8QcbCJpegoV)&2MkO zNOGWpg8i5JL`zhBO)VsNi4^6&2;jUJLqkn?cfVy2T{MoDp*mxm>A6A6&YqQ`KqLk1vX^f>iM?%c0z}X@1zE>l;fEusC60YR^jex*B4yz6)Py+?w4J z$SmB=34?^v@aB}E?Oi{LN+5$c=o=vG+G=WbbF2TbzW-t{@qAzUFMlvuCmLwgeZ+3G!1B(N7R3qLv`z^|8s!4*AK=4)GOl|k=up1t_I}FL zH0)jfuJiRYX=S6S@Be(CD|!}B64H__&Fc9xa&L&pls3wu>%iDbySF8YlFlq>tAD-D zzrVovJWn@-e`9bRZ#?{=7kLyQo(C9$gFJLOp;bJt#Ju+CzFe*_X5kz_s^?=bP9bbr z_~e&z;}6e=Pz>R!f0Rx7^{~KY;)nY$hmb%RR4519B9uppSu6vw*zJ)*2jf5IG6M}r zIveWV@Dda@nj|AMhG&vPkH1vqqDA`eAM~RB@AuYWYlIx(;q~maa9ZJ{x`1rwG96rq z9cN#+1B;1Q>*OjYG;A|25~A?VIb%;)?3{_+$^$n#YS!H6-^43Jnk@0X-dQTk_56tf z!D-33l>QBMv7n_UDCZU!Ap*EDpfK~?(1eD|GJ-8p4b-qQlqkwl0FySn%boMX!v$sy z@gG8IYzHf(9JN!4-*kb*dHt>h2daFvmMGWQ*JM;J2EkHm@ZK^h5i_IbpS5iUZxS$+ zO?;RgRC^zeUE@Sz2e40UtPjbo8tuSzEIVGfStp1=mH-<@S9TjJrV+M=KJu62UOf&l zsP;M-kqe@y0RY&a;maL?GY2*AhIv%XNlRiZ*%EHB%{JZE#7Qv{8m&5kf(|ke0W4X4 z4^R{d=NSQ5Y)3>Q)db!oqX6rF=G3xbXS_t`0Q>J;q*?J+p8O-JTr!$n1dya3j_!qW zN@#=nzn8BWC~tLmA?qOZYzzp^(Q&VT;}9fsmMYFW{4)tCKUHIWHeY6u%vA=7HVklw z9m?fm{3hzP_A4mH>(XS)@0_4xtYp^k_oYYhlCLtBya0-K7Gc>CV2FB`0LYyoo4yWF z2tlUIMIlwl2ZjU@I4z_`m?31zQ37{y6)q#}gm;BFGelEM-$7x>KZp_LU4K7RRXASZ z25LO`T|^o8-fvwi*Ijf0L{Km=nvq z*GebV%@sf&^g3*l1T;A}bd4BFU*OzBMC)M#>jQzDn8TaNP(AQwB#3Zh1{N^al;##t z`Y7qjqL8=XR)XINIf0&&JBc0{95-#5ut#^*@lzSK&HVQW2 z9VUQjAO_NtXGlbo2zccX9>58Nh9Q?mcXGZP4_C<6`L{gYo-`&9Tm=ffQ_bc(;lv3HzUuYp&k#RV zMhZGzHL-cM1B3sG1>6%@Db@j@J~BE1PE@FxZlKNTV9th$2C4?T9Hz5jp#iTeJxl`* zFh55|7Q4AL!Ig$_o@hvIA7HOrClIUU#>%VgDye0Q=PKWK&(YD@89U%hfqN3i!}&6s zmiSm|I7|fnfD=`zny^A8xRMP6vc9+fx{TX*554?S@JV~niW51}rwds+?1_X|NriJr zAoeRMvJ~K8#K5K>Q@ZK|oQcNCVI!MgN0adC(6sOb1(&sK#>F%`V_>Bn+Wd#r!ezBL zubegDfIE-+4=@?EY1aI%v(`w!b2F4wH=Y?yo2wS^C7F#{F%m+B4pHrxfnpT3zkxmF z>xf%)WloK{Ay2kDdut>r<1ugR?;+j8Zvx4I>}+7L=Mv;&5LSuPy)x}quGb#EE`=;9 zGp)*?Wo*%2xt|F}g8P6JJ34kTr7mr#`c3jX>ZOw-h9b@KgRFN#!?JmknhTO9*BnLd z@wOflW9}_Gs&Y(9X;}iU28N+s3KVd8VcPE*2w~=i>ze+(3R-)|dCTPBdAT1yiS5Yy zCc~(D8AxQUB9d_BV&vW{{n7`^Y$q0Uzm>*PZ|awMQ}P+H@A1==+e|xj>m1BXcdg=?X%6)kx}4KVk*~>{=pcI0x>H8Me^Kw|DO~ z|EU>IjDMR+7-RH?aTBb_cduqT{`( zTenlU{M|s4@E^eY`d=#qJy!+3nUb{00^VxJrP$c;g~sAJv=O}8uzop)$y0LW=l^dKeQ$yg z{+om>saBRhao z<3luVy#wkf>;T8kF$$QCVkU;s|qt2ng;Aw@ctqAON|(0d=_;KD+2r1W2I9=eD<#+mTGvN{|426u^Q{yX)mV8axRZ;zfPFJYY^>h?2S2UQm_$Y5quwT%^X22)`1cowd>BX z+QPy$_AFgZ0^Hj6D(n63>hP2KL00I@{fFMwyRLRKT*+HMiRNN1Bj7E1@Rnw2Ji|82 z3n(Xxt^W47Fc6v!zMpiIWf_{XZ0L*|NW}F~H~XCYqY5Y2q{QgIYiCi_QBG>LWX?k8 zf_ku2zqI5Wr~NeHQF>k(y2)zRV!?nh&_Tqwp0D1{$7ir?v9Qh~!~1JGMPQSX9FKow zg6*>}@ANd?NQMoO@_otcJy$7*Aq7=`=BOIwJb&w1pZ8y!@=h*mwok`<-&UGP(X~Ej zv)YU9v$N`Tau8b$84k~o8pKhRUXyGN%!hSXTyv1SO^$R-&%k}+1D+3&?rEu!^35=~ zkJltPagU&wHVq1e#jJ_AEqhSN`cs#!)=L8NHG*U!dTPRJ6uy zoc~1Nf4~m8A08ghN3;oHEeX`%7xyAYK?6EzCzi$vthE9?zSR4$R zPrjS?$b4b7i@pvqFSZ)P@B!bT6OMJ{kFyB$T9OR#^&W)IYMlT;8zlH`19@%iC^RQ| zQ`+=8Vu*Z!?As5=T#l8}n_8eyranC$=!f1PR@_^I!e={UM8x~>sDuxJRX|4y-kgb| z^$pZ%+hz$#3+pkn?%D~plHrrV&%D8T_YF;fgu{6IA=t%)W$n-Tj>kNQnG$t5V{{i& zDXkGUgpJ>%8Wlu8K{mesjwm$p4j&K9^HskeXR0*^CZ(NCjj24DXl*52f4NE04d#l{ zJ)jW$d_rSLBOq|Du`Bg?Mpj37AJt-%am11mj~Nl3P2&Rx)X^M$%rzJg!@j_dmRM=0zyCM9T8Jv_>KVrnz#fR zHWPBN%x0zX;l3kg*7%}0rCV}p;WphvTv44y6EqY7;{Q+z&)fw^jhoW z@w=3b2MwaGGBfMN=uKZD$D&2U@OJHKj6fUJSpOC)+|8GXPiMZ!VfzajyKz%N0%0m` zwLp>&U#DPjsyQoSfRH&$n$adCQz+&9t^~SkO&jS9sWEuNd3-4s$w-!8=yl)(?$%X& zIx}#?exw9{_|CZtRbXY_MlJtXFRj4<9&x36#Qyi_{K*<5P}s;_zOi%+Sbw+bu8ns^ zaL#kDaEJWMJ`gL4pF(t+By1&Pv_Q3xu{CA zJ*C(+R8>bKqc7J>5g|tXI|-i|Ktkj@h=Hxbs*`K{V+RR)V36w2tr1BpK;TeLB~k*ZKi82W;TThI~Y5INve;R-zH4 z8yk5tGzGkmx`ld~DlVPuus}j?wuJBGSnEe(SN20ki$q|m9AMH1vJl*vT%}CKa>Wl` z3rcKZ#hg*lqea~fDZ$yA`}tih);o@1`w(5*eUh-lqPK=eFfen$2!E)}hW)L% zCdtR{k|(xg9F-$Q6y7UCbAxO%TkM#ZZzHKf@VOx#_z^n-gkstsgIs$@Lqwh?TIwp5 zBPu4&lJ${c*zltbDCrW|HHxIv>G=}f`&k_gMeITY9Q@3J-Lp*l!$x+6~oYebF^?u%bHL(wCeG6lVqwhZXwQ9J0{j2UwgRQ4ZWbWlx>Q+u@Kq^)> z1O|k*#`i<~G82_-8U+1L0JL(aVTvu9qUb9QponY5*7vg7xwE~y^35MtSawd(&`T5) z#N?Uh=9E8|%}9@(67+xD@^Ucs7uUjjbE5eE%)qZEK;SQR?u3v1!ki$@(;-@OR!X?l zuW;n^x0`&iB@rQVsn0)MuU)UvwkJU;f3R=Z()UjAK8-*)KOfRxhlOH-Grz^?@)o}< zCtaFeo)nt0tw=usFgb%Fq#4Q+$Hq!#T5HqW5{<5XY2828yI>W`(pWgoqsn0IZ-BkG z8AMOe`}ohUXzeI6a*DUdm+@8w7ChFG%n6lD#hO$;Pj?f=u$DZD@gy7PN|r5j9{BSB zZARz^8Z9-lGb8n;dP)_-cc@@sGno#;(x{;gQl;?dyO|{tNvCUBvdYY&-Sa6+ ziar&?ADj3q+@da5xnoU!tv{<_mJYbjVKQI#+(jASYA1OlzV&!LR%Fh|L^Eh@_w2{) zIZyAS5LrJ1N{}@3u){-)IYIKSzla+w%^qA=??x;&9IUYgt5}5Aoz5HfGpQ1TkQ9j;)AbldNDYR~ zJ#p@!*h9DqD0ZvOM3I!ZyZ9Dd=(!0BXq<0wr8V9sqJjc}oAFgK1NV~`CjBu!>i$>g z9Gu*v)R2G17CK>iVm%zK*vmxz*RaXX)VOSAI{XSyCTKN)l^Ds4Q(e7qWTsaHXxSzp zx>-Y=$w2+_6z_da4Ai;o69rb(O{BevLDzXt*S^L4=n7Dc#fBlvkj|rTU>T$7Yq|R} zkEvK?2T<0;c-}57-Ny)oX;_TlxM)qF;r=FU>~DJbE<&2M@U?ChN5R|7$+3UMkwP22 zaB|+>4l)qYM&)H_I#A zSgS0%6>VgH$%v1!Gc%)nZzKgKht@sXXuJ*~cy))zvxWW_p;IOnc>xc9Ubyt)n)am< z%}%F$w@y!w^khOb0~OmG*2@bwaZiVl$@+i73kl+x80mXynYXli`cggE8(lX2Pb>g! zbzet*NPazo%eG}J_vn28J>UGc>YhW}{3vJJ{lb*&FEekAa8+9{X@v!&FOWe2zOmxr31q%q2kiL>4p&T-pj2)Mn#dXwLv?-(Bo6w zvkBjn!THL!tqogeFVZY&put;`mVp-cqprP4!m)APuT;@Zf#>3ckf{k>)}%vFMiHwc zfa>eo-_*L-q)pu`=1D|8pBxnsWYL%5>de*FH*`m#{B0+XLhuc}%+F<$R|1VLJ02U6WGwN)az@)*x!q5F6Yv006$D{2J9Bj{K_vEV=l6-;MnN zS~Q?HU&)nIlMu1k+4DD9p9(;>3C{59HnSzye6?uDQJ_EG2{L~)?^-X>MHJ{VS zP12r@Q%aRxUEs z)yEfW<%cD|W#ISsTLQ}!?Q~xKCg-^%R5kHG-oH8-;3B(ku3!0$_RrzeWtfr2C54mm z$)58m_7MqS-lwE-67drHJ^3=EtV{SHGxH_BObINHj)?i+CtfER#G3XYC*qlZ-BW}X zGRUyEVwmHEEi%da?Sw6(WrVkFX}XtIu>1k)x2pEK3%i6~t0NKqjSE_aI+_TC=rAd~ zuBCjcv2R&VouX%!^*hk#sf+x8;)?ycMc*p)8XGyQS9Lx%0Ofd`U|9T>zW*GlQL*go zbRl$dig(D^c4xVBLTyrrOYYD{#q(#l=EJXBY^|o(tL4nXf?VPjyX$EUiWG2RMZ~te zsR^9<=jKX=#lpS^ICHrBlelvgm-Tx6q;&0Yq@ae(0x`LU=aZ9q-8A2O%HqY-0~1J9 z3{{;hMz5;^9aK=vIG~<;j1p==H*rs?W!Vi|3fVgoJ6U+!sG8`EXk{PrIEB`Pp~N#H zq9mA}S{Fwbt~LLI1_?e#Ga7SQ6K~Pa(Zs62!;~ydcND@oWw`vdduY@h+?OaixJZF#6?Dvi|y<`ccif&&T+1V zTWmMABx`sI(@}8;&CM}})P&}-KB$IIIH4LYSY~FPd|~3SbB&jAH!-{PRKPNWNC2YK z-Ay*);tM&@@Gr~Lp`8NJ+LNyLmJg|Mkad)VLotrtJ^^>9($(z@ECR9`Li752jK%$zUfA*Id{})s{Auudf77 z0>NU;sr1+jqSL5lIp2spsY}Li|kTGr0>T?iT1L z9U8R#v&754oW2B@IFF-X%~!4Z=lYm)xDG)ss*ZZ*6PvS6jAwE|sM{WummBviqg7j5 zpVz%`sK_dzce4fw-j{!@)CB-v`q-gQ%Ql8(byi%@sk}WcL$JRMT2Y_S%1Tj}ajX_# z?LahaI3RdbWK7k{$u})j)f`}Z(G`a_crGu4CF9Y<>H7&cOS=WDl5QUL<^W8x5C z^z&a3r*V_2dq?nh+A9{ub#2AVP#>T?ye^|x(Ig?zK5=DeeJa*x|1z}Wx#lXCyr{eI zkc|tV(pc1x77MjR2-7ck80RZAp9)pCG+ce|==5SreNETdkJQE2cXb@-WEmY`Uzs&J zAe7~kE4VuRnQT${AuKkc#x_~SkgYkF;#Z_s@ad1Dq@puY&e@S-P@Z0^fT+pAO~Sm3 zaZU#pjvPAsxU(};m%nS?WlQloEN4ot z@;i3)wc!!;i*oQyIP9&^i{BaWqGR;WEexv9p(%UE9=9AL$y0aD2kd9Tn@%@8Ec$n2 zX&ORqilZtj>v?<^5EzV_oUaUY#F!|u2{D2K*aNut)P=c+)ucg!E)JtfL`T1e+r6s~ zs;YjZ+sbP>IWJL2>6nqds#aeO_;|lwexvjHkq>9Gdk0OKV_t4yQcF8b&Hi&MQ^xdp za%W*F#8vW@MWUp(3>ODh44%9RSFN!q6e#EF~+hH-nuP|CQ2M_Y*- zfmK`Fq-lQJy=HRPhjin|=LXK_ zi)ov>9goY15l?_BwB|r~0u4VApTz1-2j<;~aNbX|-ED^elDW1q0?T+=z*d_J|L`{&{^0@kcVku{c{JZ+OOc5_S8p3?XL4E1 z(YAYjLS#-4zP+kKT>EPwWaVe%ZRpIEBB6G_r2-mCYrDiwL%~faRI>#-jhAJr?9Mir zhPr>iR#&-d)0s(9$x&Qgtf`b3U^pgVD5YxrcG9(fFV#k3=B%s~Ju$ednz(EvE*w*I zM8G6harRa(gbg_+#Lb>ubP?gwg?=iFrn1VLM`%des-e)+Q^%gNm$B3dWHq=Ap2ydB zX72_YNz=`9E9+EPehl>q!6h6N@E3Fj^yG_Y4t=$oJH513exakQjyq59XvJV*r3FQM z%SXZ^T7Dr+wcx7A`&?B))6$B{%!0?vUs&NivLd|w(y@+4DLUGPSq|!gJ}f2_muul87tn$4^z&`gg)k(KqeJ$fiG34 z{S*GlfRGT#EQGy&unb~#>*#L{1|85n?cFzcciNi%HcrzbO>B**v&hN_S3unvWe62b zcXag;#80euIHV^?i_dJz-p4MB5i@qZ?Q~>cp#)czXZF@mivR@(9)=Gol3F0JtD76z zFC1l1To{vdMOpc9`u5#fPp53M9$Ra5vbNpS}r z#Sh>`OARy-`*!T12r2RYf%zLTvn56wiMf7&4@1){`y%n3RxX(uYN|ETNRb$1VYVZui?;MS_N>}~as7*TUh^SA7rxVgl_oMV{C)WFZ{!3@{J_#>|Xaoh9B zO3Cdu({jS=L!O>(N5JeP*kd{R>39_N_!HerJy)rK6O;3Pd6#qeBeedZP@{{Xj!QSg zT(N7CK1b-)JK(bp?_UtAnSqCzb)`@9E(4OCM!oG%Xs)Cr6Q^qT_{&9qv!_f-y z{HiUf!r+g_O&t_>FYDyMZ%tKq*=;jsIIUb7{S<{OZZ}j(qh% zM_vE(!?}U>-R|l2(zDzEWj;04OIDUH-Vu(5^3%k-_QZ9qo4K3d&E8pqI9@@*MpKK- z?VF0zufS(PQ#KWHRY!j-&I4|)zttc|3fKeY|H>V#yY1D4UgPzLR|rD$%atBITKZ4@ z8lm=v&e!#%cO#602yN%7S9}gq7X%qPAD&ls-_5c`8i-#;9dhXhsHLj))J(<*J$eTy zWe40t#1{y53SF-1+KCF)KjHg3qO@BJ_PtAIb76nUIUQ4obALB0tuf5K@NjqZa~Y*$ z>rG(e-Ew-4@ix!9&T`=uk9m@0&V|B4zUa;m-UCj-3qF6+2#Qy}cz+C&xZe&LylX~~ ze3YQ(O5BY_uDO;*J)TS2JI)fimm@X!V;RBDKFG+-E}ic*g53H%vE=m`^oT;hYix5q zr`>4MUunB`*UgNotBI=h#6FsWkxx3jRprv~X=fi-zwW%%VgopFqT?#moA=G3AuP<# z6O14aA;R|C#!qaHPkn`9Bg0`JLWfbqF9CGA5eBJfHTcOq1f(R1s6kcT1cnzdU-&v% zEQ&mbii9g|YT*h{Y$n+-pr=5r1zIcoZfKDK>utYpx2r3qmJv;Hjukr&9`{jv5qrdv z6icyj*4KDSx(jU(#_R)4oF!hnlEz(xhw17y+5MlUA<)t+5qSFHsrKi^1YzUtQoN}F z4rfCJKf$3Qls@ylcur|Uamkm(%$LYC9#l)V(Sc`p1e=KLo6twedIyrR9kHQk!5rA8cO>eII8XVvWu22luGkN z()O-Ig^9aL3X5npRbvTx*XIR&2kIKAp9?fen@5V$Q{&8|-U+!9FIyc%8JP_aED0sZO4NtjQn?hY;gGH1OoAFYKtw>8q)v_&#mS28 z{g~f~Y|429@ZX{5m7}^70QuI_71<9yT-s$-3p=@s^ls^9%NSWG)G zFCg)oS8|!!R-}gFQKkVev8+iXr|8Tt@~w=%w@QO^bLS3SI)-NRhC5 zR!zhLwj3z2(1Ide1Hi1v9EKtjaM5kza^VKqeJs#&PyOy#4e*cySYFcOX1Z7#vl&O# zauL(el#r5NvAo2&b#h&wZBsHIcP~`>PdfOQ&H6rx+S+Px z-!`D+eFCm?QiZq+i2Rdx78PM^iDg84o&^n^(Er2&7&OT>NYiACgH;=F+S!TC-$teK z;J=RfxfT}l{p?j+laNIK;$S1N-3Tm6J8j}vp0-@p$+|mKa~!4C@H*u&Td=%oLz7yX zZeTawI7@Vdryvgb?irl0&W#vb+6i8?vyqLBtCMjI+CKsd2RL(ciYqOuZt-Yr_?qK8 zgz-hH8&-|sb$5J&BAXYiIa9Wb5NEn6uyKg1n9(ESARb_yiq?zN;kdDts#Zkv!852! zEb-$xi@P-k&%~jz1O$4oMdaW$BMo-B>N1FsI>(`g4CBSRWAT&dgG|RlI;K;xCddlL zh+}pHGI~q6z9L8+x20k==2<2diRE5|`ew3cs{m)CbTGwF)2LW3LbwyeCZz5_t6nrX zysqDi6tlTP@D3C@?=L)JBJV!TcA%-HTc-{mdLC)zS08rYUD5H~2n#gycOhTbewHK& zNUi!w<0I~pPKJhjbc+tpQLcxX)#8%DNYK=Mi5ZHO2L89GvsNH{A1MARRC}4}jLQlD zVzCLvAvTwbpLsvKpbrzsW7uEnc)(F@bsCjcAb;W`kY;$_fx1D&uFdq-#M=>CWaLkn zVm|dg6g5OHnSmu=B4-UrS*o6@w}B+YmUdb~aD}jES~pIF@Q-o^#QqIaEJRfqfFxA0 zSqcN`%j^LU6XXF$D|k_0wY++oJA+0B!fuJtreCT=%>OVEax-X??z+-%eX*+VGrmSj zxzCr_Nz(bNx4K|m9MIEYSwZgF__hN-7uQo~E}|83>}~L#FT6XFk-vxufNWKueAbon z2LgVQN+3qh8mEj+iQ}A|d;22I#&DU!JkZGSxLWXV!`|vaNUY&Z+>=Mt%Tcf>HV`e+LvhmHxP{_gSi-w6 za=b431^yA0k|M`x4D38b8Nxl?-<#t%-LSR2t4d7V z%X}Xsj!@Vn^9;PBYTw`{^Q6Aa5PoCTwcM{Hmt}EpU{qT}TdUju1gTW}%^k zSgRYt;J$5{DpqK=n-ARQ!s()Bmp_&vEu}g+sK~>O)IZJVlxcSaR^139`>>#O+P?!t zoK!AhU}|$~K87yFaggFQJ0E-%uYJP=Ld~~kNnZp)?Qc`D$|M)RT9zk4G{FfN3BTnD zn|jj>H%XF))QT>3@8qhC*%`^rQ6~sz7BjWLsgGlT|+{&lW%N%YKkd{C5Wc))p7-@MwJ7tHz`7m1(f zp=dvq^Oc&7Dx*h>SwWdQjf}Ol@)pevJOw>#OoYhiDu(_7&*2|TzQ(p zDpkzoZAHCJ3-1Nb>(**JS=HJ0CtNNkS`7BpB+9)vqH>qZ_c-A-53MP0~j^)h{;Nyx`xG1q__###YmVvo6iQ8XCyLdT{&gpVvNIvhK4rq+4A z)8bdh@ka&oQkNkbUXxPk;|^|-D0eHfv&a2pnga7Di;=!%v%U3Q7hJQ}%>u~jT}*OA zGTW|QC#sR~GQ4p0K0F-B?4x4T)-6mc|O84EduQ44?-Rc0oIN3{Jug?7*%3nZ4GB1>V8=ex}^7FEh z%gt@7Pw7XlYI8ws1xp1+S?b9pQl$sX8d?x1R+v(^F0X*i9EV)@Td&*iR3Sk1H+IS_ zzyW8{(Szr2l;8RG2tFJ;?yS->#J5l*WY1Rk6dtzX`;KTTE2yTQCmP%d4R=TwuYqRK}-5oD5B{cng;K zD>wndYa~>pQGY*Fs`=~iVpSS^(bC{Wir`CPy}fVp(*QpFEs&!!`VDI%Kk$Z2HH}J~ z)I;FJYsq686p@e4PHUd6@`XgpmlK%HI#(l-msphu5skD1y*f00vAr=_HJ7OU*&{q* z8fi3&4qpL2TNmc*Hya6Z24-w5K3z^-M0VQ0u~#{p@9uRHmBF(B1b2WY;2AI(Xw-*$ z(1uEj8it02c^7qDz)0`X0aFe63*MXdppR~RhEtVq4Hh_{xCJN|ut1q>2q0Rbi)!CX z@&brsu@)Bovlc)Ymgp!^(3NQ@b-q{W-EjWGdiZu5z9lHpimnp8O=UQjtTybV?Fx}C zzg<=msF6aN&yp2gId4-zobwXVk1Lv+V_F|v-xBB$T_MQypJLh7>J%Hs>})!jBIw%a z-$)fk?-R7^$o|-X((v|ESCp~nbUbSz&04h)HhO-o6m}HI^b%1kIT_FsAo(vZ03Nk- z*a-jSV_7t~kW`OL`axyQpS=}ZR8}@DM@^L_l)*$x$uM!;_vvfYhO9@7!d>&oM;4S1 z34c2Zl*P;v&a3o-pNtnsm;u00qbI;kNDD^lpDmXC$$yVG)d*DN_R8oyk!X{;$nat8 zoHS-1zTfX7WK^Z*5Fh%JR8$K?ekyZBhZ5hU=9z8UXqo&vgLk~%t8uiy28%{wN4)8H zkJlxL#xWO4&-(YxWLZ?5esZf#ghjz^dWz=_kkfWGotR0~&-mo?{p^B{&T)GWuE9Au zk{AFROw@!7xT~nlI$ZYFgjmg8zjs*uN@{87c<93dalpMvU_YoOb(}wgT|v)BC*T^U z%C3%=InovHHRbF2TH$G#hK?dVDi?w~a~~>=;trOqLmsbm_2uPno-s}wz}%#HP6Q?M zXm8SwBjNF37JsG4z`%$MD}vYn1zA5isqd;IkWBnGECR4>8a#}@w5&Ul6226K= z{_qV+i2QVenq>SJ8RJr154UvXj0kR1$78Ku(h+ULq50iC;Oh`|iULcO#KF*1w$V-Ri125yam_wjHHxXiT4-O6^nVGwjJTEBB(3gQEOtum` z0V{#?GkdvHQPel%GW7Z2<1W6H(F{SNhtU8l9Ep~F&htS~!yoLI!>sL{f_(BMBxWDc zyVqyoxHVoy3WAwqqw-z!OpD+wWy8zC24OKDiHLx6wta)gq?1suL-`*D_Zg9rqoK1Z zPY&&@_d7zz0<1P^uc?3M7GsT0_h77cS2hq{0)1}I&yE9f?LX?@GMzu@0Ji#Ap-|V~ zbO+D)v)}a*Tq}UH`Caf*$^M|$bKb2Bw1Rp6Y(OPnTg<}ryFzpfw4(G=KqLpu_kFoQ z%~Da@Fbb76?GRzEiG zk45~#hSp2f)x8-wf%6NlHE}o}eT_^(hUg(oF>X|q^kh9$Jn0!gEL-mABN>x7R>(J) zUjv>5JiapMKdliDrad6+k5MX9(8-?^hqv2DG&TN}oIo##J5%rvY<9|S8spbC(O#c> z@q`ezv%^pm8AontegjSCH?*r>TTINjIA_Bg15OV-E%kU3`l_qlOQywrq}<-L2F{K~ z5s7o2--I|Hl1s@GW75_rv$Hr@!n;@21G^yUK8<-qk#T%-w_7m_t;$p4Q4DAP3M1)9 z_-PyMW2;4%EGP$;fM&R&8Vb4o5P6H(ifBb%qI;{IR<{MeS$HDH`>=wjh*caE+2;V3 z_j{Q?1=66YbMwQ0b<&r_EwXmoZaKWy9+xb`uPaIlQT3*Z-yuR2)Zrtcy%{@PHz3TB_reAdm+0FrFi;w&F)OQvB z5>1ab6Xnm&VbMbq57y@as|pBFP63xbIj8i;+S+yTkToCL@oE>$9d6) zREduxT5tHir*)5s6RT6r#RcUA2XhRD-ruDb9!?a{X|A6ngx+DzS?gq~1`9kfXS(MR zpxvaJeyH?6v4DNG4IBU1$Ma>ZsIfiMz0m-TrlXJzo0ZPx0Ir(kO6ldXidTv%6NJ!& z#MLcbvIl`-@&^h!ySGUZ_t2ZJFK7a6l((Eb->u{(n|EgKxmvP2>KN>$P6Nzd{9flWXusRPZbzc|w>);LthX^Wnbx}+M+Lkd z`@w(nxrcb+jFyzs9A%;VY!Dox!?s@qi)xU`5v6?}$ubUrB(bwl>J@j8j|30b{oJJ{cBf3iC1QCX1HZ*tc4?H0cF*{dMV?fsx7 zcYh?>@^qd0T%CFZLX#xs(>TaZZUqp(sv#H+MYgm^Sg5QuKcaE>nncBKluUG_o$H^C zR&B}$Uz2p$0-mC#m{(Ww3eIBqn&wtVp9Y&ORv7F_QSY_6IiXJU%G=w_0f>HEXvs>k z`nTnr2vPQ!72ZmFlL7PrtD4*DNj&DPUXmO(6j<(&u5TbT9W7#SVe5Q>zn` zXfftJhaNvp+oYa}9>xTgbi-jRBjWrR9z2fW`VE48r&;)K&^I;hpPLns8W){J1H97* zc%~SDhJDg(_yA&@!R{-SqL9B}ZR~~vZ{jLcs_H$&g+eBm!s$phhXyeyesIDwKq+2? zRKYlmB6nl7ouM1G<#v8-rE25i-RMqq`I1h{VKKCxIO6G`WTIIjyuVO%82|GMbE!qc zNiugmeypG2Pk_-o$sDy1n;vdlhW0@>^z(j!{mRfK7FddHcYnU$%CnS0DMm`pRaP{w zwxzOBT)FP&*ge!CHF=ZPbQ-&VGA@LqCKCRRf6n6P+b zifY%M$g<=naZe(KOPz(TW0xkHjv#+hO=F;~o!+U=@WnJz^wJAl>gX1tM*2;aJpz2a zt1rt%sq@oV+Yu8{r0Z%LJAh8V6Y}MIC`Pl@ZK`oRbupR&9T74z*gHNicNI6%JRRs5 zZ~novjSGvHSK-yNj=Y?lS{9w$?deV$o7(S_j}HNh?L8rSUkT!8#WUZuIJY02e3YcN zGAgJIar=0X2;uP>8vArh{EEf<(r`9dAMWs?^&*>PnVRLBL#21J;*#StY6owLO9b~Z zOcJirau41eWfWF8yzjfw!rsvj)UjuMWG~Omzp=&KK+!O^i%kxKLa5-~0)HAk%B}ZD5U;cXis2+i>lz0U;SWW(y8Fb#?2~d zo6~t6{r0@MIf~cD3Uq__^$c&F%ODHo{OWFg%*29Rt?@I(5eeEFV=qt}TT4dRrh0cR zq}+}?yGrozr{1a9)GixSak4M;NIaW?FfY^1_97ff->ZrPsah;3tcgHj{%Br zgP(9;#8)Pksh?)iR6a`wcQ5@qu{{wT(PCEmSc@RY+8?m~Z4TF;4G(eB#6mRdnKZyq zh(F5-tpDZVqkXjxqds(DAfQ>uTk-- z!|u>_$T{}Jm(1NC{Q5wygu`}dk&JS+_^Y2=<6)!;0~afv_)tdwc}r0c;?Lan6bUT1 zSLi124pr%HL1kEOAmG9Qq|g1Nf)-&z-<6b^J#F@4AT-$J7;aK{hGtM$b^Mg|q;7>Q z-6iB394c|Q_^KOK=Pb)%9jgRMl4i*e!2EoCd>v01PSu8M`{M+J zJZCll+A#d;Nx4$19d?9DZ?U-J-vQk1Dj6QdKqnfxxo@n)Q)?M=5EZ;6> zNr*YI-z&3I9qn>~V@CQF%hF*pSSw&?)r>Gb&Zuk!u$t0OE8_GgZgP};fB~7 z&KBHkD(w7TE#R316T+%1A%14^9tq>g6P087^6NuYj)W6VGABdVc0pv+go`&ew!mI& zQSFZcf`KmYJCjwEIEabEGHZ82H*X84oKs7Sg5Xe=Z{km$a7mF!{$ZWW7(sBjX*t5< zKKx6P(2S&Mq$G&tO%k@rnKj4NaNdzgsc4`WB~8PK*xs1UujkMdGOUY#!D1ns-ScGp zko1gv_9ojPYIfRuJ^*L0%qu$zv_sx3DXQ&QNeoN+rB1Y&4;1nZrvYsI%*baQn?dks z`fWZ^&hL^?RBO3u|6fgK85Y$St#L|_Mp{C;TVRlul9C=^lF+=j^rK_5NP8HT`9AIcz$7lHgzACa0@ZE-}1m7=7@V z*j>DvlmZ3fLnw(=G0kUSkcJ z8QB8>-gPgmR0Pqm?vz>@X97IjT?oWazd9#(K58C7*@gS!TdK7?WPKna)UkLGAIAj# z=4qY&7FF$#kq{NcKfx=-uBpYmZ3y-S)SCb7i#HD1{VQ9Dz=*sxz{53jSHjZ$$+c`cmo7I!*y+kaQy%j#Xg6&dr|Lec&y zuRvP%E6quy^RG#@EWi8wmw%pIU@6H7J7D>a0%B&A`^5hGFTO2XhfZ+{_*9}H{}7jz zJf9a{4%62l_<>IyF39tQZyaTn0baU52OEBO(uPyXX%rD zvCIf?aWU|~uu5#(tGiLe03l>+Yo|C_bI@ntZ0fo3x4{s4BxY-#ay5%`C~-1K3d8I* zQ;Pa7yr{MXe|^rYoj5&HRDI4GU);(g?T65ZEbgEsmG9{8-?rZ`dd9n{1;&+2hS4hT zozUa$*bDp|vd*nfrGaDPH+X@)wkcXIZZv918qVd>B)^`wOw^<^QOhooyGShip9}>o zTAcCP{gWR2Ka@ngJZTv2GT1VNMc#V-0LKuVHrZ5y=Dp_0F-A(1DO&zJTr~4JdcF<+V|0r}dRuKFmda?7k5~+k z0By|{r<((pO|#E~CX!?<>`A{YE>(dGV+A%+2W(BpQm7cEc+k}MFx$TQ4O*2qZ|0e$ z87iSpP+ux#3S%Qm1*GrK?GC_=!IVMjhBOo(6LBHw#Z{=3FO)J9X#}xRMg0Th5-S&i zb5lG0wGS^VKDR!0SOzG};0^H4q6tF;*fzqgF@Is3qI(Gm#)>;=2JyZd(8La7l%d_ot8rr15@7HH5FJzz-f;OskW@|1TcDwwM;7s^S}sB>QU&*c zKd7;~_dhit2W;51Du$Pp7*48LH+H&yU{ z?7AVVRxv7!?0_HA;QZP>ZpV{rvqF$xBX5!_hf=)%7#H;#NCq+qR_LZg6||3&9-SxK z8D9uPQG&_oRKu#K%2Q&pUG?K zfat%^@vfdR8{u0_d@Vzqn{;;F#m-rgMs(y@@|x0x;R|aagJU%P&gdqMeM-?6Cb!A3 zklwXn%5Fs4uT+{M7eM_D)+~!NXcg_xd?hr~WHCUt1n+H!%GW-kF3$b|?7tr2E8diW zzV<~JV?Y_A6Mwqsit*^{b;!M9+-gus0q@yV9QBWRFWVxoz!*O@57Ui=W$ayB6T}dP z$#wnM`|=3uB{_`JAbq>xJ)$%eClmmVY+I&b z^|uZ!>$qDF;!R|s3AO+KUO+Sp zGzuxP#7pXSmi^@Drl#7n89<|3lQhX(iydZhwkmbaQr}Q?i7DVUf{ipRYiUdyDs4G0 zhRaHEHNtHra@69NsjCi*ov9DK;y#!}vOv#oxew$4H2wly7Y*evIYj6^L)<(3^C{o% zxN3af%)3Ramvuna5i!ivhBX#POBCq(M1`Hcu@VtNb+3$zEET%Pr%6_?uBnp>$<9LSHo)&Hky?-`%C`K~L1iD}8J zd^C%CzQO&^rJyBAd)jz|w`Ccyh4#N(9Pa^Nin3O-K%(AQf5Yw6Sk*~e_Xd+VVV3{t zF@X4;Be#Z7D^>EskEQ(o>|rTmJ$Wd*jw=3~`r@a^mR6h>H*yVE8aUsG!9v`%GTbu{jzgR9mvxxGlZV^&S10Sn94b z;o}|9HKtIaij{)2z^5;?mo1RjM8E^dbZNI#kCW zGc)rN3V(5ao+V^X-4S#ca;t*t&QiaB)$V_N%k~^)&5T(QYPZv@NqxFwq`~!63~rn@ zwL$LPo<$X6r3Yith%g&eC{F2XX~j6!!BlD+-ITcN*umN5tqO6CN+D^+2JbHkzRGGn zalj(mQ9sn>W%v&Fi6UX~mb8OTiv7OU$wLG7Y}P}Z?Dd>VDxnln&#v3NU4>}im80Jh z?==y2q%#c+Fr<%*bm=1iaW9Xy*Dj4}%U{AMrIO36J?+N$$}>r3L`;V0jY7KlY}v>> z4t(s|KSZ?u!IrUO3t(E3&Hc)0y+`?L#0v3txF*@>V5N-2v;i9-$iAIC`gU)BtDRx2 z{U-M0YflUL*eiW!Tv-JRqGl|`TTSM+h6KZGD}z~zpAoD#q!&MwC{R(Z*RuFm{)Ili z%@7>?>wpuwEMwz^&$rGXgX5bQN1X{$Atp<#2CA@ZhqL!a7Ta;O(YGbK`kOqtL~I8{ zn^?bHnFl#gA$0)oa%oPOzf67k12!p_UZ;JW4%KtIn4L{Xx~V zdr?WE^TLdry}q?0q8pv0Wpjr3P(x-CBsK9Ws4|Ew+1UgbC+2}SAif%ou%C^BYJRYpP-UL^tE&o{vkGG>D^?mi z3p)^L_B^i`9}53pDLW;XQdK{Ae!4n{h~4i+4cw2d)Aj z(tCcD>1=N0&eaA{noF-m^!rw z7g+KXZ@iU+f88}6y}u;n<*Hm%uH-&y`n!MJS$#Q}*IFs&crs2&OTSR-5>OcEq5XNv zmABF3sRzKA0^{Lx6gJmJSL;{Eg|||3=xd;?9Cf^)Ow4C1I{DF+oJ$Hj#1fVGAsgX) zO6rE$SuBKSp%!(kPrBD|GA=S*U4jl#(MebKJyRcd@OW@vT#Ndm2CxcIxfh=hrl&^I z_SqGr69oC~65Lx%a8hQEx3DZe`Znicsx#qDHEa9UXiv#T$GlLjbqW zir0Oq1~N5@h8A4x!&F)gp26p#Y5f193mPD$djCqK*h26l3Zb3!xp?W!sp|5Y?G>T`*O*E-TXM5iE2)XdRiznPbAD=tQ&m zjlw<7;w1<*2dLI!QwYix>x>l??5o2{e}g9|irUbXD>xS3;?*A9ds2*Lbe*CGksIDM z(I~lx<3v-<{H>B$_Eh0_ns+zs^T{vrG!Qv7QYg$)x z8>3%{!=yCey|MsAJ#y&v4~^Zm146a5qT!JWB23?rDbGgyyPq=rY7^O?OEa6>VKGlVf4UFqCD{HaIxRi(OOf?n!5oXSB2(J2+BG=4bTxWN%PQ$0u zWRhlX0`*sjsv>zi9S;}T>)~z$@C5`XwK>=q5(u8WUcvEg<;@tktSL;FSK$0tdWlY4 z2@&y8Ul*C{*%tA`yjryR^i=};T>9KweUH3>@w`Wp{=1y5$?!nNnFgHBu(|;r=)&kV@H(Qe(*zq=+ks=9Im9- zh-SWKm9_G>tfoKh!3u*ZGOLM0 zL(4VMq}d%`;Oi>QG{PB~EOpWDcRXPpuN%-LJIF@$e7 zP${wPvb}USHc;svbC;)Yvnm};vPCHe>Q+0tdE-i?%lrBu6YB>GemI*KpjI0MHe810 zj|E)DP7T1%jjzPou8yRo+uaH8&kJK8XBN-VO8*)BelqqPqL98$Js85>q%*}j6MMR< z?F(wdXQ#*ii-_~Lp8Fn@0qXC(ASkhuBYmLPTA2J<6hp0*ZEm&?(`1zWw3Ywatfk#6 zffc&jeB@ykD&F?aJe~{O8d8^}>Mcb8Rj-!y+D<17`>Xl4v!y-viJSDiT3-L8V|?-u z{Dzp8<{KnU>Sp7_Uzj-R_jQcP+HKta{pE)EFJd^-u%eK9Yn@m zg32?%;Y)iRPb)HCPnQ7A2bx0Ab#0d{sKqn|(=`k6`qSa(y$<@eEp|ynzod{x2=l!= zw)Oxbzrf&PYi)doX;qV*CPu#f@#J6L)9_YJWVX~S_HdSHCp75nsD&>}?5RAkMRIoL zD*N|e{sS>EV(P!lK092xyb=8g%o+Swpce=Hr~O;E`?l9vFMZOL<<`Fb#Q(jo+5b&P zhqi?iYi4N4Obv#GvrGe=ZQvaFxDh$K`*g#iJ_vQGSj%SeZI~|E=p<3FlWT|i^`)?j zrhM4oSjw;pURi_y#tYYOH1pEvLuLX042BVz5%1ULX zsC>P3d`HwEk-Eu~UN_&HS{$0lHzv?@hEKbx<DHd|c<|{-jzVL!LpfoELHz}}G zZ=c6~_Hk%1K(;{%5po$GT2neVj4AnsrzZGfb&+A9%yWxjvJ^$2 zP+|@QU>L(?do?--bZ*{P8#pWywY9-i?B+R&EB5w>^W_K}sNFmm1@97?d;>O)`932q6sXn%JF_zVa@#gt%jeF;%BMgb^xiU?Xpo zpOEePINJM-b=|4J^I*0=r4(S!9x^Ss=eM$RkEu>PzmiYBi4HI3(DLROK zxrt_?`L6bSu?ChI`;Ucl@oaOic9fnN{&+$67;{%U{gSykd6XVV7LBKlT@L>X(HEgx zA38R2lwL9*FHggDr0X!~h_m4oE{r6e4$4tr=j8onkJCyO7M&B4`13g3yiq<;J5(A_ zA^Bb=CFx_-3>bjSN-KyK$o~5g@`tM})f`dG?mc9*7Sa#kvVSErmPih43w9?^>eXrB z9CIs}iM7}Rza}U3l+S0BJZGU8IGdL)Nd^Bk%~^|mN;(S8ew`o_iLQvYOK zl0XO;lZ+Q(9QAl-%GoE(d&s6U3xd&4Ie}hB6 zt9^{r5YxbVE>Gf7Nm{tErPXTuiKqY)1<*Hz=Q*?%&fn|LdXuVtgj)B%X_Mt!Vxl`A z$1B85;us8^^7S3oA!P=oy^!}kWm17jS#ddwY^qB8i}J@3}#+v?yUF(3K}7jM7$+@Kf!0rU~*_8#anJ;$I~Y@`BAUIb8uT- zp;vqPkcg8NZhB-JsY;Dq`w@sFQ%N6~JiH}|mA?FO^VG}^lfK&yENOw=F3bJC-yU&+ z65fA45s~uV-|I`_@m_wgwi=q-;<2P~I{BL>hy@Lf?=se0rX@=1a^Lfnh3Bm)$iOZJ z9QyR8!i9;+Vup?5WTig4M$hUWfKtOF&!zp5vYh*DJ&Da7F#ANXBHwwGD6@J=M%7l4 z4DMMBTn;(0+^kV&&i8qyJWia;mYtP%$6gYtqR;=6yOgYw35=E>F-vd6PLPcYvl#lVS7 zc&K^iS#Db>qA7`hpvZ^{YH=@!sqRlD#LKOpzH#8C)NXm+9ZORcU5Dv~^D77@lx#}I zW(Zm)1T?6P0wB0t7c7=iROic3(wqVd*)L{D`R&D->_0jq5N$unZotD#`ytd8nbH$* z0o1mc5gvuu{!zMMOOSWuU^9D24@Z>Z&^!D^@b`XlqL?KiXo>^^MCddfYzDRwW7i(X ztmPFK*L1&}M>)77@ZD88su@4+ z_YBLd(p{thE(C}er!A|NRy?O)Xo7vAjEiRaN%-%~o>z4o95ym9&{4#&w(+8{%~1g* zi%jgzi=82q3{p8D=}-y$WZa*q3|yZxBnnEHKu#N=g&*U+97ZKi#p>g;G4D2Q-$QM~ z&5^yAxdsaos{q@{m)t-V3|!3{K7$VMIsf6yBLAW#38H)#J|(CP3(B}(k$SWazu=Q7 zUeUxHFYpMm7Xl^##$|!7xNqyCzle~I-A3GCW|29GqUHKztY+DKTKgE(;JgypzdzR| zP8(JEB0=FuUVaZ$6foKeo*#CR+whSMek$C4t=^38c%~q2rzKY#U|sIiv1m;O-p%qPlHBV8D=+vh(K^C9__~EL0{$=(W=R=>s8B2M?_D1mImoRmwe!qB zz9u6k(~os*y9T83^lr5@{wMF7^%^TNF&%VbfMWSF3hONr#gv!dvWXZRr3gcDS+E6I zmJRF2HYc#w58PS;7pPhQR9&%19DAvZ@D;c$jw^c)_y)VaOr5CnnicXZ>#5(MGPO)S3s)^xenO-X2>sE#I5qZcGD>9Bi5KBw;k+i5(Lv(S;hg0v z3FPRu4}BmGGk-&FlPmYTzhW%hP3PcSLudfBFzr&}5Wb}M)$;~<;{HAN)*7G{62#izeJ&OXgW%ZKJ zULlTa20U})N*|OHC{Jije@7u4)$KUTR2jB< ziMQ{y1Kh08KZ45O%)~|k-NUf>UFzWEqIa}i6n~u!$O_EOEm-g7`E}XJH&)srjc55^4^JaYAlQ1~rMGHs z+~@7_PC!a#4K|6re1Zzy98OWjU8 zi%RFaf7e?(P_M}hB>gb~!F?SA$zg-tEm+}-UbKdpnLrzx9U+vnOKWNX(O`^3x(b2# zs|8aRDJg&3x%si{r!ng$VM`rJA9B9RT25SnSOkiY+svl~pBX)ph|li)Y{u#%2J(_E zMVp-FfcVC(vFSmHgNp@8#bF*kIYr)>j_eGQ3VJ|9B7^3Pv8ie@jEC$J>vtW z^Q;ZhiW!OFpUNgLe60(1Us5H8;gdOiO!$;1gs#N z{TBYFj6Bt#51^v480Fqw=w8~3sRyb30{rgT-9U6UViP*oL3DtYq_Q1VhNTsqc?h-X zOtZ5vT~ZhBQc3INN;R~I9~v2;FVb8iEvGY{c-{7H#1@0BX{O8Q1X;3Kx3Sb>GpbLx zuk7pLOWJ5D%Xj?wr)3M{)f&LKh##~WvJV^Csm0RqyfZ2xnBK&y<}lQw->WB62%xX_ zU6KFyor-sLWh^2u%u%dmuSTHNT{?5hAYD}PquaJJ5(lwfBb4yWmxfc{FN$2##v?7gG{YN-Xdwtm&dy2BSk zukBm5{#V~ECn6jxl*)MoELdv21yyG|{>G$}XcXU1=hS9ObM4WlKUX9fcHNPB7LiZj7XVoYFu*o%L(@+1=T1j)_Eniw4A?E3*ZII0%hIZ1nhnIE*JF&(rF5oeG zZZNT=lJ}kGqv(5~31mrx+I-DR{c8o%XP^zPz!xxB3w~w{+4P;oZ!iUoR-8#wvzT8y zqk<^p4HXFt?SAx?yH2L|Gvzo!6A5o~*Cl78BNS_bs2X}gLly)k@SIstVx67oCiv=g z70xtq*vpxji?6s&bLOUoi?HD7 zdg%*Xq_$sLz>~6YIFLwNofga19Ch2eXg*8vV|M#TvJnaQ`Gv-V&-xn6=rZwXMUxoN zVo136toF79)Q#p+m$(_NJQtt}WlN<1$aV@FMhw}B4mIpW(!N)0p|o5Bd}n6$t$^5| zTWxYfpaJB2>9*ZYw^=pcg=;%R70)1_&W?mzXwcyF&rRP_`;22ytrf}&ocR7{_KXE# z1HAsX?$@A*+wJx5@`dtcrLmHq$S)9`1CqlTKql9HpLb8Q-!t7v`mvobFqfQEB2C&n z*}<%ltd?!xYONan?j>AZ{H--BEexdJ%)=1)}b(y~zinHKh zZxw&E|B}+ey}>b#Ni`i(Rfvdu?6bGtZov#s`vXYZ%uq~2y~uykemmER{CHt!UOIUL z;IH4;pP5YC;<4VDKK!He-v&HE!Y@ej&BMRjzAoD!o`0)1yKi^<*=4!+LyPCZ+{IB5 zcKB299v+!iI#ETcfgj@6E!4%4_FH{Pb!|ankru;XF2^+si3DtX2!;)Uo z;uy|h&);X}tSleBSxLdoyok!C)Oh$AvA!Bf$@oz%XZfXM=>RQ!Zl}Ck$EAMUepbQT zx0G7LdoE`LTI~O)N%**Gv3o`R_MyRTugUqJ)m2FX-w_{gxxdiT{yA-dGjjY>EmkX=g}^{kuCww$L0byL zN;7Tn41`gpU-mPqagFX31pH>oHK))08F|L4RUk!xTG<7?djXoTm7)b=GJXi7e(W!O zsCc_caQd?%j0hc?vJ!O94xiVkn+}k7Fr)lQ&i=*mFaBSK7StX}fVluvF=crf@U<%f zg~hg}2t&syr8y3BN`+Hf!L0OY1bjvC;bxFBYH&?FEdUvm4#d*1qpMk<^^)b9?pIx{ zRdv9-=$&jW7N3W9s7DPpIq`RChg28SL?1gUpCbx}KRT-JKIh@Y&hG?Ep@LYvqgx9Y z{GOq_C8E?IHd}Q|%1dC!Q~i|jxtxFrpCcL?PnyzTrdE=d_x7tDQ?eZ4KOgALosd-N z3my&%p!Eetn>M6}Luu^j3Ot$Vp@~k`a`?vz1>@1pnQAB~X|E_XfT}Rzjn0>qKI|IM z6Ga{{JE$muI2ib%-yI;)w9S~Ib-5%8FZQd8{DIM&fB$T? iQvb`4#r$s<(NS_-pZPO+h-U+TK~Yvvm#>gD4f!8-+0vZ= diff --git a/modem.py b/modem.py new file mode 100644 index 0000000..21cd2e6 --- /dev/null +++ b/modem.py @@ -0,0 +1,287 @@ +"""Read-only client for AT&T BGW-series fiber gateways (tested on BGW320-505). + +The gateway has no API, but its status pages are served without a login, so +this scrapes them over HTTP. Only GET requests to the fixed status pages below +are ever made: nothing here can change gateway settings. + +Units come from the gateway's own help text, checked against live readings: + Rx/Tx power tenths of a dBm (-169 -> -16.9 dBm) + Temperature degrees C + Uptime seconds (despite the help text claiming D:H:M:S) + +Deliberately not used, because the page disagrees with itself: + Vcc / Tx Bias readings values do not match the documented scales, so only + their alarm/warning flags are kept + Rx LOS State reads 1 on a healthy link; "Optical WAN Operational + Status" is the reliable signal + Last Change does not count up, despite the help text +""" +import html +import logging +import re +from datetime import datetime, timezone +from typing import Dict, List, Optional + +import requests + +logger = logging.getLogger('gandalf.modem') + +_FIBER_PAGE = '/cgi-bin/fiberstat.ha' +_BROADBAND_PAGE = '/cgi-bin/broadbandstatistics.ha' +_SYSINFO_PAGE = '/cgi-bin/sysinfo.ha' + +_ROW_RE = re.compile(r']*>(.*?)\s*]*>(.*?)', re.I | re.S) +_TAG_RE = re.compile(r'<[^>]+>') +# e.g. "0 (Threshold -292)": alarm flag, then the limit +_DOM_CELL_RE = re.compile(r']*>\s*(\d+)\s*\(Threshold\s+(-?\d+)\)\s*', re.I) + +# Page heading -> (result key, scale to real units; None = reading is unusable) +_DOM_METRICS = { + 'Temperature': ('temperature', 1.0), + 'Vcc': ('vcc', None), + 'Tx Bias': ('tx_bias', None), + 'Tx Power': ('tx_power', 0.1), + 'Rx Power': ('rx_power', 0.1), +} + +_COUNTERS = { + 'rx_bytes': 'Receive Bytes', + 'tx_bytes': 'Transmit Bytes', + 'rx_errors': 'Receive Errors', + 'tx_errors': 'Transmit Errors', + 'rx_drops': 'Receive Drops', + 'tx_drops': 'Transmit Drops', +} + + +class ModemUnreachable(Exception): + """The gateway did not answer (power, cabling, or routing problem).""" + + +class ModemDataInvalid(Exception): + """The gateway answered but the page was not what we can parse. + + AT&T pushes firmware automatically, so this is how a layout change or a + newly login-protected page shows up. + """ + + +def parse_rows(page: str) -> Dict[str, str]: + """Return {label: value} for the page's / rows; the first label wins. + + First wins because labels repeat: "Transmit Packets" appears under both + IPv4 and IPv6, and the IPv4 block comes first. + """ + rows: Dict[str, str] = {} + for label, value in _ROW_RE.findall(page): + key = html.unescape(_TAG_RE.sub('', label)).strip() + if key: + rows.setdefault(key, ' '.join(html.unescape(_TAG_RE.sub('', value)).split())) + return rows + + +def parse_dom_metrics(page: str) -> Dict[str, dict]: + """Parse the fiber page's Temperature / Vcc / Tx Bias / Tx Power / Rx Power tables.""" + metrics: Dict[str, dict] = {} + for heading, (key, scale) in _DOM_METRICS.items(): + m = re.search( + rf'

\s*{re.escape(heading)}(?: |\s)+Currently\s+(-?\d+)\s*

(.*?)', + page, re.I | re.S, + ) + if not m: + continue + cells = _DOM_CELL_RE.findall(m.group(2)) + if len(cells) != 4: # alarm low, alarm high, warning low, warning high + continue + + def limit(raw: str, scale: Optional[float] = scale) -> Optional[float]: + return round(int(raw) * scale, 1) if scale is not None else None + + metrics[key] = { + 'value': limit(m.group(1)), + 'alarm_low': limit(cells[0][1]), + 'alarm_high': limit(cells[1][1]), + 'warn_low': limit(cells[2][1]), + 'warn_high': limit(cells[3][1]), + 'alarm_flag': cells[0][0] != '0' or cells[1][0] != '0', + 'warn_flag': cells[2][0] != '0' or cells[3][0] != '0', + } + return metrics + + +def metric_status(metric: dict) -> str: + """Classify a DOM metric as 'alarm', 'warning', or 'ok'. + + Trusts the module's own flags, and also compares the reading to its limits + in case the flags are latched off. + """ + value = metric.get('value') + + def outside(low: Optional[float], high: Optional[float]) -> bool: + if value is None: + return False + return (low is not None and value <= low) or (high is not None and value >= high) + + if metric.get('alarm_flag') or outside(metric.get('alarm_low'), metric.get('alarm_high')): + return 'alarm' + if metric.get('warn_flag') or outside(metric.get('warn_low'), metric.get('warn_high')): + return 'warning' + return 'ok' + + +def _to_int(raw: Optional[str]) -> Optional[int]: + try: + return int(raw) # type: ignore[arg-type] + except (TypeError, ValueError): + return None + + +def wan_problems(data: dict) -> List[str]: + """Return human-readable reasons the WAN is down; empty when it looks healthy.""" + problems = [] + if (data.get('broadband_state') or '').lower() != 'up': + problems.append(f'broadband connection is {data.get("broadband_state") or "unknown"}') + if (data.get('optical_state') or '').lower() != 'up': + problems.append(f'optical WAN is {data.get("optical_state") or "unknown"}') + pon = data.get('pon_state') + if pon and 'O5' not in pon: # O5 is the PON "operation" state; older firmware may omit the field + problems.append(f'PON link state is {pon}') + return problems + + +def build_status(fiber_page: str, broadband_page: str, sysinfo_page: str = '') -> dict: + """Combine the status pages into one dict. Raises ModemDataInvalid if unusable.""" + fiber = parse_rows(fiber_page) + broadband = parse_rows(broadband_page) + sysinfo = parse_rows(sysinfo_page) + + if 'Optical WAN Operational Status' not in fiber: + raise ModemDataInvalid('fiber page is missing "Optical WAN Operational Status"') + if 'Broadband Connection' not in broadband: + raise ModemDataInvalid('broadband page is missing "Broadband Connection"') + + metrics = parse_dom_metrics(fiber_page) + data = { + 'model': sysinfo.get('Model Number', ''), + 'firmware': sysinfo.get('Software Version', ''), + 'uptime_s': _to_int(sysinfo.get('Time Since Last Reboot')), + 'broadband_state': broadband.get('Broadband Connection', ''), + 'source': broadband.get('Broadband Connection Source', ''), + 'wan_ip': broadband.get('Broadband IPv4 Address', ''), + 'pon_state': broadband.get('PON Link Status', ''), + 'uni_state': broadband.get('UNI Status', ''), + 'line_speed_mbps': _to_int(broadband.get('Current Speed (Mbps)')), + 'optical_state': fiber.get('Optical WAN Operational Status', ''), + 'wavelength': fiber.get('Wave Length', ''), + 'optics_part_no': fiber.get('Vendor PN', ''), + 'optics': metrics, + 'counters': {k: _to_int(broadband.get(label)) for k, label in _COUNTERS.items()}, + } + + # With a healthy link the optics must be readable; if not, the layout changed. + # With a cut fiber they may legitimately be blank, so don't report that as invalid. + if not wan_problems(data) and 'rx_power' not in metrics: + raise ModemDataInvalid('link is up but no Rx power reading was found') + return data + + +def counter_rates(current: dict, previous: Optional[dict], elapsed_s: float) -> Dict[str, Optional[float]]: + """Return per-second rates between counter snapshots. + + A rate is None rather than a bogus value on the first poll, or when a counter + goes backwards because the gateway rebooted. + """ + rates: Dict[str, Optional[float]] = {} + for key, now_val in current.items(): + then = (previous or {}).get(key) + if now_val is None or then is None or elapsed_s <= 0 or now_val < then: + rates[key] = None + else: + rates[key] = (now_val - then) / elapsed_s + return rates + + +class ModemClient: + def __init__(self, cfg: dict): + self.base_url = cfg['url'].rstrip('/') + self.timeout = cfg.get('timeout', 10) + self.session = requests.Session() + + def _get(self, path: str) -> str: + try: + # Protected pages redirect or render a login form, so never follow redirects. + resp = self.session.get(f'{self.base_url}{path}', timeout=self.timeout, allow_redirects=False) + except requests.RequestException as e: + raise ModemUnreachable(f'{path}: {e}') from e + if resp.status_code != 200: + raise ModemDataInvalid(f'{path} returned HTTP {resp.status_code}') + if re.search(r'\s*Login', resp.text, re.I): + raise ModemDataInvalid(f'{path} now requires a login') + return resp.text + + def poll(self) -> dict: + """Return gateway status. Raises ModemUnreachable or ModemDataInvalid.""" + fiber = self._get(_FIBER_PAGE) + broadband = self._get(_BROADBAND_PAGE) + try: + sysinfo = self._get(_SYSINFO_PAGE) + except (ModemUnreachable, ModemDataInvalid) as e: + # Model and uptime are nice to have, not worth failing the poll over. + logger.warning(f'Modem system info unavailable: {e}') + sysinfo = '' + data = build_status(fiber, broadband, sysinfo) + data['updated'] = datetime.now(timezone.utc).strftime('%Y-%m-%d %H:%M:%S UTC') + return data + + +# --------------------------------------------------------------------------- +# WAN history: outages and gateway restarts, which are too brief to catch by polling +# --------------------------------------------------------------------------- +LOG_WAN_FAILED = 'NETWORK_WAN_FAILED_2' +LOG_WAN_RESTORED = 'NETWORK_WAN_RESTORED_2' +LOG_WAN_UNSTABLE = 'NETWORK_WAN_FAILED_MULTIPLE_TIMES_2' +LOG_MODEM_RESTARTED = 'SMART_POWER_MODEM_RESTARTED' +WAN_LOG_KEYS = (LOG_WAN_FAILED, LOG_WAN_RESTORED, LOG_WAN_UNSTABLE, LOG_MODEM_RESTARTED) + +_HISTORY_LIMIT = 50 +# The RPDU's log entry and the gateway's calculated boot time can differ by this much. +_RESTART_MATCH_WINDOW_S = 600 + + +def apply_wan_events(history: dict, events: List[dict]) -> List[dict]: + """Fold UniFi log events into *history* in place and return the ones worth a ticket. + + Each event is {'key', 'ts' (epoch seconds), 'device', 'wan'}. + """ + outages = history.setdefault('outages', []) + restarts = history.setdefault('restarts', []) + actionable = [] + for e in sorted(events, key=lambda ev: ev['ts']): + key = e['key'] + if key == LOG_WAN_FAILED: + if not any(o.get('restored_at') is None for o in outages): + outages.append({'failed_at': e['ts'], 'restored_at': None, 'wan': e.get('wan', '')}) + elif key == LOG_WAN_RESTORED: + for o in reversed(outages): + if o.get('restored_at') is None: + o['restored_at'] = e['ts'] + break + elif key == LOG_MODEM_RESTARTED: + restarts.append({'at': e['ts'], 'by': e.get('device') or 'smart power', 'confirmed': False}) + actionable.append(e) + elif key == LOG_WAN_UNSTABLE: + actionable.append(e) + del outages[:-_HISTORY_LIMIT] + del restarts[:-_HISTORY_LIMIT] + return actionable + + +def record_uptime_reset(history: dict, boot_ts: float) -> None: + """Note that the gateway's uptime went backwards, attributing it to a logged restart if possible.""" + restarts = history.setdefault('restarts', []) + for r in reversed(restarts): + if abs(r['at'] - boot_ts) <= _RESTART_MATCH_WINDOW_S: + r['confirmed'] = True + return + restarts.append({'at': boot_ts, 'by': None, 'confirmed': True}) + del restarts[:-_HISTORY_LIMIT] diff --git a/monitor.py b/monitor.py index 79503a5..7522883 100644 --- a/monitor.py +++ b/monitor.py @@ -11,14 +11,17 @@ import json import logging import re import shlex +import statistics import time from datetime import datetime, timezone from typing import Dict, List, Optional +from urllib.parse import urlparse import requests from urllib3.exceptions import InsecureRequestWarning import db +import modem as modem_api logging.basicConfig( @@ -53,7 +56,8 @@ class PrometheusClient: def __init__(self, url: str): self.url = url.rstrip('/') - def query(self, promql: str) -> list: + def _fetch(self, promql: str) -> Optional[list]: + """Return query results, or None if the query itself failed.""" try: resp = requests.get( f'{self.url}/api/v1/query', @@ -64,13 +68,23 @@ class PrometheusClient: data = resp.json() if data.get('status') == 'success': return data['data']['result'] + logger.error(f'Prometheus query unsuccessful ({promql!r}): {data}') except Exception as e: logger.error(f'Prometheus query failed ({promql!r}): {e}') - return [] + return None - def get_interface_states(self) -> Dict[str, Dict[str, bool]]: - """Return {instance: {device: is_up}} for physical interfaces.""" - results = self.query('node_network_up') + def query(self, promql: str) -> list: + return self._fetch(promql) or [] + + def get_interface_states(self) -> Optional[Dict[str, Dict[str, bool]]]: + """Return {instance: {device: is_up}} for physical interfaces. + + Returns None when Prometheus can't answer or has no series at all, so + callers can tell "we can't see anything" apart from "this host is gone". + """ + results = self._fetch('node_network_up') + if not results: + return None hosts: Dict[str, Dict[str, bool]] = {} for r in results: instance = r['metric'].get('instance', '') @@ -85,6 +99,10 @@ class PrometheusClient: # UniFi client # -------------------------------------------------------------------------- class UnifiClient: + # Devices whose port tables are collected: switches and the gateway/router + _PORT_DEVICE_TYPES = ('usw', 'udm', 'ugw', 'uxg') + _SYSTEM_LOG_MAX_PAGES = 10 + def __init__(self, cfg: dict): self.base_url = cfg['controller'] self.site_id = cfg.get('site_id', 'default') @@ -97,6 +115,96 @@ class UnifiClient: 'Accept': 'application/json', } + def get_device_details(self) -> Optional[Dict[str, dict]]: + """Return firmware, load, WAN, and outlet details per device name. + + Uses the v1 stat API, the only one that includes these fields. + """ + try: + url = f'{self.base_url}/proxy/network/api/s/{self.site_id}/stat/device' + resp = self.session.get(url, headers=self.headers, timeout=15) + resp.raise_for_status() + return { + d.get('name') or d.get('mac', 'unknown'): self._device_detail(d) + for d in resp.json().get('data', []) + } + except Exception as e: + logger.error(f'UniFi device detail error: {e}') + return None + + @staticmethod + def _device_detail(d: dict) -> dict: + def number(raw) -> Optional[float]: + try: + return float(raw) + except (TypeError, ValueError): + return None + + stats = d.get('system-stats') or {} + wan = {} + for key in ('wan1', 'wan2'): + w = d.get(key) or {} + if w: + wan[key] = { + 'up': w.get('up'), 'speed_mbps': w.get('speed'), + 'latency_ms': w.get('latency'), 'availability': w.get('availability'), + } + return { + 'firmware': d.get('version', ''), + 'uptime_s': d.get('uptime'), + 'cpu_pct': number(stats.get('cpu')), + 'mem_pct': number(stats.get('mem')), + 'clients': d.get('num_sta'), + 'temps': [ + {'name': t.get('name', ''), 'value_c': number(t.get('value'))} + for t in d.get('temperatures') or [] + ], + 'wan': wan, + 'power_w': number(d.get('outlet_ac_power_consumption')), + 'outlets': [ + { + 'index': o.get('index'), + 'name': o.get('name', ''), + 'on': o.get('relay_state'), + 'auto_power_cycle': o.get('cycle_enabled'), + 'power_w': number(o.get('outlet_power')), + 'current_a': number(o.get('outlet_current')), + } + for o in d.get('outlet_table') or [] + ], + } + + def get_system_events(self, since_ms: int, keys: tuple) -> Optional[List[dict]]: + """Return system log entries with the given keys, or None if the log is unavailable.""" + url = f'{self.base_url}/proxy/network/v2/api/site/{self.site_id}/system-log/all' + found: List[dict] = [] + try: + for page in range(self._SYSTEM_LOG_MAX_PAGES): + resp = self.session.post( + url, headers=self.headers, timeout=20, + json={ + 'timestampFrom': since_ms, 'timestampTo': int(time.time() * 1000), + 'pageNumber': page, 'pageSize': 200, + }, + ) + resp.raise_for_status() + items = resp.json().get('data') or [] + if not items: + break + for e in items: + if e.get('key') in keys and e.get('timestamp', 0) >= since_ms: + params = e.get('parameters') or {} + found.append({ + 'key': e['key'], 'ts': e['timestamp'] / 1000, + 'device': (params.get('DEVICE') or {}).get('name', ''), + 'wan': (params.get('WAN_ID') or {}).get('name', '') + or str((params.get('WAN_ID') or {}).get('id', '')), + }) + return found + except Exception as e: + logger.error(f'UniFi system log error: {e}') + return None + def get_devices(self) -> Optional[List[dict]]: """Return list of UniFi devices, or None if the controller is unreachable.""" try: @@ -122,7 +230,7 @@ class UnifiClient: return None def get_switch_ports(self) -> Optional[Dict[str, dict]]: - """Return per-port stats for all UniFi switches, keyed by switch name. + """Return per-port stats for UniFi switches and routers, keyed by device name. Uses the v1 stat API which includes full port_table data. Returns {switch_name: {'ip': str, 'model': str, 'ports': {port_name: {...}}}}. @@ -134,7 +242,7 @@ class UnifiClient: devices = resp.json().get('data', []) result: Dict[str, dict] = {} for dev in devices: - if dev.get('type', '').lower() != 'usw': + if dev.get('type', '').lower() not in self._PORT_DEVICE_TYPES: continue sw_name = dev.get('name') or dev.get('mac', 'unknown') sw_ip = dev.get('ip', '') @@ -321,13 +429,19 @@ class PulseClient: return self.run_command(command, _retry=False) return None - def ping(self, ip: str, count: int = 3, timeout: int = 2) -> bool: - """Ping *ip* via the Pulse worker. Returns True if host responds.""" + def ping(self, ip: str, count: int = 3, timeout: int = 2) -> Optional[bool]: + """Ping *ip* via the Pulse worker. + + Returns True/False for the host's reachability, or None if Pulse itself + couldn't run the check, which says nothing about the host. + """ ip_q = shlex.quote(ip) output = self.run_command( f'ping -c {count} -W {timeout} {ip_q} >/dev/null 2>&1 && echo REACHABLE || echo UNREACHABLE' ) - return output is not None and output.strip() == 'REACHABLE' + if output is None: + return None + return output.strip() == 'REACHABLE' # -------------------------------------------------------------------------- @@ -615,9 +729,12 @@ class LinkStatsCollector: except Exception as e: logger.warning(f'UniFi switch port collection failed: {e}') + unifi_devices = (self.unifi.get_device_details() or {}) if self.unifi else {} + return { 'hosts': result_hosts, 'unifi_switches': unifi_switches, + 'unifi_devices': unifi_devices, 'updated': datetime.now(timezone.utc).strftime('%Y-%m-%d %H:%M:%S UTC'), } @@ -625,8 +742,10 @@ class LinkStatsCollector: """Compute per-port byte/error rates from delta against previous snapshot.""" dt = now - self._prev_unifi_time if self._prev_unifi_time > 0 else 0 - def rate(new_val: int, old_val: int) -> Optional[float]: - if dt <= 0: + def rate(new_val: int, old_val: Optional[int]) -> Optional[float]: + # No earlier reading (first poll, or a new/renamed port) means no rate, + # not "all bytes since boot arrived in this one interval". + if dt <= 0 or old_val is None: return None return max(0.0, (new_val - old_val) / dt) @@ -637,12 +756,12 @@ class LinkStatsCollector: for pname, d in sw_data['ports'].items(): entry = dict(d) prev = prev_ports.get(pname, {}) - entry['tx_bytes_rate'] = rate(d['tx_bytes'], prev.get('tx_bytes', 0)) - entry['rx_bytes_rate'] = rate(d['rx_bytes'], prev.get('rx_bytes', 0)) - entry['tx_errs_rate'] = rate(d['tx_errors'], prev.get('tx_errors', 0)) - entry['rx_errs_rate'] = rate(d['rx_errors'], prev.get('rx_errors', 0)) - entry['tx_drops_rate'] = rate(d['tx_dropped'], prev.get('tx_dropped', 0)) - entry['rx_drops_rate'] = rate(d['rx_dropped'], prev.get('rx_dropped', 0)) + entry['tx_bytes_rate'] = rate(d['tx_bytes'], prev.get('tx_bytes')) + entry['rx_bytes_rate'] = rate(d['rx_bytes'], prev.get('rx_bytes')) + entry['tx_errs_rate'] = rate(d['tx_errors'], prev.get('tx_errors')) + entry['rx_errs_rate'] = rate(d['rx_errors'], prev.get('rx_errors')) + entry['tx_drops_rate'] = rate(d['tx_dropped'], prev.get('tx_dropped')) + entry['rx_drops_rate'] = rate(d['rx_dropped'], prev.get('rx_dropped')) merged_ports[pname] = entry result[sw_name] = {'ip': sw_data['ip'], 'model': sw_data['model'], 'ports': merged_ports} @@ -685,6 +804,27 @@ class NetworkMonitor: self.cluster_thresh = mon.get('cluster_threshold', 3) self.cluster_name = mon.get('cluster_name', CLUSTER_NAME) + # Optional WAN modem (AT&T BGW-series); see modem.py + modem_cfg = self.cfg.get('modem') or {} + self.modem = modem_api.ModemClient(modem_cfg) if modem_cfg.get('url') else None + self.modem_name = modem_cfg.get('name', 'att-modem') + # Modem reboots (including AT&T's automatic firmware updates) take a few + # minutes, so this can be raised independently of failure_threshold. + self.modem_fail_thresh = modem_cfg.get('failure_threshold', self.fail_thresh) + self.rx_drift_db = modem_cfg.get('rx_drift_db', 3.0) + self.rx_drift_min_samples = modem_cfg.get('rx_drift_min_samples', 288) + self.modem_lan_ip = urlparse(modem_cfg['url']).hostname if modem_cfg.get('url') else '' + self._prev_modem_counters: Optional[dict] = None + self._prev_modem_time = 0.0 + if self.modem: + try: + db.ensure_modem_schema() + except Exception as e: + logger.error(f'Could not create modem history table: {e}') + + # Last good Prometheus result, shown (as unknown) during a Prometheus outage + self._last_iface_states: Dict[str, Dict[str, bool]] = {} + # Build Prometheus instance → hostname lookup self._instance_map: Dict[str, str] = { h['prometheus_instance']: h['name'] @@ -744,6 +884,22 @@ class NetworkMonitor: if host_has_regression: hosts_with_regression.append(host) + # A dead host doesn't report its interfaces as down: its series just + # disappear, so a configured host that's absent needs its own check. + for instance, host in self._instance_map.items(): + if instance in states: + db.resolve_event('host_metrics_missing', host, instance) + continue + hosts_with_regression.append(host) + sup = db.check_suppressed(suppressions, 'host', host) + event_id, is_new, consec, ticket_id = db.upsert_event( + 'host_metrics_missing', 'critical', 'prometheus', + host, instance, + f'No metrics from {host} ({instance}): host or node_exporter is down ({_now_utc()})', + ) + if not sup and consec >= self.fail_thresh and not ticket_id: + self._ticket_metrics_missing(event_id, host, instance, consec) + db.set_baseline(new_baseline) # Cluster-wide check – only genuine regressions count @@ -752,7 +908,7 @@ class NetworkMonitor: event_id, is_new, consec, ticket_id = db.upsert_event( 'cluster_network_issue', 'critical', 'prometheus', self.cluster_name, '', - f'{len(hosts_with_regression)} hosts reporting simultaneous interface failures: ' + f'{len(hosts_with_regression)} hosts with simultaneous interface or metrics failures: ' f'{", ".join(hosts_with_regression)}', ) if not sup and (is_new or not ticket_id): @@ -765,7 +921,8 @@ class NetworkMonitor: f'Affected hosts: {", ".join(hosts_with_regression)}\n' f'Detected: {_now_utc()}\n\n' f'{len(hosts_with_regression)} Proxmox hosts simultaneously reported ' - f'interface regressions (link-down on interfaces previously known UP).\n' + f'interface regressions (link-down on interfaces previously known UP) ' + f'or stopped reporting metrics.\n' f'This likely indicates a switch or upstream network failure.\n\n' f'Please check the core and management switches immediately.' ) @@ -775,6 +932,54 @@ class NetworkMonitor: else: db.resolve_event('cluster_network_issue', self.cluster_name, '') + def _ticket_metrics_missing( + self, event_id: int, host: str, instance: str, consec: int + ) -> None: + title = ( + f'[{host}][auto][production][issue][network][single-node] ' + f'No metrics from host' + ) + desc = ( + f'Host Metrics Alert\n{"=" * 40}\n\n' + f'Host: {host}\n' + f'Prometheus instance: {instance}\n' + f'Detected: {_now_utc()}\n' + f'Consecutive check failures: {consec}\n\n' + f'Prometheus is working but has no node_network_up series for {host}.\n' + f'Either the host is down or node_exporter has stopped on it.\n\n' + f'Please check the host power and network connectivity, then ' + f'prometheus-node-exporter on the host.' + ) + tid = self.tickets.create(title, desc, priority='2') + if tid: + db.set_ticket_id(event_id, tid) + + def _process_prometheus_outage(self, suppressions: list) -> None: + """Interface and host alerts can't fire without Prometheus, so say so.""" + sup = db.check_suppressed(suppressions, 'host', 'prometheus') + event_id, is_new, consec, ticket_id = db.upsert_event( + 'monitor_source_unavailable', 'critical', 'prometheus', + 'prometheus', '', + f'Prometheus returned no interface data; host and interface alerting is paused ({_now_utc()})', + ) + if not sup and consec >= self.fail_thresh and not ticket_id: + title = ( + '[prometheus][auto][production][issue][network][cluster-wide] ' + 'Gandalf has no Prometheus data' + ) + desc = ( + f'Monitoring Source Alert\n{"=" * 40}\n\n' + f'Prometheus URL: {self.prom.url}\n' + f'Detected: {_now_utc()}\n' + f'Consecutive check failures: {consec}\n\n' + f'Gandalf could not get node_network_up data from Prometheus.\n' + f'While this lasts, host and interface failures will NOT be detected.\n\n' + f'Please check the Prometheus service and its scrape targets.' + ) + tid = self.tickets.create(title, desc, priority='2') + if tid: + db.set_ticket_id(event_id, tid) + def _ticket_interface( self, event_id: int, host: str, iface: str, consec: int ) -> None: @@ -842,10 +1047,15 @@ class NetworkMonitor: # ------------------------------------------------------------------ # Ping-only hosts (no node_exporter) # ------------------------------------------------------------------ - def _process_ping_hosts(self, suppressions: list, ping_states: Dict[str, bool]) -> None: + def _process_ping_hosts(self, suppressions: list, ping_states: Dict[str, Optional[bool]]) -> None: for h in self.cfg.get('monitor', {}).get('ping_hosts', []): name, ip = h['name'], h['ip'] - reachable = ping_states.get(name, False) + reachable = ping_states.get(name) + + if reachable is None: + # Pulse couldn't run the check. Neither alert nor resolve on no evidence. + logger.warning(f'Ping check for {name} ({ip}) unavailable this cycle') + continue if not reachable: sup = db.check_suppressed(suppressions, 'host', name) @@ -881,26 +1091,301 @@ class NetworkMonitor: if tid: db.set_ticket_id(event_id, tid) + # ------------------------------------------------------------------ + # WAN modem monitoring + # ------------------------------------------------------------------ + _MODEM_METRIC_LABELS = { + 'rx_power': 'Rx power', 'tx_power': 'Tx power', 'temperature': 'Temperature', + 'vcc': 'Supply voltage', 'tx_bias': 'Tx bias', + } + _MODEM_METRIC_UNITS = {'rx_power': ' dBm', 'tx_power': ' dBm', 'temperature': ' C'} + + def _modem_event( + self, suppressions: list, event_type: str, severity: str, detail: str, + description: str, heading: str, priority: str, advice: str, + ) -> None: + name = self.modem_name + sup = db.check_suppressed(suppressions, 'host', name) + event_id, is_new, consec, ticket_id = db.upsert_event( + event_type, severity, 'modem', name, detail, f'{description} ({_now_utc()})', + ) + if not sup and consec >= self.modem_fail_thresh and not ticket_id: + title = f'[{name}][auto][production][issue][network][cluster-wide] {heading}' + desc = ( + f'WAN Modem Alert\n{"=" * 40}\n\n' + f'Modem: {name} ({self.modem.base_url})\n' + f'Detected: {_now_utc()}\n' + f'Consecutive check failures: {consec}\n\n' + f'{description}\n\n{advice}' + ) + tid = self.tickets.create(title, desc, priority=priority) + if tid: + db.set_ticket_id(event_id, tid) + + def _process_modem_failure(self, suppressions: list, error: Exception) -> None: + """Handle a failed poll. Link and optical events stay as they are: we can't see them.""" + name = self.modem_name + if isinstance(error, modem_api.ModemUnreachable): + db.resolve_event('modem_data_invalid', name, '') + self._modem_event( + suppressions, 'modem_unreachable', 'critical', '', + f'WAN modem is not responding: {error}', + 'WAN modem unreachable', '2', + 'Internet access is probably affected too. Check modem power and the ' + 'cable between the modem and the UDM-Pro.', + ) + else: + db.resolve_event('modem_unreachable', name, '') + self._modem_event( + suppressions, 'modem_data_invalid', 'warning', '', + f'WAN modem status could not be read: {error}', + 'WAN modem status unreadable', '3', + 'The modem answered but its pages could not be parsed, so fiber alerting is ' + 'paused. A firmware update may have changed them; see modem.py.', + ) + + def _process_modem(self, data: dict, suppressions: list) -> None: + """Raise and resolve alerts from a successful modem poll.""" + name = self.modem_name + db.resolve_event('modem_unreachable', name, '') + db.resolve_event('modem_data_invalid', name, '') + + problems = modem_api.wan_problems(data) + if problems: + self._modem_event( + suppressions, 'wan_down', 'critical', '', + f'WAN link is down: {"; ".join(problems)}.', + 'WAN link down', '1', + 'Check the fiber at the modem and the AT&T service status. Rx power at or below ' + 'the alarm limit points to a fiber fault rather than a provider outage.', + ) + else: + db.resolve_event('wan_down', name, '') + + for key, metric in data.get('optics', {}).items(): + status = modem_api.metric_status(metric) + if status == 'alarm' and problems and key == 'rx_power': + # wan_down already covers this, and a cut fiber would otherwise open two tickets. + status = 'ok' + label = self._MODEM_METRIC_LABELS.get(key, key) + value = metric.get('value') + reading = f' at {value}{self._MODEM_METRIC_UNITS.get(key, "")}' if value is not None else '' + limits = ( + f' (warning {metric.get("warn_low")} to {metric.get("warn_high")}, ' + f'alarm {metric.get("alarm_low")} to {metric.get("alarm_high")})' + ) if value is not None else '' + advice = ( + 'Inspect and clean the fiber connector at the modem and look for tight bends. ' + 'If that does not help, contact AT&T: the reading is what the modem measures ' + 'on the provider side of the connection.' + ) + + if status == 'alarm': + db.resolve_event('fiber_signal_warning', name, key) + self._modem_event( + suppressions, 'fiber_signal_alarm', 'critical', key, + f'{label} is in the alarm range{reading}{limits}.', + f'Fiber {label} alarm', '2', advice, + ) + elif status == 'warning': + db.resolve_event('fiber_signal_alarm', name, key) + self._modem_event( + suppressions, 'fiber_signal_warning', 'warning', key, + f'{label} is in the warning range{reading}{limits}.', + f'Fiber {label} warning', '3', advice, + ) + else: + db.resolve_event('fiber_signal_alarm', name, key) + db.resolve_event('fiber_signal_warning', name, key) + + self._check_rx_drift(data, suppressions) + + def _check_rx_drift(self, data: dict, suppressions: list) -> None: + """Alert on a sustained Rx drop relative to this link's own recent normal. + + The modem's limits are very wide (warning at -27.9 dBm on a link that sits + around -17), so a damaged connector could lose many dB before they trip. + """ + name = self.modem_name + rx = (data.get('optics', {}).get('rx_power') or {}).get('value') + if rx is None: + return + history = db.get_modem_rx_values(days=7) + if len(history) < self.rx_drift_min_samples: + return # not enough history yet to know what normal looks like + baseline = statistics.median(history) + drop = round(baseline - rx, 1) + if drop >= self.rx_drift_db: + self._modem_event( + suppressions, 'fiber_rx_drift', 'warning', 'rx_power', + f'Rx power is {rx} dBm, {drop} dB below its 7-day median of {baseline:.1f} dBm.', + 'Fiber Rx power dropped', '3', + 'The signal is still in range but has changed. Look for a recently disturbed ' + 'or bent fiber and check the connector at the modem.', + ) + else: + db.resolve_event('fiber_rx_drift', name, 'rx_power') + + def _load_wan_history(self) -> dict: + raw = db.get_state('wan_history') + if raw: + try: + return json.loads(raw) + except ValueError: + logger.error('Failed to parse wan_history JSON; starting over') + return {'outages': [], 'restarts': []} + + def _note_modem_restart(self, data: dict) -> None: + uptime = data.get('uptime_s') + if uptime is None: + return + previous = None + raw = db.get_state('modem_stats') + if raw: + try: + previous = json.loads(raw).get('uptime_s') + except ValueError: + logger.error('Failed to parse modem_stats JSON') + if previous is not None and uptime < previous: + logger.warning(f'Modem restarted: uptime went from {previous}s to {uptime}s') + history = self._load_wan_history() + modem_api.record_uptime_reset(history, time.time() - uptime) + db.set_state('wan_history', history) + + def _one_shot_ticket( + self, suppressions: list, event_type: str, description: str, + heading: str, priority: str, advice: str, + ) -> None: + """Report something that has already happened: open a ticket and resolve the event.""" + name = self.modem_name + event_id, _, _, ticket_id = db.upsert_event(event_type, 'warning', 'unifi', name, '', description) + if not db.check_suppressed(suppressions, 'host', name) and not ticket_id: + tid = self.tickets.create( + f'[{name}][auto][production][issue][network][cluster-wide] {heading}', + f'WAN Event\n{"=" * 40}\n\nModem: {name}\nReported: {_now_utc()}\n\n{description}\n\n{advice}', + priority=priority, + ) + if tid: + db.set_ticket_id(event_id, tid) + db.resolve_event(event_type, name, '') + + def _process_wan_log(self, suppressions: list) -> None: + """Read WAN outages and modem restarts from the UniFi log. + + These can be over in two minutes, so a 5 minute poll of the modem may never see them. + """ + now = time.time() + raw_cursor = db.get_state('unifi_log_cursor') + if raw_cursor is None: + # First run: start from now rather than ticketing old history. + db.set_state('unifi_log_cursor', str(int(now * 1000))) + return + # After long monitor downtime, don't open tickets for stale events. + since_ms = max(int(raw_cursor) + 1, int((now - 86400) * 1000)) + events = self.unifi.get_system_events(since_ms, modem_api.WAN_LOG_KEYS) + if not events: + return # None = log unavailable, so the cursor stays put and it's retried + + history = self._load_wan_history() + actionable = modem_api.apply_wan_events(history, events) + + # UniFi repeats "failed multiple times" per failure, so ticket it once a day at most. + unstable = [e for e in actionable if e['key'] == modem_api.LOG_WAN_UNSTABLE] + ticket_unstable = bool(unstable) and now - history.get('unstable_ticketed_at', 0) >= 86400 + if ticket_unstable: + history['unstable_ticketed_at'] = now + + # Save first: a failed ticket call shouldn't replay these events next cycle. + db.set_state('wan_history', history) + db.set_state('unifi_log_cursor', str(int(max(e['ts'] for e in events) * 1000))) + + for e in actionable: + if e['key'] == modem_api.LOG_MODEM_RESTARTED: + when = datetime.fromtimestamp(e['ts'], timezone.utc).strftime('%Y-%m-%d %H:%M:%S UTC') + self._one_shot_ticket( + suppressions, 'modem_power_cycled', + f'{e.get("device") or "Smart Power"} power-cycled the modem at {when} ' + f'to try to restore the internet connection.', + 'Modem auto power-cycled after internet loss', '3', + 'The internet connection failed badly enough to trigger auto power-cycle. ' + 'Check the WAN / Fiber panel for outages around this time and Rx power for a drop.', + ) + if ticket_unstable: + self._one_shot_ticket( + suppressions, 'wan_unstable', + 'UniFi reports the WAN connection went down multiple times in the last 24 hours.', + 'WAN connection unstable', '2', + 'See the WAN history on the modem page. Repeated drops with healthy Rx power ' + 'point toward the provider or the modem rather than the fiber.', + ) + + def _collect_modem(self, suppressions: list) -> None: + """Poll the modem, then store its status and raise any alerts.""" + try: + data = self.modem.poll() + except (modem_api.ModemUnreachable, modem_api.ModemDataInvalid) as e: + logger.warning(f'Modem poll failed: {e}') + self._process_modem_failure(suppressions, e) + db.set_state('modem_stats', { + 'reachable': False, 'error': str(e), 'name': self.modem_name, + 'lan_ip': self.modem_lan_ip, 'updated': _now_utc(), + }) + return + + # Uptime going backwards between polls means the gateway restarted, even if + # it came back too quickly for any poll to fail. Read before it's overwritten. + self._note_modem_restart(data) + + now = time.monotonic() + data['rates'] = modem_api.counter_rates( + data['counters'], self._prev_modem_counters, now - self._prev_modem_time, + ) + self._prev_modem_counters = data['counters'] + self._prev_modem_time = now + data['reachable'] = True + data['name'] = self.modem_name + data['lan_ip'] = self.modem_lan_ip + data['wan_problems'] = modem_api.wan_problems(data) + data['optics_status'] = {k: modem_api.metric_status(m) for k, m in data['optics'].items()} + db.set_state('modem_stats', data) + + # Alert before recording, so a sudden drop isn't compared against itself. + self._process_modem(data, suppressions) + + optics = data['optics'] + db.record_modem_sample( + (optics.get('rx_power') or {}).get('value'), + (optics.get('tx_power') or {}).get('value'), + (optics.get('temperature') or {}).get('value'), + ) + # ------------------------------------------------------------------ # Snapshot collection (for dashboard) # ------------------------------------------------------------------ def _collect_snapshot( - self, iface_states: Dict[str, Dict[str, bool]], + self, iface_states: Optional[Dict[str, Dict[str, bool]]], unifi_devices: Optional[List[dict]] = None, - ping_states: Optional[Dict[str, bool]] = None, + ping_states: Optional[Dict[str, Optional[bool]]] = None, ) -> dict: # Accept pre-fetched devices; fall back to empty list if unavailable display_unifi = unifi_devices if unifi_devices is not None else [] + # During a Prometheus outage keep showing the hosts, with their state unknown, + # rather than emptying the dashboard or implying that they're down. + prom_ok = iface_states is not None + shown_states = iface_states if prom_ok else self._last_iface_states + hosts = {} - for instance, ifaces in iface_states.items(): + for instance, ifaces in shown_states.items(): if instance not in self._instance_map: continue # skip Prometheus instances not in config (e.g. LXC app servers) host = self._hostname(instance) phys = {k: v for k, v in ifaces.items()} up_count = sum(1 for v in phys.values() if v) total = len(phys) - if total == 0 or up_count == total: + if not prom_ok: + status = 'unknown' + elif total == 0 or up_count == total: status = 'up' elif up_count == 0: status = 'down' @@ -914,13 +1399,23 @@ class NetworkMonitor: 'source': 'prometheus', } + # Configured hosts with no data: down if Prometheus is fine, otherwise unknown + for instance, host in self._instance_map.items(): + if instance not in shown_states: + hosts[host] = { + 'ip': instance.split(':')[0], + 'interfaces': {}, + 'status': 'down' if prom_ok else 'unknown', + 'source': 'prometheus', + } + for h in self.cfg.get('monitor', {}).get('ping_hosts', []): name, ip = h['name'], h['ip'] - reachable = (ping_states or {}).get(name, False) + reachable = (ping_states or {}).get(name) hosts[name] = { 'ip': ip, 'interfaces': {}, - 'status': 'up' if reachable else 'down', + 'status': 'unknown' if reachable is None else ('up' if reachable else 'down'), 'source': 'ping', } @@ -949,13 +1444,15 @@ class NetworkMonitor: unifi_devices = self.unifi.get_devices() # 3a. Ping-only hosts once — shared by snapshot and alert processing - ping_states: Dict[str, bool] = { + ping_states: Dict[str, Optional[bool]] = { h['name']: self.pulse.ping(h['ip']) for h in self.cfg.get('monitor', {}).get('ping_hosts', []) } # 3b. Collect and store snapshot for dashboard snapshot = self._collect_snapshot(iface_states, unifi_devices, ping_states) + if iface_states is not None: + self._last_iface_states = iface_states db.set_state('network_snapshot', snapshot) db.set_state('last_check', _now_utc()) @@ -968,14 +1465,29 @@ class NetworkMonitor: # 5. Process alerts using already-fetched data suppressions = db.get_active_suppressions() - self._process_interfaces(iface_states, suppressions) + if iface_states is None: + self._process_prometheus_outage(suppressions) + else: + db.resolve_event('monitor_source_unavailable', 'prometheus', '') + self._process_interfaces(iface_states, suppressions) self._process_unifi(unifi_devices, suppressions) self._process_ping_hosts(suppressions, ping_states) + # WAN modem: isolated so a failure here can't stop the rest of the cycle + if self.modem: + try: + # Log first, so a restart it reports can explain an uptime reset below + self._process_wan_log(suppressions) + self._collect_modem(suppressions) + except Exception as e: + logger.error(f'Modem collection failed: {e}', exc_info=True) + # Housekeeping: deactivate expired suppressions and purge old resolved events db.cleanup_expired_suppressions() db.purge_old_resolved_events(days=90) + if self.modem: + db.purge_old_modem_samples(days=90) logger.info('Network check cycle complete') diff --git a/schema.sql b/schema.sql index 6248a98..8a76659 100644 --- a/schema.sql +++ b/schema.sql @@ -46,6 +46,15 @@ CREATE TABLE IF NOT EXISTS suppression_rules ( INDEX idx_sup_lookup (active, target_type, target_name, target_detail) ) ENGINE=InnoDB; +-- ── WAN modem optical history (one row per poll) ────────────────────── +-- Also created automatically at monitor startup (db.ensure_modem_schema). +CREATE TABLE IF NOT EXISTS modem_samples ( + sampled_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP PRIMARY KEY, + rx_power_dbm DECIMAL(5,1) NULL, + tx_power_dbm DECIMAL(5,1) NULL, + temp_c DECIMAL(5,1) NULL +) ENGINE=InnoDB; + -- ── Monitor state (key/value store for snapshot + baseline) ─────────── CREATE TABLE IF NOT EXISTS monitor_state ( key_name VARCHAR(100) PRIMARY KEY, diff --git a/scripts/demo/capture.py b/scripts/demo/capture.py index 1a1ccb7..f5cd49d 100644 --- a/scripts/demo/capture.py +++ b/scripts/demo/capture.py @@ -6,6 +6,7 @@ import asyncio import io import pathlib import sys +from urllib.parse import quote from PIL import Image from playwright.async_api import async_playwright @@ -81,18 +82,12 @@ async def shots(): if hb: await pg.locator("#hosts-grid, .host-grid, .hosts-grid").first.screenshot(path=f"{OUT}/host-cards.png") print("host-cards ok") - await go(pg, "/links") - await pg.screenshot(path=f"{OUT}/link-debug.png") - names = await pg.evaluate("[...document.querySelectorAll('.link-host-name')].map(e=>e.textContent.trim())") - print("hosts", names) - for nm, fn in ( - ("large1", "link-debug-sfp-warning"), - ("compute-storage-gpu-01", "link-debug-sfp"), - ("Pro 24 PoE", "link-debug-switch"), - ): - i = next((k for k, n in enumerate(names) if nm in n), None) - if i is not None: - await el(pg, ".link-host-panel", fn, i) + await go(pg, "/device/large1") + await pg.locator('.device-row-toggle[data-row="enp5s0"]').click() + await pg.wait_for_timeout(300) + await pg.screenshot(path=f"{OUT}/device-host.png", full_page=True) + await go(pg, "/device/" + quote("Pro 24 PoE")) + await pg.screenshot(path=f"{OUT}/device-switch.png", full_page=True) await go(pg, "/inspector") await pg.screenshot(path=f"{OUT}/inspector.png") await select_port(pg, "USW-Aggregation", 4) @@ -133,7 +128,7 @@ async def gif(): await snap(3, 600) await pg.mouse.wheel(0, 700) await snap(2, 600) - await go(pg, "/links", 4500) + await go(pg, "/device/large1", 4500) await snap(3) await pg.mouse.wheel(0, 500) await snap(2, 500) diff --git a/static/app.js b/static/app.js index 998db04..cfe0465 100644 --- a/static/app.js +++ b/static/app.js @@ -1,4 +1,6 @@ 'use strict'; +/* exported initDeviceSearch */ +/* global DEVICE_NAME */ // ── Auto-redirect on auth timeout ───────────────────────────────────── // Wraps fetch so a 401 (Authelia session expired) forces a full reload. @@ -40,6 +42,7 @@ async function refreshAll() { const [netResult, statusResult] = await Promise.allSettled([ lt.api.get('/api/network'), lt.api.get('/api/status'), + refreshModem(), ]); if (netResult.status === 'fulfilled') { const net = netResult.value; @@ -170,6 +173,263 @@ function updateTopology(hosts) { }); } +// ── Device search ───────────────────────────────────────────────────── +function deviceUrl(name) { + return `/device/${encodeURIComponent(name)}`; +} + +// All words must match somewhere; the device's name matching ranks first. +function rankDevices(devices, query) { + const words = query.trim().toLowerCase().split(/\s+/).filter(Boolean); + if (!words.length) return []; + const scored = []; + for (const d of devices) { + if (!words.every(w => d.search.includes(w))) continue; + const name = d.name.toLowerCase(); + let score = 3; + if (name === words[0]) score = 0; + else if (name.startsWith(words[0])) score = 1; + else if (name.includes(words[0]) || (d.ip || '').startsWith(words[0])) score = 2; + scored.push({ d, score }); + } + return scored + .sort((a, b) => a.score - b.score || a.d.name.localeCompare(b.d.name)) + .slice(0, 12) + .map(s => s.d); +} + +function initDeviceSearch() { + const input = document.getElementById('device-search-input'); + const results = document.getElementById('device-search-results'); + if (!input || !results) return; + let devices = []; + let matches = []; + let active = 0; + + async function loadDevices() { + try { + devices = (await lt.api.get('/api/devices')).devices || []; + } catch (err) { + console.warn('Device list unavailable', err); + } + } + + function close() { + results.hidden = true; + input.setAttribute('aria-expanded', 'false'); + input.removeAttribute('aria-activedescendant'); + } + + function render() { + matches = rankDevices(devices, input.value); + if (!input.value.trim()) { close(); return; } + active = Math.min(active, Math.max(matches.length - 1, 0)); + results.hidden = false; + input.setAttribute('aria-expanded', 'true'); + if (!matches.length) { + results.innerHTML = '<div class="device-search-empty">No devices match.</div>'; + input.removeAttribute('aria-activedescendant'); + return; + } + results.innerHTML = matches.map((d, i) => ` + <a class="device-search-row${i === active ? ' is-active' : ''}" id="device-opt-${i}" role="option" + aria-selected="${i === active}" href="${lt.escHtml(deviceUrl(d.name))}"> + <span class="dot-${lt.escHtml(d.status)}"></span> + <span class="device-search-name">${lt.escHtml(d.name)}</span> + <span class="device-search-kind">${lt.escHtml(d.kind)}</span> + <span class="device-search-meta">${lt.escHtml(d.ip || '')}</span> + <span class="device-search-meta">${lt.escHtml(d.model || '')}</span> + </a>`).join(''); + input.setAttribute('aria-activedescendant', `device-opt-${active}`); + } + + input.addEventListener('input', () => { active = 0; render(); }); + input.addEventListener('focus', () => { loadDevices().then(render); }); + input.addEventListener('keydown', e => { + if (e.key === 'Escape') { close(); return; } + if (!matches.length) return; + if (e.key === 'ArrowDown') { e.preventDefault(); active = (active + 1) % matches.length; render(); } + if (e.key === 'ArrowUp') { e.preventDefault(); active = (active - 1 + matches.length) % matches.length; render(); } + if (e.key === 'Enter') { e.preventDefault(); window.location.href = deviceUrl(matches[active].name); } + }); + document.addEventListener('click', e => { + if (!e.target.closest('#device-search')) close(); + }); + document.addEventListener('keydown', e => { + const typing = e.target.closest('input, textarea, select, [contenteditable]'); + if (e.key === '/' && !typing && !e.ctrlKey && !e.metaKey) { + e.preventDefault(); + input.focus(); + } + }); + loadDevices(); +} + +// ── WAN modem / fiber panel ─────────────────────────────────────────── +async function refreshModem() { + try { + updateModem(await lt.api.get('/api/modem')); + } catch (err) { + console.warn('Modem data unavailable', err); + } +} + +function _modemUptime(seconds) { + if (seconds === null || seconds === undefined) return '–'; + const d = Math.floor(seconds / 86400); + const h = Math.floor((seconds % 86400) / 3600); + const m = Math.floor((seconds % 3600) / 60); + return d ? `${d}d ${h}h` : `${h}h ${m}m`; +} + +function _modemRate(bytesPerSec) { + if (bytesPerSec === null || bytesPerSec === undefined) return '–'; + const mbps = bytesPerSec * 8 / 1e6; + return mbps >= 1000 ? `${(mbps / 1000).toFixed(2)} Gbps` : `${mbps.toFixed(1)} Mbps`; +} + +function _modemStat(label, value, cls, note) { + return ` + <div class="modem-stat"> + <span class="modem-stat-label">${lt.escHtml(label)}</span> + <span class="modem-stat-value ${cls || ''}">${lt.escHtml(String(value))}</span> + ${note ? `<span class="modem-stat-note">${lt.escHtml(note)}</span>` : ''} + </div>`; +} + +function _modemOptic(label, metric, status, unit) { + if (!metric || metric.value === null || metric.value === undefined) return _modemStat(label, '–'); + const cls = { alarm: 'lt-text-red', warning: 'lt-text-amber', ok: 'lt-text-green' }[status] || ''; + return _modemStat(label, `${metric.value} ${unit}`, cls, `warn ${metric.warn_low} to ${metric.warn_high}`); +} + +function _modemChart(history) { + const points = (history || []).filter(p => p.rx_avg !== null && p.rx_avg !== undefined); + if (points.length < 2) { + return '<div class="modem-chart-empty">Rx power trend appears after a few polls.</div>'; + } + const W = 600, H = 70, PAD = 4; + const values = points.map(p => p.rx_avg); + const low = Math.min(...values) - 0.5, high = Math.max(...values) + 0.5; + const t0 = points[0].ts, tSpan = (points[points.length - 1].ts - t0) || 1; + const coord = p => `${((p.ts - t0) / tSpan * W).toFixed(1)},` + + `${(PAD + (high - p.rx_avg) / (high - low) * (H - 2 * PAD)).toFixed(1)}`; + + // Break the line where samples are missing rather than drawing across an outage + const gaps = points.slice(1).map((p, i) => p.ts - points[i].ts).sort((a, b) => a - b); + const maxGap = gaps[Math.floor(gaps.length / 2)] * 3; + const segments = [[]]; + points.forEach((p, i) => { + if (i && p.ts - points[i - 1].ts > maxGap) segments.push([]); + segments[segments.length - 1].push(coord(p)); + }); + const lines = segments + .map(s => `<polyline points="${s.join(' ')}" fill="none" vector-effect="non-scaling-stroke"/>`) + .join(''); + const summary = `range ${Math.min(...values)} to ${Math.max(...values)} dBm`; + return ` + <div class="modem-chart"> + <div class="modem-chart-title">Rx power, last 7 days <span>${lt.escHtml(summary)}</span></div> + <svg viewBox="0 0 ${W} ${H}" preserveAspectRatio="none" role="img" + aria-label="Rx power trend, ${lt.escHtml(summary)}">${lines}</svg> + </div>`; +} + +function _modemWhen(epochSeconds) { + return new Date(epochSeconds * 1000).toLocaleString([], { dateStyle: 'short', timeStyle: 'short' }); +} + +function _modemLastRestart(history) { + const restarts = (history && history.restarts) || []; + if (!restarts.length) return ''; + const last = restarts[restarts.length - 1]; + return `restarted ${_modemWhen(last.at)}${last.by ? ` by ${last.by}` : ''}`; +} + +function _modemDuration(seconds) { + if (seconds < 60) return `${Math.round(seconds)}s`; + if (seconds < 3600) return `${Math.floor(seconds / 60)}m ${Math.round(seconds % 60)}s`; + return `${Math.floor(seconds / 3600)}h ${Math.floor((seconds % 3600) / 60)}m`; +} + +function _modemOutages(history) { + const outages = ((history && history.outages) || []).slice(-5).reverse(); + if (!outages.length) return ''; + const rows = outages.map(o => { + const length = o.restored_at === null || o.restored_at === undefined + ? '<span class="lt-text-red">ongoing</span>' + : lt.escHtml(_modemDuration(o.restored_at - o.failed_at)); + return `<li><span>${lt.escHtml(_modemWhen(o.failed_at))}</span><span>${length}</span></li>`; + }).join(''); + return ` + <div class="modem-outages"> + <div class="modem-chart-title">Recent WAN outages</div> + <ul>${rows}</ul> + </div>`; +} + +function updateModem(data) { + const section = document.getElementById('modem-section'); + const body = document.getElementById('modem-body'); + if (!section || !body) return; + section.hidden = !data.configured; + if (!data.configured) return; + + // On the dashboard, link to the modem's page. On that page, it would link to itself. + const detailsLink = document.getElementById('modem-device-link'); + if (detailsLink && typeof DEVICE_NAME === 'undefined' && data.name) { + detailsLink.href = deviceUrl(data.name); + detailsLink.hidden = false; + } + + const rxLabel = document.getElementById('topo-modem-rx'); + const topo = document.getElementById('topo-modem'); + const title = document.getElementById('modem-title'); + + if (!data.reachable) { + if (rxLabel) rxLabel.textContent = 'unreachable'; + if (topo) topo.classList.add('topo-v2-status-down'); + body.innerHTML = ` + <div class="modem-error">Modem status unavailable: ${lt.escHtml(data.error || 'unknown error')} + <span class="modem-stat-note">Last attempt ${lt.escHtml(data.updated || '–')}</span></div> + ${_modemChart(data.history)}`; + return; + } + + const problems = data.wan_problems || []; + const optics = data.optics || {}; + const status = data.optics_status || {}; + const counters = data.counters || {}; + const rates = data.rates || {}; + const rx = optics.rx_power ? optics.rx_power.value : null; + + if (topo) topo.classList.toggle('topo-v2-status-down', problems.length > 0); + if (rxLabel) rxLabel.textContent = (rx === null || rx === undefined) ? 'Rx –' : `Rx ${rx} dBm`; + if (title) { + title.textContent = [data.model || 'AT&T Gateway', data.firmware && `fw ${data.firmware}`] + .filter(Boolean).join(' · '); + } + + const errs = (counters.rx_errors || 0) + (counters.tx_errors || 0); + const drops = (counters.rx_drops || 0) + (counters.tx_drops || 0); + body.innerHTML = ` + ${problems.length ? `<div class="modem-error">WAN down: ${lt.escHtml(problems.join('; '))}</div>` : ''} + <div class="modem-stats"> + ${_modemStat('WAN', problems.length ? 'DOWN' : 'UP', problems.length ? 'lt-text-red' : 'lt-text-green', + data.wan_ip || '')} + ${_modemStat('PON', data.pon_state || '–', '', data.wavelength || '')} + ${_modemOptic('Rx power', optics.rx_power, status.rx_power, 'dBm')} + ${_modemOptic('Tx power', optics.tx_power, status.tx_power, 'dBm')} + ${_modemOptic('Optics temp', optics.temperature, status.temperature, '°C')} + ${_modemStat('Throughput', `↓ ${_modemRate(rates.rx_bytes)}`, '', `↑ ${_modemRate(rates.tx_bytes)}`)} + ${_modemStat('Errors / drops', `${errs} / ${drops}`, errs ? 'lt-text-amber' : '', 'since modem reboot')} + ${_modemStat('Uptime', _modemUptime(data.uptime_s), '', _modemLastRestart(data.wan_history))} + </div> + ${_modemChart(data.history)} + ${_modemOutages(data.wan_history)} + <div class="modem-stat-note modem-updated">Updated ${lt.escHtml(data.updated || '–')}</div>`; +} + function updateUnifiTable(devices) { const tbody = document.querySelector('#unifi-table tbody'); if (!tbody || !devices.length) return; @@ -188,7 +448,7 @@ function updateUnifiTable(devices) { return ` <tr class="${statusClass}"> <td><span class="${dotClass}"></span> ${statusText}</td> - <td><strong>${lt.escHtml(d.name)}</strong></td> + <td><a class="device-link" href="${lt.escHtml(deviceUrl(d.name))}"><strong>${lt.escHtml(d.name)}</strong></a></td> <td>${lt.escHtml(d.type)}</td> <td>${lt.escHtml(d.model)}</td> <td>${lt.escHtml(d.ip)}</td> diff --git a/static/device.js b/static/device.js new file mode 100644 index 0000000..8fd0293 --- /dev/null +++ b/static/device.js @@ -0,0 +1,454 @@ +'use strict'; +/* global DEVICE_NAME, deviceUrl, refreshModem, _toIso */ + +// Per-device page: overview, alerts, and a compact interface/port table whose +// rows expand to show everything the old Link Debug page showed. + +const esc = s => lt.escHtml(String(s === null || s === undefined ? '' : s)); + +const _openRows = new Set(); // survives auto-refresh +let _filter = 'all'; +let _query = ''; +let _device = null; + +// ── Formatting ─────────────────────────────────────────────────────── +function fmtRate(bytesPerSec) { + if (bytesPerSec === null || bytesPerSec === undefined) return '–'; + const bps = bytesPerSec * 8; + if (bps < 1e3) return bps.toFixed(0) + ' bps'; + if (bps < 1e6) return (bps / 1e3).toFixed(1) + ' Kbps'; + if (bps < 1e9) return (bps / 1e6).toFixed(2) + ' Mbps'; + return (bps / 1e9).toFixed(3) + ' Gbps'; +} + +function fmtSpeed(mbps) { + if (!mbps) return '–'; + return mbps >= 1000 ? (mbps / 1000).toFixed(0) + ' Gbps' : mbps + ' Mbps'; +} + +function fmtErrors(rate) { + if (rate === null || rate === undefined) return '–'; + if (rate < 0.001) return '<span class="val-good">0 /s</span>'; + return `<span class="val-crit">${rate.toFixed(3)} /s</span>`; +} + +function fmtUnit(value, unit, digits) { + return value === null || value === undefined ? '–' : `${value.toFixed(digits)} ${unit}`; +} + +function fmtUptime(seconds) { + if (seconds === null || seconds === undefined) return '–'; + const d = Math.floor(seconds / 86400), h = Math.floor((seconds % 86400) / 3600); + const m = Math.floor((seconds % 3600) / 60); + return d ? `${d}d ${h}h` : `${h}h ${m}m`; +} + +function ratePct(bytesPerSec, mbps) { + if (!mbps || !bytesPerSec) return 0; + return Math.min(100, (bytesPerSec * 8 / 1e6 / mbps) * 100); +} + +function barClass(pct, isTx) { + if (pct > 85) return 'lt-progress--red'; + if (pct > 65) return 'lt-progress--amber'; + return isTx ? '' : 'lt-progress--cyan'; +} + +// ── SFP/DOM value classification ───────────────────────────────────── +function rxClass(dbm) { + if (dbm === null || dbm === undefined) return 'val-neutral'; + if (dbm < -15) return 'val-crit'; + return dbm < -10 ? 'val-warn' : 'val-good'; +} +function txClass(dbm) { + if (dbm === null || dbm === undefined) return 'val-neutral'; + return dbm < -5 ? 'val-crit' : 'val-good'; +} +function tempClass(c) { + if (c === null || c === undefined) return 'val-neutral'; + if (c > 80) return 'val-crit'; + return c > 70 ? 'val-warn' : 'val-good'; +} +function voltClass(v) { + if (v === null || v === undefined) return 'val-neutral'; + if (v < 3.0 || v > 3.6) return 'val-crit'; + return (v < 3.1 || v > 3.5) ? 'val-warn' : 'val-good'; +} + +function powerFill(cls) { + return cls === 'val-good' ? 'power-ok' : cls === 'val-warn' ? 'power-warn' : 'power-crit'; +} + +function badges(d) { + const out = []; + if ((d.tx_errs_rate || 0) > 0.001 || (d.rx_errs_rate || 0) > 0.001) out.push('<span class="link-alert-badge">ERR</span>'); + if ((d.tx_drops_rate || 0) > 0.001 || (d.rx_drops_rate || 0) > 0.001) out.push('<span class="link-alert-badge link-alert-amber">DROP</span>'); + if ((d.carrier_changes || 0) > 3) out.push('<span class="link-alert-badge link-alert-amber">FLAP</span>'); + return out.join(''); +} + +function stat(label, valueHtml, tooltip) { + const tip = tooltip ? ` data-tooltip="${esc(tooltip)}"` : ''; + return `<div class="link-stat"><span class="link-stat-label"${tip}>${esc(label)}</span>` + + `<span class="link-stat-value">${valueHtml}</span></div>`; +} + +function trafficBars(d) { + const tx = ratePct(d.tx_bytes_rate, d.speed_mbps), rx = ratePct(d.rx_bytes_rate, d.speed_mbps); + const row = (label, pct, rate, isTx) => ` + <div class="traffic-row"> + <span class="traffic-label">${label}</span> + <div class="lt-progress ${barClass(pct, isTx)}"><div class="lt-progress-bar" style="width:${pct}%"></div></div> + <span class="traffic-value">${fmtRate(rate)}</span> + </div>`; + return `<div class="traffic-section">${row('TX', tx, d.tx_bytes_rate, true)}${row('RX', rx, d.rx_bytes_rate, false)}</div>`; +} + +function sfpPanel(s) { + if (!s || !Object.keys(s).length) return ''; + const rx = rxClass(s.rx_power_dbm), tx = txClass(s.tx_power_dbm); + const has = v => v !== null && v !== undefined; + const rxPct = has(s.rx_power_dbm) ? Math.min(100, Math.max(0, (s.rx_power_dbm + 20) / 15 * 100)) : 0; + const txPct = has(s.tx_power_dbm) ? Math.min(100, Math.max(0, (s.tx_power_dbm + 10) / 8 * 100)) : 0; + const item = (label, cls, value, tip, pct) => ` + <div class="sfp-stat"> + <span class="sfp-stat-label" data-tooltip="${esc(tip)}">${label}</span> + <span class="sfp-stat-value ${cls}">${value}</span> + ${pct === undefined ? '' : `<div class="power-row"><div class="power-track"><div class="power-fill ${powerFill(cls)}" style="width:${pct}%"></div></div></div>`} + </div>`; + const vendor = [s.vendor, s.part_no, s.sfp_type, s.connector, s.wavelength_nm && `${s.wavelength_nm} nm`] + .filter(Boolean).map(esc).join(' / '); + return ` + <div class="sfp-panel"> + <div class="sfp-vendor-row">${vendor}</div> + <div class="sfp-grid"> + ${item('Temp', tempClass(s.temp_c), fmtUnit(s.temp_c, '°C', 1), 'Module temperature. Normal: below 70°C.')} + ${item('Voltage', voltClass(s.voltage_v), fmtUnit(s.voltage_v, 'V', 2), 'Supply voltage. Normal: 3.1–3.5 V.')} + ${item('Bias', '', fmtUnit(s.bias_ma, 'mA', 2), 'Laser bias current. High values may mean an aging laser.')} + ${item('TX Power', tx, fmtUnit(s.tx_power_dbm, 'dBm', 2), 'Optical transmit power.', txPct)} + ${item('RX Power', rx, fmtUnit(s.rx_power_dbm, 'dBm', 2), 'Optical receive power. Very low values may mean dirty or damaged fiber.', rxPct)} + ${has(s.rx_power_dbm) && has(s.tx_power_dbm) ? item('RX−TX Δ', '', `${(s.rx_power_dbm - s.tx_power_dbm).toFixed(2)} dBm`, 'Difference between receive and transmit power.') : ''} + </div> + </div>`; +} + +// ── Normalized rows, so hosts and switches share one table ─────────── +function hostRows(interfaces) { + return Object.entries(interfaces) + .sort(([a], [b]) => a.localeCompare(b, undefined, { numeric: true })) + .map(([name, d]) => { + const up = d.state ? d.state === 'up' : d.link_detected !== false; + return { + id: name, label: name, up, data: d, sub: d.port_type || '', + detail: ` + <div class="link-stats-grid"> + ${stat('Duplex', esc(d.duplex || '–'), 'Full = both directions at once. Half can cause collisions.')} + ${stat('Auto-neg', d.auto_neg === null || d.auto_neg === undefined ? '–' : d.auto_neg ? 'On' : 'Off')} + ${stat('Carrier Δ', d.carrier_changes === null || d.carrier_changes === undefined ? '–' : esc(d.carrier_changes), 'Times the link went up or down. High values mean flapping.')} + ${stat('TX Err/s', fmtErrors(d.tx_errs_rate))} + ${stat('RX Err/s', fmtErrors(d.rx_errs_rate))} + ${stat('TX Drop/s', fmtErrors(d.tx_drops_rate))} + ${stat('RX Drop/s', fmtErrors(d.rx_drops_rate))} + </div> + ${trafficBars(d)} + ${sfpPanel(d.sfp)}`, + }; + }); +} + +function portRows(ports) { + return Object.entries(ports) + .sort(([, a], [, b]) => (a.port_idx || 0) - (b.port_idx || 0)) + .map(([name, d]) => { + const neighbor = d.lldp && d.lldp.system_name; + return { + id: name, label: name, num: d.port_idx, up: !!d.up, data: d, + neighbor: d.lldp ? { name: neighbor, port: d.lldp.port_id } : null, + sub: [d.is_uplink ? 'uplink' : '', d.media || '', d.poe_power ? `PoE ${d.poe_power.toFixed(1)} W` : ''].filter(Boolean).join(' · '), + detail: ` + <div class="link-stats-grid"> + ${stat('Duplex', d.full_duplex === null || d.full_duplex === undefined ? '–' : d.full_duplex ? 'Full' : 'Half')} + ${stat('Auto-neg', d.autoneg === null || d.autoneg === undefined ? '–' : d.autoneg ? 'On' : 'Off')} + ${stat('TX Err/s', fmtErrors(d.tx_errs_rate))} + ${stat('RX Err/s', fmtErrors(d.rx_errs_rate))} + ${stat('TX Drop/s', fmtErrors(d.tx_drops_rate))} + ${stat('RX Drop/s', fmtErrors(d.rx_drops_rate))} + ${d.poe_power || d.poe_max_power ? stat('PoE', `${esc(d.poe_class || '–')} · max ${fmtUnit(d.poe_max_power, 'W', 1)}`) : ''} + </div> + ${d.lldp ? `<div class="port-lldp">LLDP: ${esc(d.lldp.system_name || '')} (${esc(d.lldp.port_id || '')})${d.lldp.chassis_id ? ` · ${esc(d.lldp.chassis_id)}` : ''}${(d.lldp.mgmt_ips || []).length ? ` · ${esc(d.lldp.mgmt_ips.join(', '))}` : ''}</div>` : ''} + ${trafficBars(d)}`, + }; + }); +} + +// Down alone isn't a problem: most down ports are simply unused. +function rowHasProblem(r) { + return !!badges(r.data); +} + +function renderTable(rows) { + const q = _query.trim().toLowerCase(); + const shown = rows.filter(r => { + if (_filter === 'up' && !r.up) return false; + if (_filter === 'problems' && !rowHasProblem(r)) return false; + return !q || `${r.label} ${r.num || ''} ${r.sub} ${(r.neighbor && r.neighbor.name) || ''}`.toLowerCase().includes(q); + }); + if (!shown.length) return '<div class="lt-empty-state lt-empty-state--sm"><div class="lt-empty-state-title">Nothing matches this filter</div></div>'; + const isPorts = rows.some(r => r.num !== undefined); + const body = shown.map(r => { + const open = _openRows.has(r.id); + const d = r.data; + const neighbor = r.neighbor + ? (r.neighbor.name ? `<a class="device-link" href="${esc(deviceUrl(r.neighbor.name))}">${esc(r.neighbor.name)}</a>` : esc(r.neighbor.port || '')) + : '–'; + return ` + <tr class="device-row${r.up ? '' : ' device-row--down'}"> + <td><button type="button" class="device-row-toggle" data-row="${esc(r.id)}" aria-expanded="${open}" aria-label="Details for ${esc(r.label)}">${open ? '▾' : '▸'}</button></td> + <td><span class="dot-${r.up ? 'up' : 'down'}"></span></td> + <td class="device-row-name">${r.num !== undefined ? `<span class="port-badge port-badge-num">#${esc(r.num)}</span> ` : ''}${esc(r.label)}<div class="device-row-sub">${esc(r.sub)}</div></td> + <td class="device-num">${r.up ? fmtSpeed(d.speed_mbps) : '–'}</td> + <td class="device-num device-col-wide">${fmtRate(d.rx_bytes_rate)}</td> + <td class="device-num device-col-wide">${fmtRate(d.tx_bytes_rate)}</td> + ${isPorts ? `<td class="device-col-wide">${neighbor}</td>` : ''} + <td>${badges(d) || (r.up ? '<span class="val-good">OK</span>' : '<span class="device-row-sub">down</span>')}</td> + </tr> + ${open ? `<tr class="device-row-detail"><td colspan="${isPorts ? 8 : 7}">${r.detail}</td></tr>` : ''}`; + }).join(''); + return ` + <div class="lt-table-wrap"> + <table class="lt-table device-table"> + <caption class="lt-sr-only">Interfaces</caption> + <thead><tr> + <th><span class="lt-sr-only">Expand</span></th><th><span class="lt-sr-only">State</span></th> + <th>${isPorts ? 'Port' : 'Interface'}</th><th>Speed</th><th class="device-col-wide">RX</th><th class="device-col-wide">TX</th> + ${isPorts ? '<th class="device-col-wide">Neighbor</th>' : ''}<th>Health</th> + </tr></thead> + <tbody>${body}</tbody> + </table> + </div>`; +} + +function section(title, inner, id) { + return ` + <section class="g-section"${id ? ` id="${id}"` : ''}> + <div class="g-section-header"><h2 class="g-section-title">${esc(title)}</h2></div> + <div class="lt-frame"> + <span class="lt-frame-bl">╚</span><span class="lt-frame-br">╝</span> + ${inner} + </div> + </section>`; +} + +function kvGrid(pairs) { + return `<div class="modem-stats">${pairs.filter(([, v]) => v !== null && v !== undefined && v !== '').map(([k, v]) => ` + <div class="modem-stat"><span class="modem-stat-label">${esc(k)}</span><span class="modem-stat-value">${esc(v)}</span></div>`).join('')}</div>`; +} + +function renderOverview(d) { + const info = d.info || {}; + const pct = v => (v === null || v === undefined ? null : `${v.toFixed(0)}%`); + const temps = (info.temps || []).filter(t => t.value_c !== null).map(t => `${t.name} ${t.value_c.toFixed(0)}°C`).join(', '); + return section('Overview', kvGrid([ + ['Status', (d.status || 'unknown').toUpperCase()], + ['Type', d.kind], + ['IP', d.ip], + ['MAC', d.mac], + ['Model', d.model], + ['Firmware', info.firmware], + ['Uptime', info.uptime_s === undefined ? null : fmtUptime(info.uptime_s)], + ['CPU', pct(info.cpu_pct)], + ['Memory', pct(info.mem_pct)], + ['Clients', info.clients], + ['Temperature', temps], + ['Power draw', info.power_w === null || info.power_w === undefined ? null : `${info.power_w.toFixed(0)} W`], + ['Data source', d.source], + ])); +} + +function renderUplinks(d) { + if (!(d.uplinks || []).length) return ''; + const rows = d.uplinks.map(u => ` + <tr> + <td><span class="dot-${u.up ? 'up' : 'down'}"></span></td> + <td>${esc(u.host_interface || '–')}</td> + <td><a class="device-link" href="${esc(deviceUrl(u.switch))}">${esc(u.switch)}</a></td> + <td>#${esc(u.port_idx)} ${esc(u.port)}</td> + <td>${fmtSpeed(u.speed_mbps)}</td> + </tr>`).join(''); + return section('Connected to', `<div class="lt-table-wrap"><table class="lt-table"> + <caption class="lt-sr-only">Switch ports this host connects to, from LLDP</caption> + <thead><tr><th><span class="lt-sr-only">State</span></th><th>Interface</th><th>Switch</th><th>Port</th><th>Speed</th></tr></thead> + <tbody>${rows}</tbody></table></div>`); +} + +function renderWan(d) { + const wan = (d.info && d.info.wan) || {}; + const names = Object.keys(wan); + if (!names.length) return ''; + const rows = names.map(n => { + const w = wan[n]; + return `<tr><td><span class="dot-${w.up ? 'up' : 'down'}"></span></td><td>${esc(n.toUpperCase())}</td> + <td>${fmtSpeed(w.speed_mbps)}</td><td>${w.latency_ms === null || w.latency_ms === undefined ? '–' : `${esc(w.latency_ms)} ms`}</td> + <td>${w.availability === null || w.availability === undefined ? '–' : `${esc(w.availability)}%`}</td></tr>`; + }).join(''); + return section('WAN', `<div class="lt-table-wrap"><table class="lt-table"> + <caption class="lt-sr-only">WAN connections</caption> + <thead><tr><th><span class="lt-sr-only">State</span></th><th>Connection</th><th>Speed</th><th>Latency</th><th>Availability</th></tr></thead> + <tbody>${rows}</tbody></table></div>`); +} + +function renderOutlets(d) { + const outlets = (d.info && d.info.outlets) || []; + if (!outlets.length) return ''; + const rows = outlets.map(o => ` + <tr> + <td><span class="dot-${o.on ? 'up' : 'down'}"></span></td> + <td>#${esc(o.index)}</td> + <td>${esc(o.name || '–')}</td> + <td class="device-num">${o.power_w === null || o.power_w === undefined ? '–' : `${o.power_w.toFixed(1)} W`}</td> + <td>${o.auto_power_cycle ? '<span class="lt-badge">auto power-cycle</span>' : ''}</td> + </tr>`).join(''); + return section('Outlets', `<div class="lt-table-wrap"><table class="lt-table"> + <caption class="lt-sr-only">PDU outlets</caption> + <thead><tr><th><span class="lt-sr-only">State</span></th><th>Outlet</th><th>Name</th><th>Power</th><th></th></tr></thead> + <tbody>${rows}</tbody></table></div>`); +} + +function renderEvents(events) { + const body = !(events || []).length + ? '<div class="lt-empty-state lt-empty-state--sm"><div class="lt-empty-state-icon">✔</div><div class="lt-empty-state-title">No recorded alerts</div></div>' + : `<div class="lt-table-wrap"><table class="lt-table"> + <caption class="lt-sr-only">Alerts for this device</caption> + <thead><tr><th>Sev</th><th>Type</th><th>Detail</th><th>Description</th><th>First seen</th><th>State</th></tr></thead> + <tbody>${events.map(e => ` + <tr class="${e.resolved_at ? '' : `row-${esc(e.severity)}`}"> + <td><span class="lt-badge badge-${e.resolved_at ? 'resolved' : esc(e.severity)}">${esc(e.severity)}</span>${e.is_suppressed && !e.resolved_at ? '<span class="lt-badge badge-suppressed">🔕 sup</span>' : ''}</td> + <td>${esc(e.event_type.replace(/_/g, ' '))}</td> + <td>${esc(e.target_detail || '–')}</td> + <td class="desc-cell">${esc(e.description || '')}</td> + <td class="ts-cell" title="${esc(e.first_seen || '')}">${esc(lt.time.ago(_toIso(e.first_seen)))}</td> + <td>${e.resolved_at ? `resolved ${esc(lt.time.ago(_toIso(e.resolved_at)))}` : '<strong>active</strong>'}</td> + </tr>`).join('')}</tbody></table></div>`; + return section('Alerts', body); +} + +function currentRows() { + if (!_device) return []; + if (_device.ports) return portRows(_device.ports); + if (_device.interfaces) return hostRows(_device.interfaces); + return []; +} + +function renderInterfaces() { + const wrap = document.getElementById('device-table-wrap'); + if (wrap) wrap.innerHTML = renderTable(currentRows()); +} + +function renderInterfaceSection(rows, title) { + if (!rows.length) return ''; + const up = rows.filter(r => r.up).length; + const problems = rows.filter(rowHasProblem).length; + const pill = (value, label) => `<button type="button" class="pill${_filter === value ? ' active' : ''}" data-device-filter="${value}" aria-pressed="${_filter === value}">${label}</button>`; + return section(`${title} · ${up} of ${rows.length} up`, ` + <div class="lt-toolbar device-toolbar"> + <div class="lt-toolbar-left"> + <div class="lt-search"> + <input type="search" class="lt-input lt-search-input lt-search-input--sm" id="device-table-search" + placeholder="Filter…" autocomplete="off" aria-label="Filter ${esc(title.toLowerCase())}" value="${esc(_query)}"> + </div> + <div class="sev-pills" role="group" aria-label="Filter by state"> + ${pill('all', 'All')}${pill('up', 'Up')}${pill('problems', `Errors (${problems})`)} + </div> + </div> + </div> + <div id="device-table-wrap"></div>`); +} + +function render(d) { + _device = d; + document.getElementById('device-dot').className = `dot-${d.status || 'unknown'}`; + document.getElementById('device-subtitle').textContent = + [d.kind, d.ip, d.model].filter(Boolean).join(' · ') + + (d.updated ? ` · updated ${new Date(_toIso(d.updated)).toLocaleTimeString()}` : ''); + + const unifi = d.source === 'unifi'; + document.getElementById('device-actions').innerHTML = ` + ${d.ports && Object.keys(d.ports).length ? `<a class="lt-btn lt-btn-secondary lt-btn-sm" href="/inspector">⬡ Inspector</a>` : ''} + <button class="lt-btn lt-btn-ghost lt-btn-sm btn-suppress" data-sup-type="${unifi ? 'unifi_device' : 'host'}" + data-sup-name="${esc(d.name)}" data-sup-detail="" aria-label="Suppress alerts for ${esc(d.name)}">🔕 Suppress</button>`; + + // Keep focus and caret in the filter box across auto-refresh + const active = document.activeElement && document.activeElement.id === 'device-table-search'; + const caret = active ? document.activeElement.selectionStart : 0; + + const rows = currentRows(); + document.getElementById('device-root').innerHTML = + renderOverview(d) + + renderEvents(d.events) + + renderWan(d) + + renderUplinks(d) + + renderOutlets(d) + + renderInterfaceSection(rows, d.ports ? 'Ports' : 'Interfaces'); + renderInterfaces(); + + if (active) { + const box = document.getElementById('device-table-search'); + box.focus(); + box.setSelectionRange(caret, caret); + } + if (d.kind === 'modem') refreshModem(); +} + +async function loadDevice() { + try { + render(await lt.api.get(`/api/device/${encodeURIComponent(DEVICE_NAME)}`)); + } catch (err) { + if (_device) { + lt.toast.error('Could not refresh device data'); + return; + } + const notFound = /404|No device/.test(err.message || ''); + document.getElementById('device-root').innerHTML = ` + <div class="lt-empty-state"> + <div class="lt-empty-state-icon">✕</div> + <div class="lt-empty-state-title">${notFound ? 'No device with this name' : 'Could not load this device'}</div> + <div class="lt-empty-state-body">${notFound ? 'It may have been renamed, or the monitor may not have seen it yet.' : 'Check that the Gandalf service is healthy, then refresh.'}</div> + </div>`; + } +} + +document.addEventListener('click', e => { + const toggle = e.target.closest('.device-row-toggle'); + if (toggle) { + const id = toggle.dataset.row; + if (_openRows.has(id)) _openRows.delete(id); else _openRows.add(id); + renderInterfaces(); + return; + } + const pill = e.target.closest('[data-device-filter]'); + if (pill) { + _filter = pill.dataset.deviceFilter; + document.querySelectorAll('[data-device-filter]').forEach(p => { + const on = p === pill; + p.classList.toggle('active', on); + p.setAttribute('aria-pressed', String(on)); + }); + renderInterfaces(); + } +}); + +document.addEventListener('input', e => { + if (e.target.id === 'device-table-search') { + _query = e.target.value; + renderInterfaces(); + } +}); + +loadDevice(); +const _deviceInterval = window.gandalfSettings?.refreshInterval ?? 60; +if (_deviceInterval > 0) lt.autoRefresh.start(loadDevice, Math.max(_deviceInterval, 15) * 1000); + +window.onGandalfSettingsChanged = function (s) { + lt.autoRefresh.stop(); + if (s.refreshInterval > 0) lt.autoRefresh.start(loadDevice, Math.max(s.refreshInterval, 15) * 1000); +}; diff --git a/static/style.css b/static/style.css index 592a307..3c64009 100644 --- a/static/style.css +++ b/static/style.css @@ -1064,3 +1064,88 @@ .inspector-panel.open { width: 100%; } .inspector-panel-inner{ width: 100%; } } + +/* ── WAN modem / fiber panel ──────────────────────────────────────── */ +.modem-stats { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 12px; + padding: 12px; +} +@media (max-width: 700px) { + .modem-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); } +} +.modem-stat { display: flex; flex-direction: column; gap: 2px; min-width: 0; } +.modem-stat-label { font-size: .68em; color: var(--text-muted); text-transform: uppercase; letter-spacing: .05em; } +.modem-stat-value { font-size: 1.05em; font-weight: bold; overflow-wrap: anywhere; } +.modem-stat-note { font-size: .7em; color: var(--text-muted); display: block; } +.modem-error { margin: 12px; padding: 8px 10px; border: 1px solid var(--terminal-red, #f44); color: var(--terminal-red, #f44); } +.modem-chart { padding: 0 12px 8px; } +.modem-chart-title { font-size: .72em; color: var(--text-muted); margin-bottom: 4px; } +.modem-chart-title span { margin-left: 8px; opacity: .8; } +.modem-chart svg { display: block; width: 100%; height: 70px; border: 1px solid var(--border-color); } +.modem-chart svg polyline { stroke: var(--terminal-cyan, #0ff); stroke-width: 1.5; } +.modem-chart-empty { padding: 0 12px 8px; font-size: .72em; color: var(--text-muted); } +.modem-updated { padding: 0 12px 10px; } + +/* ── Device search (home page) ────────────────────────────────────── */ +.device-search { position: relative; } +.device-search label { display: block; margin-bottom: 6px; } +.device-search .lt-search { width: 100%; } +.device-search-input { width: 100%; font-size: 1em; padding-top: 10px; padding-bottom: 10px; } +.device-search-results { + position: absolute; left: 0; right: 0; z-index: 50; margin-top: 4px; + background: var(--bg-card, var(--bg-secondary)); border: 1px solid var(--border-color); + max-height: 420px; overflow-y: auto; +} +.device-search-results[hidden] { display: none; } +.device-search-row { + display: grid; grid-template-columns: 14px minmax(0, 1.4fr) 70px minmax(0, 1fr) minmax(0, 1fr); + gap: 10px; align-items: center; padding: 9px 12px; color: inherit; text-decoration: none; + border-bottom: 1px solid var(--border-color); +} +.device-search-row:last-child { border-bottom: 0; } +.device-search-row:hover, .device-search-row.is-active { background: var(--bg-tertiary); } +.device-search-name { font-weight: bold; overflow-wrap: anywhere; } +.device-search-kind { font-size: .72em; color: var(--text-muted); text-transform: uppercase; } +.device-search-meta { font-size: .8em; color: var(--text-muted); overflow-wrap: anywhere; } +.device-search-empty { padding: 12px; color: var(--text-muted); } +@media (max-width: 700px) { + .device-search-row { grid-template-columns: 14px minmax(0, 1fr) auto; } + .device-search-row .device-search-meta { grid-column: 2 / -1; } +} + +/* ── Device page ───────────────────────────────────────────────────── */ +a.device-link { color: inherit; text-decoration: none; border-bottom: 1px dotted var(--text-muted); } +a.device-link:hover { color: var(--text-accent); border-bottom-color: currentColor; } +.device-title { display: flex; align-items: center; gap: 10px; overflow-wrap: anywhere; } +.device-actions { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; } +.device-toolbar { padding: 8px 12px; margin: 0; } +.device-table td { vertical-align: middle; } +.device-num { white-space: nowrap; font-variant-numeric: tabular-nums; } +.device-row--down { opacity: .55; } +.device-row-name { overflow-wrap: anywhere; } +.device-row-sub { font-size: .72em; color: var(--text-muted); } +.device-row-toggle { background: none; border: 0; color: inherit; cursor: pointer; font: inherit; padding: 2px 6px; } +.device-row-detail > td { background: var(--bg-tertiary); padding: 10px 14px; } +.topo-host[data-host] { cursor: pointer; } + +/* WAN outage list in the modem panel */ +.modem-outages { padding: 0 12px 8px; } +.modem-outages ul { list-style: none; margin: 0; padding: 0; border: 1px solid var(--border-color); } +.modem-outages li { display: flex; justify-content: space-between; gap: 12px; padding: 4px 8px; font-size: .8em; } +.modem-outages li + li { border-top: 1px solid var(--border-color); } + +.g-section-actions[hidden] { display: none; } +/* Rows open a detail panel holding the fields that are hidden here on narrow screens */ +.device-row-detail .link-stats-grid { grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); } +.device-table th:nth-child(-n+2), .device-table td:nth-child(-n+2) { width: 1%; white-space: nowrap; } +@media (max-width: 700px) { + .device-col-wide { display: none; } + .device-table th, .device-table td { padding-left: 6px; padding-right: 6px; } +} +.device-search-row.is-active { box-shadow: inset 3px 0 0 var(--terminal-cyan, #0ff); } +@media (max-width: 700px) { + /* Scroll inside the wrapper rather than squeezing every column to a few letters */ + #events-table { min-width: 760px; } +} diff --git a/templates/_modem_panel.html b/templates/_modem_panel.html new file mode 100644 index 0000000..0455650 --- /dev/null +++ b/templates/_modem_panel.html @@ -0,0 +1,12 @@ +<section class="g-section" id="modem-section" hidden> + <div class="g-section-header"> + <h2 class="g-section-title">WAN / Fiber</h2> + <a class="g-section-actions lt-btn lt-btn-ghost lt-btn-sm" id="modem-device-link" hidden>↗ Details</a> + </div> + <div class="lt-frame"> + <span class="lt-frame-bl">╚</span> + <span class="lt-frame-br">╝</span> + <div class="lt-section-header" id="modem-title">AT&T Gateway</div> + <div id="modem-body" aria-live="polite"></div> + </div> +</section> diff --git a/templates/base.html b/templates/base.html index 9e3b700..9ae9b55 100644 --- a/templates/base.html +++ b/templates/base.html @@ -5,6 +5,7 @@ <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <meta name="theme-color" content="#030508"> <meta name="robots" content="noindex, nofollow"> + <link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Crect width='16' height='16' rx='3' fill='%23030508'/%3E%3Cpath d='M8 2l5 3v6l-5 3-5-3V5z' fill='none' stroke='%2300e5ff' stroke-width='1.5'/%3E%3C/svg%3E"> <title>{% block title %}GANDALF{% endblock %} — GANDALF @@ -36,9 +37,6 @@ Dashboard - Link Debug Inspector @@ -84,11 +82,6 @@ {% if request.endpoint == 'index' %}aria-current="page"{% endif %}> Dashboard - - Link Debug - @@ -186,7 +179,7 @@ | [ S ] SUPPRESS | - {% elif request.endpoint in ('links_page', 'inspector') %} + {% elif request.endpoint in ('device_page', 'inspector') %} [ R ] REFRESH | {% endif %} @@ -262,7 +255,8 @@ ShortcutAction Ctrl / ⌘ + KCommand palette - RRefresh data (Dashboard / Link Debug / Inspector) + RRefresh data (Dashboard / Device / Inspector) + /Search devices (Dashboard) SQuick-suppress alert (Dashboard) *Open settings ?Show this help @@ -330,7 +324,6 @@ // Command palette lt.cmdPalette.init([ { id: 'nav-dashboard', group: 'Navigate', icon: '~', label: 'Dashboard', action: function() { window.location.href = '/'; } }, - { id: 'nav-links', group: 'Navigate', icon: '↗', label: 'Link Debug', action: function() { window.location.href = '/links'; } }, { id: 'nav-inspector', group: 'Navigate', icon: '⬡', label: 'Inspector', action: function() { window.location.href = '/inspector'; } }, { id: 'nav-suppressions', group: 'Navigate', icon: '🔕', label: 'Suppressions', action: function() { window.location.href = '/suppressions'; } }, { id: 'action-refresh', group: 'Actions', icon: '↻', label: 'Refresh Data', kbd: 'R', action: function() { lt.autoRefresh.now(); } }, diff --git a/templates/device.html b/templates/device.html new file mode 100644 index 0000000..3d28d07 --- /dev/null +++ b/templates/device.html @@ -0,0 +1,25 @@ +{% extends "base.html" %} +{% block title %}{{ device_name }} – GANDALF{% endblock %} + +{% block content %} +
+
+

← Dashboard

+

+ + {{ device_name }} +

+

+
+
+
+ +
+ +{% include "_modem_panel.html" %} +{% endblock %} + +{% block scripts %} + + +{% endblock %} diff --git a/templates/index.html b/templates/index.html index 31ec3aa..d00aeb8 100644 --- a/templates/index.html +++ b/templates/index.html @@ -64,6 +64,17 @@ + + +
@@ -166,10 +177,129 @@
- + +{% include "_modem_panel.html" %} + +
-

Network Hosts

+

Hosts

+
+
+ {%- set has_global_sup = suppressions | selectattr('target_type', 'equalto', 'all') | list | length > 0 -%} + {% for name, host in snapshot.hosts.items() %} + {% set suppressed = suppressions | selectattr('target_name', 'equalto', name) | list %} +
+
+
+ + {{ name }} + {% if suppressed or has_global_sup %} + 🔕 + {% endif %} +
+
+ {{ host.ip }} + {{ host.source }} +
+
+ + {% if host.interfaces %} +
+ {% for iface, state in host.interfaces.items() | sort %} +
+ + {{ iface }} + {{ state }} +
+ {% endfor %} +
+ {% else %} +
{% if host.source == 'ping' %}ping-only / no node_exporter{% else %}no metrics from node_exporter{% endif %}
+ {% endif %} + +
+ + + ↗ Details + +
+
+ {% else %} +
+
⌛
+
No host data yet
+
The monitor daemon may still be starting up.
+
+ {% endfor %} +
+
+ + +{% if snapshot.unifi %} +
+
+

UniFi Devices

+
+
+ ╚ + ╝ +
Device Inventory
+
+ + + + + + + + + + + + + + {% for d in snapshot.unifi %} + + + + + + + + + {% endfor %} + +
UniFi network devices
StatusNameTypeModelIPActions
+ + {{ 'ONLINE' if d.connected else 'OFFLINE' }} + {{ d.name }}{{ d.type }}{{ d.model }}{{ d.ip }} + {% if not d.connected %} + + {% endif %} +
+
+
+
+{% endif %} + + +
+
+

Network Topology

@@ -191,10 +321,28 @@ - +
- WAN · 10G SFP+ + AT&T Fiber +
+ + +
+
+ ◈ + BGW320 + AT&T Gateway + Rx – +
+
+ + +
+
+ WAN · Port 9 · 1G
- -
-
- -
-
-
- {%- set has_global_sup = suppressions | selectattr('target_type', 'equalto', 'all') | list | length > 0 -%} - {% for name, host in snapshot.hosts.items() %} - {% set suppressed = suppressions | selectattr('target_name', 'equalto', name) | list %} -
-
-
- - {{ name }} - {% if suppressed or has_global_sup %} - 🔕 - {% endif %} -
-
- {{ host.ip }} - {{ host.source }} -
-
- - {% if host.interfaces %} -
- {% for iface, state in host.interfaces.items() | sort %} -
- - {{ iface }} - {{ state }} -
- {% endfor %} -
- {% else %} -
ping-only / no node_exporter
- {% endif %} - -
- - - ↗ Links - -
-
- {% else %} -
-
⌛
-
No host data yet
-
The monitor daemon may still be starting up.
-
- {% endfor %} -
- -{% if snapshot.unifi %} -
-
-

UniFi Devices

-
-
- ╚ - ╝ -
Device Inventory
-
- - - - - - - - - - - - - - {% for d in snapshot.unifi %} - - - - - - - - - {% endfor %} - -
UniFi network devices
StatusNameTypeModelIPActions
- - {{ 'ONLINE' if d.connected else 'OFFLINE' }} - {{ d.name }}{{ d.type }}{{ d.model }}{{ d.ip }} - {% if not d.connected %} - - {% endif %} -
-
-
-
-{% endif %} {% if recent_resolved %} @@ -468,6 +499,9 @@ {% block scripts %} -{% endblock %} diff --git a/tests/test_app.py b/tests/test_app.py new file mode 100644 index 0000000..e6f24c0 --- /dev/null +++ b/tests/test_app.py @@ -0,0 +1,93 @@ +"""Tests for app.py routes: database and LDAP are mocked.""" +import json +import os +import sys +from unittest.mock import patch + +import pytest + +sys.path.insert(0, os.path.dirname(os.path.dirname(__file__))) + +import app as gandalf # noqa: E402 + +AUTH = {'Remote-User': 'jared', 'Remote-Name': 'Jared V', 'Remote-Groups': 'admin'} +STATE = { + 'network_snapshot': json.dumps({ + 'hosts': {'large1': {'ip': '10.0.0.2', 'status': 'up', 'source': 'prometheus', 'interfaces': {'eth0': 'up'}}}, + 'unifi': [{'name': 'USW Flex', 'type': 'usw', 'model': 'USF5P', 'ip': '10.0.0.3', 'mac': '', + 'connected': True}], + }), + 'link_stats': json.dumps({'hosts': {}, 'unifi_switches': {}}), +} + + +@pytest.fixture +def client(): + with patch.object(gandalf, 'db') as db: + db.get_state.side_effect = lambda key, default=None: STATE.get(key, default) + db.get_active_events.return_value = [] + db.get_recent_resolved.return_value = [] + db.get_active_suppressions.return_value = [] + db.get_events_for_target.return_value = [] + db.count_active_events.return_value = 0 + db.get_status_summary.return_value = {'critical': 0, 'warning': 0, 'info': 0, 'resolved_24h': 0} + db.check_suppressed.return_value = False + with patch.object(gandalf, '_cfg', {'auth': {'allowed_groups': ['admin']}, 'ticket_api': {}}): + yield gandalf.app.test_client() + + +class TestPagesAndNav: + def test_home_has_search_and_no_link_debug(self, client): + html = client.get('/', headers=AUTH).get_data(as_text=True) + assert 'id="device-search-input"' in html + assert 'Link Debug' not in html + + def test_home_section_order(self, client): + html = client.get('/', headers=AUTH).get_data(as_text=True) + order = [html.index(m) for m in ( + 'id="device-search"', 'Alert Queue', 'WAN / Fiber', 'g-section-title">Hosts<', + 'Device Inventory', 'Network Topology', + )] + assert order == sorted(order) + + def test_old_links_url_redirects_home(self, client): + resp = client.get('/links', headers=AUTH) + assert resp.status_code == 302 and resp.headers['Location'].endswith('/') + + def test_device_page_escapes_name(self, client): + html = client.get('/device/%3Cscript%3Ex', headers=AUTH).get_data(as_text=True) + assert '

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�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 D`e#R^ diff --git a/docs/img/link-debug.png b/docs/img/link-debug.png deleted file mode 100644 index 569d7cc7b91517a4f04591b5af07f1b55b120080..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148277 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