diff --git a/package/lienol/luci-app-passwall/Makefile b/package/lienol/luci-app-passwall/Makefile index 1ea690e96f..5b618c2507 100644 --- a/package/lienol/luci-app-passwall/Makefile +++ b/package/lienol/luci-app-passwall/Makefile @@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-passwall PKG_VERSION:=3.3 -PKG_RELEASE:=36-20200124 +PKG_RELEASE:=38-20200128 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) diff --git a/package/lienol/luci-app-passwall/luasrc/model/cbi/passwall/global.lua b/package/lienol/luci-app-passwall/luasrc/model/cbi/passwall/global.lua index 18a5ec3024..c9d988a6ea 100644 --- a/package/lienol/luci-app-passwall/luasrc/model/cbi/passwall/global.lua +++ b/package/lienol/luci-app-passwall/luasrc/model/cbi/passwall/global.lua @@ -148,13 +148,14 @@ o:value("208.67.222.222,208.67.220.220", o:depends("dns_mode", "chinadns-ng") ---- Use TCP Node Resolve DNS -if is_installed("pdnsd") or is_installed("pdnsd-alt") or is_finded("pdnsd") then +--[[ if is_installed("pdnsd") or is_installed("pdnsd-alt") or is_finded("pdnsd") then o = s:option(Flag, "use_tcp_node_resolve_dns", translate("Use TCP Node Resolve DNS"), translate("If checked, DNS is resolved using the TCP node.")) o.default = 1 o:depends("dns_mode", "pdnsd") end +--]] o = s:option(Value, "dns2socks_forward", translate("DNS Address")) o.default = "8.8.4.4" diff --git a/package/lienol/luci-app-passwall/luasrc/view/passwall/global/status.htm b/package/lienol/luci-app-passwall/luasrc/view/passwall/global/status.htm index e5e1972377..e27e2486e2 100644 --- a/package/lienol/luci-app-passwall/luasrc/view/passwall/global/status.htm +++ b/package/lienol/luci-app-passwall/luasrc/view/passwall/global/status.htm @@ -142,7 +142,7 @@ https://github.com/pure-css/pure/blob/master/LICENSE.md
-

SOCKS5
<%:NOT RUNNING%>

+

Socks5
<%:NOT RUNNING%>

@@ -165,7 +165,6 @@ https://github.com/pure-css/pure/blob/master/LICENSE.md
- <% if ipkg.installed("haproxy") or is_finded("haproxy*") then %>
@@ -179,12 +178,10 @@ https://github.com/pure-css/pure/blob/master/LICENSE.md
- <% end %> - <% if ipkg.installed("kcptun") or is_finded("kcptun*") then %>
-

KcpTun
<%:NOT RUNNING%>

+

Kcptun
<%:NOT RUNNING%>

@@ -194,7 +191,6 @@ https://github.com/pure-css/pure/blob/master/LICENSE.md
- <% end %>
@@ -316,7 +312,7 @@ https://github.com/pure-css/pure/blob/master/LICENSE.md if (socks5_node_num >= 1) { var status_socks5_node = document.getElementById('status_socks5_node'); if (status_socks5_node) { - var text = 'SOCKS5
'; + var text = 'Socks5
'; if (socks5_node_num == 1) { if (data["socks5_node1_status"]) text += '<%:RUNNING%>'; @@ -349,9 +345,9 @@ https://github.com/pure-css/pure/blob/master/LICENSE.md } if (status_kcptun) { if (data.kcptun_status) { - status_kcptun.innerHTML = 'KcpTun
<%:RUNNING%>' + status_kcptun.innerHTML = 'Kcptun
<%:RUNNING%>' } else { - status_kcptun.innerHTML = 'KcpTun
<%:NOT RUNNING%>' + status_kcptun.innerHTML = 'Kcptun
<%:NOT RUNNING%>' } } } diff --git a/package/lienol/luci-app-passwall/root/usr/share/passwall/app.sh b/package/lienol/luci-app-passwall/root/usr/share/passwall/app.sh index 122866fe59..ea7f357124 100755 --- a/package/lienol/luci-app-passwall/root/usr/share/passwall/app.sh +++ b/package/lienol/luci-app-passwall/root/usr/share/passwall/app.sh @@ -527,46 +527,30 @@ gen_start_config() { kcptun_use=$(config_n_get $node use_kcp 0) kcptun_server_host=$(config_n_get $node kcp_server) kcptun_port=$(config_n_get $node kcp_port) - kcptun_config=$(config_n_get $node kcp_opts) - kcptun_path="" + kcptun_config="$(config_n_get $node kcp_opts)" + kcptun_bin=$(config_t_get global_app kcptun_client_file $(find_bin kcptun-client)) lbenabled=$(config_t_get global_haproxy balancing_enable 0) + if [ -z "$kcptun_bin" ]; then + echolog "【未安装Kcptun主程序,请到自动更新下载Kcptun】,跳过~" + force_stop + fi if [ "$kcptun_use" == "1" ] && ([ -z "$kcptun_port" ] || [ -z "$kcptun_config" ]); then - echolog "【检测到启用KCP,但未配置KCP参数】,跳过~" + echolog "【未配置Kcptun参数】,跳过~" + force_stop fi - if [ "$kcptun_use" == "1" -a -n "$kcptun_port" -a -n "$kcptun_config" -a "$lbenabled" == "1" ]; then - echolog "【检测到启用KCP,但KCP与负载均衡二者不能同时开启】,跳过~" - fi - - if [ "$kcptun_use" == "1" ]; then - if [ -f "$(config_t_get global_kcptun kcptun_client_file)" ]; then - kcptun_path=$(config_t_get global_kcptun kcptun_client_file) - else - temp=$(find_bin kcptun_client) - [ -n "$temp" ] && kcptun_path=$temp - fi - fi - - if [ "$kcptun_use" == "1" -a -z "$kcptun_path" ] && ([ -n "$kcptun_port" ] || [ -n "$kcptun_config" ]); then - echolog "【检测到启用KCP,但未安装KCP主程序,请自行到自动更新下载KCP】,跳过~" - fi - - if [ "$kcptun_use" == "1" -a -n "$kcptun_port" -a -n "$kcptun_config" -a "$lbenabled" == "0" -a -n "$kcptun_path" ]; then + if [ "$kcptun_use" == "1" -a -n "$kcptun_port" -a -n "$kcptun_config" -a "$lbenabled" == "0" -a -f "$kcptun_bin" ]; then local run_kcptun_ip=$server_ip if [ -n "$kcptun_server_host" ]; then kcptun_use_ipv6=$(config_n_get $node kcp_use_ipv6) network_type="ipv4" [ "$kcptun_use_ipv6" == "1" ] && network_type="ipv6" kcptun_server_ip=$(get_host_ip $network_type $kcptun_server_host) - TCP_NODE1_IP=$kcptun_server_ip + eval TCP_NODE${5}_IP=$kcptun_server_ip run_kcptun_ip=$kcptun_server_ip - echolog "KCP节点IP地址:$kcptun_server_ip" - fi - if [ -z "$kcptun_path" ]; then - echolog "找不到Kcptun客户端主程序,无法启用!" - else - $kcptun_bin --log $CONFIG_PATH/kcptun -l 0.0.0.0:$KCPTUN_REDIR_PORT -r $run_kcptun_ip:$kcptun_port "$kcptun_config" >/dev/null 2>&1 & - echolog "运行Kcptun..." + echolog "Kcptun节点IP地址:$kcptun_server_ip" fi + KCPTUN_REDIR_PORT=$(get_not_exists_port_after $KCPTUN_REDIR_PORT udp) + $kcptun_bin --log $CONFIG_PATH/kcptun_${5}.log -l 0.0.0.0:$KCPTUN_REDIR_PORT -r $run_kcptun_ip:$kcptun_port $kcptun_config >/dev/null 2>&1 & fi if [ "$type" == "ssr" ]; then @@ -739,6 +723,7 @@ start_dns() { pdnsd) pdnsd_bin=$(find_bin pdnsd) [ -n "$pdnsd_bin" ] && { + use_tcp_node_resolve_dns=1 gen_pdnsd_config $DNS_PORT "cache" DNS_FORWARD=$(echo $DNS_FORWARD | sed 's/,/ /g') nohup $pdnsd_bin --daemon -c $pdnsd_dir/pdnsd.conf -d >/dev/null 2>&1 & @@ -1154,18 +1139,22 @@ start() { } stop() { - while [ -f "$LOCK_FILE" ]; do - sleep 1s + failcount=1 + while [ "$failcount" -le 10 ]; do + if [ -f "$LOCK_FILE" ]; then + let "failcount++" + sleep 1s + [ "$failcount" -ge 10 ] && rm -f "$LOCK_FILE" + else + break + fi done clean_log source $APP_PATH/iptables.sh stop kill_all brook dns2socks haproxy chinadns-ng ipt2socks v2ray-plugin ps -w | grep -E "$CONFIG_TCP_FILE|$CONFIG_UDP_FILE|$CONFIG_SOCKS5_FILE" | grep -v "grep" | awk '{print $1}' | xargs kill -9 >/dev/null 2>&1 & ps -w | grep -E "$CONFIG_PATH" | grep -v "grep" | awk '{print $1}' | xargs kill -9 >/dev/null 2>&1 & - ps -w | grep "kcptun_client" | grep "$KCPTUN_REDIR_PORT" | grep -v "grep" | awk '{print $1}' | xargs kill -9 >/dev/null 2>&1 & - rm -rf /var/pdnsd/pdnsd.cache - rm -rf $TMP_DNSMASQ_PATH - rm -rf $CONFIG_PATH + rm -rf $TMP_DNSMASQ_PATH $CONFIG_PATH stop_dnsmasq stop_crontab echolog "关闭相关程序,清理相关文件和缓存完成。" diff --git a/package/lienol/luci-app-passwall/root/usr/share/passwall/monitor.sh b/package/lienol/luci-app-passwall/root/usr/share/passwall/monitor.sh index f767d9fa92..7f14992734 100755 --- a/package/lienol/luci-app-passwall/root/usr/share/passwall/monitor.sh +++ b/package/lienol/luci-app-passwall/root/usr/share/passwall/monitor.sh @@ -35,13 +35,12 @@ use_haproxy=$(config_t_get global_haproxy balancing_enable 0) #tcp for i in $(seq 1 $TCP_NODE_NUM); do - eval temp_server=\$TCP_NODE$i - if [ "$temp_server" != "nil" ]; then + eval tmp_node=\$TCP_NODE$i + if [ "$tmp_node" != "nil" ]; then #kcptun - use_kcp=$(config_n_get $temp_server use_kcp 0) + use_kcp=$(config_n_get $tmp_node use_kcp 0) if [ $use_kcp -gt 0 ]; then - kcp_port=$(config_t_get global_proxy kcptun_port 11183) - icount=$(ps -w | grep kcptun-client | grep $kcp_port | grep -v grep | wc -l) + icount=$(ps -w | grep kcptun-client | grep $CONFIG_PATH/kcptun_${i} | grep -v grep | wc -l) if [ $icount = 0 ]; then /etc/init.d/passwall restart exit 0 @@ -59,9 +58,9 @@ done #udp for i in $(seq 1 $UDP_NODE_NUM); do - eval temp_server=\$UDP_NODE$i - if [ "$temp_server" != "nil" ]; then - [ "$temp_server" == "default" ] && temp_server=$TCP_NODE1 + eval tmp_node=\$UDP_NODE$i + if [ "$tmp_node" != "nil" ]; then + [ "$tmp_node" == "default" ] && tmp_node=$TCP_NODE1 [ -f "/var/etc/passwall/port/UDP_$i" ] && listen_port=$(echo -n `cat /var/etc/passwall/port/UDP_$i`) icount=$(ps -w | grep -v grep | grep -i -E "${CONFIG}/UDP_${i}|brook tproxy -l 0.0.0.0:${listen_port}|ipt2socks -U -l ${listen_port}" | wc -l) if [ $icount = 0 ]; then @@ -73,8 +72,8 @@ done #socks5 for i in $(seq 1 $SOCKS5_NODE_NUM); do - eval temp_server=\$SOCKS5_NODE$i - if [ "$temp_server" != "nil" ]; then + eval tmp_node=\$SOCKS5_NODE$i + if [ "$tmp_node" != "nil" ]; then [ -f "/var/etc/passwall/port/SOCKS5_$i" ] && listen_port=$(echo -n `cat /var/etc/passwall/port/SOCKS5_$i`) icount=$(ps -w | grep -v grep | grep -i -E "${CONFIG}/SOCKS5_${i}|brook client -l 0.0.0.0:${listen_port}" | wc -l) if [ $icount = 0 ]; then