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,26 +980,34 @@ 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
print(f"\n ✅ Rate-Limit: {rate_limit} req/min")
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")
return rate_limit, ban_seconds
@@ -1221,8 +1229,11 @@ 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")
print(f" 🚦 Rate-Limit: {rate_limit} req/min, Ban: {ban_duration // 60} min")
print(f" Bots unter dem Limit werden durchgelassen")
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')}")
print("=" * 60)
@@ -1326,8 +1337,11 @@ def activate_all_shops():
if not is_bot_mode:
print(f" Region: {region_info['icon']} {region_info['name']}")
else:
print(f" Rate-Limit: {rate_limit} req/min, Ban: {ban_duration // 60} min")
print(f" Bots unter dem Limit werden durchgelassen")
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")
if input(f"\nFortfahren? (ja/nein): ").strip().lower() not in ['ja', 'j', 'yes', 'y']:
print("\n❌ Abgebrochen")
@@ -1433,8 +1447,11 @@ def activate_all_shops():
if not is_bot_mode:
print(f" 🛡️ Fail-Open bei Cache-Fehlern aktiv")
else:
print(f" 🚦 Rate-Limit: {rate_limit} req/min, Ban: {ban_duration // 60} min")
print(f" Bots unter dem Limit werden durchgelassen")
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"{'=' * 60}")
@@ -1483,8 +1500,11 @@ def activate_direct_shops_only():
if not is_bot_mode:
print(f" Region: {region_info['icon']} {region_info['name']}")
else:
print(f" Rate-Limit: {rate_limit} req/min, Ban: {ban_duration // 60} min")
print(f" Bots unter dem Limit werden durchgelassen")
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")
if input(f"\nFortfahren? (ja/nein): ").strip().lower() not in ['ja', 'j', 'yes', 'y']:
print("\n❌ Abgebrochen")
@@ -1591,8 +1611,11 @@ def activate_direct_shops_only():
if not is_bot_mode:
print(f" 🛡️ Fail-Open bei Cache-Fehlern aktiv")
else:
print(f" 🚦 Rate-Limit: {rate_limit} req/min, Ban: {ban_duration // 60} min")
print(f" Bots unter dem Limit werden durchgelassen")
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"{'=' * 60}")
@@ -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")