mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-09-23 14:14:14 +00:00
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> |
||
|---|---|---|
| .. | ||
| model | ||
| api_token_timestamp_test.go | ||
| db.go | ||
| db_seed_test.go | ||
| db_settled_test.go | ||
| dialect.go | ||
| dump_sqlite.go | ||
| dump_sqlite_test.go | ||
| freedom_finalrules_migration_test.go | ||
| host_migration_test.go | ||
| host_test.go | ||
| inbound_dedupe_test.go | ||
| inbound_port_unique_migration_test.go | ||
| index_tags_test.go | ||
| journal_mode_test.go | ||
| migrate_data.go | ||
| migrate_data_test.go | ||
| migration_models_test.go | ||
| mtproto_migration_test.go | ||
| prepare_sqlite_test.go | ||
| reality_finalmask_migration_test.go | ||
| removed_cipher_migration_test.go | ||
| seeder_fastpath_test.go | ||
| settings_index_test.go | ||
| traffic_overflow_repair_test.go | ||
| wireguard_migration_test.go | ||