Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MHSanaei/3x-ui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/web
diff options
context:
space:
mode:
Diffstat (limited to 'web')
-rw-r--r--web/assets/js/model/inbound.js50
-rw-r--r--web/html/modals/inbound_info_modal.html15
2 files changed, 58 insertions, 7 deletions
diff --git a/web/assets/js/model/inbound.js b/web/assets/js/model/inbound.js
index 26da6cb3..e3816060 100644
--- a/web/assets/js/model/inbound.js
+++ b/web/assets/js/model/inbound.js
@@ -1907,7 +1907,7 @@ class Inbound extends XrayCommonClass {
return url.toString();
}
- getWireguardLink(address, port, remark, peerId) {
+ getWireguardTxt(address, port, remark, peerId) {
let txt = `[Interface]\n`
txt += `PrivateKey = ${this.settings.peers[peerId].privateKey}\n`
txt += `Address = ${this.settings.peers[peerId].allowedIPs[0]}\n`
@@ -1929,6 +1929,48 @@ class Inbound extends XrayCommonClass {
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) {
switch (this.protocol) {
case Protocols.VMESS:
@@ -1989,11 +2031,7 @@ class Inbound extends XrayCommonClass {
} else {
if (this.protocol == Protocols.SHADOWSOCKS && !this.isSSMultiUser) return this.genSSLink(addr, this.port, 'same', remark);
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 '';
}
diff --git a/web/html/modals/inbound_info_modal.html b/web/html/modals/inbound_info_modal.html
index 14b1d86b..67da21a9 100644
--- a/web/html/modals/inbound_info_modal.html
+++ b/web/html/modals/inbound_info_modal.html
@@ -513,9 +513,19 @@
<div v-html="infoModal.links[index].replaceAll(`\n`,`<br />`)"
:style="{ borderRadius: '1rem', padding: '0.5rem' }" class="client-table-odd-row">
</div>
+ <a-divider orientation="center">Link</a-divider>
+ <tr-info-title class="tr-info-title">
+ <a-tag color="green">Link</a-tag>
+ <a-tooltip title='{{ i18n "copy" }}'>
+ <a-button :style="{ minWidth: '24px' }" size="small" icon="snippets"
+ @click="copy(infoModal.wireguardLinks[index])"></a-button>
+ </a-tooltip>
+ </tr-info-title>
+ <code :style="{ display: 'block', whiteSpace: 'normal', wordBreak: 'break-all' }">[[ infoModal.wireguardLinks[index] ]]</code>
</tr-info-row>
</td>
</tr>
+ </template>
</table>
</template>
</template>
@@ -603,6 +613,7 @@
upStats: 0,
downStats: 0,
links: [],
+ wireguardLinks: [],
index: null,
isExpired: false,
subLink: '',
@@ -633,9 +644,11 @@
}
}
if (this.inbound.protocol == Protocols.WIREGUARD) {
- this.links = this.inbound.genInboundLinks(dbInbound.remark).split('\r\n')
+ this.links = this.inbound.genWireguardConfigs(dbInbound.remark).split('\r\n')
+ this.wireguardLinks = this.inbound.genWireguardLinks(dbInbound.remark).split('\r\n')
} else {
this.links = this.inbound.genAllLinks(this.dbInbound.remark, app.remarkModel, this.clientSettings);
+ this.wireguardLinks = [];
}
if (this.clientSettings) {
if (this.clientSettings.subId) {