Fix 8 issues from code review

- ha-poller: replace recursive main() retry with while loop (stack overflow fix)
- ha-poller: advance last_push on empty HA response (log spam fix)
- ha-poller: use datetime.now(timezone.utc) instead of deprecated utcnow()
- ping-probe: always call update_status() unconditionally so offline devices register as offline
- agent.php: heartbeat reads status from payload instead of hardcoding 'online'
- phone-probe: delegate JSON building to python3 (bash concatenation injection fix)
- netscan + phone-probe: read registration key from /etc/jarvis-agent/reg-key
- admin/index.php: sync ha_list skipDomains with ha.php (14 missing domains added)
- facts_collector: self-check JARVIS via 127.0.0.1 instead of Cloudflare hairpin
This commit is contained in:
2026-06-29 20:58:22 -05:00
parent c1275d47a6
commit 90e4ded7c9
7 changed files with 43 additions and 20 deletions
+3 -4
View File
@@ -175,7 +175,7 @@ def fetch_ha_states(cfg: dict) -> list:
dt = datetime.fromisoformat(lc.replace("Z", "+00:00"))
lc = dt.astimezone(timezone.utc).strftime("%Y-%m-%d %H:%M:%S")
except Exception:
lc = datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S")
lc = datetime.now(timezone.utc).strftime("%Y-%m-%d %H:%M:%S")
entities.append({
"entity_id": entity_id,
@@ -194,13 +194,11 @@ def main():
heartbeat_every = int(cfg.get("heartbeat_every", 10))
api_key = state.get("api_key", "")
if not api_key:
while not api_key:
api_key = register(cfg, state)
if not api_key:
log("Could not register. Retrying in 60s...")
time.sleep(60)
main()
return
headers = {"X-Agent-Key": api_key}
last_push = 0
@@ -229,6 +227,7 @@ def main():
last_push = now
else:
log("No HA entities fetched (HA down or token invalid?)")
last_push = now
time.sleep(heartbeat_every)