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