From 1e4280350f8bb66d087d9728efacd5e016a97398 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Fri, 13 Nov 2020 19:20:20 +0800 Subject: [PATCH] luci-app-ssr-plus: sync with upstream source --- .../root/etc/init.d/shadowsocksr | 14 ++---- .../root/etc/ssr/china_ssr.txt | 2 - .../root/etc/ssr/gfw_list.conf | 40 ++++++++++++++++ .../luci-app-ssr-plus/root/usr/bin/ssr-rules | 48 +++++-------------- .../root/usr/share/shadowsocksr/chinaipset.sh | 6 +-- .../root/usr/share/shadowsocksr/gfw2ipset.sh | 21 +++++--- 6 files changed, 72 insertions(+), 59 deletions(-) diff --git a/package/lean/luci-app-ssr-plus/root/etc/init.d/shadowsocksr b/package/lean/luci-app-ssr-plus/root/etc/init.d/shadowsocksr index 9623658e40..880b9612dc 100755 --- a/package/lean/luci-app-ssr-plus/root/etc/init.d/shadowsocksr +++ b/package/lean/luci-app-ssr-plus/root/etc/init.d/shadowsocksr @@ -30,10 +30,10 @@ switch_enable=0 switch_server=$1 CRON_FILE=/etc/crontabs/root threads=1 -run_mode="router" GLOBAL_SERVER="nil" NETFLIX_SERVER="nil" UDP_RELAY_SERVER="nil" +run_mode="router" kcp_server="" uci_get_by_name() { @@ -663,7 +663,7 @@ start_rules() { tun | naiveproxy) local ARG_UDP="";; *) local ARG_UDP="-U";; esac - local udp_server=$(uci_get_by_name $UDP_RELAY_SERVER server) + local udp_server=$(get_host_ip $(uci_get_by_name $UDP_RELAY_SERVER server)) local udp_local_port=1357 fi fi @@ -720,7 +720,7 @@ start_rules() { start() { [ -f "$LOCK_FILE" ] && exit 2 touch "$LOCK_FILE" - echo "-----------start-----------" >>/tmp/ssrplus.log + echo "----------start------------" >>/tmp/ssrplus.log mkdir -p /tmp/dnsmasq.d /tmp/dnsmasq.ssr /var/run /var/etc cat <<-EOF >/tmp/dnsmasq.d/dnsmasq-ssr.conf conf-dir=/tmp/dnsmasq.ssr @@ -732,12 +732,6 @@ start() { start_switch start_dns add_cron - if [ "$run_mode" == "oversea" ]; then - cp -rf /etc/ssr/oversea_list.conf /tmp/dnsmasq.ssr/ - else - cp -rf /etc/ssr/gfw_list.conf /tmp/dnsmasq.ssr/ - cp -rf /etc/ssr/gfw_base.conf /tmp/dnsmasq.ssr/ - fi /usr/share/shadowsocksr/gfw2ipset.sh $switch_server else /usr/bin/ssr-rules -f @@ -788,7 +782,7 @@ stop() { ps -w | grep -v "grep" | grep "sleep $(uci_get_by_type global switch_time)s" | awk '{print $1}' | xargs kill -9 >/dev/null 2>&1 & ps -w | grep -v "grep" | grep "sleep 30s" | awk '{print $1}' | xargs kill -9 >/dev/null 2>&1 & killall -q -9 ss-redir ss-local obfs-local ssr-redir ssr-local ssr-server v2ray v2ray-plugin trojan naive microsocks ipt2socks dns2socks redsocks2 pdnsd - rm -f /var/lock/ssr-chinaipset.lock /var/lock/ssr-monitor.lock + rm -f /var/lock/ssr-monitor.lock if [ -f "/tmp/dnsmasq.d/dnsmasq-ssr.conf" ]; then rm -rf /tmp/dnsmasq.d/dnsmasq-ssr.conf /tmp/dnsmasq.ssr /tmp/dnsmasq.oversea /etc/init.d/dnsmasq restart >/dev/null 2>&1 diff --git a/package/lean/luci-app-ssr-plus/root/etc/ssr/china_ssr.txt b/package/lean/luci-app-ssr-plus/root/etc/ssr/china_ssr.txt index b85f568ab7..8f8de83db5 100644 --- a/package/lean/luci-app-ssr-plus/root/etc/ssr/china_ssr.txt +++ b/package/lean/luci-app-ssr-plus/root/etc/ssr/china_ssr.txt @@ -2076,7 +2076,6 @@ 103.18.208.0/22 103.18.212.0/22 103.18.224.0/22 -103.19.0.0/22 103.19.12.0/22 103.19.40.0/22 103.19.44.0/22 @@ -3395,7 +3394,6 @@ 103.93.28.0/22 103.93.76.0/22 103.93.84.0/22 -103.93.121.0/24 103.93.152.0/22 103.93.180.0/22 103.93.204.0/22 diff --git a/package/lean/luci-app-ssr-plus/root/etc/ssr/gfw_list.conf b/package/lean/luci-app-ssr-plus/root/etc/ssr/gfw_list.conf index da57e01fbc..3eae325c90 100644 --- a/package/lean/luci-app-ssr-plus/root/etc/ssr/gfw_list.conf +++ b/package/lean/luci-app-ssr-plus/root/etc/ssr/gfw_list.conf @@ -14376,6 +14376,8 @@ server=/park-now.com/127.0.0.1#5335 ipset=/park-now.com/gfwlist server=/parkinfo.com/127.0.0.1#5335 ipset=/parkinfo.com/gfwlist +server=/parler.com/127.0.0.1#5335 +ipset=/parler.com/gfwlist server=/parse.com/127.0.0.1#5335 ipset=/parse.com/gfwlist server=/parstream.com/127.0.0.1#5335 @@ -15442,6 +15444,40 @@ server=/realamericanstories.org/127.0.0.1#5335 ipset=/realamericanstories.org/gfwlist server=/realamericanstories.tv/127.0.0.1#5335 ipset=/realamericanstories.tv/gfwlist +server=/realclear.com/127.0.0.1#5335 +ipset=/realclear.com/gfwlist +server=/realclearbooks.com/127.0.0.1#5335 +ipset=/realclearbooks.com/gfwlist +server=/realcleardefense.com/127.0.0.1#5335 +ipset=/realcleardefense.com/gfwlist +server=/realcleareducation.com/127.0.0.1#5335 +ipset=/realcleareducation.com/gfwlist +server=/realclearenergy.org/127.0.0.1#5335 +ipset=/realclearenergy.org/gfwlist +server=/realclearfoundation.org/127.0.0.1#5335 +ipset=/realclearfoundation.org/gfwlist +server=/realclearhealth.com/127.0.0.1#5335 +ipset=/realclearhealth.com/gfwlist +server=/realclearhistory.com/127.0.0.1#5335 +ipset=/realclearhistory.com/gfwlist +server=/realclearinvestigations.com/127.0.0.1#5335 +ipset=/realclearinvestigations.com/gfwlist +server=/realclearlife.com/127.0.0.1#5335 +ipset=/realclearlife.com/gfwlist +server=/realclearmarkets.com/127.0.0.1#5335 +ipset=/realclearmarkets.com/gfwlist +server=/realclearpolicy.com/127.0.0.1#5335 +ipset=/realclearpolicy.com/gfwlist +server=/realclearpolitics.com/127.0.0.1#5335 +ipset=/realclearpolitics.com/gfwlist +server=/realclearpublicaffairs.com/127.0.0.1#5335 +ipset=/realclearpublicaffairs.com/gfwlist +server=/realclearreligion.org/127.0.0.1#5335 +ipset=/realclearreligion.org/gfwlist +server=/realclearscience.com/127.0.0.1#5335 +ipset=/realclearscience.com/gfwlist +server=/realclearworld.com/127.0.0.1#5335 +ipset=/realclearworld.com/gfwlist server=/realitykings.com/127.0.0.1#5335 ipset=/realitykings.com/gfwlist server=/realmilwaukeenow.com/127.0.0.1#5335 @@ -17082,6 +17118,8 @@ server=/thefind.com/127.0.0.1#5335 ipset=/thefind.com/gfwlist server=/thefoxnation.com/127.0.0.1#5335 ipset=/thefoxnation.com/gfwlist +server=/thegatewaypundit.com/127.0.0.1#5335 +ipset=/thegatewaypundit.com/gfwlist server=/thegeorgiascene.com/127.0.0.1#5335 ipset=/thegeorgiascene.com/gfwlist server=/thegooglestore.com/127.0.0.1#5335 @@ -19314,6 +19352,8 @@ server=/xn--kput3imi374g.xn--hxt814e/127.0.0.1#5335 ipset=/xn--kput3imi374g.xn--hxt814e/gfwlist server=/xn--mts47c3w9b1qr.net/127.0.0.1#5335 ipset=/xn--mts47c3w9b1qr.net/gfwlist +server=/xn--ngstr-lra8j.com/127.0.0.1#5335 +ipset=/xn--ngstr-lra8j.com/gfwlist server=/xn--p8j9a0d9c9a.xn--q9jyb4c/127.0.0.1#5335 ipset=/xn--p8j9a0d9c9a.xn--q9jyb4c/gfwlist server=/xn--q41am8x.com/127.0.0.1#5335 diff --git a/package/lean/luci-app-ssr-plus/root/usr/bin/ssr-rules b/package/lean/luci-app-ssr-plus/root/usr/bin/ssr-rules index 2219455be3..8cd67218d4 100755 --- a/package/lean/luci-app-ssr-plus/root/usr/bin/ssr-rules +++ b/package/lean/luci-app-ssr-plus/root/usr/bin/ssr-rules @@ -81,19 +81,19 @@ flush_r() { } ipset_r() { - ipset -N gmlan hash:net 2>/dev/null - for ip in $LAN_GM_IP; do ipset -! add gmlan $ip; done + [ -f "$IGNORE_LIST" ] && /usr/share/shadowsocksr/chinaipset.sh $IGNORE_LIST $IPT -N SS_SPEC_WAN_AC $IPT -I SS_SPEC_WAN_AC -p tcp ! --dport 53 -d $server -j RETURN + ipset -N gmlan hash:net 2>/dev/null + for ip in $LAN_GM_IP; do ipset -! add gmlan $ip; done case "$RUNMODE" in router) - set_china_ip ipset -! -R <<-EOF || return 1 create ss_spec_wan_ac hash:net - $(gen_iplist | sed -e "s/^/add ss_spec_wan_ac /") + $(gen_spec_iplist | sed -e "s/^/add ss_spec_wan_ac /") EOF - ipset -N gfwlist hash:net 2>/dev/null $IPT -A SS_SPEC_WAN_AC -m set --match-set ss_spec_wan_ac dst -j RETURN + $IPT -A SS_SPEC_WAN_AC -m set --match-set gmlan src -m set ! --match-set china dst -j SS_SPEC_WAN_FW $IPT -A SS_SPEC_WAN_AC -m set --match-set china dst -j RETURN $IPT -A SS_SPEC_WAN_AC -j SS_SPEC_WAN_FW ;; @@ -105,8 +105,8 @@ ipset_r() { ;; oversea) ipset -N oversea hash:net 2>/dev/null - ipset -N gmlan hash:net 2>/dev/null - for ip in $LAN_GM_IP; do ipset -! add gmlan $ip; done + $IPT -I SS_SPEC_WAN_AC -m set --match-set oversea dst -j SS_SPEC_WAN_FW + $IPT -A SS_SPEC_WAN_AC -m set --match-set gmlan src -j SS_SPEC_WAN_FW $IPT -A SS_SPEC_WAN_AC -m set --match-set china dst -j SS_SPEC_WAN_FW ;; all) @@ -224,7 +224,8 @@ tp_rule() { $ipt -A SS_SPEC_TPROXY -p udp -d 192.168.0.0/16 -j RETURN $ipt -A SS_SPEC_TPROXY -p udp -d 224.0.0.0/4 -j RETURN $ipt -A SS_SPEC_TPROXY -p udp -d 240.0.0.0/4 -j RETURN - $ipt -A SS_SPEC_TPROXY -p udp ! --dport 53 -d $server -j RETURN + $ipt -A SS_SPEC_TPROXY -p udp ! --dport 53 -d $SERVER -j RETURN + [ "$server" != "$SERVER" ] && ipset -! add whitelist $SERVER $ipt -A SS_SPEC_TPROXY -p udp -m set --match-set bplan src -j RETURN $ipt -A SS_SPEC_TPROXY -p udp $PROXY_PORTS -m set --match-set fplan src \ -j TPROXY --on-port "$LOCAL_PORT" --tproxy-mark 0x01/0x01 @@ -263,32 +264,6 @@ get_wan_ip() { EOF } -gen_iplist() { - cat <<-EOF - 0.0.0.0/8 - 10.0.0.0/8 - 100.64.0.0/10 - 127.0.0.0/8 - 169.254.0.0/16 - 172.16.0.0/12 - 192.0.0.0/24 - 192.0.2.0/24 - 192.88.99.0/24 - 192.168.0.0/16 - 198.18.0.0/15 - 198.51.100.0/24 - 203.0.113.0/24 - 224.0.0.0/4 - 240.0.0.0/4 - 255.255.255.255 - $(get_wan_ip) - EOF -} - -set_china_ip() { - [ -f "$IGNORE_LIST" ] && /usr/share/shadowsocksr/chinaipset.sh $IGNORE_LIST -} - gen_spec_iplist() { cat <<-EOF 0.0.0.0/8 @@ -430,5 +405,6 @@ fi esac flush_r && fw_rule && ipset_r && ac_rule && tp_rule && gen_include -[ "$?" == 0 ] || loger 3 "Start failed!" -exit $? +RET=$? +[ "$RET" = 0 ] || loger 3 "Start failed!" +exit $RET diff --git a/package/lean/luci-app-ssr-plus/root/usr/share/shadowsocksr/chinaipset.sh b/package/lean/luci-app-ssr-plus/root/usr/share/shadowsocksr/chinaipset.sh index 751678b7f2..dc27a126c7 100755 --- a/package/lean/luci-app-ssr-plus/root/usr/share/shadowsocksr/chinaipset.sh +++ b/package/lean/luci-app-ssr-plus/root/usr/share/shadowsocksr/chinaipset.sh @@ -1,11 +1,7 @@ #!/bin/sh -LOCK_FILE="/var/lock/ssr-chinaipset.lock" -[ -f "$LOCK_FILE" ] && exit 2 [ -f "$1" ] && china_ip=$1 -touch "$LOCK_FILE" ipset -! flush china 2>/dev/null -ipset -! -R <<-EOF || rm -f $LOCK_FILE && exit 1 +ipset -! -R <<-EOF || exit 1 create china hash:net $(cat ${china_ip:=/etc/ssr/china_ssr.txt} | sed -e "s/^/add china /") EOF -rm -f $LOCK_FILE diff --git a/package/lean/luci-app-ssr-plus/root/usr/share/shadowsocksr/gfw2ipset.sh b/package/lean/luci-app-ssr-plus/root/usr/share/shadowsocksr/gfw2ipset.sh index df2abdf158..1468561d5c 100755 --- a/package/lean/luci-app-ssr-plus/root/usr/share/shadowsocksr/gfw2ipset.sh +++ b/package/lean/luci-app-ssr-plus/root/usr/share/shadowsocksr/gfw2ipset.sh @@ -10,16 +10,25 @@ if [ -z "$switch_server" ]; then else GLOBAL_SERVER=$switch_server fi + +mkdir -p /tmp/dnsmasq.ssr +if [ "$(uci_get_by_type global run_mode router)" == "oversea" ]; then + cp -rf /etc/ssr/oversea_list.conf /tmp/dnsmasq.ssr/ +else + cp -rf /etc/ssr/gfw_list.conf /tmp/dnsmasq.ssr/ + cp -rf /etc/ssr/gfw_base.conf /tmp/dnsmasq.ssr/ +fi + NETFLIX_SERVER=$(uci_get_by_type global netflix_server nil) [ "$NETFLIX_SERVER" == "same" ] && NETFLIX_SERVER=$GLOBAL_SERVER if [ "$NETFLIX_SERVER" != "nil" ]; then netflix() { + awk '!/^$/&&!/^#/{printf("ipset=/%s/'"netflix"'\n",$0)}' /etc/ssr/netflix.list >/tmp/dnsmasq.ssr/netflix_forward.conf + awk '!/^$/&&!/^#/{printf("server=/%s/'"127.0.0.1#$1"'\n",$0)}' /etc/ssr/netflix.list >>/tmp/dnsmasq.ssr/netflix_forward.conf if [ -f "/tmp/dnsmasq.ssr/gfw_list.conf" ]; then for line in $(cat /etc/ssr/netflix.list); do sed -i "/$line/d" /tmp/dnsmasq.ssr/gfw_list.conf; done for line in $(cat /etc/ssr/netflix.list); do sed -i "/$line/d" /tmp/dnsmasq.ssr/gfw_base.conf; done fi - awk '!/^$/&&!/^#/{printf("ipset=/%s/'"netflix"'\n",$0)}' /etc/ssr/netflix.list >/tmp/dnsmasq.ssr/netflix_forward.conf - awk '!/^$/&&!/^#/{printf("server=/%s/'"127.0.0.1#$1"'\n",$0)}' /etc/ssr/netflix.list >>/tmp/dnsmasq.ssr/netflix_forward.conf } if [ "$NETFLIX_SERVER" != "$GLOBAL_SERVER" ]; then netflix 5555 @@ -29,16 +38,16 @@ if [ "$NETFLIX_SERVER" != "nil" ]; then else rm -f /tmp/dnsmasq.ssr/netflix_forward.conf fi +awk '!/^$/&&!/^#/{printf("ipset=/%s/'"blacklist"'\n",$0)}' /etc/ssr/black.list >/tmp/dnsmasq.ssr/blacklist_forward.conf +awk '!/^$/&&!/^#/{printf("server=/%s/'"127.0.0.1#5335"'\n",$0)}' /etc/ssr/black.list >>/tmp/dnsmasq.ssr/blacklist_forward.conf +awk '!/^$/&&!/^#/{printf("ipset=/%s/'"whitelist"'\n",$0)}' /etc/ssr/white.list >/tmp/dnsmasq.ssr/whitelist_forward.conf +awk '!/^$/&&!/^#/{printf("address=/%s/''\n",$0)}' /etc/ssr/deny.list >/tmp/dnsmasq.ssr/denylist.conf for line in $(cat /etc/ssr/black.list); do sed -i "/$line/d" /tmp/dnsmasq.ssr/gfw_list.conf; done for line in $(cat /etc/ssr/black.list); do sed -i "/$line/d" /tmp/dnsmasq.ssr/gfw_base.conf; done for line in $(cat /etc/ssr/white.list); do sed -i "/$line/d" /tmp/dnsmasq.ssr/gfw_list.conf; done for line in $(cat /etc/ssr/white.list); do sed -i "/$line/d" /tmp/dnsmasq.ssr/gfw_base.conf; done for line in $(cat /etc/ssr/deny.list); do sed -i "/$line/d" /tmp/dnsmasq.ssr/gfw_list.conf; done for line in $(cat /etc/ssr/deny.list); do sed -i "/$line/d" /tmp/dnsmasq.ssr/gfw_base.conf; done -awk '!/^$/&&!/^#/{printf("ipset=/%s/'"blacklist"'\n",$0)}' /etc/ssr/black.list >/tmp/dnsmasq.ssr/blacklist_forward.conf -awk '!/^$/&&!/^#/{printf("server=/%s/'"127.0.0.1#5335"'\n",$0)}' /etc/ssr/black.list >>/tmp/dnsmasq.ssr/blacklist_forward.conf -awk '!/^$/&&!/^#/{printf("ipset=/%s/'"whitelist"'\n",$0)}' /etc/ssr/white.list >/tmp/dnsmasq.ssr/whitelist_forward.conf -awk '!/^$/&&!/^#/{printf("address=/%s/''\n",$0)}' /etc/ssr/deny.list >/tmp/dnsmasq.ssr/denylist.conf if [ "$(uci_get_by_type global adblock 0)" == "1" ]; then [ "$1" == "" ] && cp -f /etc/ssr/ad.conf /tmp/dnsmasq.ssr/ if [ -f "/tmp/dnsmasq.ssr/ad.conf" ]; then