geoip_shop_manager.py aktualisiert

This commit is contained in:
2025-12-09 19:39:21 +01:00
parent d3c10fc747
commit 41a4a3dfd1

View File

@@ -10,7 +10,7 @@ Supports three modes:
- php-only: GeoIP blocking without CrowdSec
- bot-only: Rate-limit bots, shop remains globally accessible
v3.4.3: Fixed rate-limit logic - bots under limit are allowed through
v3.4.4: Rate-Limit 0 wird akzeptiert (= sofortiger Bot-Ban)
"""
import os
@@ -980,25 +980,33 @@ def select_mode():
def select_rate_limit():
print(f"\n🚦 Rate-Limit Konfiguration:")
print(f" (0 = Bots sofort bannen, kein Rate-Limiting)")
rate_input = input(f" Requests pro Minute bevor Ban [{DEFAULT_RATE_LIMIT}]: ").strip()
try:
rate_limit = int(rate_input) if rate_input else DEFAULT_RATE_LIMIT
if rate_limit < 1:
if rate_limit < 0:
print(f" ⚠️ Ungültiger Wert, verwende Default: {DEFAULT_RATE_LIMIT}")
rate_limit = DEFAULT_RATE_LIMIT
except ValueError:
print(f" ⚠️ Ungültiger Wert, verwende Default: {DEFAULT_RATE_LIMIT}")
rate_limit = DEFAULT_RATE_LIMIT
ban_input = input(f" Ban-Dauer in Minuten [{DEFAULT_BAN_DURATION}]: ").strip()
try:
ban_minutes = int(ban_input) if ban_input else DEFAULT_BAN_DURATION
if ban_minutes < 1:
print(f" ⚠️ Ungültiger Wert, verwende Default: {DEFAULT_BAN_DURATION}")
ban_minutes = DEFAULT_BAN_DURATION
except ValueError:
print(f" ⚠️ Ungültiger Wert, verwende Default: {DEFAULT_BAN_DURATION}")
ban_minutes = DEFAULT_BAN_DURATION
ban_seconds = ban_minutes * 60
if rate_limit == 0:
print(f"\n 🚫 Rate-Limit: 0 (Bots werden SOFORT gebannt!)")
else:
print(f"\n ✅ Rate-Limit: {rate_limit} req/min")
print(f" ✅ Ban-Dauer: {ban_minutes} Minuten")
@@ -1221,6 +1229,9 @@ def activate_blocking(shop, silent=False, mode="php+crowdsec", geo_region="dach"
print(f" 🛡️ Fail-Open: Bei Cache-Fehlern wird Traffic durchgelassen")
else:
print(f" 🤖 {len(BOT_PATTERNS)} Bot-Patterns aktiv")
if rate_limit == 0:
print(f" 🚫 Rate-Limit: 0 (Bots werden SOFORT gebannt!)")
else:
print(f" 🚦 Rate-Limit: {rate_limit} req/min, Ban: {ban_duration // 60} min")
print(f" Bots unter dem Limit werden durchgelassen")
print(f" Gültig bis: {expiry.strftime('%Y-%m-%d %H:%M:%S CET')}")
@@ -1325,6 +1336,9 @@ def activate_all_shops():
print(f"\n⚠️ Modus: {get_mode_description(mode)} {get_mode_icon(mode)}")
if not is_bot_mode:
print(f" Region: {region_info['icon']} {region_info['name']}")
else:
if rate_limit == 0:
print(f" 🚫 Rate-Limit: 0 (Bots werden SOFORT gebannt!)")
else:
print(f" Rate-Limit: {rate_limit} req/min, Ban: {ban_duration // 60} min")
print(f" Bots unter dem Limit werden durchgelassen")
@@ -1432,6 +1446,9 @@ def activate_all_shops():
print(f"{success_count} Shop(s) aktiviert")
if not is_bot_mode:
print(f" 🛡️ Fail-Open bei Cache-Fehlern aktiv")
else:
if rate_limit == 0:
print(f" 🚫 Rate-Limit: 0 (Bots werden SOFORT gebannt!)")
else:
print(f" 🚦 Rate-Limit: {rate_limit} req/min, Ban: {ban_duration // 60} min")
print(f" Bots unter dem Limit werden durchgelassen")
@@ -1482,6 +1499,9 @@ def activate_direct_shops_only():
print(f"\n⚠️ Modus: {get_mode_description(mode)} {get_mode_icon(mode)}")
if not is_bot_mode:
print(f" Region: {region_info['icon']} {region_info['name']}")
else:
if rate_limit == 0:
print(f" 🚫 Rate-Limit: 0 (Bots werden SOFORT gebannt!)")
else:
print(f" Rate-Limit: {rate_limit} req/min, Ban: {ban_duration // 60} min")
print(f" Bots unter dem Limit werden durchgelassen")
@@ -1590,6 +1610,9 @@ def activate_direct_shops_only():
print(f" ⏭️ {len(link11_shops)} Link11-Shop(s) übersprungen")
if not is_bot_mode:
print(f" 🛡️ Fail-Open bei Cache-Fehlern aktiv")
else:
if rate_limit == 0:
print(f" 🚫 Rate-Limit: 0 (Bots werden SOFORT gebannt!)")
else:
print(f" 🚦 Rate-Limit: {rate_limit} req/min, Ban: {ban_duration // 60} min")
print(f" Bots unter dem Limit werden durchgelassen")
@@ -1962,7 +1985,7 @@ def show_all_logs():
def main():
print("\n" + "=" * 60)
print(" GeoIP Shop Blocker Manager v3.4.3")
print(" GeoIP Shop Blocker Manager v3.4.4")
print(" 🇩🇪🇦🇹🇨🇭 DACH | 🇪🇺 Eurozone+GB | 🤖 Bot-Rate-Limiting")
print(" 🛡️ Mit Cache-Validierung und Fail-Open")
print(" 🚦 Bots unter Rate-Limit werden durchgelassen")