luci: update share link js script support ipv6
This commit is contained in:
parent
3dd970b324
commit
3320fcc2fc
@ -57,26 +57,18 @@ local has_xray = api.is_finded("xray")
|
|||||||
}
|
}
|
||||||
|
|
||||||
function parseNodeUrl(url) {
|
function parseNodeUrl(url) {
|
||||||
var m = url.match(/^(([^:\/?#]+:)?(?:\/\/((?:([^\/?#:]*)([^\/?#:]*)@)?([^\/?#:]*)(?::([^\/?#:]*))?)))?([^?#]*)(\?[^#]*)?(#.*)?$/),
|
let protocol = url.substring(0, url.indexOf("://")) + ":"
|
||||||
r = {
|
let str = "http" + url.substring(url.indexOf("://"))
|
||||||
hash: m[10] || "", // #asd
|
const parsedUrl = new URL(str);
|
||||||
host: m[3] || "", // localhost:257
|
var r = {
|
||||||
hostname: m[6] || "", // localhost
|
hash: parsedUrl.hash, // #asd
|
||||||
href: m[0] || "", // http://username:password@localhost:257/deploy/?asd=asd#asd
|
host: parsedUrl.host, // localhost:257
|
||||||
origin: m[1] || "", // http://username:password@localhost:257
|
hostname: parsedUrl.hostname, // localhost
|
||||||
pathname: m[8] || (m[1] ? "/" : ""), // /deploy/
|
port: parsedUrl.port, // 257
|
||||||
port: m[7] || "", // 257
|
search: parsedUrl.search, // ?asd=asd
|
||||||
protocol: m[2] || "", // http:
|
passwd: parsedUrl.username || parsedUrl.password // username
|
||||||
search: m[9] || "", // ?asd=asd
|
|
||||||
passwd: m[4] || "", // username
|
|
||||||
removed: m[5] || "" // password
|
|
||||||
};
|
};
|
||||||
if (r.protocol.length === 2) {
|
return r;
|
||||||
r.protocol = "file:///" + r.protocol.toUpperCase();
|
|
||||||
r.origin = r.protocol + "//" + r.host;
|
|
||||||
}
|
|
||||||
r.href = r.origin + r.pathname + r.search + r.hash;
|
|
||||||
return m && r;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function buildUrl(btn, urlname, sid) {
|
function buildUrl(btn, urlname, sid) {
|
||||||
@ -131,15 +123,25 @@ local has_xray = api.is_finded("xray")
|
|||||||
opt.client = urlname.indexOf("server") === -1;
|
opt.client = urlname.indexOf("server") === -1;
|
||||||
var v_type = opt.get("type").value;
|
var v_type = opt.get("type").value;
|
||||||
var v_alias = opt.get("remarks");
|
var v_alias = opt.get("remarks");
|
||||||
|
var _address = ""
|
||||||
|
try {
|
||||||
|
var v_server = opt.get("address");
|
||||||
|
const ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;
|
||||||
|
if (ipv6Regex.test(v_server.value)) {
|
||||||
|
_address = "[" + v_server.value + "]"
|
||||||
|
} else {
|
||||||
|
_address = v_server.value
|
||||||
|
}
|
||||||
|
} catch(e) {
|
||||||
|
}
|
||||||
var url = null;
|
var url = null;
|
||||||
if (v_type === "SS") {
|
if (v_type === "SS") {
|
||||||
var v_server = opt.get("address");
|
|
||||||
var v_port = opt.get("port");
|
var v_port = opt.get("port");
|
||||||
var v_method = opt.get("ss_encrypt_method");
|
var v_method = opt.get("ss_encrypt_method");
|
||||||
var v_password = opt.get("password");
|
var v_password = opt.get("password");
|
||||||
|
|
||||||
url = b64encsafe(v_method.value + ":" + v_password.value) + "@" +
|
url = b64encsafe(v_method.value + ":" + v_password.value) + "@" +
|
||||||
v_server.value + ":" +
|
_address + ":" +
|
||||||
v_port.value + "/?";
|
v_port.value + "/?";
|
||||||
|
|
||||||
var params = "";
|
var params = "";
|
||||||
@ -162,13 +164,12 @@ local has_xray = api.is_finded("xray")
|
|||||||
url += params;
|
url += params;
|
||||||
} else if (v_type === "SS-Rust") {
|
} else if (v_type === "SS-Rust") {
|
||||||
v_type = "SS"
|
v_type = "SS"
|
||||||
var v_server = opt.get("address");
|
|
||||||
var v_port = opt.get("port");
|
var v_port = opt.get("port");
|
||||||
var v_method = opt.get("ss_rust_encrypt_method");
|
var v_method = opt.get("ss_rust_encrypt_method");
|
||||||
var v_password = opt.get("password");
|
var v_password = opt.get("password");
|
||||||
|
|
||||||
url = btoa(v_method.value + ":" + v_password.value) + "@" +
|
url = btoa(v_method.value + ":" + v_password.value) + "@" +
|
||||||
v_server.value + ":" +
|
_address + ":" +
|
||||||
v_port.value + "/?";
|
v_port.value + "/?";
|
||||||
|
|
||||||
var params = "";
|
var params = "";
|
||||||
@ -190,7 +191,6 @@ local has_xray = api.is_finded("xray")
|
|||||||
}
|
}
|
||||||
url += params;
|
url += params;
|
||||||
} else if (v_type === "SSR") {
|
} else if (v_type === "SSR") {
|
||||||
var v_server = opt.get("address");
|
|
||||||
var v_port = opt.get("port");
|
var v_port = opt.get("port");
|
||||||
var v_protocol = opt.get("ssr_protocol");
|
var v_protocol = opt.get("ssr_protocol");
|
||||||
var v_method = opt.get("ssr_encrypt_method");
|
var v_method = opt.get("ssr_encrypt_method");
|
||||||
@ -198,7 +198,7 @@ local has_xray = api.is_finded("xray")
|
|||||||
var v_password = opt.get("password");
|
var v_password = opt.get("password");
|
||||||
var v_obfs_param = opt.get("obfs_param");
|
var v_obfs_param = opt.get("obfs_param");
|
||||||
var v_protocol_param = opt.get("protocol_param");
|
var v_protocol_param = opt.get("protocol_param");
|
||||||
var ssr_str = v_server.value + ":" +
|
var ssr_str = _address + ":" +
|
||||||
v_port.value + ":" +
|
v_port.value + ":" +
|
||||||
v_protocol.value + ":" +
|
v_protocol.value + ":" +
|
||||||
v_method.value + ":" +
|
v_method.value + ":" +
|
||||||
@ -214,6 +214,7 @@ local has_xray = api.is_finded("xray")
|
|||||||
info.v = "2";
|
info.v = "2";
|
||||||
info.ps = v_alias.value;
|
info.ps = v_alias.value;
|
||||||
info.add = opt.get("address").value;
|
info.add = opt.get("address").value;
|
||||||
|
//info.add = _address;
|
||||||
info.port = opt.get("port").value;
|
info.port = opt.get("port").value;
|
||||||
info.id = opt.get("uuid").value;
|
info.id = opt.get("uuid").value;
|
||||||
|
|
||||||
@ -255,10 +256,9 @@ local has_xray = api.is_finded("xray")
|
|||||||
} else if ((v_type === "V2ray" || v_type === "Xray") && opt.get("protocol").value === "vless") {
|
} else if ((v_type === "V2ray" || v_type === "Xray") && opt.get("protocol").value === "vless") {
|
||||||
v_type = "vless";
|
v_type = "vless";
|
||||||
var v_password = opt.get("uuid");
|
var v_password = opt.get("uuid");
|
||||||
var v_server = opt.get("address");
|
|
||||||
var v_port = opt.get("port");
|
var v_port = opt.get("port");
|
||||||
url = encodeURIComponent(v_password.value) +
|
url = encodeURIComponent(v_password.value) +
|
||||||
"@" + v_server.value +
|
"@" + _address +
|
||||||
":" + v_port.value + "?";
|
":" + v_port.value + "?";
|
||||||
|
|
||||||
var params = "";
|
var params = "";
|
||||||
@ -325,10 +325,9 @@ local has_xray = api.is_finded("xray")
|
|||||||
v_type = "trojan";
|
v_type = "trojan";
|
||||||
}
|
}
|
||||||
var v_password = opt.get(!opt.client && v_type === "Trojan-Go" ? "passwords" : "password");
|
var v_password = opt.get(!opt.client && v_type === "Trojan-Go" ? "passwords" : "password");
|
||||||
var v_server = opt.get("address");
|
|
||||||
var v_port = opt.get("port");
|
var v_port = opt.get("port");
|
||||||
url = encodeURIComponent(v_password.value) +
|
url = encodeURIComponent(v_password.value) +
|
||||||
"@" + v_server.value +
|
"@" + _address +
|
||||||
":" + v_port.value + "/?";
|
":" + v_port.value + "/?";
|
||||||
var params = "";
|
var params = "";
|
||||||
if (opt.get("tls").checked) {
|
if (opt.get("tls").checked) {
|
||||||
@ -376,7 +375,6 @@ local has_xray = api.is_finded("xray")
|
|||||||
var url = "";
|
var url = "";
|
||||||
var params = "?";
|
var params = "?";
|
||||||
var v_protocol = opt.get("brook_protocol");
|
var v_protocol = opt.get("brook_protocol");
|
||||||
var v_server = opt.get("address");
|
|
||||||
var v_port = opt.get("port");
|
var v_port = opt.get("port");
|
||||||
var v_password = opt.get("password");
|
var v_password = opt.get("password");
|
||||||
var b_protocol_value = v_protocol.value.split('client').join('server');
|
var b_protocol_value = v_protocol.value.split('client').join('server');
|
||||||
@ -395,14 +393,13 @@ local has_xray = api.is_finded("xray")
|
|||||||
if (v_path_value.length > 1 && v_path_value.indexOf('/') < 0) {
|
if (v_path_value.length > 1 && v_path_value.indexOf('/') < 0) {
|
||||||
v_path_value = '/' + v_path_value;
|
v_path_value = '/' + v_path_value;
|
||||||
}
|
}
|
||||||
params += "&" + url_protocol + "=" + encodeURIComponent(prefix + v_server.value + ":" + v_port.value + v_path_value);
|
params += "&" + url_protocol + "=" + encodeURIComponent(prefix + _address + ":" + v_port.value + v_path_value);
|
||||||
} else {
|
} else {
|
||||||
params += "&" + url_protocol + "=" + encodeURIComponent(v_server.value + ":" + v_port.value);
|
params += "&" + url_protocol + "=" + encodeURIComponent(_address + ":" + v_port.value);
|
||||||
}
|
}
|
||||||
url += url_protocol;
|
url += url_protocol;
|
||||||
url += params;
|
url += params;
|
||||||
} else if (v_type === "Hysteria") {
|
} else if (v_type === "Hysteria") {
|
||||||
var v_server = opt.get("address");
|
|
||||||
var v_port = opt.get("port");
|
var v_port = opt.get("port");
|
||||||
var params = "";
|
var params = "";
|
||||||
params += opt.query("protocol", "hysteria_protocol");
|
params += opt.query("protocol", "hysteria_protocol");
|
||||||
@ -414,7 +411,7 @@ local has_xray = api.is_finded("xray")
|
|||||||
params += opt.query("alpn", "hysteria_alpn");
|
params += opt.query("alpn", "hysteria_alpn");
|
||||||
params += opt.query("obfsParam", "hysteria_obfs");
|
params += opt.query("obfsParam", "hysteria_obfs");
|
||||||
var url =
|
var url =
|
||||||
v_server.value + ":" +
|
_address + ":" +
|
||||||
v_port.value + "?" +
|
v_port.value + "?" +
|
||||||
params +
|
params +
|
||||||
"#" + encodeURI(v_alias.value);
|
"#" + encodeURI(v_alias.value);
|
||||||
|
Loading…
Reference in New Issue
Block a user