towerops/lib/towerops_web/live
Graham McIntire 7081e5daed
fix: correct subscriber counts by filtering CGNAT IPs and excluding routers
Router devices were inflating per-site subscriber counts because:
1. CGNAT IPs (100.64.0.0/10) in router ARP tables caused false matches
2. Routers see all traffic and shouldn't have subscribers attributed
3. Site totals were computed from raw links without filtering

Changes:
- Filter CGNAT (RFC 6598) IPs from device subscriber links
- Deduplicate accounts across devices by match method priority
- Detect routers via SNMP sys_descr and zero out per-device counts
- Derive site totals from filtered per-device impacts
- Add per-device Subs/MRR columns to site device tables
- Add device link fallback for sites without IP blocks
- Fix Gaiia sync case mismatch and execution order
- Improve device list toolbar button icons and tooltips
2026-02-18 09:15:10 -06:00
..
account_live Fix dark mode inconsistencies across all pages 2026-02-16 10:31:52 -06:00
admin Add Error Tracker link to admin dashboard 2026-02-17 10:37:44 -06:00
agent_live fix: netbox url field type, gaiia ipRange→block, remove unknown webhook log 2026-02-14 17:44:01 -06:00
alert_live Add onboarding flow for new organizations 2026-02-16 10:14:45 -06:00
check_live Prevent Oban polling/monitoring job stacking per device 2026-02-16 16:37:48 -06:00
components refactor: fix all credo strict issues, format all code, fix broken routes 2026-02-13 19:34:40 -06:00
device_live fix: correct subscriber counts by filtering CGNAT IPs and excluding routers 2026-02-18 09:15:10 -06:00
graph_live i18n: wrap all user-facing strings in gettext() 2026-02-14 17:44:01 -06:00
help_live Prevent Oban polling/monitoring job stacking per device 2026-02-16 16:37:48 -06:00
helpers refactor: centralize LiveView access control checks 2026-02-04 17:51:05 -06:00
insights_live i18n: wrap all user-facing strings in gettext() 2026-02-14 17:44:01 -06:00
maintenance_live Prevent Oban polling/monitoring job stacking per device 2026-02-16 16:37:48 -06:00
map_live i18n: wrap all user-facing strings in gettext() 2026-02-14 17:44:01 -06:00
mikrotik_backup_live i18n: wrap all user-facing strings in gettext() 2026-02-14 17:44:01 -06:00
org Prevent Oban polling/monitoring job stacking per device 2026-02-16 16:37:48 -06:00
org_live fix: netbox url field type, gaiia ipRange→block, remove unknown webhook log 2026-02-14 17:44:01 -06:00
site_live fix: correct subscriber counts by filtering CGNAT IPs and excluding routers 2026-02-18 09:15:10 -06:00
trace_live Prevent Oban polling/monitoring job stacking per device 2026-02-16 16:37:48 -06:00
user_settings_live feat: add 12/24-hour time format setting with consistent timezone display 2026-02-13 15:16:29 -06:00
activity_feed_live.ex i18n: wrap all user-facing strings in gettext() 2026-02-14 17:44:01 -06:00
activity_feed_live.html.heex fix: netbox url field type, gaiia ipRange→block, remove unknown webhook log 2026-02-14 17:44:01 -06:00
changelog_live.ex refactor: fix all credo strict issues, format all code, fix broken routes 2026-02-13 19:34:40 -06:00
config_timeline_live.ex i18n: wrap all user-facing strings in gettext() 2026-02-14 17:44:01 -06:00
dashboard_live.ex ui: major redesign - NOC dashboard, consolidated nav, dense tables, flat alerts 2026-02-14 20:15:07 -06:00
dashboard_live.html.heex Prevent Oban polling/monitoring job stacking per device 2026-02-16 16:37:48 -06:00
mobile_qr_live.ex i18n: wrap all user-facing strings in gettext() 2026-02-14 17:44:01 -06:00
network_map_live.ex i18n: wrap all user-facing strings in gettext() 2026-02-14 17:44:01 -06:00
network_map_live.html.heex i18n: wrap all user-facing strings in gettext() 2026-02-14 17:44:01 -06:00
onboarding_live.ex Prevent Oban polling/monitoring job stacking per device 2026-02-16 16:37:48 -06:00
onboarding_live.html.heex Prevent Oban polling/monitoring job stacking per device 2026-02-16 16:37:48 -06:00
user_registration_live.ex i18n: wrap all user-facing strings in gettext() 2026-02-14 17:44:01 -06:00
user_reset_password_live.ex i18n: wrap all user-facing strings in gettext() 2026-02-14 17:44:01 -06:00
user_settings_live.ex i18n: wrap all user-facing strings in gettext() 2026-02-14 17:44:01 -06:00
user_settings_live.html.heex ui: polish device detail, site detail, and user settings 2026-02-14 21:11:33 -06:00