update
This commit is contained in:
@@ -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}`
|
||||
|
||||
Reference in New Issue
Block a user