3x-ui/web/job
MHSanaei 3af2da0142
fix(online): scope online status per node instead of a global union
The inbounds page and Nodes page checked each client's email against a
single deduped union of every node's online clients, so a client connected
to one node showed as online on every inbound across every node. The local
online set was also derived from the email-keyed client_traffics.last_online
column, which remote-node syncs bump too, leaking remote-only clients onto
local inbounds.

Track online clients per node: the local panel's own xray clients under key
0 (derived from live traffic-poll deltas via RefreshLocalOnline, kept in
memory and independent of the shared last_online column) and each remote
node under its id. Add GetOnlineClientsByNode plus a /clients/onlinesByNode
endpoint and onlineByNode WS field; node.go and the inbounds rollup now scope
online by node. The flat GetOnlineClients union is kept for client-centric and
total-count views (Clients page, dashboard, telegram).

Closes #4809
2026-06-02 18:33:21 +02:00
..
check_client_ip_job.go fix(iplimit): populate client IP log without an IP limit 2026-06-02 14:43:11 +02:00
check_client_ip_job_integration_test.go fix(iplimit): populate client IP log without an IP limit 2026-06-02 14:43:11 +02:00
check_client_ip_job_test.go fix(job): skip fail2ban IP limit when disabled (#4581) 2026-06-02 01:36:24 +02:00
check_cpu_usage.go v3 2026-05-10 02:13:42 +02:00
check_hash_storage.go fix: address open bug reports (#4539, #4538, #4535, #4531, #4515) (#4545) 2026-05-25 00:08:06 +02:00
check_hash_storage_test.go fix: address open bug reports (#4539, #4538, #4535, #4531, #4515) (#4545) 2026-05-25 00:08:06 +02:00
check_xray_running_job.go v3 2026-05-10 02:13:42 +02:00
clear_logs_job.go v3 2026-05-10 02:13:42 +02:00
ldap_sync_job.go Feat/multi inbound clients (#4469) 2026-05-19 12:20:24 +02:00
node_heartbeat_job.go feat(nodes): traffic-writer queue, full-mirror sync, WS event fixes 2026-05-10 16:25:23 +02:00
node_traffic_sync_job.go fix(online): scope online status per node instead of a global union 2026-06-02 18:33:21 +02:00
node_traffic_sync_job_test.go Feat/multi inbound clients (#4469) 2026-05-19 12:20:24 +02:00
periodic_traffic_reset_job.go Feat/multi inbound clients (#4469) 2026-05-19 12:20:24 +02:00
stats_notify_job.go v3 2026-05-10 02:13:42 +02:00
xray_traffic_job.go fix(online): scope online status per node instead of a global union 2026-06-02 18:33:21 +02:00