update 2025-05-08 12:27:30
This commit is contained in:
parent
31a3f9553c
commit
fa81367377
|
@ -63,6 +63,7 @@ function index()
|
|||
entry({"admin", "services", appname, "link_add_node"}, call("link_add_node")).leaf = true
|
||||
entry({"admin", "services", appname, "socks_autoswitch_add_node"}, call("socks_autoswitch_add_node")).leaf = true
|
||||
entry({"admin", "services", appname, "socks_autoswitch_remove_node"}, call("socks_autoswitch_remove_node")).leaf = true
|
||||
entry({"admin", "services", appname, "gen_client_config"}, call("gen_client_config")).leaf = true
|
||||
entry({"admin", "services", appname, "get_now_use_node"}, call("get_now_use_node")).leaf = true
|
||||
entry({"admin", "services", appname, "get_redir_log"}, call("get_redir_log")).leaf = true
|
||||
entry({"admin", "services", appname, "get_socks_log"}, call("get_socks_log")).leaf = true
|
||||
|
@ -171,6 +172,20 @@ function socks_autoswitch_remove_node()
|
|||
luci.http.redirect(api.url("socks_config", id))
|
||||
end
|
||||
|
||||
|
||||
function gen_client_config()
|
||||
local id = luci.http.formvalue("id")
|
||||
local config_file = api.TMP_PATH .. "/config_" .. id
|
||||
luci.sys.call(string.format("/usr/share/passwall/app.sh run_socks flag=config_%s node=%s bind=127.0.0.1 socks_port=1080 config_file=%s no_run=1", id, id, config_file))
|
||||
if nixio.fs.access(config_file) then
|
||||
luci.http.prepare_content("application/json")
|
||||
luci.http.write(luci.sys.exec("cat " .. config_file))
|
||||
luci.sys.call("rm -f " .. config_file)
|
||||
else
|
||||
luci.http.redirect(api.url("node_list"))
|
||||
end
|
||||
end
|
||||
|
||||
function get_now_use_node()
|
||||
local path = "/tmp/etc/passwall/acl/default"
|
||||
local e = {}
|
||||
|
|
|
@ -81,6 +81,7 @@ function gen_outbound(flag, node, tag, proxy_table)
|
|||
end
|
||||
|
||||
local proxy_tag = nil
|
||||
local run_socks_instance = true
|
||||
if proxy_table ~= nil and type(proxy_table) == "table" then
|
||||
proxy_tag = proxy_table.tag or nil
|
||||
end
|
||||
|
@ -92,18 +93,20 @@ function gen_outbound(flag, node, tag, proxy_table)
|
|||
if tag and node_id and tag ~= node_id then
|
||||
config_file = string.format("%s_%s_%s_%s.json", flag, tag, node_id, new_port)
|
||||
end
|
||||
sys.call(string.format('/usr/share/%s/app.sh run_socks "%s"> /dev/null',
|
||||
appname,
|
||||
string.format("flag=%s node=%s bind=%s socks_port=%s config_file=%s relay_port=%s",
|
||||
new_port, --flag
|
||||
node_id, --node
|
||||
"127.0.0.1", --bind
|
||||
new_port, --socks port
|
||||
config_file, --config file
|
||||
(proxy_tag and relay_port) and tostring(relay_port) or "" --relay port
|
||||
if run_socks_instance then
|
||||
sys.call(string.format('/usr/share/%s/app.sh run_socks "%s"> /dev/null',
|
||||
appname,
|
||||
string.format("flag=%s node=%s bind=%s socks_port=%s config_file=%s relay_port=%s",
|
||||
new_port, --flag
|
||||
node_id, --node
|
||||
"127.0.0.1", --bind
|
||||
new_port, --socks port
|
||||
config_file, --config file
|
||||
(proxy_tag and relay_port) and tostring(relay_port) or "" --relay port
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
end
|
||||
node = {
|
||||
protocol = "socks",
|
||||
address = "127.0.0.1",
|
||||
|
@ -883,6 +886,7 @@ function gen_config(var)
|
|||
local dns_socks_address = var["-dns_socks_address"]
|
||||
local dns_socks_port = var["-dns_socks_port"]
|
||||
local tags = var["-tags"]
|
||||
local no_run = var["-no_run"]
|
||||
|
||||
local dns_domain_rules = {}
|
||||
local dns = nil
|
||||
|
@ -1174,7 +1178,7 @@ function gen_config(var)
|
|||
end
|
||||
end
|
||||
|
||||
local _outbound = gen_outbound(flag, _node, rule_name, { tag = use_proxy and preproxy_tag or nil })
|
||||
local _outbound = gen_outbound(flag, _node, rule_name, { tag = use_proxy and preproxy_tag or nil, run_socks_instance = not no_run })
|
||||
if _outbound then
|
||||
_outbound.tag = _outbound.tag .. ":" .. _node.remarks
|
||||
rule_outboundTag, last_insert_outbound = set_outbound_detour(_node, _outbound, outbounds, rule_name)
|
||||
|
@ -1807,7 +1811,7 @@ function gen_config(var)
|
|||
tag = "block"
|
||||
})
|
||||
for index, value in ipairs(config.outbounds) do
|
||||
if not value["_flag_proxy_tag"] and not value.detour and value["_id"] and value.server and value.server_port then
|
||||
if not value["_flag_proxy_tag"] and not value.detour and value["_id"] and value.server and value.server_port and not no_run then
|
||||
sys.call(string.format("echo '%s' >> %s", value["_id"], api.TMP_PATH .. "/direct_node_list"))
|
||||
end
|
||||
for k, v in pairs(config.outbounds[index]) do
|
||||
|
@ -1990,7 +1994,7 @@ if arg[1] then
|
|||
local func =_G[arg[1]]
|
||||
if func then
|
||||
print(func(api.get_function_args(arg)))
|
||||
if next(geosite_all_tag) or next(geoip_all_tag) then
|
||||
if (next(geosite_all_tag) or next(geoip_all_tag)) and not no_run then
|
||||
convert_geofile()
|
||||
end
|
||||
end
|
||||
|
|
|
@ -57,6 +57,7 @@ function gen_outbound(flag, node, tag, proxy_table)
|
|||
local proxy_tag = nil
|
||||
local fragment = nil
|
||||
local noise = nil
|
||||
local run_socks_instance = true
|
||||
if proxy_table ~= nil and type(proxy_table) == "table" then
|
||||
proxy_tag = proxy_table.tag or nil
|
||||
fragment = proxy_table.fragment or nil
|
||||
|
@ -74,17 +75,19 @@ function gen_outbound(flag, node, tag, proxy_table)
|
|||
if tag and node_id and tag ~= node_id then
|
||||
config_file = string.format("%s_%s_%s_%s.json", flag, tag, node_id, new_port)
|
||||
end
|
||||
sys.call(string.format('/usr/share/%s/app.sh run_socks "%s"> /dev/null',
|
||||
appname,
|
||||
string.format("flag=%s node=%s bind=%s socks_port=%s config_file=%s relay_port=%s",
|
||||
new_port, --flag
|
||||
node_id, --node
|
||||
"127.0.0.1", --bind
|
||||
new_port, --socks port
|
||||
config_file, --config file
|
||||
(proxy_tag and relay_port) and tostring(relay_port) or "" --relay port
|
||||
)
|
||||
))
|
||||
if run_socks_instance then
|
||||
sys.call(string.format('/usr/share/%s/app.sh run_socks "%s"> /dev/null',
|
||||
appname,
|
||||
string.format("flag=%s node=%s bind=%s socks_port=%s config_file=%s relay_port=%s",
|
||||
new_port, --flag
|
||||
node_id, --node
|
||||
"127.0.0.1", --bind
|
||||
new_port, --socks port
|
||||
config_file, --config file
|
||||
(proxy_tag and relay_port) and tostring(relay_port) or "" --relay port
|
||||
)
|
||||
))
|
||||
end
|
||||
node = {}
|
||||
node.protocol = "socks"
|
||||
node.transport = "tcp"
|
||||
|
@ -580,6 +583,7 @@ function gen_config(var)
|
|||
local dns_socks_address = var["-dns_socks_address"]
|
||||
local dns_socks_port = var["-dns_socks_port"]
|
||||
local loglevel = var["-loglevel"] or "warning"
|
||||
local no_run = var["-no_run"]
|
||||
|
||||
local dns_domain_rules = {}
|
||||
local dns = nil
|
||||
|
@ -931,7 +935,8 @@ function gen_config(var)
|
|||
})
|
||||
end
|
||||
local proxy_table = {
|
||||
tag = use_proxy and preproxy_tag or nil
|
||||
tag = use_proxy and preproxy_tag or nil,
|
||||
run_socks_instance = not no_run
|
||||
}
|
||||
if not proxy_table.tag then
|
||||
if xray_settings.fragment == "1" then
|
||||
|
@ -1481,7 +1486,7 @@ function gen_config(var)
|
|||
end
|
||||
|
||||
for index, value in ipairs(config.outbounds) do
|
||||
if not value["_flag_proxy_tag"] and value["_id"] and value.server and value.server_port then
|
||||
if not value["_flag_proxy_tag"] and value["_id"] and value.server and value.server_port and not no_run then
|
||||
sys.call(string.format("echo '%s' >> %s", value["_id"], api.TMP_PATH .. "/direct_node_list"))
|
||||
end
|
||||
for k, v in pairs(config.outbounds[index]) do
|
||||
|
|
|
@ -1520,10 +1520,15 @@ local hysteria2_type = map:get("@global_subscribe[0]", "hysteria2_type") or "sin
|
|||
return false;
|
||||
}
|
||||
|
||||
function exportConfigFile(btn, sid) {
|
||||
window.open('<%=api.url("gen_client_config")%>?id=' + sid, "_blank")
|
||||
}
|
||||
|
||||
//]]></script>
|
||||
<input type="button" class="btn cbi-button cbi-button-apply" value='<%:From Share URL%>' onclick="return fromUrl(this, '<%=self.option%>', '<%=self.value%>')" />
|
||||
<input type="button" class="btn cbi-button cbi-button-apply" value='<%:Build Share URL%>' onclick="return exportUrl(this, '<%=self.option%>', '<%=self.value%>')" />
|
||||
<input type="button" class="btn cbi-button cbi-button-apply" value='<%:Generate QRCode%>' onclick="return genQrcode(this, '<%=self.option%>', '<%=self.value%>')" />
|
||||
<input type="button" class="btn cbi-button cbi-button-apply" value='<%:Export Config File%>' onclick="return exportConfigFile(this, '<%=self.value%>')" />
|
||||
<div id="qrcode_div" style="margin-top: 1rem;display:none">
|
||||
<div id="qrcode"></div>
|
||||
</div>
|
||||
|
|
|
@ -535,6 +535,9 @@ msgstr "导出分享URL"
|
|||
msgid "Generate QRCode"
|
||||
msgstr "生成二维码"
|
||||
|
||||
msgid "Export Config File"
|
||||
msgstr "导出配置文件"
|
||||
|
||||
msgid "Import Finished"
|
||||
msgstr "导入完成:"
|
||||
|
||||
|
|
|
@ -415,7 +415,7 @@ run_ipt2socks() {
|
|||
run_singbox() {
|
||||
local flag type node tcp_redir_port tcp_proxy_way udp_redir_port socks_address socks_port socks_username socks_password http_address http_port http_username http_password
|
||||
local dns_listen_port direct_dns_query_strategy direct_dns_port direct_dns_udp_server direct_dns_tcp_server direct_dns_dot_server remote_dns_protocol remote_dns_udp_server remote_dns_tcp_server remote_dns_doh remote_dns_client_ip remote_fakedns remote_dns_query_strategy dns_cache dns_socks_address dns_socks_port
|
||||
local loglevel log_file config_file server_host server_port
|
||||
local loglevel log_file config_file server_host server_port no_run
|
||||
local _extra_param=""
|
||||
eval_set_val $@
|
||||
[ -z "$type" ] && {
|
||||
|
@ -491,14 +491,15 @@ run_singbox() {
|
|||
esac
|
||||
[ -n "$remote_dns_client_ip" ] && _extra_param="${_extra_param} -remote_dns_client_ip ${remote_dns_client_ip}"
|
||||
[ "$remote_fakedns" = "1" ] && _extra_param="${_extra_param} -remote_dns_fake 1"
|
||||
[ -n "$no_run" ] && _extra_param="${_extra_param} -no_run 1"
|
||||
lua $UTIL_SINGBOX gen_config ${_extra_param} > $config_file
|
||||
ln_run "$(first_type $(config_t_get global_app singbox_file) sing-box)" "sing-box" $log_file run -c "$config_file"
|
||||
[ -n "$no_run" ] || ln_run "$(first_type $(config_t_get global_app singbox_file) sing-box)" "sing-box" $log_file run -c "$config_file"
|
||||
}
|
||||
|
||||
run_xray() {
|
||||
local flag type node tcp_redir_port tcp_proxy_way udp_redir_port socks_address socks_port socks_username socks_password http_address http_port http_username http_password
|
||||
local dns_listen_port direct_dns_query_strategy direct_dns_port direct_dns_udp_server direct_dns_tcp_server remote_dns_udp_server remote_dns_tcp_server remote_dns_doh remote_dns_client_ip remote_fakedns remote_dns_query_strategy dns_cache dns_socks_address dns_socks_port
|
||||
local loglevel log_file config_file server_host server_port
|
||||
local loglevel log_file config_file server_host server_port no_run
|
||||
local _extra_param=""
|
||||
eval_set_val $@
|
||||
[ -z "$type" ] && {
|
||||
|
@ -559,8 +560,9 @@ run_xray() {
|
|||
_extra_param="${_extra_param} -remote_dns_doh_port ${_doh_port} -remote_dns_doh_url ${_doh_url} -remote_dns_doh_host ${_doh_host}"
|
||||
}
|
||||
_extra_param="${_extra_param} -loglevel $loglevel"
|
||||
[ -n "$no_run" ] && _extra_param="${_extra_param} -no_run 1"
|
||||
lua $UTIL_XRAY gen_config ${_extra_param} > $config_file
|
||||
ln_run "$(first_type $(config_t_get global_app ${type}_file) ${type})" ${type} $log_file run -c "$config_file"
|
||||
[ -n "$no_run" ] || ln_run "$(first_type $(config_t_get global_app ${type}_file) ${type})" ${type} $log_file run -c "$config_file"
|
||||
}
|
||||
|
||||
run_dns2socks() {
|
||||
|
@ -601,7 +603,7 @@ run_chinadns_ng() {
|
|||
}
|
||||
|
||||
run_socks() {
|
||||
local flag node bind socks_port config_file http_port http_config_file relay_port log_file
|
||||
local flag node bind socks_port config_file http_port http_config_file relay_port log_file no_run
|
||||
eval_set_val $@
|
||||
[ -n "$config_file" ] && [ -z "$(echo ${config_file} | grep $TMP_PATH)" ] && config_file=$TMP_PATH/$config_file
|
||||
[ -n "$http_port" ] || http_port=0
|
||||
|
@ -614,20 +616,20 @@ run_socks() {
|
|||
local type=$(echo $(config_n_get $node type) | tr 'A-Z' 'a-z')
|
||||
local remarks=$(config_n_get $node remarks)
|
||||
local server_host=$(config_n_get $node address)
|
||||
local port=$(config_n_get $node port)
|
||||
local server_port=$(config_n_get $node port)
|
||||
[ -n "$relay_port" ] && {
|
||||
server_host="127.0.0.1"
|
||||
port=$relay_port
|
||||
server_port=$relay_port
|
||||
}
|
||||
local error_msg tmp
|
||||
|
||||
if [ -n "$server_host" ] && [ -n "$port" ]; then
|
||||
if [ -n "$server_host" ] && [ -n "$server_port" ]; then
|
||||
check_host $server_host
|
||||
[ $? != 0 ] && {
|
||||
echolog " - Socks节点:[$remarks]${server_host} 是非法的服务器地址,无法启动!"
|
||||
return 1
|
||||
}
|
||||
tmp="${server_host}:${port}"
|
||||
tmp="${server_host}:${server_port}"
|
||||
else
|
||||
error_msg="某种原因,此 Socks 服务的相关配置已失联,启动中止!"
|
||||
fi
|
||||
|
@ -676,7 +678,8 @@ run_socks() {
|
|||
config_file=$(echo $config_file | sed "s/SOCKS/HTTP_SOCKS/g")
|
||||
local _args="http_address=$bind http_port=$http_port"
|
||||
}
|
||||
[ -n "$relay_port" ] && _args="${_args} server_host=$server_host server_port=$port"
|
||||
[ -n "$relay_port" ] && _args="${_args} server_host=$server_host server_port=$server_port"
|
||||
[ -n "$no_run" ] && _args="${_args} -no_run 1"
|
||||
run_singbox flag=$flag node=$node socks_address=$bind socks_port=$socks_port config_file=$config_file log_file=$log_file ${_args}
|
||||
;;
|
||||
xray)
|
||||
|
@ -685,24 +688,25 @@ run_socks() {
|
|||
config_file=$(echo $config_file | sed "s/SOCKS/HTTP_SOCKS/g")
|
||||
local _args="http_address=$bind http_port=$http_port"
|
||||
}
|
||||
[ -n "$relay_port" ] && _args="${_args} server_host=$server_host server_port=$port"
|
||||
[ -n "$relay_port" ] && _args="${_args} server_host=$server_host server_port=$server_port"
|
||||
[ -n "$no_run" ] && _args="${_args} -no_run 1"
|
||||
run_xray flag=$flag node=$node socks_address=$bind socks_port=$socks_port config_file=$config_file log_file=$log_file ${_args}
|
||||
;;
|
||||
trojan*)
|
||||
lua $UTIL_TROJAN gen_config -node $node -run_type client -local_addr $bind -local_port $socks_port -server_host $server_host -server_port $port > $config_file
|
||||
ln_run "$(first_type ${type})" "${type}" $log_file -c "$config_file"
|
||||
lua $UTIL_TROJAN gen_config -node $node -run_type client -local_addr $bind -local_port $socks_port -server_host $server_host -server_port $server_port > $config_file
|
||||
[ -n "$no_run" ] || ln_run "$(first_type ${type})" "${type}" $log_file -c "$config_file"
|
||||
;;
|
||||
naiveproxy)
|
||||
lua $UTIL_NAIVE gen_config -node $node -run_type socks -local_addr $bind -local_port $socks_port -server_host $server_host -server_port $port > $config_file
|
||||
ln_run "$(first_type naive)" naive $log_file "$config_file"
|
||||
lua $UTIL_NAIVE gen_config -node $node -run_type socks -local_addr $bind -local_port $socks_port -server_host $server_host -server_port $server_port > $config_file
|
||||
[ -n "$no_run" ] || ln_run "$(first_type naive)" naive $log_file "$config_file"
|
||||
;;
|
||||
ssr)
|
||||
lua $UTIL_SS gen_config -node $node -local_addr $bind -local_port $socks_port -server_host $server_host -server_port $port > $config_file
|
||||
ln_run "$(first_type ssr-local)" "ssr-local" $log_file -c "$config_file" -v -u
|
||||
lua $UTIL_SS gen_config -node $node -local_addr $bind -local_port $socks_port -server_host $server_host -server_port $server_port > $config_file
|
||||
[ -n "$no_run" ] || ln_run "$(first_type ssr-local)" "ssr-local" $log_file -c "$config_file" -v -u
|
||||
;;
|
||||
ss)
|
||||
lua $UTIL_SS gen_config -node $node -local_addr $bind -local_port $socks_port -server_host $server_host -server_port $port -mode tcp_and_udp > $config_file
|
||||
ln_run "$(first_type ss-local)" "ss-local" $log_file -c "$config_file" -v
|
||||
lua $UTIL_SS gen_config -node $node -local_addr $bind -local_port $socks_port -server_host $server_host -server_port $server_port -mode tcp_and_udp > $config_file
|
||||
[ -n "$no_run" ] || ln_run "$(first_type ss-local)" "ss-local" $log_file -c "$config_file" -v
|
||||
;;
|
||||
ss-rust)
|
||||
[ "$http_port" != "0" ] && {
|
||||
|
@ -710,8 +714,8 @@ run_socks() {
|
|||
config_file=$(echo $config_file | sed "s/SOCKS/HTTP_SOCKS/g")
|
||||
local _extra_param="-local_http_address $bind -local_http_port $http_port"
|
||||
}
|
||||
lua $UTIL_SS gen_config -node $node -local_socks_address $bind -local_socks_port $socks_port -server_host $server_host -server_port $port ${_extra_param} > $config_file
|
||||
ln_run "$(first_type sslocal)" "sslocal" $log_file -c "$config_file" -v
|
||||
lua $UTIL_SS gen_config -node $node -local_socks_address $bind -local_socks_port $socks_port -server_host $server_host -server_port $server_port ${_extra_param} > $config_file
|
||||
[ -n "$no_run" ] || ln_run "$(first_type sslocal)" "sslocal" $log_file -c "$config_file" -v
|
||||
;;
|
||||
hysteria2)
|
||||
[ "$http_port" != "0" ] && {
|
||||
|
@ -719,12 +723,12 @@ run_socks() {
|
|||
config_file=$(echo $config_file | sed "s/SOCKS/HTTP_SOCKS/g")
|
||||
local _extra_param="-local_http_address $bind -local_http_port $http_port"
|
||||
}
|
||||
lua $UTIL_HYSTERIA2 gen_config -node $node -local_socks_address $bind -local_socks_port $socks_port -server_host $server_host -server_port $port ${_extra_param} > $config_file
|
||||
ln_run "$(first_type $(config_t_get global_app hysteria_file))" "hysteria" $log_file -c "$config_file" client
|
||||
lua $UTIL_HYSTERIA2 gen_config -node $node -local_socks_address $bind -local_socks_port $socks_port -server_host $server_host -server_port $server_port ${_extra_param} > $config_file
|
||||
[ -n "$no_run" ] || ln_run "$(first_type $(config_t_get global_app hysteria_file))" "hysteria" $log_file -c "$config_file" client
|
||||
;;
|
||||
tuic)
|
||||
lua $UTIL_TUIC gen_config -node $node -local_addr $bind -local_port $socks_port -server_host $server_host -server_port $port > $config_file
|
||||
ln_run "$(first_type tuic-client)" "tuic-client" $log_file -c "$config_file"
|
||||
lua $UTIL_TUIC gen_config -node $node -local_addr $bind -local_port $socks_port -server_host $server_host -server_port $server_port > $config_file
|
||||
[ -n "$no_run" ] || ln_run "$(first_type tuic-client)" "tuic-client" $log_file -c "$config_file"
|
||||
;;
|
||||
esac
|
||||
|
||||
|
@ -736,18 +740,18 @@ run_socks() {
|
|||
if [ -n "$bin" ]; then
|
||||
type="sing-box"
|
||||
lua $UTIL_SINGBOX gen_proto_config -local_http_address $bind -local_http_port $http_port -server_proto socks -server_address "127.0.0.1" -server_port $socks_port -server_username $_username -server_password $_password > $http_config_file
|
||||
ln_run "$bin" ${type} /dev/null run -c "$http_config_file"
|
||||
[ -n "$no_run" ] || ln_run "$bin" ${type} /dev/null run -c "$http_config_file"
|
||||
else
|
||||
bin=$(first_type $(config_t_get global_app xray_file) xray)
|
||||
[ -n "$bin" ] && type="xray"
|
||||
[ -z "$type" ] && return 1
|
||||
lua $UTIL_XRAY gen_proto_config local_http_address $bind -local_http_port $http_port -server_proto socks -server_address "127.0.0.1" -server_port $socks_port -server_username $_username -server_password $_password > $http_config_file
|
||||
ln_run "$bin" ${type} /dev/null run -c "$http_config_file"
|
||||
[ -n "$no_run" ] || ln_run "$bin" ${type} /dev/null run -c "$http_config_file"
|
||||
fi
|
||||
}
|
||||
unset http_flag
|
||||
|
||||
[ "${server_host}" != "127.0.0.1" ] && [ "$type" != "sing-box" ] && [ "$type" != "xray" ] && echo "${node}" >> $TMP_PATH/direct_node_list
|
||||
[ -z "$no_run" ] && [ "${server_host}" != "127.0.0.1" ] && [ "$type" != "sing-box" ] && [ "$type" != "xray" ] && echo "${node}" >> $TMP_PATH/direct_node_list
|
||||
}
|
||||
|
||||
run_redir() {
|
||||
|
|
Loading…
Reference in New Issue