3x-ui/web
Vadim Reznichenko 89f904b976
Preserve clients' IP history
This PR preserves historical client IP records in `inbound_client_ips` while keeping IP Limit enforcement based only on IPs observed in the current access-log scan.

The previous stale IP eviction was introduced to fix the continuous Fail2Ban loop described in https://github.com/MHSanaei/3x-ui/issues/4077. A related regression was later tracked in https://github.com/MHSanaei/3x-ui/issues/4091, where db-only IPs could still affect ban decisions before `partitionLiveIps()` separated live IPs from historical ones.

This PR keeps that protection intact:

- `partitionLiveIps()` still ensures that only IPs observed in the current scan are counted toward `LimitIP`
- historical db-only IPs remain excluded from Fail2Ban decisions
- all live IPs, including IPs queued for Fail2Ban, are preserved in the database for visibility/history

The only behavior changed here is retention: client IP history is no longer removed from `inbound_client_ips` after 30 minutes.
2026-05-12 20:54:36 +03:00
..
controller feat(panel): xray metrics dashboard with observatory probe history 2026-05-12 02:17:45 +02:00
entity v3 2026-05-10 02:13:42 +02:00
global Refactor code and fix linter warnings (#3627) 2026-01-05 05:54:56 +01:00
job Preserve clients' IP history 2026-05-12 20:54:36 +03:00
locale v3 2026-05-10 02:13:42 +02:00
middleware v3 2026-05-10 02:13:42 +02:00
network docs: add comments for all functions 2025-09-20 09:35:50 +02:00
runtime feat(nodes): traffic-writer queue, full-mirror sync, WS event fixes 2026-05-10 16:25:23 +02:00
service Feat: clarify VLESS encryption auth selection (#4271) 2026-05-12 11:39:28 +02:00
session v3 2026-05-10 02:13:42 +02:00
translation feat(panel): xray metrics dashboard with observatory probe history 2026-05-12 02:17:45 +02:00
websocket feat(nodes): traffic-writer queue, full-mirror sync, WS event fixes 2026-05-10 16:25:23 +02:00
web.go Fix: traffic writer restart freeze (#4265) 2026-05-12 11:36:05 +02:00