Antivirus/crates
johnmcafee 566e0cbccb Freshclam wrapper: update RPC, DB age in status, engine-agnostic fields
- hound-api: DbFile (file + updated_at), Status.db, UpdateResult, Client::update()
- houndd: probe() extracts signature freshness from /var/lib/clamav mtimes;
  update() tries 'sudo freshclam', falls back to plain 'freshclam' and
  reports the honest reason on failure; output capped to 2KB tail
- hound CLI: 'hound update' with --json parity and human output
- rename Status.clamav_present -> engine_present + add Status.engine
  (prep for the engine seam; wire stays engine-agnostic)

Live-verified: status shows DB file + last-modified RFC3339; update
returns ok:false with the real log for a plain user (exit 1).
2026-08-20 17:54:50 -05:00
..
hound Freshclam wrapper: update RPC, DB age in status, engine-agnostic fields 2026-08-20 17:54:50 -05:00
hound-api Freshclam wrapper: update RPC, DB age in status, engine-agnostic fields 2026-08-20 17:54:50 -05:00
houndd Freshclam wrapper: update RPC, DB age in status, engine-agnostic fields 2026-08-20 17:54:50 -05:00