Registro delle modifiche
Tutte le modifiche rilevanti a caddy-analyzer saranno documentate in questo file.
Il formato si basa su Keep a Changelog e questo progetto aderisce al Semantic Versioning.
0.7.2 — 2026-09-05
Corretto
- Leggibilità dei path sui terminali chiari (#100): i path delle richieste in
taile nello stream live di--watchnon usano più il bianco brillante (255), illeggibile su sfondo bianco. Ora usano il colore predefinito del terminale in grassetto, restando leggibili sia sui temi chiari sia su quelli scuri senza flag o configurazioni. - Verifica cosign del self-update:
caddy-analyze updatefalliva con--trusted-root only supported with --new-bundle-formatperché le release pubblicavano bundle nel vecchio formato. Ora le release pubblicano bundle Sigstore nel nuovo formato e l'updater ripiega sui sidecar legacy (certificato/firma) quando il bundle non è nuovo.
0.7.1 — 2026-09-01
Corretto
- Barra di avanzamento per analisi grandi: i file locali finiti mostrano nuovamente l'avanzamento deterministico, incluso
--detect; le sorgenti streaming mantengono lo spinner animato. - Avanzamento durante la detection: lo spinner procede in modo indipendente mentre il rilevamento esegue elaborazioni costose, senza aspettare la prossima entry.
Documentazione
- Riferimento completo dei comandi: documentati ogni comando, sottocomando, flag globale e specifico, requisito di sicurezza, formato di output e flusso operativo in inglese e italiano.
0.7.0 — 2026-09-01
Aggiunto
- Pattern di detection personalizzati (#76): carica file JSON validati e ripetibili con sorgenti URI, header, User-Agent e combinazioni.
- Consegna audit remota (#70, #77): inoltra gli eventi di guard, block e unban a syslog o webhook generic, Slack, Discord e PagerDuty con retry limitati e rate limit per IP.
- Exporter Elasticsearch/OpenSearch e Loki (#74): pubblica report aggregati via HTTP autenticato con batching, retry e gestione degli errori bulk.
- Verifica bundle Cosign (#93): le nuove release usano bundle Sigstore e root attendibili, mantenendo la verifica delle release precedenti.
- Guard in modalità dry-run (#78): esegue soglie, detection, blocklist e regole country senza modificare firewall o stato persistente; emette eventi
would_block. - Baseline persistenti (#73): salva snapshot JSON versionati e confronta esecuzioni future con
--against, soglia configurabile, output strutturato ed exit code per CI. - Cache di analisi limitate (#69): sostituisce le cache grep/glob illimitate con cache LRU concorrenti.
- Worker di parsing paralleli (#75): migliora le prestazioni sui log grandi preservando l'ordine necessario alla detection stateful.
Sicurezza
- Gli errori delle notifiche remote non bloccano mai le decisioni del firewall e le credenziali webhook non vengono incluse nella diagnostica.
0.6.6 — 2026-09-01
Aggiunto
- Download automatico GeoIP City: scarica il database GeoLite2 City insieme ai database Country e ASN, salvo
--no-auto-download.
0.6.5 — 2026-09-01
Corretto
- Selezione del checksum cosign per piattaforma: seleziona l'asset cosign scaricato esatto invece della prima voce
cosignnel manifest multi-piattaforma.
0.6.4 — 2026-08-31
Corretto
- Ricerca della release con
update --version: mantiene il prefissovquando interroga GitHub per il tag di una release specifica.
Aggiunto
- Worker paralleli per l'analisi (#75):
--workers Nparallelizza il parsing dei log mantenendo l'ordine per rilevamento e aggregazione;0usa il numero di CPU disponibili. - Enrichment GeoIP per città e heatmap (#71): i database City locali forniscono città e coordinate, con
top city, sezioni nei report e heatmap geografica SVG inline. - Rilevamento dei bot moderni (#67): GPTBot, ChatGPT-User, ClaudeBot, anthropic-ai, Bytespider, CCBot, Amazonbot, Applebot-Extended, PerplexityBot, meta-externalagent e DataForSeoBot vengono classificati come bot.
0.6.3 — 2026-08-31
Corretto
- Download automatico di cosign: usa il nome attuale dell'asset
cosign_checksums.txtdurante il download di cosign per la verifica della firma.
0.6.2 — 2026-08-31
Corretto
- Defanging selettivo (#63): gli indirizzi IPv4 vengono ora validati prima del defanging, evitando di modificare numeri di versione e sequenze numeriche puntate non valide. PR #85 — @TLNing260310
--trust-forwardedignorato intopetail: gli IP client inoltrati vengono ora applicati prima dei filtri e dell'enrichment GeoIP in entrambi i sottocomandi. Chiude l'issue #64.
Modificato
- Refactor della documentazione (#86): il sito della documentazione è stato ricostruito con una struttura a template, pagine in inglese e italiano, navigazione condivisa e riferimenti aggiornati. PR #86 — @lenny-ts
0.6.1 — 2026-08-31
Aggiunto
- Filtri GeoIP per le entry (#37):
--country,--exclude-country,--asn,--exclude-asnfiltrano le entry dei log in base ai dati GeoIP. Supporta sia codici ISO (IT,US) sia nomi di paesi (Italy,United States). — @lenny-ts - Download automatico di cosign (#62):
caddy-analyze updateora scarica automaticamente cosign per la verifica della firma quando non e installato, eliminando il requisito di configurazione manuale. — @lenny-ts
Corretto
- L'output di guard ora mostra i ban da blocklist/country-block (#83): i ban da blocklist e country-block venivano registrati solo nell'audit, ma non mostrati nell'output del terminale. — @lenny-ts
- Sblocco idempotente:
unbane la scadenza di guard non falliscono piu con "partial unblock failures" quando la regola iptables non esiste in una catena (modalita hybrid). — @lenny-ts
0.6.0 — 2026-08-30
Aggiunto
- Riprogettazione del backend firewall: supporto multi-backend (iptables, Docker DOCKER-USER, nftables, hybrid) con rilevamento automatico dell'ambiente. Guard ora applica le regole sia alle catene INPUT sia DOCKER-USER quando rileva container Docker, risolvendo il problema per cui gli IP bloccati aggiravano il firewall nelle distribuzioni Caddy containerizzate. — @lenny-ts
- Comando whitelist:
caddy-analyze whitelist --add/--remove/--list/--initgestisce l'elenco never-block. Caricato automaticamente da guard tramite/etc/caddy-analyzer/whitelist.txt. — @lenny-ts - Flag di tuning operativo (#56):
--geo-cache-ttl,--geo-cache-size,--iptables-timeoutsostituiscono le costanti a tempo di compilazione. — @dchaudhari7177
Corretto
loadStatenon ricrea le regole iptables (#79): al riavvio di guard,loadState()ripristinava gli IP nella mappa in memoria ma non chiamavablocker.Block()per ricreare le regole iptables. Gli IP bannati potevano passare finche la finestra scorrevole non si riempiva nuovamente. — @lenny-ts- Arresto controllato: guard ora scarica lo stato e sopprime gli errori rumorosi "context canceled" con Ctrl+C. — @lenny-ts
- Filtri attivi non mostrati nell'intestazione del report (#51):
--max-latency,--min-size,--max-size,--level,--ops-onlyerano omessi dalla riga "Filters:". — @dchaudhari7177 - Duplicazione di
validateIP/validateIPOrCIDR(#49): unificate in un'unicavalidateIP. — @dchaudhari7177
Modificato
- Gli UUID delle regole Sigma ora sono RFC 4122 versione 5 (#59): gli identificatori basati su MD5 non erano UUID validi. Ora usa
uuidV5con uno spazio dei nomi derivato, in linea con le convenzioni Sigma. Le regole esportate prima di questa release hanno UUID diversi. — @dchaudhari7177 - GitHub Actions fissate allo SHA (#55): tutte le action di terze parti sono fissate agli SHA completi dei commit. — @dchaudhari7177
0.5.1 — 2026-08-29
Corretto
- Il monitoraggio dei log Docker (
docker://) non acquisiva le entry (#57):execLinesleggeva stdout solo tramiteStdoutPipe, ma Caddy scrive su stderr. Sostituito conio.Pipe()che unisce entrambi gli stream.
Modificato
- Deduplicati
yamlEscape/yamlQuote: rimossa la copia esattayamlQuote; i call site ora chiamanoyamlEscape(#48).
Corretto (anche in 0.5.1)
- Formattazione del delta a durata zero:
formatDurationDelta(0)ora restituisce"N/A"tramiteoutput.FormatDuration(#47).
Aggiunto
- Filtri GeoIP per le entry (
--country/--exclude-country/--asn/--exclude-asn) (#21): mantieni o scarta le entry in base a GeoIP. Richiede mmdb.
Corretto
- Ordine enrich-prima-del-filtro: le entry vengono arricchite con GeoIP prima del filtro quando i filtri geo sono attivi. Le esecuzioni non geo mantengono l'ottimizzazione filtro-prima.
0.5.0 — 2026-08-22
Aggiunto
- Sottocomando
updatecon verifica cosign (#16): firma keyless fail-closed + SHA256, flag--check,--version,--force,--install-dir, gestione Windows di rinomina a lato. - Supporto dei log operativi (non HTTP): conteggi level/logger/msg, mappa
Extra, flag--level,--ops-only, ottava scheda in watch. - Scheda operativa nella dashboard
--watch: tasto8. - Fixture di log di esempio:
testdata/sample.log(68 righe) etestdata/large.log(~50K righe) +testdata/generate.py.
Documentazione
- README: sezione Sample Logs & Test Fixtures.
- docs/sources.html: sezione 7 sulle fixture.
0.4.1 — 2026-08-18
Corretto
- Blocco apparente senza sorgente log (#19): ora stampa un errore chiaro invece di bloccarsi su stdin TTY;
--watchrifiuta stdin. - L'avvio di
--watchbloccato dal download GeoIP: oraNewGeoIPAsyncviene eseguito in background. - Spam dell'usage sugli errori delle sorgenti:
SilenceUsage: truesu root/tail/top/guard. - Percorsi di ricerca GeoIP su Windows:
os.UserHomeDir()invece diHOME(#27). - Filtri in modalita follow/interval: applicati prima dell'arricchimento (#26).
Modificato
- Navigazione delle schede TUI: aritmetica modulare (#18).
0.4.0 — 2026-08-17
Aggiunto
- Sistema di feed blocklist:
blocklist refresh/list/config/initcon cache trie CIDR di 7 giorni. - 8 feed blocklist predefiniti: Spamhaus DROP v4/v6, FireHOL L1/2, CINS, Tor, ET, AbuseIPDB.
- Integrazione blocklist in guard: blocco immediato tramite trie CIDR;
--no-blocklist,--blocklist-refresh 6h. - Country-block di guard:
--country-block CN,RU,IRcon controllo mmdb fail-fast. - Arricchimento GeoIP: mmdb DB-IP/MaxMind con download automatico dal mirror P3TERX;
--geoip-db,--no-auto-download. top country/top asn: nomi leggibili dalle persone.- Scheda GeoIP di
--watch: tasto7con arricchimento in background. - Sito di documentazione: documentazione iniziale in stile glassmorphism con TOC e ottimizzazioni Lighthouse.
Corretto
- URL di download GeoIP: mirror P3TERX al posto di
download.dbip.comnon piu attivo. - URL CINS Army: corretto.
- Codici paese mostrati al posto dei nomi: corretto.
Modificato
- Rimosso l'enricher AbuseIPDB: rimane solo GeoIP mmdb.
- Riepilogo di avvio di guard: ora stampa le statistiche blocklist + country-block.
- Go 1.25.13.
0.3.0 — 2026-08-06
Aggiunto
- 3 nuove categorie di rilevamento (26 totali):
jwt_abuse,object_enumeration,beaconing. export-sigma: 23 regole Sigma YAML con tag MITRE e uuidV5.--defang,tail --detect, barra di avanzamento, GeoIP, funzionalita Guard (--subnet-limit,--rps-anomaly,--cred-stuffing-limit,--trust-forwarded),--state-filesublock/unban, throughput 2×, istogramma, tag MITRE, filtri (--host,--max-latency, ecc.).
Corretto
- Race allo spegnimento di guard, dirty-flag,
ListBlockedIPs, sincronizzazione dello stato, regole duplicate, codici di uscita,loadStatenei test. Timestamp zero nel rilevamento, limite diPathTimestamps, LRU, literal, rotazione UA, audit logger, fan-in reader, TUI, output, parser, leak cmd: consulta il git log.
Modificato
- Nuove famiglie di pattern, Go 1.24.6, golangci-lint v2, LRU reale, cache 10K, falsi positivi dello scanner ridotti.
0.2.0 — 2026-08-01
Aggiunto
- Rilevamento multi-categoria (
DetectAll), punteggio di confidenza (1–10), audit log (--audit-log), persistenza dello stato (--state-file), allowlist (--never-block*), validazione, versione ldflags, gate CI, SBOM + cosign.
Corretto
- Duplicati regex, race sulla mappa
blocked, indiceparseBlockedIPs, errori diParseDurationignorati, leak goroutine, perdita alla rotazione, processi zombie, installer, escaper HTML, duplicati scanner, CI Windows.
Modificato
- Nuove famiglie di pattern, Go 1.24, pin Dockerfile,
iptables -S, permessi0750/0600.
0.1.3 — 2026-07-30
22 categorie, matching URI grezzo, firme ampliate, oltre 55 test, README security-first, docs/security.html.
0.1.2 — 2026-07-29
Filtraggio CIDR su --ip, elenco intelligente dei filtri, filtri tail, visualizzazione dei filtri attivi, colori TUI, dettagli sospetti, API MatchEntry.
0.1.1 — 2026-07-28
Modalita di ispezione --detect, valori predefiniti top, config show/reset, formattazione pulita del terminale, sito della documentazione, diagnostica dei permessi.
0.1.0 — 2026-07-28
Release iniziale: parsing JSON Caddy, classificazione del traffico, P50/P95, larghezza di banda, --detect (8 categorie), guard, block/unban, tail, top, diff, report HTML, TUI a 6 schede, reader multi-sorgente, installer, CI, GoReleaser, GitHub Pages.