9d6583a08a
Lint / Python (flake8) (push) Successful in 1m13s
Lint / JS (eslint) (push) Successful in 9s
Security / Python Security (bandit) (push) Failing after 45s
Test / Python Tests (pytest) (push) Successful in 57s
Lint / Notify on failure (push) Has been skipped
Lint / Deploy (push) Successful in 5s
- Add /api/avatar endpoint querying lldap for user jpegPhoto; disk cache with sentinel pattern avoids repeat LDAP hits for users without photos - Add ldap3 dependency and ldap config block to config.json - Wire lt-avatar img overlay in base.html with capture-phase error fallback (lt-avatar-img-err) to reveal initials when image is absent - Fix lt-avatar CSS shim: position:relative + absolute inset on img (local base.css was missing these; added to style.css) - Replace all empty-state paragraphs with proper lt-empty-state markup (icon + title + body) across index, suppressions, inspector, app.js - Add lt-spinner--cyan next to refresh button; shows during refreshAll() - Replace inspector panel-section-title with lt-divider throughout - Add data-tooltip attributes to SFP DOM metrics, TX/RX/Carrier/Duplex/ Auto-neg/Error labels in links.html and inspector panel - Add tooltips to events table column headers (Sev, First Seen, Failures) - Fix links.html host panel timestamp (was reading sample.updated which is always undefined; now uses data.updated) - Fix UniFi status text casing (Online→ONLINE to match server render) - Remove dead topo-status-* class manipulation from updateTopology() - Always render alert-count-badge; toggle display:none when count is 0 - Fix double UniFi get_devices() call in monitor.py run loop - Fix chip-critical animation (was using green pulse-glow; now red) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
84 lines
2.0 KiB
JSON
84 lines
2.0 KiB
JSON
{
|
|
"pulse": {
|
|
"url": "http://10.10.10.65:8080",
|
|
"api_key": "012b303a324152c509bf5ade6f942cfc21404f68662f01a17001cba9e4486049",
|
|
"worker_id": "1b11d1b5-4ed0-42df-a6af-8d57fffe1343",
|
|
"timeout": 45
|
|
},
|
|
"unifi": {
|
|
"controller": "https://10.10.10.1",
|
|
"api_key": "kyPfIsAVie3hwMD4Bc1MjAu8N7HVPIb8",
|
|
"site_id": "default"
|
|
},
|
|
"prometheus": {
|
|
"url": "http://10.10.10.48:9090"
|
|
},
|
|
"database": {
|
|
"host": "10.10.10.50",
|
|
"port": 3306,
|
|
"user": "gandalf",
|
|
"password": "Gandalf2026Lotus",
|
|
"name": "gandalf"
|
|
},
|
|
"ticket_api": {
|
|
"url": "http://10.10.10.45/create_ticket_api.php",
|
|
"api_key": "5acc5d3c647b84f7c6f59082ce4450ee772e2d1633238b960136f653d20c93af"
|
|
},
|
|
"ldap": {
|
|
"host": "10.10.10.39",
|
|
"port": 3890,
|
|
"bind_dn": "uid=jared,ou=people,dc=example,dc=com",
|
|
"bind_pw": "SJdi$P%RhB3yRoXE^PNL",
|
|
"user_base": "ou=people,dc=example,dc=com",
|
|
"cache_dir": "/tmp/gandalf_avatars",
|
|
"cache_ttl": 3600
|
|
},
|
|
"auth": {
|
|
"allowed_groups": ["admin"]
|
|
},
|
|
"monitor": {
|
|
"poll_interval": 300,
|
|
"failure_threshold": 2,
|
|
"cluster_threshold": 3,
|
|
"ping_hosts": [],
|
|
"links_exclude_ips": ["10.10.10.29", "10.10.10.44", "10.10.10.3"]
|
|
},
|
|
"hosts": [
|
|
{
|
|
"name": "pbs",
|
|
"ip": "10.10.10.3",
|
|
"prometheus_instance": "10.10.10.3:9100"
|
|
},
|
|
{
|
|
"name": "large1",
|
|
"ip": "10.10.10.2",
|
|
"prometheus_instance": "10.10.10.2:9100"
|
|
},
|
|
{
|
|
"name": "compute-storage-01",
|
|
"ip": "10.10.10.4",
|
|
"prometheus_instance": "10.10.10.4:9100"
|
|
},
|
|
{
|
|
"name": "micro1",
|
|
"ip": "10.10.10.8",
|
|
"prometheus_instance": "10.10.10.8:9100"
|
|
},
|
|
{
|
|
"name": "monitor-02",
|
|
"ip": "10.10.10.9",
|
|
"prometheus_instance": "10.10.10.9:9100"
|
|
},
|
|
{
|
|
"name": "compute-storage-gpu-01",
|
|
"ip": "10.10.10.10",
|
|
"prometheus_instance": "10.10.10.10:9100"
|
|
},
|
|
{
|
|
"name": "storage-01",
|
|
"ip": "10.10.10.11",
|
|
"prometheus_instance": "10.10.10.11:9100"
|
|
}
|
|
]
|
|
}
|