This commit is contained in:
Thomas Ciesla
2026-01-09 16:43:02 +01:00
parent 3d9c2cbaca
commit 07bfb7d732

View File

@@ -1539,7 +1539,7 @@ def get_shop_stats_tracker(shop: str, window_seconds: int = 300) -> LiveStatsTra
logger.info(f"Tracker für {shop} hat keine ip_request_details - lade aus Log") logger.info(f"Tracker für {shop} hat keine ip_request_details - lade aus Log")
_load_initial_request_details(tracker, shop) _load_initial_request_details(tracker, shop)
else: else:
logger.debug(f"Tracker für {shop} hat {len(tracker.ip_request_details)} IPs in ip_request_details") logger.info(f"Tracker für {shop} bereits geladen: {len(tracker.ip_request_details)} IPs in ip_request_details")
return tracker return tracker
@@ -1652,6 +1652,11 @@ def _load_initial_request_details(tracker: LiveStatsTracker, shop: str, max_line
total_requests = sum(len(reqs) for reqs in tracker.ip_request_details.values()) total_requests = sum(len(reqs) for reqs in tracker.ip_request_details.values())
logger.info(f"Initiale Request-Details für {shop} geladen: {len(tracker.ip_request_details)} IPs, {total_requests} Requests total (parsed {parsed_count} von {len(lines)} Zeilen)") logger.info(f"Initiale Request-Details für {shop} geladen: {len(tracker.ip_request_details)} IPs, {total_requests} Requests total (parsed {parsed_count} von {len(lines)} Zeilen)")
# Debug: Zeige die ersten 5 IPs mit Request-Anzahl
sample_ips = list(tracker.ip_request_details.items())[:5]
for sample_ip, sample_reqs in sample_ips:
logger.info(f" - IP {sample_ip}: {len(sample_reqs)} Requests")
except Exception as e: except Exception as e:
logger.warning(f"Fehler beim Laden der initialen Request-Details für {shop}: {e}") logger.warning(f"Fehler beim Laden der initialen Request-Details für {shop}: {e}")
import traceback import traceback
@@ -4700,26 +4705,43 @@ class JTLWAFiAgent:
# WHOIS-Lookup durchführen (wird gecacht) # WHOIS-Lookup durchführen (wird gecacht)
result = whois_lookup(ip) result = whois_lookup(ip)
# Request-Historie für diese IP sammeln # Request-Historie für diese IP sammeln - IMMER aus allen aktiven Shops
# (auch wenn ein spezifischer Shop angegeben ist, könnte die IP in mehreren Shops sein)
requests = [] requests = []
shops_to_check = list(get_active_shops())
# Shops ermitteln - entweder spezifischer Shop oder alle aktiven logger.info(f"WHOIS für {ip}: Prüfe {len(shops_to_check)} Shops: {shops_to_check}")
shops_to_check = []
if shop and shop.strip():
shops_to_check = [shop]
else:
# Alle aktiven Shops durchsuchen
shops_to_check = list(get_active_shops())
logger.debug(f"WHOIS für {ip}: Prüfe {len(shops_to_check)} Shops: {shops_to_check}")
for s in shops_to_check: for s in shops_to_check:
tracker = get_shop_stats_tracker(s) tracker = get_shop_stats_tracker(s)
logger.info(f"Shop {s}: Tracker hat {len(tracker.ip_request_details)} IPs in ip_request_details")
# Debug: Zeige alle IPs im Tracker
all_ips = list(tracker.ip_request_details.keys())[:10] # Erste 10
logger.info(f"Shop {s}: Erste 10 IPs im Tracker: {all_ips}")
shop_requests = tracker.get_ip_requests(ip) shop_requests = tracker.get_ip_requests(ip)
logger.debug(f"Shop {s}: {len(shop_requests)} Requests für IP {ip}, Tracker hat {len(tracker.ip_request_details)} IPs")
# Falls keine Requests für diese IP gefunden, versuche nochmal aus Log zu laden
# (könnte sein, dass neue Log-Einträge existieren die noch nicht geladen wurden)
if not shop_requests:
# Prüfe ob Log-File existiert und neuer ist als Tracker-Erstellung
log_file = os.path.join(VHOSTS_DIR, s, 'httpdocs', SHOP_LOG_FILE)
if os.path.isfile(log_file):
logger.info(f"Shop {s}: IP {ip} nicht gefunden - Reload aus Log")
_load_initial_request_details(tracker, s)
shop_requests = tracker.get_ip_requests(ip)
if shop_requests:
logger.info(f"Shop {s}: {len(shop_requests)} Requests für IP {ip}")
else:
logger.info(f"Shop {s}: Keine Requests für IP {ip}")
# Kopie erstellen um Original nicht zu modifizieren
for r in shop_requests: for r in shop_requests:
r['shop'] = s req_copy = r.copy()
requests.extend(shop_requests) req_copy['shop'] = s
requests.append(req_copy)
# Nach Zeit sortieren (neueste zuerst) # Nach Zeit sortieren (neueste zuerst)
if requests: if requests: