s4luorth ca0f2f2c32 fix: SSRF-haertung (IP-pinning) + blank-page-schutz aus security-review
- 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>
2026-06-08 06:52:22 +02:00

GDPR Content Blocker — Monorepo

DSGVO-konformer Consent-Blocker für externe iframes + selbst-gehosteter Lizenz-/Update-Server.

Struktur

  • gdpr-content-blocker/ — das WordPress-Plugin. Aus diesem Ordner wird die Release-ZIP gebaut (Top-Level-Ordner gdpr-content-blocker/).
  • license-backend/ — Node/Express + SQLite Lizenz- & Update-Backend (Docker).
  • hilfsdaten/ — interne Notizen, Spickzettel, Gitea-Runner-Setup (nicht Teil des Plugins).
  • release.ps1 — baut die Plugin-ZIP und lädt sie ins Backend (manueller Release).

Manueller Release (Update verteilen)

  1. Version in gdpr-content-blocker/gdpr-content-blocker.php bumpen (Header Version: und define( 'CB_VERSION', … )), committen.
  2. ZIP bauen + hochladen:
    .\release.ps1 -Version 1.0.1 -Token DEIN_ADMIN_API_TOKEN
    
  3. Lizenzierte Seiten sehen das Update unter Plugins.

Details: siehe hilfsdaten/SPICKZETTEL.md.

Backend starten

Siehe license-backend/README.md.

Hinweis

Secrets (.env) sind per .gitignore ausgeschlossen und gehören nicht ins Repo.

Description
No description provided
Readme 811 KiB
Languages
JavaScript 49.8%
PHP 43.9%
CSS 3.2%
Python 2.1%
PowerShell 0.7%
Other 0.3%