diff --git a/frontend/public/openapi.json b/frontend/public/openapi.json index d93045714..9bcb3a494 100644 --- a/frontend/public/openapi.json +++ b/frontend/public/openapi.json @@ -1095,14 +1095,6 @@ "description": "VLESS simple reverse proxy settings", "nullable": true }, - "routeOutboundTag": { - "description": "Xray outbound/balancer tag this peer's TPROXY'd traffic routes to; empty uses Xray's default routing", - "type": "string" - }, - "routeThroughXray": { - "description": "AmneziaWG: TPROXY this peer's traffic into Xray", - "type": "boolean" - }, "secret": { "example": "ee1234567890abcdef1234567890abcd7777772e636c6f7564666c6172652e636f6d", "type": "string" @@ -1231,12 +1223,6 @@ "type": "integer" }, "reverse": {}, - "routeOutboundTag": { - "type": "string" - }, - "routeThroughXray": { - "type": "boolean" - }, "secret": { "type": "string" }, @@ -1283,8 +1269,6 @@ "publicKey", "reset", "reverse", - "routeOutboundTag", - "routeThroughXray", "secret", "security", "subId", @@ -2878,13 +2862,6 @@ "publicKey": { "type": "string" }, - "routeOutboundTag": { - "type": "string" - }, - "routeThroughXray": { - "description": "RouteThroughXray, when true, is the inbound-wide default: every peer\nTPROXYs into Xray unless it explicitly turns its own RouteThroughXray\noff... except a plain bool can't distinguish \"peer left it unset\" from\n\"peer explicitly opted out\", so in practice this ORs with each peer's\nown flag (see Peer.RouteThroughXray) — turning this on routes every\npeer, turning it off still lets individual peers opt in on their own.\nRouteOutboundTag is the default outbound/balancer tag used when a\nrouted peer didn't set its own; empty means Xray's default routing.", - "type": "boolean" - }, "s1": { "type": "integer" }, diff --git a/frontend/src/generated/examples.ts b/frontend/src/generated/examples.ts index 084b0a387..0d0391323 100644 --- a/frontend/src/generated/examples.ts +++ b/frontend/src/generated/examples.ts @@ -252,8 +252,6 @@ export const EXAMPLES: Record = { "publicKey": "", "reset": 0, "reverse": null, - "routeOutboundTag": "", - "routeThroughXray": false, "secret": "ee1234567890abcdef1234567890abcd7777772e636c6f7564666c6172652e636f6d", "security": "", "subId": "", @@ -288,8 +286,6 @@ export const EXAMPLES: Record = { "publicKey": "", "reset": 0, "reverse": null, - "routeOutboundTag": "", - "routeThroughXray": false, "secret": "", "security": "", "subId": "", @@ -670,8 +666,6 @@ export const EXAMPLES: Record = { "primaryDns": "", "privateKey": "", "publicKey": "", - "routeOutboundTag": "", - "routeThroughXray": false, "s1": 0, "s2": 0, "s3": 0, diff --git a/frontend/src/generated/schemas.ts b/frontend/src/generated/schemas.ts index a7caa22cc..b55c533f8 100644 --- a/frontend/src/generated/schemas.ts +++ b/frontend/src/generated/schemas.ts @@ -1069,14 +1069,6 @@ export const SCHEMAS: Record = { "description": "VLESS simple reverse proxy settings", "nullable": true }, - "routeOutboundTag": { - "description": "Xray outbound/balancer tag this peer's TPROXY'd traffic routes to; empty uses Xray's default routing", - "type": "string" - }, - "routeThroughXray": { - "description": "AmneziaWG: TPROXY this peer's traffic into Xray", - "type": "boolean" - }, "secret": { "example": "ee1234567890abcdef1234567890abcd7777772e636c6f7564666c6172652e636f6d", "type": "string" @@ -1205,12 +1197,6 @@ export const SCHEMAS: Record = { "type": "integer" }, "reverse": {}, - "routeOutboundTag": { - "type": "string" - }, - "routeThroughXray": { - "type": "boolean" - }, "secret": { "type": "string" }, @@ -1257,8 +1243,6 @@ export const SCHEMAS: Record = { "publicKey", "reset", "reverse", - "routeOutboundTag", - "routeThroughXray", "secret", "security", "subId", @@ -2852,13 +2836,6 @@ export const SCHEMAS: Record = { "publicKey": { "type": "string" }, - "routeOutboundTag": { - "type": "string" - }, - "routeThroughXray": { - "description": "RouteThroughXray, when true, is the inbound-wide default: every peer\nTPROXYs into Xray unless it explicitly turns its own RouteThroughXray\noff... except a plain bool can't distinguish \"peer left it unset\" from\n\"peer explicitly opted out\", so in practice this ORs with each peer's\nown flag (see Peer.RouteThroughXray) — turning this on routes every\npeer, turning it off still lets individual peers opt in on their own.\nRouteOutboundTag is the default outbound/balancer tag used when a\nrouted peer didn't set its own; empty means Xray's default routing.", - "type": "boolean" - }, "s1": { "type": "integer" }, diff --git a/frontend/src/generated/types.ts b/frontend/src/generated/types.ts index ff71907f1..dd06334ed 100644 --- a/frontend/src/generated/types.ts +++ b/frontend/src/generated/types.ts @@ -261,8 +261,6 @@ export interface Client { publicKey?: string; reset: number; reverse?: ClientReverse | null; - routeOutboundTag?: string; - routeThroughXray?: boolean; secret?: string; security: string; subId: string; @@ -299,8 +297,6 @@ export interface ClientRecord { publicKey: string; reset: number; reverse: unknown; - routeOutboundTag: string; - routeThroughXray: boolean; secret: string; security: string; subId: string; @@ -653,8 +649,6 @@ export interface ServerSettings { primaryDns?: string; privateKey: string; publicKey: string; - routeOutboundTag?: string; - routeThroughXray?: boolean; s1: number; s2: number; s3: number; diff --git a/frontend/src/generated/zod.ts b/frontend/src/generated/zod.ts index fac01f57c..a54af8da7 100644 --- a/frontend/src/generated/zod.ts +++ b/frontend/src/generated/zod.ts @@ -279,8 +279,6 @@ export const ClientSchema = z.object({ publicKey: z.string().optional(), reset: z.number().int(), reverse: z.lazy(() => ClientReverseSchema).nullable().optional(), - routeOutboundTag: z.string().optional(), - routeThroughXray: z.boolean().optional(), secret: z.string().optional(), security: z.string(), subId: z.string(), @@ -319,8 +317,6 @@ export const ClientRecordSchema = z.object({ publicKey: z.string(), reset: z.number().int(), reverse: z.unknown(), - routeOutboundTag: z.string(), - routeThroughXray: z.boolean(), secret: z.string(), security: z.string(), subId: z.string(), @@ -692,8 +688,6 @@ export const ServerSettingsSchema = z.object({ primaryDns: z.string().optional(), privateKey: z.string(), publicKey: z.string(), - routeOutboundTag: z.string().optional(), - routeThroughXray: z.boolean().optional(), s1: z.number().int(), s2: z.number().int(), s3: z.number().int(), diff --git a/frontend/src/lib/xray/inbound-defaults.ts b/frontend/src/lib/xray/inbound-defaults.ts index e34b72921..0c5fabc0b 100644 --- a/frontend/src/lib/xray/inbound-defaults.ts +++ b/frontend/src/lib/xray/inbound-defaults.ts @@ -298,8 +298,6 @@ export function createDefaultAmneziawgInboundSettings(): AmneziawgInboundSetting ipv6Enabled: false, ipv6Subnet: '', ipv6ExternalInterface: '', - routeThroughXray: false, - routeOutboundTag: '', jc: 5, jmin: 10, jmax: 50, diff --git a/frontend/src/pages/clients/ClientFormModal.tsx b/frontend/src/pages/clients/ClientFormModal.tsx index a912957c4..5a05522fb 100644 --- a/frontend/src/pages/clients/ClientFormModal.tsx +++ b/frontend/src/pages/clients/ClientFormModal.tsx @@ -33,7 +33,6 @@ import { FormField } from '@/components/form/rhf'; import { TLS_FLOW_CONTROL } from '@/schemas/primitives'; import type { ClientRecord, InboundOption, ExternalLink, ExternalLinkInput } from '@/hooks/useClients'; import { useFail2banStatusQuery, getLimitIpNotice } from '@/api/queries/useFail2banStatusQuery'; -import { useOutboundTags } from '@/api/queries/useOutboundTags'; import { ClientFormSchema, ClientCreateFormSchema, type ClientFormValues } from '@/schemas/client'; const FLOW_OPTIONS = Object.values(TLS_FLOW_CONTROL); @@ -104,8 +103,6 @@ type Values = ClientFormValues & { wgPreSharedKey: string; wgAllowedIPs: string; awgForwardedPorts: string; - awgRouteThroughXray: boolean; - awgRouteOutboundTag: string; secret: string; adTag: string; }; @@ -136,8 +133,6 @@ const EMPTY: Values = { wgPreSharedKey: '', wgAllowedIPs: '', awgForwardedPorts: '', - awgRouteThroughXray: false, - awgRouteOutboundTag: '', secret: '', adTag: '', }; @@ -198,8 +193,6 @@ export default function ClientFormModal({ const subId = useWatch({ control: methods.control, name: 'subId' }); const auth = useWatch({ control: methods.control, name: 'auth' }); const wgPrivateKey = useWatch({ control: methods.control, name: 'wgPrivateKey' }); - const awgRouteThroughXray = useWatch({ control: methods.control, name: 'awgRouteThroughXray' }); - const { data: outboundTags } = useOutboundTags(); const limitIp = useWatch({ control: methods.control, name: 'limitIp' }); const { fields: externalLinkFields, @@ -253,8 +246,6 @@ export default function ClientFormModal({ wgPreSharedKey: client.preSharedKey || '', wgAllowedIPs: client.allowedIPs || '', awgForwardedPorts: client.forwardedPorts || '', - awgRouteThroughXray: !!client.routeThroughXray, - awgRouteOutboundTag: client.routeOutboundTag || '', secret: client.secret || '', adTag: client.adTag || '', }; @@ -570,13 +561,10 @@ export default function ClientFormModal({ if (allowedIPs.length > 0) { clientPayload.allowedIPs = allowedIPs; } - // Port-forwarding and RouteViaXray have no WireGuard equivalent — - // Xray-native WireGuard has no host-level iptables layer to hang - // per-client DNAT/TPROXY off of. + // Port-forwarding has no WireGuard equivalent — Xray-native WireGuard + // has no host-level iptables layer to hang per-client DNAT off of. if (showAmneziawg) { clientPayload.forwardedPorts = values.awgForwardedPorts.trim(); - clientPayload.routeThroughXray = values.awgRouteThroughXray; - clientPayload.routeOutboundTag = values.awgRouteThroughXray ? values.awgRouteOutboundTag.trim() : ''; } } @@ -929,30 +917,6 @@ export default function ClientFormModal({ )} - {showAmneziawg && ( - - - - )} - {showAmneziawg && awgRouteThroughXray && ( - - - - - - {routeThroughXray && ( - -