4b6e655123
Problem: - IPs reaching Score:100 but STILL not being auto-blocked - write_ip_data_to_file was working correctly in subprocesses - BUT main loop was OVERWRITING entire ip_data file every 2 seconds - Line 3539 used ">" which truncates the file - Auto-mitigation engine reads stale data from parent's IP_DATA array - Parent's IP_DATA doesn't have subprocess updates (subshell isolation) Example: 1. HTTP subprocess: IP reaches score=100, writes to file 2. 2 seconds later: Main loop OVERWRITES file with parent's IP_DATA 3. Auto-mitigation reads file: Score shows 0 or old value 4. IP never blocked! Root Cause: The original fix (write_ip_data_to_file) was correct, but the main loop's periodic file write was destroying those updates. Solution: - Main loop now MERGES data instead of overwriting - Reads existing file (contains fresh subprocess updates) - Adds only NEW IPs from parent process - Writes back existing entries (subprocess data takes priority) - Uses flock to prevent race conditions - Atomic replacement with .new file This preserves subprocess updates while still allowing parent process to add IPs it discovers. Result: - Subprocess updates (Score:100) now PERSIST - Auto-mitigation engine sees correct scores - IPs with score >= 80 will be blocked within 10 seconds Testing: Before: Score:100 shown but IP never blocked After: Score:100 → INSTANT_BLOCK within 10 seconds