geoip_shop_manager.py aktualisiert
This commit is contained in:
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user