3x-ui/web/controller
Rouzbeh† d9ccf157c3
feat: add manual and automatic WARP IP rotation (#5099)
* feat: add manual and automatic WARP IP rotation

* fix: update generated api and frontend schemas

* fix(warp): validate rotation interval, fix auto-update timing, sync editor

- Validate the auto-update interval as an integer and store it via setInt;
  a non-integer value previously broke GetAllSetting for the whole panel.
- Seed warpLastUpdate when the interval is saved and when changing IP
  manually, so auto-update counts from "now" instead of epoch 0 and a
  manual rotation doesn't trigger an immediate scheduled one.
- Guard WarpIpJob: when lastUpdate is unset, establish a baseline and skip
  instead of rotating on the next tick.
- Log WARP license re-apply failures instead of swallowing them.
- After a manual "Change IP", sync the in-memory Xray editor with the keys
  the backend persisted so a later template save can't revert them; only
  toast success when the interval save actually succeeds.
- Add the WARP rotation UI strings to all 13 locales.
- Drop trailing whitespace introduced in entity.go and xray_setting.go.

---------

Co-authored-by: Rqzbeh <Rqzbeh@example.com>
Co-authored-by: Sanaei <ho3ein.sanaei@gmail.com>
2026-06-09 01:43:43 +02:00
..
api.go refactor(api)!: move /panel/setting and /panel/xray under /panel/api 2026-06-06 16:22:41 +02:00
api_docs_test.go refactor(api)!: move /panel/setting and /panel/xray under /panel/api 2026-06-06 16:22:41 +02:00
base.go v3 2026-05-10 02:13:42 +02:00
client.go feat(nodes): multi-hop node attribution for chained sub-nodes (#4983) (#5005) 2026-06-06 12:33:39 +02:00
custom_geo.go v3 2026-05-10 02:13:42 +02:00
dist.go fix(api-docs): target the panel base path in OpenAPI servers 2026-06-06 16:22:08 +02:00
dist_test.go fix(api-docs): target the panel base path in OpenAPI servers 2026-06-06 16:22:08 +02:00
group.go refactor(clients): coherent group management — rename, split, extract 2026-05-28 12:59:20 +02:00
inbound.go fix(inbounds): drop unknown nodeId when importing an inbound 2026-06-08 23:04:19 +02:00
index.go fix(auth): invalidate sessions when 2FA is enabled, fix dev 401 loop 2026-05-13 14:08:16 +02:00
login_limiter.go Implement CSRF protection and security hardening across the application (#4179) 2026-05-07 23:36:11 +02:00
login_limiter_test.go refactor(websocket): split controller into service + thin controller 2026-05-08 00:00:44 +02:00
node.go feat(nodes): multi-hop node attribution for chained sub-nodes (#4983) (#5005) 2026-06-06 12:33:39 +02:00
server.go feat: synchronize access.log client IPs across nodes (#5098) 2026-06-09 00:59:50 +02:00
setting.go feat: complete Zod migration of frontend + bulk client batching (#4599) 2026-05-27 04:26:50 +02:00
util.go fix(node): keep client/inbound edits working when a node is offline (#4923, #4931) 2026-06-05 02:26:57 +02:00
util_test.go Security hardening: sessions, SSRF, CSP nonce, CSRF logout, trusted proxies (#4275) 2026-05-13 12:52:52 +02:00
websocket.go v3 2026-05-10 02:13:42 +02:00
xray_setting.go feat: add manual and automatic WARP IP rotation (#5099) 2026-06-09 01:43:43 +02:00
xui.go refactor(api)!: move /panel/setting and /panel/xray under /panel/api 2026-06-06 16:22:41 +02:00