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