mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-09-09 23:50:45 +00:00
When a client's connection drops without a clean TCP close, xray-core keeps its online-map entry until the session context ends (idle policy), minutes after the kernel socket is gone. The 10s IP-limit scan kept seeing that stale IP as the oldest live one and re-emitted the same [LIMIT_IP] Disconnecting OLD IP line plus a RemoveUser/AddUser cycle every scan - operators measured 100+ repeats over ~1000s for a single network switch, forcing absurd fail2ban maxretry values to avoid banning legitimate mobile users. The core refreshes an entry's lastSeen only when a new connection from that IP is dispatched, never on traffic, so a frozen lastSeen across scans is a dead connection, not a reconnect. Track the lastSeen of each banned (email, ip) pair and skip the log line and disconnect until it advances; a real reconnect moves lastSeen and is enforced exactly as before, and an age cutoff that could misclassify long-lived active tunnels is deliberately avoided. Closes #5893 |
||
|---|---|---|
| .. | ||
| check_client_ip_frozen_ban_test.go | ||
| check_client_ip_job.go | ||
| check_client_ip_job_integration_test.go | ||
| check_client_ip_job_test.go | ||
| check_client_ip_scale_test.go | ||
| check_cpu_usage.go | ||
| check_hash_storage.go | ||
| check_hash_storage_test.go | ||
| check_memory_usage.go | ||
| check_xray_running_job.go | ||
| clear_logs_job.go | ||
| clear_logs_job_test.go | ||
| free_os_memory.go | ||
| ldap_sync_job.go | ||
| ldap_sync_job_test.go | ||
| mtproto_job.go | ||
| node_heartbeat_job.go | ||
| node_traffic_sync_job.go | ||
| node_traffic_sync_job_test.go | ||
| outbound_subscription_job.go | ||
| periodic_traffic_reset_job.go | ||
| stats_notify_job.go | ||
| warp_ip_job.go | ||
| xray_traffic_job.go | ||