Neuer Sub-Tab "X-Recherche-Konten" unter Quellen: die X-Login-Konten, mit denen der Monitor bei X scrapt (twscrape-Account-Pool), anzeigen, hinzufuegen, Cookies erneuern, aktiv/inaktiv schalten, entfernen, plus Sperren-Reset. - neuer Router x_scraper.py, verwaltet den twscrape-Pool ueber dessen API - X_ACCOUNTS_DB_PATH in config.py - twscrape als Abhaengigkeit (git-main-Pin) - Sub-Tab, Tabelle und zwei Modals in dashboard.html, Logik in x-scraper.js Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
62 Zeilen
2.5 KiB
Python
62 Zeilen
2.5 KiB
Python
"""Konfiguration fuer das Verwaltungsportal."""
|
|
import os
|
|
|
|
# Pfade
|
|
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
STATIC_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), "static")
|
|
|
|
# Gemeinsame Datenbank (gleiche wie OSINT-Monitor)
|
|
DB_PATH = os.environ.get("DB_PATH", "/mnt/gitea/osint-data/osint.db")
|
|
|
|
# twscrape-Account-Store: die X-Login-Konten, mit denen der Monitor bei X
|
|
# recherchiert. Geteilt mit dem Monitor (gleicher Pfad-Default).
|
|
X_ACCOUNTS_DB_PATH = os.environ.get("X_ACCOUNTS_DB_PATH", "/home/claude-dev/.x-scraper/accounts.db")
|
|
|
|
# JWT (eigener Secret fuer Verwaltungsportal)
|
|
JWT_SECRET = os.environ.get("PORTAL_JWT_SECRET")
|
|
if not JWT_SECRET:
|
|
raise RuntimeError("PORTAL_JWT_SECRET Umgebungsvariable muss gesetzt sein")
|
|
JWT_ALGORITHM = "HS256"
|
|
JWT_EXPIRE_HOURS = 8
|
|
|
|
# Server
|
|
PORT = int(os.environ.get("PORTAL_PORT", "8892"))
|
|
|
|
# SMTP (gleiche wie OSINT-Monitor)
|
|
SMTP_HOST = os.environ.get("SMTP_HOST", "")
|
|
SMTP_PORT = int(os.environ.get("SMTP_PORT", "587"))
|
|
SMTP_USER = os.environ.get("SMTP_USER", "")
|
|
SMTP_PASSWORD = os.environ.get("SMTP_PASSWORD", "")
|
|
SMTP_FROM_EMAIL = os.environ.get("SMTP_FROM_EMAIL", "noreply@aegis-sight.de")
|
|
SMTP_FROM_NAME = os.environ.get("SMTP_FROM_NAME", "AegisSight Verwaltung")
|
|
SMTP_USE_TLS = os.environ.get("SMTP_USE_TLS", "true").lower() == "true"
|
|
|
|
# Magic Link Base URL (fuer Einladungen Richtung OSINT-Monitor, NICHT Portal-Login)
|
|
MAGIC_LINK_BASE_URL = os.environ.get("MAGIC_LINK_BASE_URL", "https://monitor.aegis-sight.de")
|
|
MAGIC_LINK_EXPIRE_MINUTES = 10
|
|
|
|
# Magic-Link-Auth fuer das Verwaltungsportal SELBST
|
|
# (frueher Passwort-Login, ab 2026-05-09 nur noch Magic-Link)
|
|
ALLOWED_EMAIL = os.environ.get("PORTAL_ALLOWED_EMAIL", "info@aegis-sight.de")
|
|
PORTAL_MAGIC_LINK_BASE_URL = os.environ.get(
|
|
"PORTAL_MAGIC_LINK_BASE_URL", "https://monitor-verwaltung.aegis-sight.de"
|
|
)
|
|
PORTAL_MAGIC_LINK_EXPIRE_MINUTES = int(
|
|
os.environ.get("PORTAL_MAGIC_LINK_EXPIRE_MINUTES", "10")
|
|
)
|
|
|
|
# Source Discovery (geteilte Config mit OSINT-Monitor)
|
|
CLAUDE_PATH = os.environ.get("CLAUDE_PATH", "/usr/local/bin/claude")
|
|
CLAUDE_TIMEOUT = 300
|
|
MAX_FEEDS_PER_DOMAIN = 3
|
|
CLAUDE_MODEL_FAST = "claude-haiku-4-5-20251001"
|
|
CLAUDE_MODEL_MEDIUM = "claude-sonnet-4-6"
|
|
CLAUDE_MODEL_STANDARD = "claude-opus-4-7"
|
|
|
|
# Health-Check (genutzt von shared/services/source_health.py + routers/sources.py)
|
|
HEALTH_CHECK_USER_AGENT = os.environ.get(
|
|
"HEALTH_CHECK_USER_AGENT",
|
|
"Mozilla/5.0 (compatible; AegisSight-HealthCheck/1.0)",
|
|
)
|
|
HEALTH_CHECK_TIMEOUT_S = float(os.environ.get("HEALTH_CHECK_TIMEOUT_S", "15.0"))
|