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
diff options
context:
space:
mode:
authorPeter Liu <30622363+PedroLiu1999@users.noreply.github.com>2026-04-20 01:41:50 +0300
committerGitHub <noreply@github.com>2026-04-20 01:41:50 +0300
commit36b2a586756fc279304170976c9d486498d55919 (patch)
tree71a1dd665fa14a0fc9dad28c3ef421e3e3d7fe7c /web/html/xray.html
parent59e98592251cac1dedb93905cb368a3ba93ad19c (diff)
feat: Add NordVPN NordLynx (WireGuard) integration (#3827)
* feat: Add NordVPN NordLynx (WireGuard) integration with dedicated UI and backend services. * remove limit=10 to get all servers * feat: add city selector to NordVPN modal * feat: auto-select best server on country/city change * feat: simplify filter logic and enforce > 7% load * fix --------- Co-authored-by: Sanaei <ho3ein.sanaei@gmail.com>
Diffstat (limited to 'web/html/xray.html')
-rw-r--r--web/html/xray.html22
1 files changed, 22 insertions, 0 deletions
diff --git a/web/html/xray.html b/web/html/xray.html
index 040ae2ee..01b4e4e2 100644
--- a/web/html/xray.html
+++ b/web/html/xray.html
@@ -163,6 +163,7 @@
{{template "modals/dnsPresetsModal"}}
{{template "modals/fakednsModal"}}
{{template "modals/warpModal"}}
+{{template "modals/nordModal"}}
<script>
const rulesColumns = [
{ title: "#", align: 'center', width: 15, scopedSlots: { customRender: 'action' } },
@@ -1056,6 +1057,9 @@
showWarp() {
warpModal.show();
},
+ showNord() {
+ nordModal.show();
+ },
async loadCustomGeoAliases() {
try {
const msg = await HttpUtil.get('/panel/api/custom-geo/aliases');
@@ -1429,6 +1433,19 @@
this.templateRuleSetter({ outboundTag: "warp", property: "domain", data: newValue });
}
},
+ nordTag: {
+ get: function () {
+ return this.templateSettings ? (this.templateSettings.outbounds.find((o) => o.tag.startsWith("nord-")) || { tag: "nord" }).tag : "nord";
+ }
+ },
+ nordDomains: {
+ get: function () {
+ return this.templateRuleGetter({ outboundTag: this.nordTag, property: "domain" });
+ },
+ set: function (newValue) {
+ this.templateRuleSetter({ outboundTag: this.nordTag, property: "domain", data: newValue });
+ }
+ },
torrentSettings: {
get: function () {
return ArrayUtils.doAllItemsExist(this.settingsData.protocols.bittorrent, this.blockedProtocols);
@@ -1446,6 +1463,11 @@
return this.templateSettings ? this.templateSettings.outbounds.findIndex((o) => o.tag == "warp") >= 0 : false;
},
},
+ NordExist: {
+ get: function () {
+ return this.templateSettings ? this.templateSettings.outbounds.findIndex((o) => o.tag.startsWith("nord-")) >= 0 : false;
+ },
+ },
enableDNS: {
get: function () {
return this.templateSettings ? this.templateSettings.dns != null : false;