feat: test-alert subcommand + enable email for bredelar.info
- Add `test-alert [--level yellow|red]` to verify SMTP without a real scan - Enable email alerting in bredelar.info/config.yaml (uses DEFAULT_CONFIG for host/user/from/to, only smtp_password_env kept explicit) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
a8563cb821
commit
aa2b1ebf5c
2 changed files with 49 additions and 8 deletions
|
|
@ -1305,6 +1305,47 @@ def _print_summary(assessment: dict, diff: dict,
|
|||
f"Vollständiger Bericht: python -m scanner report")
|
||||
|
||||
|
||||
def cmd_test_alert(args: argparse.Namespace, cfg: dict) -> int:
|
||||
"""Send a synthetic test alert to verify SMTP configuration."""
|
||||
import os
|
||||
level = args.level
|
||||
target = cfg.get("target", "?")
|
||||
email_cfg = cfg.get("alerting", {}).get("email", {})
|
||||
|
||||
if not email_cfg.get("enabled"):
|
||||
print("E-Mail-Alarm ist in der config.yaml nicht aktiviert (alerting.email.enabled: false).")
|
||||
return 1
|
||||
|
||||
pw_env = email_cfg.get("smtp_password_env", "SCANNER_SMTP_PASSWORD")
|
||||
if not os.environ.get(pw_env):
|
||||
print(f"Umgebungsvariable {pw_env} ist nicht gesetzt.")
|
||||
print(f"Bitte in ~/.bashrc eintragen: export {pw_env}=\"Passwort\"")
|
||||
return 1
|
||||
|
||||
report = {
|
||||
"target": target,
|
||||
"assessment": {
|
||||
"level": level,
|
||||
"score": 42 if level == "yellow" else 120,
|
||||
"reasons": ["[TEST] Dies ist eine Test-Benachrichtigung des integrity-scanner."],
|
||||
"exit_code": 1 if level == "yellow" else 2,
|
||||
},
|
||||
"diff": {
|
||||
"new_external_domains": [],
|
||||
"new_internal_urls": [],
|
||||
"missing_internal_urls": [],
|
||||
"page_diffs": [],
|
||||
"new_broken_urls": [],
|
||||
"known_broken_urls": [],
|
||||
},
|
||||
}
|
||||
|
||||
print(f"Sende Test-Alarm ({level}) an {email_cfg.get('to', [])} ...")
|
||||
send_alert(report, cfg)
|
||||
print("Fertig. Bitte E-Mail-Postfach prüfen.")
|
||||
return 0
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Argument parser
|
||||
# ---------------------------------------------------------------------------
|
||||
|
|
@ -1350,6 +1391,12 @@ def _build_parser() -> argparse.ArgumentParser:
|
|||
aa = sub.add_parser("approve-assets", help="Aktuelle Asset-Hashes als neue Baseline setzen")
|
||||
aa.add_argument("--note", default="", help="Freitext-Notiz")
|
||||
|
||||
ta = sub.add_parser("test-alert", help="Test-E-Mail senden (prüft SMTP-Verbindung)")
|
||||
ta.add_argument(
|
||||
"--level", choices=["yellow", "red"], default="yellow",
|
||||
help="Simulierter Alarm-Level (default: yellow)",
|
||||
)
|
||||
|
||||
return p
|
||||
|
||||
|
||||
|
|
@ -1436,6 +1483,7 @@ def main() -> None:
|
|||
"check-ext-links": cmd_check_ext_links,
|
||||
"check-assets": cmd_check_assets,
|
||||
"approve-assets": cmd_approve_assets,
|
||||
"test-alert": cmd_test_alert,
|
||||
}
|
||||
handler = commands.get(args.command)
|
||||
if not handler:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue