- Dockerfile/compose: Flask-App + selenium/standalone-chrome (noVNC), Healthcheck - app.py: /healthz + eingebettete noVNC-Live-Ansicht (NOVNC_URL, lokal:7900 / Cluster:/novnc/) - Helm-Chart infra/k8s/base/ibo: App + Selenium-Sidecar, 2 Ports, Ingress (/ + /novnc via stripPrefix), SSO-Middlewares aus dem CD-Repo - Gitea-CI: version -> test -> build-push -> helm-validate -> deploy-dev (Write-back) - .gitignore/.dockerignore (Dev-Samples raus) - infra/RUNBOOK-ibo.md: Zitadel/DNS/Deploy/Prod-Promote Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
71 lines
1.9 KiB
Python
71 lines
1.9 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Test-Script: Mail abrufen und Link extrahieren.
|
|
|
|
Verwendung:
|
|
python test_extract_link.py eg5gyqjqp5@web-library.net TOKEN_HIER
|
|
|
|
oder: Token aus app.py Step 1 Tabelle kopieren
|
|
"""
|
|
|
|
import sys
|
|
import json
|
|
from mailtm import list_messages, get_message_html
|
|
from core import extract_form_link
|
|
|
|
def test_extract(email, token):
|
|
print(f"📧 Abrufen von Mails fuer: {email}")
|
|
print(f"🔑 Token: {token[:20]}...")
|
|
print()
|
|
|
|
try:
|
|
msgs = list_messages(token)
|
|
print(f"📬 Mails gefunden: {len(msgs)}\n")
|
|
|
|
if not msgs:
|
|
print("❌ Keine Mails im Postfach!")
|
|
return
|
|
|
|
for i, m in enumerate(msgs, 1):
|
|
msg_id = m.get("id", "?")
|
|
sender = m.get("from", {})
|
|
if isinstance(sender, dict):
|
|
sender = sender.get("address", "?")
|
|
|
|
print(f"--- Mail {i} ---")
|
|
print(f"Von: {sender}")
|
|
print(f"Betreff: {m.get('subject', '(kein Betreff)')}")
|
|
print(f"ID: {msg_id}")
|
|
|
|
html = get_message_html(token, msg_id)
|
|
link = extract_form_link(html)
|
|
|
|
if link:
|
|
print(f"✅ LINK GEFUNDEN:")
|
|
print(f" {link}")
|
|
else:
|
|
print(f"❌ Kein Link extrahierbar")
|
|
# Debug: erste 500 Zeichen zeigen
|
|
preview = html[:500].replace("\n", " ")
|
|
print(f" Preview: {preview}...")
|
|
|
|
print()
|
|
|
|
except Exception as e:
|
|
print(f"❌ Fehler: {e}")
|
|
import traceback
|
|
traceback.print_exc()
|
|
|
|
if __name__ == "__main__":
|
|
if len(sys.argv) < 3:
|
|
print("Verwendung:")
|
|
print(" python test_extract_link.py EMAIL TOKEN")
|
|
print()
|
|
print("Beispiel:")
|
|
print(" python test_extract_link.py eg5gyqjqp5@web-library.net abc123xyz...")
|
|
sys.exit(1)
|
|
|
|
email = sys.argv[1]
|
|
token = sys.argv[2]
|
|
test_extract(email, token)
|