From 21e4907aa28f9cebc50877d76f8405434515141d Mon Sep 17 00:00:00 2001 From: Den Piligrim <89912505+vasiljevdenis@users.noreply.github.com> Date: Sat, 21 Mar 2026 15:16:09 +0300 Subject: [PATCH] update --- .../src/inbounds/inbound-builder.service.ts | 74 +++++++++---------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/server/src/inbounds/inbound-builder.service.ts b/server/src/inbounds/inbound-builder.service.ts index c337f3c..ee48524 100644 --- a/server/src/inbounds/inbound-builder.service.ts +++ b/server/src/inbounds/inbound-builder.service.ts @@ -7,8 +7,8 @@ import * as fs from 'fs'; export class InboundBuilderService { private flag = process.env.COUNTRY_FLAG ?? '%F0%9F%92%AF'; - buildVlessRealityTcp(params: { port: number; uuid: string; domain: string; privateKey: string; publicKey: string }) { - const { port, uuid, domain, privateKey, publicKey } = params; + buildVlessRealityTcp(params: { port: number; uuid: string; sni: string; privateKey: string; publicKey: string }) { + const { port, uuid, sni, privateKey, publicKey } = params; return { enable: true, port, @@ -27,9 +27,9 @@ export class InboundBuilderService { realitySettings: { show: false, xver: 0, - target: `${domain}:443`, - dest: `${domain}:443`, - serverNames: [domain], + target: `${sni}:443`, + dest: `${sni}:443`, + serverNames: [sni], privateKey: privateKey, shortIds: [crypto.randomBytes(4).toString('hex'), crypto.randomBytes(4).toString('hex')], settings: { publicKey: publicKey, fingerprint: 'random', serverName: '', spiderX: '/' } @@ -40,8 +40,8 @@ export class InboundBuilderService { }; } - buildVlessRealityXhttp(params: { port: number; uuid: string; domain: string; privateKey: string; publicKey: string }) { - const { port, uuid, domain, privateKey, publicKey } = params; + buildVlessRealityXhttp(params: { port: number; uuid: string; sni: string; privateKey: string; publicKey: string }) { + const { port, uuid, sni, privateKey, publicKey } = params; return { enable: true, port, @@ -60,15 +60,15 @@ export class InboundBuilderService { realitySettings: { show: false, xver: 0, - target: `${domain}:443`, - dest: `${domain}:443`, - serverNames: [domain], + target: `${sni}:443`, + dest: `${sni}:443`, + serverNames: [sni], privateKey: privateKey, shortIds: [crypto.randomBytes(4).toString('hex'), crypto.randomBytes(4).toString('hex')], settings: { publicKey: publicKey, fingerprint: 'random', serverName: '', spiderX: '/' } }, xhttpSettings: { - host: domain, + host: sni, path: "/", mode: "auto", noSSEHeader: false, @@ -87,8 +87,8 @@ export class InboundBuilderService { }; } - buildVlessRealityGrpc(params: { port: number; uuid: string; domain: string; privateKey: string; publicKey: string }) { - const { port, uuid, domain, privateKey, publicKey } = params; + buildVlessRealityGrpc(params: { port: number; uuid: string; sni: string; privateKey: string; publicKey: string }) { + const { port, uuid, sni, privateKey, publicKey } = params; return { enable: true, port, @@ -118,16 +118,16 @@ export class InboundBuilderService { realitySettings: { show: false, xver: 0, - target: `${domain}:443`, - dest: `${domain}:443`, - serverNames: [domain], + target: `${sni}:443`, + dest: `${sni}:443`, + serverNames: [sni], privateKey: privateKey, shortIds: [crypto.randomBytes(4).toString('hex')], settings: { publicKey: publicKey, fingerprint: 'random', serverName: '', spiderX: '/' } }, grpcSettings: { serviceName: "myservice", - authority: domain, + authority: sni, multiMode: false, } }), @@ -266,8 +266,8 @@ export class InboundBuilderService { }; } - buildTrojanRealityTcp(params: { port: number; uuid: string; domain: string; privateKey: string; publicKey: string }) { - const { port, uuid, domain, privateKey, publicKey } = params; + buildTrojanRealityTcp(params: { port: number; uuid: string; sni: string; privateKey: string; publicKey: string }) { + const { port, uuid, sni, privateKey, publicKey } = params; return { enable: true, port, @@ -296,9 +296,9 @@ export class InboundBuilderService { realitySettings: { show: false, xver: 0, - target: `${domain}:443`, - dest: `${domain}:443`, - serverNames: [domain], + target: `${sni}:443`, + dest: `${sni}:443`, + serverNames: [sni], privateKey: privateKey, shortIds: [ crypto.randomBytes(4).toString("hex"), @@ -335,29 +335,29 @@ export class InboundBuilderService { return uuidv4(); } - buildInboundLink(inbound: any, domain: string, idOrPass: string, flagEmoji: string): string { + buildInboundLink(inbound: any, sni: string, idOrPass: string, flagEmoji: string): string { this.flag = flagEmoji; let link = ""; switch (inbound.protocol) { case "vless": - link = this.buildVlessLink(inbound, domain, idOrPass); + link = this.buildVlessLink(inbound, sni, idOrPass); break; case "vmess": - link = this.buildVmessLink(inbound, domain, idOrPass); + link = this.buildVmessLink(inbound, sni, idOrPass); break; case "shadowsocks": - link = this.buildSsLink(inbound, domain, idOrPass); + link = this.buildSsLink(inbound, sni, idOrPass); break; case "trojan": - link = this.buildTrojanLink(inbound, domain, idOrPass); + link = this.buildTrojanLink(inbound, sni, idOrPass); break; } return link; } - private buildVlessLink(inbound: any, domain: string, uuid: string) { + private buildVlessLink(inbound: any, sni: string, uuid: string) { const stream = JSON.parse(inbound.streamSettings); const settings = JSON.parse(inbound.settings); @@ -408,17 +408,17 @@ export class InboundBuilderService { } return ( - `vless://${uuid}@${domain}:${inbound.port}` + + `vless://${uuid}@${sni}:${inbound.port}` + `?${params.toString()}` + `#${this.flag}%20${encodeURIComponent(inbound.remark)}` ); } - private buildVmessLink(inbound: any, domain: string, uuid: string) { + private buildVmessLink(inbound: any, sni: string, uuid: string) { const stream = JSON.parse(inbound.streamSettings); const vmessObj = { - add: domain, + add: sni, aid: '0', alpn: "", fp: "", @@ -442,7 +442,7 @@ export class InboundBuilderService { return `vmess://${base64}`; } - private buildSsLink(inbound: any, domain: string, idOrPass: string) { + private buildSsLink(inbound: any, sni: string, idOrPass: string) { const settings = JSON.parse(inbound.settings); const method = settings.method; @@ -455,25 +455,25 @@ export class InboundBuilderService { .from(userInfo, "utf8") .toString("base64"); - return `ss://${base64}@${domain}:${inbound.port}?type=tcp#${this.flag}%20${inbound.remark}`; + return `ss://${base64}@${sni}:${inbound.port}?type=tcp#${this.flag}%20${inbound.remark}`; } - private buildTrojanLink(inbound: any, domain: string, password: string) { + private buildTrojanLink(inbound: any, sni: string, password: string) { const stream = JSON.parse(inbound.streamSettings); const reality = stream.realitySettings; const pbk = reality.settings.publicKey; - const sni = reality.serverNames?.[0] || domain; + const SNI = reality.serverNames?.[0] || sni; const sid = reality.shortIds?.[0] || ""; const spx = '%2F'; return ( - `trojan://${password}@${domain}:${inbound.port}` + + `trojan://${password}@${SNI}:${inbound.port}` + `?type=tcp` + `&security=reality` + `&pbk=${pbk}` + `&fp=random` + - `&sni=${sni}` + + `&sni=${SNI}` + `&sid=${sid}` + `&spx=${spx}` + `#${this.flag}%20${inbound.remark}`