Initial: Mesh-Configs vom 03.09.2026 01:23

This commit is contained in:
root
2026-09-03 01:23:55 +02:00
commit 4b65134f8c
797 changed files with 146197 additions and 0 deletions
+86
View File
@@ -0,0 +1,86 @@
#!/usr/bin/env python3
"""Flask-App: Impressum-Kontaktformular + Honeypot-Spamschutz
Nachricht wird als JSON-Datei gespeichert + Telegram-Benachrichtigung via API.
"""
import os, json, time, re
from pathlib import Path
from flask import Flask, request
import requests
import collections
_RATE = collections.defaultdict(list) # ip -> [timestamps]
MAX_PER_HOUR = 5
def _rate_limited(ip):
now = time.time()
_RATE[ip] = [t for t in _RATE[ip] if now - t < 3600]
if len(_RATE[ip]) >= MAX_PER_HOUR:
return True
_RATE[ip].append(now)
return False
app = Flask(__name__)
MSG_DIR = Path("/tmp/impressum-kontakt")
ENV_FILE = "/root/.hermes/.env"
def _env(key):
try:
txt = Path(ENV_FILE).read_text()
m = re.search(key + r"\s*=\s*(\S+)", txt)
return m.group(1) if m else ""
except Exception:
return ""
@app.route("/senden", methods=["POST"])
def senden():
name = request.form.get("name", "").strip()
email = request.form.get("email", "").strip()
msg = request.form.get("nachricht", "").strip()
honeypot = request.form.get("website", "").strip() # unsichtbar, Bots füllen es
# Honeypot: wenn gefüllt → Bot, ignorieren
if honeypot:
return "Danke für Ihre Nachricht. (Bot erkannt – ignoriert)"
# Rate-Limit: max 5/Stunde/IP
if _rate_limited(request.remote_addr):
return "Zu viele Anfragen. Bitte später erneut versuchen.", 429
if not name or not email or not msg:
return "Bitte alle Pflichtfelder ausfüllen.", 400
# Speichern
os.makedirs(MSG_DIR, exist_ok=True)
ts = int(time.time())
entry = {
"ts": ts, "name": name, "email": email, "msg": msg,
"ip": request.remote_addr,
"user_agent": request.headers.get("User-Agent", "")
}
safe_name = re.sub(r"[^A-Za-z0-9_-]", "_", name)[:20]
path = MSG_DIR / f"{ts}_{safe_name}.json"
with open(path, "w") as f:
json.dump(entry, f, indent=2, ensure_ascii=False)
# Telegram-Benachrichtigung
t = _env("TELEGRAM_BOT_TOKEN")
c = _env("TELEGRAM_HOME_CHANNEL") or "6417835766"
if t:
text = "📩 *Neue Kontaktanfrage*\nVon: {} ({})\n\n{}".format(name, email, msg[:500])
try:
requests.post(
f"https://api.telegram.org/bot{t}/sendMessage",
json={"chat_id": c, "text": text, "parse_mode": "Markdown"},
timeout=8,
)
except Exception:
pass
return "✅ Nachricht gesendet. Ich melde mich bei Ihnen.", 200
if __name__ == "__main__":
app.run(host="127.0.0.1", port=8096, debug=False)