feat(node): per node outbound routing (#5275)

* feat: add per-node outbound routing for panel-to-node connections

* feat(ui): add outbound tag selector to node form with i18n

* fix(xray): avoid potential overflow warning in node egress rule allocation

* chore: run "npm run gen"

* fix

---------

Co-authored-by: Sanaei <ho3ein.sanaei@gmail.com>
This commit is contained in:
Nikan Zeyaei
2026-06-15 00:40:52 +03:30
committed by GitHub
parent 2188830612
commit 05ad7f417c
33 changed files with 443 additions and 41 deletions
+1
View File
@@ -354,6 +354,7 @@ export const EXAMPLES: Record<string, unknown> = {
"memPct": 45.1,
"name": "de-fra-1",
"onlineCount": 3,
"outboundTag": "",
"panelVersion": "v3.x.x",
"parentGuid": "",
"pinnedCertSha256": "",
+4
View File
@@ -1595,6 +1595,9 @@ export const SCHEMAS: Record<string, unknown> = {
"example": 3,
"type": "integer"
},
"outboundTag": {
"type": "string"
},
"panelVersion": {
"example": "v3.x.x",
"type": "string"
@@ -1682,6 +1685,7 @@ export const SCHEMAS: Record<string, unknown> = {
"memPct",
"name",
"onlineCount",
"outboundTag",
"panelVersion",
"pinnedCertSha256",
"port",
+1
View File
@@ -358,6 +358,7 @@ export interface Node {
memPct: number;
name: string;
onlineCount: number;
outboundTag: string;
panelVersion: string;
parentGuid?: string;
pinnedCertSha256: string;
+1
View File
@@ -384,6 +384,7 @@ export const NodeSchema = z.object({
memPct: z.number(),
name: z.string(),
onlineCount: z.number().int(),
outboundTag: z.string(),
panelVersion: z.string(),
parentGuid: z.string().optional(),
pinnedCertSha256: z.string(),