luci: fix know bugs
This commit is contained in:
parent
4790e2551d
commit
9e4b4d7fdc
@ -384,7 +384,11 @@ end
|
||||
function finded_com(e)
|
||||
local bin = get_app_path(e)
|
||||
if not bin then return end
|
||||
return luci.sys.exec('echo -n $(type -t -p "%s" | head -n1)' % { bin })
|
||||
local s = luci.sys.exec('echo -n $(type -t -p "%s" | head -n1)' % { bin })
|
||||
if s == "" then
|
||||
s = nil
|
||||
end
|
||||
return s
|
||||
end
|
||||
|
||||
function finded(e)
|
||||
|
@ -1129,6 +1129,7 @@ function gen_config(var)
|
||||
tag = dns_tag,
|
||||
address_strategy = "prefer_ipv4",
|
||||
strategy = remote_strategy,
|
||||
address_resolver = "direct",
|
||||
detour = dns_outTag,
|
||||
}
|
||||
|
||||
@ -1147,7 +1148,9 @@ function gen_config(var)
|
||||
server.address = remote_dns_doh_url
|
||||
end
|
||||
|
||||
if server.address then
|
||||
table.insert(dns.servers, server)
|
||||
end
|
||||
|
||||
if remote_dns_fake then
|
||||
dns.fakeip = {
|
||||
@ -1156,13 +1159,19 @@ function gen_config(var)
|
||||
inet6_range = "fc00::/18",
|
||||
}
|
||||
|
||||
local fakedns_tag = dns_tag .. "_fakeip"
|
||||
|
||||
if not server.address then
|
||||
fakedns_tag = dns_tag
|
||||
end
|
||||
|
||||
table.insert(dns.servers, {
|
||||
tag = dns_tag .. "_fakeip",
|
||||
tag = fakedns_tag,
|
||||
address = "fakeip",
|
||||
strategy = remote_strategy,
|
||||
})
|
||||
|
||||
rule_server = dns_tag .. "_fakeip"
|
||||
rule_server = fakedns_tag
|
||||
|
||||
if tags and tags:find("with_clash_api") then
|
||||
if not experimental then
|
||||
|
@ -1,10 +1,11 @@
|
||||
<%+cbi/valueheader%>
|
||||
<%
|
||||
local api = require "luci.passwall2.api"
|
||||
local has_singbox = api.finded_com("singbox")
|
||||
local has_xray = api.finded_com("xray")
|
||||
-%>
|
||||
<script type="text/javascript">//<![CDATA[
|
||||
let has_singbox = "<%=api.finded_com("singbox")%>"
|
||||
let has_xray = "<%=api.finded_com("xray")%>"
|
||||
|
||||
function padright(str, cnt, pad) {
|
||||
return str + Array(cnt + 1).join(pad);
|
||||
}
|
||||
@ -242,7 +243,7 @@ local has_xray = api.finded_com("xray")
|
||||
info.port = opt.get(dom_prefix + "port").value;
|
||||
info.id = opt.get(dom_prefix + "uuid").value;
|
||||
|
||||
var v_transport = opt.get("transport").value;
|
||||
var v_transport = opt.get(dom_prefix + "transport").value;
|
||||
if (v_transport === "ws") {
|
||||
info.host = opt.get(dom_prefix + "ws_host").value;
|
||||
info.path = opt.get(dom_prefix + "ws_path").value;
|
||||
@ -250,27 +251,27 @@ local has_xray = api.finded_com("xray")
|
||||
info.host = opt.get(dom_prefix + "h2_host").value;
|
||||
info.path = opt.get(dom_prefix + "h2_path").value;
|
||||
} else if (v_transport === "tcp") {
|
||||
info.type = opt.get("tcp_guise").value;
|
||||
info.type = opt.get(dom_prefix + "tcp_guise").value;
|
||||
if (info.type === "http") {
|
||||
info.host = opt.get("tcp_guise_http_host").value;
|
||||
info.path = opt.get("tcp_guise_http_path").value;
|
||||
info.host = opt.get(dom_prefix + "tcp_guise_http_host").value;
|
||||
info.path = opt.get(dom_prefix + "tcp_guise_http_path").value;
|
||||
}
|
||||
} else if (v_transport === "mkcp") {
|
||||
v_transport = "kcp";
|
||||
info.type = opt.get("mkcp_guise").value;
|
||||
info.type = opt.get(dom_prefix + "mkcp_guise").value;
|
||||
} else if (v_transport === "quic") {
|
||||
info.type = opt.get("quic_guise").value;
|
||||
info.key = opt.get("quic_key").value;
|
||||
info.securty = opt.get("quic_security").value;
|
||||
info.type = opt.get(dom_prefix + "quic_guise").value;
|
||||
info.key = opt.get(dom_prefix + "quic_key").value;
|
||||
info.securty = opt.get(dom_prefix + "quic_security").value;
|
||||
} else if (v_transport === "grpc") {
|
||||
info.path = opt.get("grpc_serviceName").value;
|
||||
info.path = opt.get(dom_prefix + "grpc_serviceName").value;
|
||||
}
|
||||
if (info.path && info.path != "") {
|
||||
info.path = encodeURI(info.path);
|
||||
}
|
||||
info.net = v_transport;
|
||||
|
||||
info.security = opt.get("security").value || "auto";
|
||||
info.security = opt.get(dom_prefix + "security").value || "auto";
|
||||
if (opt.get(dom_prefix + "tls").checked) {
|
||||
var v_security = "tls";
|
||||
info.tls = "tls";
|
||||
@ -286,7 +287,7 @@ local has_xray = api.finded_com("xray")
|
||||
":" + v_port.value + "?";
|
||||
|
||||
var params = "";
|
||||
var v_transport = opt.get("transport").value;
|
||||
var v_transport = opt.get(dom_prefix + "transport").value;
|
||||
if (v_transport === "ws") {
|
||||
params += opt.query("host", dom_prefix + "ws_host");
|
||||
params += opt.query("path", dom_prefix + "ws_path");
|
||||
@ -295,24 +296,24 @@ local has_xray = api.finded_com("xray")
|
||||
params += opt.query("host", dom_prefix + "h2_host");
|
||||
params += opt.query("path", dom_prefix + "h2_path");
|
||||
} else if (v_transport === "tcp") {
|
||||
params += opt.query("headerType", "tcp_guise");
|
||||
params += opt.query("host", "tcp_guise_http_host");
|
||||
params += opt.query("path", "tcp_guise_http_path");
|
||||
params += opt.query("headerType", dom_prefix + "tcp_guise");
|
||||
params += opt.query("host", dom_prefix + "tcp_guise_http_host");
|
||||
params += opt.query("path", dom_prefix + "tcp_guise_http_path");
|
||||
} else if (v_transport === "mkcp") {
|
||||
v_transport = "kcp";
|
||||
params += opt.query("headerType", "mkcp_guise");
|
||||
params += opt.query("headerType", dom_prefix + "mkcp_guise");
|
||||
} else if (v_transport === "quic") {
|
||||
params += opt.query("headerType", "quic_guise");
|
||||
params += opt.query("key", "quic_key");
|
||||
params += opt.query("quicSecurity", "quic_security");
|
||||
params += opt.query("headerType", dom_prefix + "quic_guise");
|
||||
params += opt.query("key", dom_prefix + "quic_key");
|
||||
params += opt.query("quicSecurity", dom_prefix + "quic_security");
|
||||
} else if (v_transport === "grpc") {
|
||||
params += opt.query("path", "grpc_serviceName");
|
||||
params += opt.query("serviceName", "grpc_serviceName");
|
||||
params += opt.query("mode", "grpc_mode");
|
||||
params += opt.query("path", dom_prefix + "grpc_serviceName");
|
||||
params += opt.query("serviceName", dom_prefix + "grpc_serviceName");
|
||||
params += opt.query("mode", dom_prefix + "grpc_mode");
|
||||
}
|
||||
params += "&type=" + v_transport;
|
||||
|
||||
params += opt.query("encryption", "encryption");
|
||||
params += opt.query("encryption", dom_prefix + "encryption");
|
||||
|
||||
if (opt.get(dom_prefix + "tls").checked) {
|
||||
var v_security = "tls";
|
||||
@ -320,15 +321,15 @@ local has_xray = api.finded_com("xray")
|
||||
let v_fp = opt.get(dom_prefix + "fingerprint").value;
|
||||
params += "&fp=" + v_fp;
|
||||
}
|
||||
if (opt.get("reality") && opt.get("reality").checked) {
|
||||
if (opt.get(dom_prefix + "reality") && opt.get(dom_prefix + "reality").checked) {
|
||||
v_security = "reality";
|
||||
if (opt.get("reality_fingerprint") && opt.get("reality_fingerprint").value != "") {
|
||||
let v_fp = opt.get("reality_fingerprint").value;
|
||||
if (opt.get(dom_prefix + "fingerprint") && opt.get(dom_prefix + "fingerprint").value != "") {
|
||||
let v_fp = opt.get(dom_prefix + "fingerprint").value;
|
||||
params += "&fp=" + v_fp;
|
||||
}
|
||||
params += opt.query("pbk", "reality_publicKey");
|
||||
params += opt.query("sid", "reality_shortId");
|
||||
params += opt.query("spx", "reality_spiderX");
|
||||
params += opt.query("pbk", dom_prefix + "reality_publicKey");
|
||||
params += opt.query("sid", dom_prefix + "reality_shortId");
|
||||
params += opt.query("spx", dom_prefix + "reality_spiderX");
|
||||
}
|
||||
if (opt.get(dom_prefix + "flow") && opt.get(dom_prefix + "flow").value) {
|
||||
let v_flow = opt.get(dom_prefix + "flow").value;
|
||||
@ -598,7 +599,7 @@ local has_xray = api.finded_com("xray")
|
||||
method = userInfo.substr(0, userInfoSplitIndex);
|
||||
password = userInfo.substr(userInfoSplitIndex + 1);
|
||||
}
|
||||
if (["2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha8-poly1305", "2022-blake3-chacha20-poly1305"].includes(method)) {
|
||||
if (["2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha20-poly1305"].includes(method)) {
|
||||
opt.set('type', "SS-Rust");
|
||||
dom_prefix = "ssrust_"
|
||||
} else {
|
||||
@ -650,13 +651,13 @@ local has_xray = api.finded_com("xray")
|
||||
queryParam[decodeURIComponent(params[0]).toLowerCase()] = decodeURIComponent(params[1] || '');
|
||||
}
|
||||
}
|
||||
<% if has_singbox then %>
|
||||
if (has_singbox) {
|
||||
opt.set('type', "sing-box");
|
||||
dom_prefix = "singbox_"
|
||||
<% elseif has_xray then %>
|
||||
} else if (has_xray) {
|
||||
opt.set('type', "Xray");
|
||||
dom_prefix = "xray_"
|
||||
<% end %>
|
||||
}
|
||||
opt.set(dom_prefix + 'protocol', "trojan");
|
||||
opt.set(dom_prefix + 'address', m.hostname);
|
||||
opt.set(dom_prefix + 'port', m.port || "443");
|
||||
@ -672,13 +673,13 @@ local has_xray = api.finded_com("xray")
|
||||
if (ssu[0] === "vmess") {
|
||||
var sstr = b64DecodeUnicode(ssu[1]);
|
||||
var ploc = sstr.indexOf("/?");
|
||||
<% if has_singbox then %>
|
||||
if (has_singbox) {
|
||||
opt.set('type', "sing-box");
|
||||
dom_prefix = "singbox_"
|
||||
<% elseif has_xray then %>
|
||||
} else if (has_xray) {
|
||||
opt.set('type', "Xray");
|
||||
dom_prefix = "xray_"
|
||||
<% end %>
|
||||
}
|
||||
opt.set(dom_prefix + 'protocol', "vmess");
|
||||
var url0, param = "";
|
||||
if (ploc > 0) {
|
||||
@ -701,12 +702,12 @@ local has_xray = api.finded_com("xray")
|
||||
ssm.net = ssm.net.toLowerCase();
|
||||
if (ssm.net === "kcp" || ssm.net === "mkcp")
|
||||
ssm.net = "mkcp"
|
||||
opt.set('transport', ssm.net);
|
||||
opt.set(dom_prefix + 'transport', ssm.net);
|
||||
if (ssm.net === "tcp") {
|
||||
opt.set('tcp_guise', (ssm.host && ssm.path) ? "http" : "none");
|
||||
opt.set(dom_prefix + 'tcp_guise', (ssm.host && ssm.path) ? "http" : "none");
|
||||
if (ssm.host && ssm.path) {
|
||||
opt.set('tcp_guise_http_host', ssm.host);
|
||||
opt.set('tcp_guise_http_path', ssm.path);
|
||||
opt.set(dom_prefix + 'tcp_guise_http_host', ssm.host);
|
||||
opt.set(dom_prefix + 'tcp_guise_http_path', ssm.path);
|
||||
}
|
||||
} else if (ssm.net === "ws") {
|
||||
opt.set(dom_prefix + 'ws_host', ssm.host);
|
||||
@ -715,22 +716,23 @@ local has_xray = api.finded_com("xray")
|
||||
opt.set(dom_prefix + 'h2_host', ssm.host);
|
||||
opt.set(dom_prefix + 'h2_path', ssm.path);
|
||||
} else if (ssm.net === "quic") {
|
||||
opt.set('quic_security', ssm.securty);
|
||||
opt.set('quic_key', ssm.key);
|
||||
opt.set(dom_prefix + 'quic_security', ssm.securty);
|
||||
opt.set(dom_prefix + 'quic_key', ssm.key);
|
||||
} else if (ssm.net === "kcp" || ssm.net === "mkcp") {
|
||||
opt.set('mkcp_guise', ssm.type);
|
||||
opt.set(dom_prefix + 'mkcp_guise', ssm.type);
|
||||
} else if (ssm.net === "grpc") {
|
||||
opt.set('grpc_serviceName', ssm.path);
|
||||
opt.set(dom_prefix + 'grpc_serviceName', ssm.path);
|
||||
}
|
||||
}
|
||||
if (ssu[0] === "vless") {
|
||||
<% if has_singbox then %>
|
||||
if (has_singbox) {
|
||||
opt.set('type', "sing-box");
|
||||
dom_prefix = "singbox_"
|
||||
<% elseif has_xray then %>
|
||||
}
|
||||
if (has_xray) {
|
||||
opt.set('type', "Xray");
|
||||
dom_prefix = "xray_"
|
||||
<% end %>
|
||||
}
|
||||
opt.set(dom_prefix + 'protocol', "vless");
|
||||
var m = parseNodeUrl(ssrurl);
|
||||
var password = m.passwd;
|
||||
@ -753,11 +755,11 @@ local has_xray = api.finded_com("xray")
|
||||
}
|
||||
}
|
||||
|
||||
opt.set('encryption', queryParam.encryption);
|
||||
opt.set(dom_prefix + 'encryption', queryParam.encryption);
|
||||
if (queryParam.security) {
|
||||
if (queryParam.security == "tls") {
|
||||
opt.set(dom_prefix + 'tls', true);
|
||||
opt.set('reality', false)
|
||||
opt.set(dom_prefix + 'reality', false)
|
||||
opt.set(dom_prefix + 'flow', queryParam.flow || '');
|
||||
opt.set(dom_prefix + 'tls_serverName', queryParam.sni || '');
|
||||
opt.set(dom_prefix + 'tls_allowInsecure', true);
|
||||
@ -771,15 +773,15 @@ local has_xray = api.finded_com("xray")
|
||||
|
||||
if (queryParam.security == "reality") {
|
||||
opt.set(dom_prefix + 'tls', true);
|
||||
opt.set('reality', true)
|
||||
opt.set(dom_prefix + 'reality', true)
|
||||
opt.set(dom_prefix + 'flow', queryParam.flow || '');
|
||||
opt.set(dom_prefix + 'tls_serverName', queryParam.sni || '');
|
||||
if (queryParam.fp && queryParam.fp.trim() != "") {
|
||||
opt.set('reality_fingerprint', queryParam.fp);
|
||||
opt.set(dom_prefix + 'fingerprint', queryParam.fp);
|
||||
}
|
||||
opt.set('reality_publicKey', queryParam.pbk || '');
|
||||
opt.set('reality_shortId', queryParam.sid || '');
|
||||
opt.set('reality_spiderX', queryParam.spx || '');
|
||||
opt.set(dom_prefix + 'reality_publicKey', queryParam.pbk || '');
|
||||
opt.set(dom_prefix + 'reality_shortId', queryParam.sid || '');
|
||||
opt.set(dom_prefix + 'reality_spiderX', queryParam.spx || '');
|
||||
}
|
||||
|
||||
}
|
||||
@ -789,12 +791,12 @@ local has_xray = api.finded_com("xray")
|
||||
queryParam.type = "mkcp"
|
||||
if (queryParam.type === "h2" || queryParam.type === "http")
|
||||
queryParam.type = "h2"
|
||||
opt.set('transport', queryParam.type);
|
||||
opt.set(dom_prefix + 'transport', queryParam.type);
|
||||
if (queryParam.type === "tcp") {
|
||||
opt.set('tcp_guise', queryParam.headerType || "none");
|
||||
opt.set(dom_prefix + 'tcp_guise', queryParam.headerType || "none");
|
||||
if (queryParam.headerType && queryParam.headerType != "none") {
|
||||
opt.set('tcp_guise_http_host', queryParam.host || "");
|
||||
opt.set('tcp_guise_http_path', queryParam.path || "");
|
||||
opt.set(dom_prefix + 'tcp_guise_http_host', queryParam.host || "");
|
||||
opt.set(dom_prefix + 'tcp_guise_http_path', queryParam.path || "");
|
||||
}
|
||||
} else if (queryParam.type === "ws") {
|
||||
opt.set(dom_prefix + 'ws_host', queryParam.host || "");
|
||||
@ -803,14 +805,14 @@ local has_xray = api.finded_com("xray")
|
||||
opt.set(dom_prefix + 'h2_host', queryParam.host || "");
|
||||
opt.set(dom_prefix + 'h2_path', queryParam.path || "");
|
||||
} else if (queryParam.type === "quic") {
|
||||
opt.set('quic_guise', queryParam.headerType || "none");
|
||||
opt.set('quic_security', queryParam.quicSecurity);
|
||||
opt.set('quic_key', queryParam.key);
|
||||
opt.set(dom_prefix + 'quic_guise', queryParam.headerType || "none");
|
||||
opt.set(dom_prefix + 'quic_security', queryParam.quicSecurity);
|
||||
opt.set(dom_prefix + 'quic_key', queryParam.key);
|
||||
} else if (queryParam.type === "kcp" || queryParam.type === "mkcp") {
|
||||
opt.set('mkcp_guise', queryParam.headerType || "none");
|
||||
opt.set(dom_prefix + 'mkcp_guise', queryParam.headerType || "none");
|
||||
} else if (queryParam.type === "grpc") {
|
||||
opt.set('grpc_serviceName', (queryParam.serviceName || queryParam.path) || "");
|
||||
opt.set('grpc_mode', queryParam.mode);
|
||||
opt.set(dom_prefix + 'grpc_serviceName', (queryParam.serviceName || queryParam.path) || "");
|
||||
opt.set(dom_prefix + 'grpc_mode', queryParam.mode);
|
||||
}
|
||||
|
||||
if (m.hash) {
|
||||
|
@ -67,6 +67,8 @@ global_singbox=$(uci -q get passwall2.@global_singbox[0])
|
||||
uci -q commit passwall2
|
||||
}
|
||||
|
||||
chmod +x /usr/share/passwall2/*.sh
|
||||
|
||||
rm -f /tmp/luci-indexcache
|
||||
rm -rf /tmp/luci-modulecache/
|
||||
killall -HUP rpcd 2>/dev/null
|
||||
|
@ -622,12 +622,12 @@ local function processData(szType, content, add_mode, add_from)
|
||||
result.group = content.airport
|
||||
result.remarks = content.remarks
|
||||
elseif szType == "vless" then
|
||||
if has_xray then
|
||||
result.type = 'Xray'
|
||||
end
|
||||
if has_singbox then
|
||||
result.type = 'sing-box'
|
||||
end
|
||||
if has_xray then
|
||||
result.type = 'Xray'
|
||||
end
|
||||
result.protocol = "vless"
|
||||
local alias = ""
|
||||
if content:find("#") then
|
||||
|
Loading…
Reference in New Issue
Block a user