First commit

This commit is contained in:
2026-07-20 11:05:07 +02:00
commit b592ab669f
159 changed files with 10294 additions and 0 deletions
+28
View File
@@ -0,0 +1,28 @@
"""Soumission d'un rapport à AbuseIPDB (Phase 4, REPORT_ABUSE) — fonction
pure, sans effet de bord hors l'appel réseau, appelée directement par
management/commands/publish_command.py (jamais diffusée en MQTT, voir sa
docstring pour le pourquoi : un rapport par IP suffit, le diffuser à
chaque noeud produirait des doublons vus comme du bruit par le service).
"""
import requests
from django.conf import settings
ABUSEIPDB_REPORT_URL = 'https://api.abuseipdb.com/api/v2/report'
def submit_report(ip: str, categories: str, comment: str) -> tuple[bool, str]:
"""POST vers l'API v2 AbuseIPDB. Retourne (succès, detail — message
d'erreur si échec), jamais d'exception laissée remonter même forme
que master_client.py::_banip_via_jail, pour un traitement uniforme
côté appelant."""
try:
response = requests.post(
ABUSEIPDB_REPORT_URL,
headers={'Key': settings.ABUSEIPDB_API_KEY, 'Accept': 'application/json'},
data={'ip': ip, 'categories': categories, 'comment': comment},
timeout=10,
)
response.raise_for_status()
except requests.RequestException as e:
return False, str(e)
return True, ''