From beb7f274a33f227990ffd1f7797354e19dc378cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dieter=20Schl=C3=BCter?= Date: Fri, 12 Jun 2026 22:17:34 +0200 Subject: [PATCH] docs: update README + Bedienungsanleitung; fix config.py SMTP defaults MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - test-alert subcommand documented in both files - Cron examples extended with www.bergbauspuren-bredelar.de (03:30) - "Neue Website hinzufügen" updated to URL-first syntax - Bedienungsanleitung: sitemap option, CF7 ignore_pattern example, generic header - config.py: SMTP defaults corrected (smtp_host, smtp_user, from, to) Co-Authored-By: Claude Sonnet 4.6 --- BEDIENUNGSANLEITUNG.md | 41 ++++++++++++++++++++++++++++++++++------- README.md | 15 ++++++++++----- scanner/config.py | 8 ++++---- 3 files changed, 48 insertions(+), 16 deletions(-) diff --git a/BEDIENUNGSANLEITUNG.md b/BEDIENUNGSANLEITUNG.md index 695f646..c70159f 100644 --- a/BEDIENUNGSANLEITUNG.md +++ b/BEDIENUNGSANLEITUNG.md @@ -1,7 +1,7 @@ # Bedienungsanleitung — Website Integrity Scanner -Überwachungswerkzeug für die statische Website **bredelar.info** gegen SEO-Spam und -unbefugte Manipulationen. Der Scanner läuft lokal im Verantwortungsbereich des Betreibers. +Überwachungswerkzeug für statische Websites gegen SEO-Spam und unbefugte Manipulationen. +Der Scanner läuft lokal im Verantwortungsbereich des Betreibers. --- @@ -178,6 +178,9 @@ Je eine Zeile pro überwachter Website einfügen (mit leichtem Zeitversatz): # jamulix.de — täglich 03:15 Uhr 15 3 * * * cd /home/dschlueter/Python_Programs/integrity_scanner_fuer_statische_Webseiten && python -m scanner --config jamulix.de/config.yaml scan >> jamulix.de/logs/cron.log 2>&1 + +# www.bergbauspuren-bredelar.de — täglich 03:30 Uhr +30 3 * * * cd /home/dschlueter/Python_Programs/integrity_scanner_fuer_statische_Webseiten && python -m scanner --config www.bergbauspuren-bredelar.de/config.yaml scan >> www.bergbauspuren-bredelar.de/logs/cron.log 2>&1 ``` Danach prüfen: `crontab -l` @@ -208,6 +211,7 @@ Globale Optionen: `--config path/to/config.yaml`, `--verbose` (`-v`). | `check-ext-links` | Externe Links auf Erreichbarkeit prüfen (4xx/5xx) | | `check-assets` | Binärdateien (JS/CSS/Bilder) auf Inhaltsänderung prüfen | | `approve-assets` | Aktuelle Asset-Hashes als neue Baseline setzen | +| `test-alert` | Test-E-Mail senden ohne echten Scan — prüft SMTP-Konfiguration | ### Beispiele @@ -368,6 +372,9 @@ oder die überwachten Server unnötig belasten. # jamulix.de — täglich 03:15 Uhr 15 3 * * * cd /home/dschlueter/Python_Programs/integrity_scanner_fuer_statische_Webseiten && python -m scanner --config jamulix.de/config.yaml scan >> jamulix.de/logs/cron.log 2>&1 + +# www.bergbauspuren-bredelar.de — täglich 03:30 Uhr +30 3 * * * cd /home/dschlueter/Python_Programs/integrity_scanner_fuer_statische_Webseiten && python -m scanner --config www.bergbauspuren-bredelar.de/config.yaml scan >> www.bergbauspuren-bredelar.de/logs/cron.log 2>&1 ``` Danach prüfen ob die Einträge gespeichert wurden: @@ -376,11 +383,14 @@ crontab -l ``` **Neue Website hinzufügen:** -1. Template kopieren: `cp -r meine-seite.de neue-seite.de` -2. In `neue-seite.de/config.yaml` `target` und alle 4 Pfade (`data_dir`, `reports_dir`, `logs_dir`, `config_dir`) anpassen -3. Erste Prüfung: `python -m scanner --config neue-seite.de/config.yaml init` -4. Weiteren Cron-Eintrag ergänzen — mit 15 Minuten Abstand zum vorherigen (z.B. 03:30 Uhr) -5. `neue-seite.de/data/`, `/reports/`, `/logs/` in `.gitignore` eintragen +1. Ersten Scan starten — Verzeichnis und config.yaml werden automatisch angelegt: + ```bash + python -m scanner https://neue-seite.de init + ``` +2. Externe Domains prüfen und in `neue-seite.de/config/allowed_external.yaml` eintragen +3. Baseline freigeben: `python -m scanner https://neue-seite.de approve --all --note "Erststand geprüft"` +4. Weiteren Cron-Eintrag ergänzen — mit 15 Minuten Abstand zum vorherigen (z.B. 03:45 Uhr) +5. `neue-seite.de/` in `.gitignore` eintragen ### Log prüfen @@ -406,6 +416,17 @@ Datei `/etc/logrotate.d/integrity-scanner`: ## 11. E-Mail-Benachrichtigung einrichten +### Konfiguration testen ohne echten Scan + +```bash +python -m scanner https://ihre-website.de test-alert +``` + +Sendet eine Test-Nachricht und prüft dabei SMTP-Host, Zugangsdaten und Empfängeradresse. +Sinnvoll nach jeder Änderung an der SMTP-Konfiguration. + +Optional: `test-alert --level red` sendet eine Nachricht mit rotem Alarm-Level. + ### config.yaml anpassen ```yaml @@ -462,6 +483,7 @@ Alle Einstellungen in `config.yaml`. Fehlende Werte werden aus den Defaults übe | `max_pages` | `200` | Maximale Anzahl gecrawlter Seiten | | `delay_seconds` | `1.0` | Pause zwischen Requests (Server-Schonung) | | `skip_extensions` | `.jpg`, `.pdf` etc. | Dateitypen, die nicht gecrawlt werden | +| `sitemap` | `true` | Sitemap.xml auslesen um Seiten ohne eingehende Links zu finden | ### Score-Gewichte (`scoring:`) @@ -561,8 +583,13 @@ normalization: - '\b\d{1,2}\.\s*(?:Januar|Februar|März|April|Mai|Juni|Juli|August|September|Oktober|November|Dezember)\s+\d{4}\b' - '\b\d{1,2}\.\d{1,2}\.\d{4}\b' - 'Stand:\s+\S+' + # WordPress Contact Form 7: Platzhalter-Text rotiert bei jedem Seitenaufruf + - 'Kommentar oder Nachricht \* \w+' ``` +Das Muster wird auf beiden Seiten des Vergleichs (Baseline und aktueller Snapshot) +angewendet — falsch-positive Alarme durch dynamische CMS-Inhalte werden so unterdrückt. + --- ## 15. Was der Scanner erkennt diff --git a/README.md b/README.md index 7a0ae6c..e459444 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,7 @@ dafür **nichts** extra einzurichten — ein täglicher Aufruf genügt für alle | `approve --rebuild` | Gesamte Baseline ersetzen (nach großer Änderung) | | `report` | Letzten Report anzeigen | | `status` | Baseline-Datum, letzter Scan, Risiko-Level | +| `test-alert` | Test-E-Mail senden, ohne echten Scan (SMTP-Check) | Alle Befehle akzeptieren `--config path/to/config.yaml` und `--verbose`. @@ -135,6 +136,9 @@ laufen mehrere Scans gleichzeitig, konkurrieren sie um Netzwerk und CPU und kön # Täglich 03:15 — jamulix.de 15 3 * * * cd /home/dschlueter/Python_Programs/integrity_scanner_fuer_statische_Webseiten && python -m scanner --config jamulix.de/config.yaml scan >> jamulix.de/logs/cron.log 2>&1 + +# Täglich 03:30 — www.bergbauspuren-bredelar.de +30 3 * * * cd /home/dschlueter/Python_Programs/integrity_scanner_fuer_statische_Webseiten && python -m scanner --config www.bergbauspuren-bredelar.de/config.yaml scan >> www.bergbauspuren-bredelar.de/logs/cron.log 2>&1 ``` **Wichtig:** Der `cd`-Befehl ist nötig, damit `python -m scanner` das Paket findet. @@ -145,11 +149,12 @@ Nach dem Einrichten prüfen: `crontab -l` ### Neue Website hinzufügen ```bash -cp -r meine-seite.de neue-domain.de -# In neue-domain.de/config.yaml: target + alle 4 Pfade anpassen -python -m scanner --config neue-domain.de/config.yaml init -# Dann einen weiteren Cron-Eintrag ergänzen -# neue-domain.de/data|reports|logs in .gitignore eintragen +# Zielverzeichnis + config.yaml werden automatisch aus dem Template angelegt: +python -m scanner https://neue-domain.de init +# Externe Domains prüfen und in neue-domain.de/config/allowed_external.yaml eintragen +python -m scanner https://neue-domain.de approve --all --note "Erststand geprüft" +# Weiteren Cron-Eintrag ergänzen — mit 15 Minuten Abstand zum vorherigen +# neue-domain.de/ in .gitignore eintragen (data/, reports/, logs/) ``` Log-Rotation (`/etc/logrotate.d/scanner`): diff --git a/scanner/config.py b/scanner/config.py index 9dfb54a..ee5b522 100644 --- a/scanner/config.py +++ b/scanner/config.py @@ -58,13 +58,13 @@ DEFAULT_CONFIG: dict = { "min_level": "yellow", "email": { "enabled": False, - "smtp_host": "localhost", + "smtp_host": "linix.de", "smtp_port": 587, "smtp_tls": True, - "smtp_user": "", + "smtp_user": "eliza", "smtp_password_env": "SCANNER_SMTP_PASSWORD", - "from": "scanner@example.com", - "to": [], + "from": "eliza@linix.de", + "to": ["dieter.schlueter@linix.de"], }, "webhook": { "enabled": False,