Files
gandalf/config.json
T
jared 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 LDAP avatar photos, UX polish, and TDS component upgrades
- 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>
2026-04-30 21:09:56 -04:00

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"
}
]
}