s4luorth ca945d2d80 feat: third-party-scripts blockieren (server + client-guard)
Loest die YouTube/Vimeo-API-Luecke: viele dienste laden ueber <script>
(z. B. youtube.com/iframe_api, www-widgetapi.js, analytics) statt iframes -
oft per JavaScript nachgeladen, daher fuer den scanner unsichtbar.

- Pro dienst aktivierbar ueber das (umbenannte) feld "Zugehoerige Skripte
  blockieren (z. B. YouTube-/Vimeo-API)" = das vorhandene loads_script-flag.
  Presets (YouTube, Vimeo, Maps) haben es bereits an.
- Server-seitig: passende <script src> werden zu type="text/plain"
  (src -> data-cb-src) neutralisiert, laden also nicht.
- Client-seitig: winziger guard ganz frueh im <head> patcht
  appendChild/insertBefore/replaceChild und neutralisiert dynamisch
  injizierte scripts VOR dem einfuegen -> kein request. Faengt damit auch
  die per JS nachgeladene iframe_api ab.
- Einwilligung (per-dienst-consent, z. B. ueber den video-platzhalter)
  schaltet die scripts via cbActivateScripts frei und laedt sie nach.
- Neuer shortcode [content_blocker_consent id="…"] als einwilligungs-button
  fuer reine skript-dienste ohne sichtbaren platzhalter.
- guard-logik mit DOM-mock getestet (block + reinject), server-regex
  isoliert geprueft. i18n DE/EN ergaenzt (127 strings).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 08:24:33 +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%