3x-ui/internal/database
Kuzz007 db8253421a refactor(amneziawg): route via Xray through the stock Routing page, not custom toggles
Simplifies RouteViaXray after realizing the panel already has everything
needed: the Routing page already lets an admin pick a source inbound tag
and a target outbound (plus, if they want it, a specific source IP) for
any protocol. Bolting a parallel routeThroughXray/routeOutboundTag pair
onto both the client and inbound forms duplicated that mechanism instead
of using it.

Removed entirely: Client/ClientRecord/ServerSettings/Peer's
RouteThroughXray + RouteOutboundTag fields, the effective-routing OR/
fallback logic in InstanceFromInbound, and the Switch+Select UI on both
forms. Nothing configures "route via Xray" as a setting anymore.

In its place, every enabled AmneziaWG inbound now gets its own Xray
TPROXY bridge unconditionally, by default, no toggle:

- internal/amneziawg: every peer's traffic is always TPROXY'd into that
  instance's own bridge (defaultPostUpDown, port derived from the
  inbound's id via EgressPortForInbound so the kernel side and the
  Xray-config side never need to negotiate a runtime value). Since the
  TPROXY rule is now tied to a peer's mere presence rather than an
  opt-in flag, hostRulesFingerprint now covers every peer unconditionally
  (add/remove/re-IP forces a restart, the same way ForwardedPorts always
  did) instead of skipping peers with nothing to opt into.
- internal/web/service/xray.go's injectAmneziawgEgress creates one
  dokodemo-door bridge per qualifying inbound, tagged with that inbound's
  own real tag — the same trick injectMtprotoEgress already uses (reusing
  a real inbound's tag), which is why it's already selectable in the
  panel's Routing page: InboundService.GetInboundTags() is a plain,
  protocol-blind SELECT over every inbound row's tag, no dedicated UI
  plumbing needed. The function never generates a routing rule itself
  anymore — where (if anywhere) that traffic goes is entirely up to
  whatever rules the admin adds through the existing Routing UI.

Frontend: no new UI at all. Tests rewritten to match — one bridge per
inbound with its own tag/port, no rule generation, no opt-in gating.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-25 22:37:08 +03:00
..
model refactor(amneziawg): route via Xray through the stock Routing page, not custom toggles 2026-07-25 22:37:08 +03:00
api_token_timestamp_test.go style: adopt golangci-lint v2 and resolve all findings 2026-06-27 15:42:22 +02:00
db.go fix(hosts): assign group ids to imported hosts and repair empty ones 2026-07-23 18:52:42 +02:00
db_seed_test.go fix(settings): repair legacy path settings that block every settings save 2026-07-02 13:42:03 +02:00
db_settled_test.go fix(database): stop noisy per-startup errors in the Postgres server log 2026-07-01 23:07:05 +02:00
dialect.go fix(db): clamp traffic counters below int64 max and repair overflowed rows 2026-07-05 20:33:09 +02:00
dump_sqlite.go style: adopt golangci-lint v2 and resolve all findings 2026-06-27 15:42:22 +02:00
dump_sqlite_test.go
freedom_finalrules_migration_test.go Bug-label issue sweep: 16 fixes (#6083) 2026-07-23 15:34:42 +02:00
host_migration_test.go fix(hosts): assign group ids to imported hosts and repair empty ones 2026-07-23 18:52:42 +02:00
host_test.go feat(hosts): bulk-add multiple hosts to multiple inbounds (#5677) 2026-07-08 23:35:20 +02:00
inbound_dedupe_test.go fix(client): stop duplicate client entries accumulating in inbound settings 2026-07-05 21:17:25 +02:00
inbound_port_unique_migration_test.go fix(database): drop the legacy UNIQUE constraint on inbounds.port 2026-07-11 22:48:56 +02:00
index_tags_test.go fix: resolve a batch of open bug-tagged issues (traffic accounting, share strategy, sub address, CPU) (#5477) 2026-06-22 00:22:28 +02:00
journal_mode_test.go Bug-label issue sweep: 16 fixes (#6083) 2026-07-23 15:34:42 +02:00
migrate_data.go fix(database): make cross-db migration lossless, transactional, and pre-checked 2026-07-12 20:14:07 +02:00
migrate_data_test.go fix(database): make cross-db migration lossless, transactional, and pre-checked 2026-07-12 20:14:07 +02:00
migration_models_test.go fix(database): make cross-db migration lossless, transactional, and pre-checked 2026-07-12 20:14:07 +02:00
mtproto_migration_test.go fix(mtproto): stop persisting a vestigial inbound-level secret 2026-07-06 17:55:57 +02:00
prepare_sqlite_test.go fix(database): make cross-db migration lossless, transactional, and pre-checked 2026-07-12 20:14:07 +02:00
reality_finalmask_migration_test.go Bug-label issue sweep: 16 fixes (#6083) 2026-07-23 15:34:42 +02:00
removed_cipher_migration_test.go feat(xray): update xray-core to v26.7.11 and adapt panel 2026-07-12 00:30:47 +02:00
seeder_fastpath_test.go Repo-wide self-correcting audit: 54 verified bug fixes (#5970) 2026-07-17 00:33:06 +02:00
settings_index_test.go perf(db): add an index on settings.key (#5359) 2026-06-20 15:08:54 +03:30
traffic_overflow_repair_test.go fix(db): clamp traffic counters below int64 max and repair overflowed rows 2026-07-05 20:33:09 +02:00
wireguard_migration_test.go feat(wireguard): multi-client support 2026-06-28 00:44:38 +02:00