53b9af6650
Enhancement: When IPset is not available but CSF is running, the script now adds batch IPs directly to CSF's chain_DENY ipset instead of using the slower csf -td command. This provides kernel-level instant blocking for high-velocity attacks (70+ IPs/sec). CHANGE: Batch blocking fallback logic - Before: Used csf -td (spawns process for each IP, slow for batches) - After: Uses ipset add to chain_DENY directly (kernel-level, handles 70+ IPs/sec) - Fallback: Still uses csf -td if chain_DENY ipset doesn't exist PERFORMANCE IMPACT: - Single IP: ~1ms per IP with ipset vs ~50-100ms with csf -td - 70 IPs/sec: 70ms total vs 3.5-7 seconds with csf -td - Improvement: 50-100x faster for batch blocking under attack Testing: - Verified ipset add chain_DENY $ip -exist works with CSF - Fallback ensures compatibility if chain_DENY unavailable - Syntax validated Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>