- scan & releases/from-url: verbindung wird an die bereits validierte IP
gepinnt (node:http/https lookup-option), statt fetch erneut aufloesen zu
lassen. Schliesst DNS-rebinding/TOCTOU, mit dem ein lizenzierter Kunde
ueber die DNS seiner eigenen Domain interne Dienste/Cloud-Metadaten
erreichen koennte.
- releases/from-url folgt redirects jetzt manuell und validiert jeden hop
(protokoll + private-IP-guard); gitea-token nur an den ausgangs-host.
- pinnedRequest: settle-guard + body-cap loesen das promise auch bei
ueberlangen antworten (kein haengen).
- autodetect process(): kein blank-page mehr bei PCRE-fehler (fallback auf
original-HTML statt (string) null = "").
- cleanup: ungenutztes extract_iframe_src() entfernt; redundantes
&-replace in get_src() entfernt (DOMDocument dekodiert bereits).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Nur ladende <link rel=...> (stylesheet/preload/icon/...) werden gezaehlt;
rel=profile/canonical/pingback etc. (z.B. gmpg.org) sind keine Requests mehr.
- Plugin-Version + Header auf 1.2.0 (passend zu readme), Changelog-Eintrag.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Eltern-Ordner ist jetzt EIN Git-Repo (statt getrennter Repos).
- root .gitignore haelt Secrets (.env), node_modules, DB und Build-Artefakte raus.
- release.ps1: manueller Release (ZIP bauen + ans Backend laden).
- root README mit Struktur und Release-Ablauf.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>