|
@@ -1907,7 +1907,7 @@ class Inbound extends XrayCommonClass {
|
|
|
return url.toString();
|
|
return url.toString();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- getWireguardLink(address, port, remark, peerId) {
|
|
|
|
|
|
|
+ getWireguardTxt(address, port, remark, peerId) {
|
|
|
let txt = `[Interface]\n`
|
|
let txt = `[Interface]\n`
|
|
|
txt += `PrivateKey = ${this.settings.peers[peerId].privateKey}\n`
|
|
txt += `PrivateKey = ${this.settings.peers[peerId].privateKey}\n`
|
|
|
txt += `Address = ${this.settings.peers[peerId].allowedIPs[0]}\n`
|
|
txt += `Address = ${this.settings.peers[peerId].allowedIPs[0]}\n`
|
|
@@ -1929,6 +1929,48 @@ class Inbound extends XrayCommonClass {
|
|
|
return txt;
|
|
return txt;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ getWireguardLink(address, port, remark, peerId) {
|
|
|
|
|
+ const peer = this.settings?.peers?.[peerId];
|
|
|
|
|
+ if (!peer) return '';
|
|
|
|
|
+
|
|
|
|
|
+ const link = `wireguard://${address}:${port}`;
|
|
|
|
|
+ const url = new URL(link);
|
|
|
|
|
+ url.username = peer.privateKey || '';
|
|
|
|
|
+
|
|
|
|
|
+ if (this.settings?.pubKey) {
|
|
|
|
|
+ url.searchParams.set("publickey", this.settings.pubKey);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (Array.isArray(peer.allowedIPs) && peer.allowedIPs.length > 0 && peer.allowedIPs[0]) {
|
|
|
|
|
+ url.searchParams.set("address", peer.allowedIPs[0]);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (this.settings?.mtu) {
|
|
|
|
|
+ url.searchParams.set("mtu", this.settings.mtu);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ url.hash = encodeURIComponent(remark);
|
|
|
|
|
+ return url.toString();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ genWireguardLinks(remark = '', remarkModel = '-ieo') {
|
|
|
|
|
+ const addr = !ObjectUtil.isEmpty(this.listen) && this.listen !== "0.0.0.0" ? this.listen : location.hostname;
|
|
|
|
|
+ const separationChar = remarkModel.charAt(0);
|
|
|
|
|
+ let links = [];
|
|
|
|
|
+ this.settings.peers.forEach((p, index) => {
|
|
|
|
|
+ links.push(this.getWireguardLink(addr, this.port, remark + separationChar + (index + 1), index));
|
|
|
|
|
+ });
|
|
|
|
|
+ return links.join('\r\n');
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ genWireguardConfigs(remark = '', remarkModel = '-ieo') {
|
|
|
|
|
+ const addr = !ObjectUtil.isEmpty(this.listen) && this.listen !== "0.0.0.0" ? this.listen : location.hostname;
|
|
|
|
|
+ const separationChar = remarkModel.charAt(0);
|
|
|
|
|
+ let links = [];
|
|
|
|
|
+ this.settings.peers.forEach((p, index) => {
|
|
|
|
|
+ links.push(this.getWireguardTxt(addr, this.port, remark + separationChar + (index + 1), index));
|
|
|
|
|
+ });
|
|
|
|
|
+ return links.join('\r\n');
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
genLink(address = '', port = this.port, forceTls = 'same', remark = '', client) {
|
|
genLink(address = '', port = this.port, forceTls = 'same', remark = '', client) {
|
|
|
switch (this.protocol) {
|
|
switch (this.protocol) {
|
|
|
case Protocols.VMESS:
|
|
case Protocols.VMESS:
|
|
@@ -1989,11 +2031,7 @@ class Inbound extends XrayCommonClass {
|
|
|
} else {
|
|
} else {
|
|
|
if (this.protocol == Protocols.SHADOWSOCKS && !this.isSSMultiUser) return this.genSSLink(addr, this.port, 'same', remark);
|
|
if (this.protocol == Protocols.SHADOWSOCKS && !this.isSSMultiUser) return this.genSSLink(addr, this.port, 'same', remark);
|
|
|
if (this.protocol == Protocols.WIREGUARD) {
|
|
if (this.protocol == Protocols.WIREGUARD) {
|
|
|
- let links = [];
|
|
|
|
|
- this.settings.peers.forEach((p, index) => {
|
|
|
|
|
- links.push(this.getWireguardLink(addr, this.port, remark + remarkModel.charAt(0) + (index + 1), index));
|
|
|
|
|
- });
|
|
|
|
|
- return links.join('\r\n');
|
|
|
|
|
|
|
+ return this.genWireguardConfigs(remark, remarkModel);
|
|
|
}
|
|
}
|
|
|
return '';
|
|
return '';
|
|
|
}
|
|
}
|