From 3d775d3f68cec0f0ce18691d67bf28d32695c6fc Mon Sep 17 00:00:00 2001 From: Mattraks <16359027+Mattraks@users.noreply.github.com> Date: Sat, 15 Feb 2020 14:21:29 +0800 Subject: [PATCH] luci-app-ssr-plus: custom AD block URL (#3092) * v2ray:Add GOPROXY proxy * luci-app-ssr-plus:Custom AD URL * luci-app-ssr-plus:Fix bug & optimize --- package/lean/luci-app-ssr-plus/Makefile | 75 ++- .../luasrc/controller/shadowsocksr.lua | 13 +- .../model/cbi/shadowsocksr/advanced.lua | 7 +- .../luasrc/model/cbi/shadowsocksr/list.lua | 23 - .../luasrc/model/cbi/shadowsocksr/status.lua | 19 +- .../luasrc/view/shadowsocksr/certupload.htm | 6 +- .../luasrc/view/shadowsocksr/check.htm | 2 +- .../luasrc/view/shadowsocksr/checkport.htm | 2 +- .../luasrc/view/shadowsocksr/ping.htm | 2 +- .../luasrc/view/shadowsocksr/refresh.htm | 4 +- .../luasrc/view/shadowsocksr/server_list.htm | 13 +- .../luasrc/view/shadowsocksr/subscribe.htm | 2 +- .../luci-app-ssr-plus/po/zh-cn/ssr-plus.po | 3 + .../luci-app-ssr-plus/root/etc/china_ssr.txt | 6 +- .../root/etc/config/black.list | 53 ++ .../root/etc/config/gfw.list | 53 -- .../root/etc/config/shadowsocksr | 3 +- .../root/etc/init.d/shadowsocksr | 623 ++++++++---------- .../root/etc/uci-defaults/luci-ssr-plus | 1 + .../luci-app-ssr-plus/root/usr/bin/ssr-gfw | 26 +- .../root/usr/bin/ssr-monitor | 148 ++--- .../luci-app-ssr-plus/root/usr/bin/ssr-rules | 312 ++++----- .../luci-app-ssr-plus/root/usr/bin/ssr-switch | 229 +++---- .../root/usr/share/shadowsocksr/gfw2ipset.sh | 7 - .../root/usr/share/shadowsocksr/subscribe.lua | 18 +- .../root/usr/share/shadowsocksr/update.lua | 16 +- package/lean/v2ray/Config.in | 4 + package/lean/v2ray/Makefile | 28 +- 28 files changed, 786 insertions(+), 912 deletions(-) delete mode 100644 package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/list.lua delete mode 100644 package/lean/luci-app-ssr-plus/root/etc/config/gfw.list diff --git a/package/lean/luci-app-ssr-plus/Makefile b/package/lean/luci-app-ssr-plus/Makefile index 7e0a03fb2..01d944667 100644 --- a/package/lean/luci-app-ssr-plus/Makefile +++ b/package/lean/luci-app-ssr-plus/Makefile @@ -2,7 +2,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-ssr-plus PKG_RELEASE:=142 -PKG_VERSION:=1 +PKG_VERSION:=2 +PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) include $(INCLUDE_DIR)/package.mk @@ -12,12 +13,12 @@ config PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks default y if x86_64 config PACKAGE_$(PKG_NAME)_INCLUDE_Simple_obfs - bool "Include Shadowsocks Simple-obfs Plugin" - default y if x86_64 + bool "Include Shadowsocks Simple-obfs Plugin" + default y if x86_64 config PACKAGE_$(PKG_NAME)_INCLUDE_V2ray_plugin - bool "Include Shadowsocks V2ray Plugin" - default y if x86_64 + bool "Include Shadowsocks V2ray Plugin" + default y if x86_64 config PACKAGE_$(PKG_NAME)_INCLUDE_V2ray bool "Include V2ray" @@ -40,7 +41,7 @@ config PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Socks default y endef -define Package/luci-app-ssr-plus +define Package/$(PKG_NAME) SECTION:=luci CATEGORY:=LuCI SUBMENU:=3. Applications @@ -64,47 +65,56 @@ endef define Build/Compile endef -define Package/luci-app-ssr-plus/conffiles -/etc/ssr_ip +define Package/$(PKG_NAME)/conffiles +/etc/china_ssr.txt +/etc/config/shadowsocksr +/etc/config/white.list +/etc/config/black.list +/etc/dnsmasq.ssr/ad.conf /etc/dnsmasq.ssr/gfw_list.conf endef -define Package/luci-app-ssr-plus/install - #lua - $(INSTALL_DIR) $(1)/usr/lib/lua/luci/controller - $(INSTALL_DIR) $(1)/usr/lib/lua/luci/model/cbi/shadowsocksr - $(INSTALL_DIR) $(1)/usr/lib/lua/luci/view/shadowsocksr - $(INSTALL_DIR) $(1)/usr/lib/lua/luci/i18n - #etc +define Package/$(PKG_NAME)/install $(INSTALL_DIR) $(1)/etc - $(INSTALL_DIR) $(1)/etc/config - $(INSTALL_DIR) $(1)/etc/dnsmasq.oversea - $(INSTALL_DIR) $(1)/etc/dnsmasq.ssr - $(INSTALL_DIR) $(1)/etc/init.d - $(INSTALL_DIR) $(1)/etc/uci-defaults - #usr - $(INSTALL_DIR) $(1)/usr/bin - $(INSTALL_DIR) $(1)/usr/share/shadowsocksr - #root/etc $(INSTALL_DATA) ./root/etc/china_ssr.txt $(1)/etc/china_ssr.txt + + $(INSTALL_DIR) $(1)/etc/config $(INSTALL_CONF) ./root/etc/config/shadowsocksr $(1)/etc/config/shadowsocksr $(INSTALL_DATA) ./root/etc/config/*.list $(1)/etc/config/ + + $(INSTALL_DIR) $(1)/etc/dnsmasq.oversea $(INSTALL_DATA) ./root/etc/dnsmasq.oversea/* $(1)/etc/dnsmasq.oversea/ + + $(INSTALL_DIR) $(1)/etc/dnsmasq.ssr $(INSTALL_DATA) ./root/etc/dnsmasq.ssr/* $(1)/etc/dnsmasq.ssr/ + + $(INSTALL_DIR) $(1)/etc/init.d $(INSTALL_BIN) ./root/etc/init.d/* $(1)/etc/init.d/ + + $(INSTALL_DIR) $(1)/etc/uci-defaults $(INSTALL_BIN) ./root/etc/uci-defaults/* $(1)/etc/uci-defaults/ - #root/usr + + $(INSTALL_DIR) $(1)/usr/bin $(INSTALL_BIN) ./root/usr/bin/* $(1)/usr/bin/ + + $(INSTALL_DIR) $(1)/usr/share/shadowsocksr $(INSTALL_BIN) ./root/usr/share/shadowsocksr/*.sh $(1)/usr/share/shadowsocksr/ $(INSTALL_DATA) ./root/usr/share/shadowsocksr/*.lua $(1)/usr/share/shadowsocksr/ - #luasrc + + $(INSTALL_DIR) $(1)/usr/lib/lua/luci/controller $(INSTALL_DATA) ./luasrc/controller/*.lua $(1)/usr/lib/lua/luci/controller/ + + $(INSTALL_DIR) $(1)/usr/lib/lua/luci/model/cbi/shadowsocksr $(INSTALL_DATA) ./luasrc/model/cbi/shadowsocksr/*.lua $(1)/usr/lib/lua/luci/model/cbi/shadowsocksr/ + + $(INSTALL_DIR) $(1)/usr/lib/lua/luci/view/shadowsocksr $(INSTALL_DATA) ./luasrc/view/shadowsocksr/* $(1)/usr/lib/lua/luci/view/shadowsocksr/ + + $(INSTALL_DIR) $(1)/usr/lib/lua/luci/i18n po2lmo ./po/zh-cn/ssr-plus.po $(1)/usr/lib/lua/luci/i18n/ssr-plus.zh-cn.lmo endef -define Package/luci-app-ssr-plus/postinst +define Package/$(PKG_NAME)/postinst #!/bin/sh if [ -z "$${IPKG_INSTROOT}" ]; then ( . /etc/uci-defaults/luci-ssr-plus ) && rm -f /etc/uci-defaults/luci-ssr-plus @@ -114,7 +124,7 @@ fi exit 0 endef -define Package/luci-app-ssr-plus/prerm +define Package/$(PKG_NAME)/prerm #!/bin/sh if [ -z "$${IPKG_INSTROOT}" ]; then /etc/init.d/shadowsocksr disable @@ -123,4 +133,11 @@ fi exit 0 endef -$(eval $(call BuildPackage,luci-app-ssr-plus)) +define Package/$(PKG_NAME)/postrm +#!/bin/sh +rm -rf /etc/china_ssr.txt /etc/dnsmasq.ssr /etc/dnsmasq.oversea /etc/config/shadowsocksr /etc/config/black.list \ + /etc/config/gfw.list /etc/config/white.list >/dev/null 2>&1 +exit 0 +endef + +$(eval $(call BuildPackage,$(PKG_NAME))) diff --git a/package/lean/luci-app-ssr-plus/luasrc/controller/shadowsocksr.lua b/package/lean/luci-app-ssr-plus/luasrc/controller/shadowsocksr.lua index cb7aa7e8b..4ce824791 100644 --- a/package/lean/luci-app-ssr-plus/luasrc/controller/shadowsocksr.lua +++ b/package/lean/luci-app-ssr-plus/luasrc/controller/shadowsocksr.lua @@ -11,7 +11,6 @@ function index() entry({"admin", "services", "shadowsocksr", "client"}, cbi("shadowsocksr/client"),_("SSR Client"), 10).leaf = true entry({"admin", "services", "shadowsocksr", "servers"}, arcombine(cbi("shadowsocksr/servers", {autoapply=true}), cbi("shadowsocksr/client-config")),_("Severs Nodes"), 20).leaf = true entry({"admin", "services", "shadowsocksr", "control"},cbi("shadowsocksr/control"), _("Access Control"), 30).leaf = true - -- entry({"admin", "services", "shadowsocksr", "list"},form("shadowsocksr/list"),_("GFW List"), 40).leaf = true entry({"admin", "services", "shadowsocksr", "advanced"},cbi("shadowsocksr/advanced"),_("Advanced Settings"), 50).leaf = true if nixio.fs.access("/usr/bin/ssr-server") then entry({"admin", "services", "shadowsocksr", "server"},arcombine(cbi("shadowsocksr/server"), cbi("shadowsocksr/server-config")),_("SSR Server"), 60).leaf = true @@ -116,18 +115,12 @@ else end luci.sys.exec("rm -f /tmp/china_ssr.txt ") else - local need_process = 0 - if nixio.fs.access("/usr/bin/wget-ssl") then - refresh_cmd="wget-ssl --no-check-certificate -O - https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt > /tmp/adnew.conf" - need_process = 1 -else - refresh_cmd="wget -O /tmp/ad.conf http://iytc.net/tools/ad.conf" +if nixio.fs.access("/usr/bin/wget-ssl") then + refresh_cmd="wget-ssl --no-check-certificate -O - ".. luci.model.uci.cursor():get_first(shadowsocksr, 'global', 'adblock_url','https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt') .." > /tmp/adnew.conf" end sret=luci.sys.call(refresh_cmd .. " 2>/dev/null") if sret== 0 then - if need_process == 1 then - luci.sys.call("/usr/bin/ssr-ad") - end + luci.sys.call("/usr/bin/ssr-ad") icount = luci.sys.exec("cat /tmp/ad.conf | wc -l") if tonumber(icount)>1000 then if nixio.fs.access("/etc/dnsmasq.ssr/ad.conf") then diff --git a/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua b/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua index 26de83e7d..c72cc5875 100644 --- a/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua +++ b/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua @@ -23,14 +23,16 @@ s.anonymous = true o = s:option(Flag, "monitor_enable", translate("Enable Process Deamon")) o.rmempty = false +o.default = "1" o = s:option(Flag, "enable_switch", translate("Enable Auto Switch")) o.rmempty = false +o.default = "1" o = s:option(Value, "switch_time", translate("Switch check cycly(second)")) o.datatype = "uinteger" o:depends("enable_switch", "1") -o.default = 3600 +o.default = 667 o = s:option(Value, "switch_timeout", translate("Check timout(second)")) o.datatype = "uinteger" @@ -49,6 +51,9 @@ s.anonymous = true o = s:option(Flag, "adblock", translate("Enable adblock")) o.rmempty = false +o = s:option(Value, "adblock_url", translate("adblock_url")) +o.default = "https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt" + -- [[ SOCKS Proxy ]]-- if nixio.fs.access("/usr/bin/srelay") then s = m:section(TypedSection, "socks5_proxy", translate("SOCKS Proxy")) diff --git a/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/list.lua b/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/list.lua deleted file mode 100644 index 34d30aabb..000000000 --- a/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/list.lua +++ /dev/null @@ -1,23 +0,0 @@ -local fs = require "nixio.fs" -local conffile = "/etc/config/gfw.list" - -f = SimpleForm("custom", translate("GFW Custom List"), translate("Please refer to the following writing")) - -t = f:field(TextValue, "conf") -t.rmempty = true -t.rows = 13 -function t.cfgvalue() - return fs.readfile(conffile) or "" -end - -function f.handle(self, state, data) - if state == FORM_VALID then - if data.conf then - fs.writefile(conffile, data.conf:gsub("\r\n", "\n")) - luci.sys.call("/usr/share/shadowsocksr/gfw2ipset.sh && /etc/init.d/dnsmasq restart") - end - end - return true -end - -return f diff --git a/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/status.lua b/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/status.lua index 501452584..beb5970e1 100644 --- a/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/status.lua +++ b/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/status.lua @@ -14,13 +14,7 @@ local udpspeeder_run=0 local gfw_count=0 local ad_count=0 local ip_count=0 -local gfwmode=0 local ucic = luci.model.uci.cursor() - -if nixio.fs.access("/etc/dnsmasq.ssr/gfw_list.conf") then -gfwmode=1 -end - local shadowsocksr = "shadowsocksr" -- html constants font_blue = [[]] @@ -45,12 +39,13 @@ end end -if gfwmode == 1 then +if nixio.fs.access("/etc/dnsmasq.ssr/gfw_list.conf") then gfw_count = tonumber(sys.exec("cat /etc/dnsmasq.ssr/gfw_list.conf | wc -l"))/2 +end + if nixio.fs.access("/etc/dnsmasq.ssr/ad.conf") then ad_count=tonumber(sys.exec("cat /etc/dnsmasq.ssr/ad.conf | wc -l")) end -end if nixio.fs.access("/etc/china_ssr.txt") then ip_count = sys.exec("cat /etc/china_ssr.txt | wc -l") @@ -160,14 +155,12 @@ s=m:field(DummyValue,"baidu",translate("Baidu Connectivity")) s.value = translate("No Check") s.template = "shadowsocksr/check" -if gfwmode == 1 then s=m:field(DummyValue,"gfw_data",translate("GFW List Data")) s.rawhtml = true s.template = "shadowsocksr/refresh" s.value =tostring(math.ceil(gfw_count)) .. " " .. translate("Records") -end -if ucic:get_first(shadowsocksr, 'global', 'adblock', '') == '1' then +if ucic:get_first(shadowsocksr, 'global', 'adblock', '0') == '1' then s=m:field(DummyValue,"ad_data",translate("Advertising Data")) s.rawhtml = true s.template = "shadowsocksr/refresh" @@ -179,8 +172,4 @@ s.rawhtml = true s.template = "shadowsocksr/refresh" s.value =ip_count .. " " .. translate("Records") --- s=m:field(DummyValue,"check_port",translate("Check Server Port")) --- s.template = "shadowsocksr/checkport" --- s.value =translate("No Check") - return m diff --git a/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/certupload.htm b/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/certupload.htm index 27ad7ae83..f34f04d7b 100644 --- a/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/certupload.htm +++ b/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/certupload.htm @@ -1,4 +1,4 @@ <%+cbi/valueheader%> - - -<%+cbi/valuefooter%> \ No newline at end of file + + +<%+cbi/valuefooter%> diff --git a/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/check.htm b/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/check.htm index c4b0b89bc..c75056a80 100644 --- a/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/check.htm +++ b/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/check.htm @@ -27,4 +27,4 @@ <%=self.value%> -<%+cbi/valuefooter%> \ No newline at end of file +<%+cbi/valuefooter%> diff --git a/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/checkport.htm b/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/checkport.htm index dd46ed500..fa7b4044e 100644 --- a/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/checkport.htm +++ b/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/checkport.htm @@ -23,4 +23,4 @@ //]]> <%=self.value%> -<%+cbi/valuefooter%> \ No newline at end of file +<%+cbi/valuefooter%> diff --git a/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/ping.htm b/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/ping.htm index 8c86aee74..5b396f7ce 100644 --- a/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/ping.htm +++ b/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/ping.htm @@ -1,3 +1,3 @@ <%+cbi/valueheader%> -- ms -<%+cbi/valuefooter%> \ No newline at end of file +<%+cbi/valuefooter%> diff --git a/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/refresh.htm b/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/refresh.htm index 02a3ae620..3e610d9ee 100644 --- a/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/refresh.htm +++ b/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/refresh.htm @@ -17,7 +17,7 @@ else if(rv.ret=="-1") { s.innerHTML =""+"<%:Refresh Error!%> "+""; - } + } else { s.innerHTML =""+"<%:Refresh OK!%> "+"<%:Total Records:%>"+rv.ret+""; @@ -32,4 +32,4 @@ //]]> <%=self.value%> -<%+cbi/valuefooter%> \ No newline at end of file +<%+cbi/valuefooter%> diff --git a/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/server_list.htm b/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/server_list.htm index e25e25cb1..7318e38a8 100644 --- a/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/server_list.htm +++ b/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/server_list.htm @@ -9,7 +9,6 @@ local dsp = require "luci.dispatcher" // { return new Promise((res) => { const dom = doms[index]; @@ -48,15 +47,5 @@ local dsp = require "luci.dispatcher" ]) } })() - // for(var i = 0; i < pings.length; i++) { - // XHR.get('<%=dsp.build_url("admin/services/shadowsocksr/ping")%>', { - // index: i, - // domain: pings[i].getAttribute("hint") - // }, - // function(x, result) { - // pings[result.index].innerHTML = (result.ping ? result.ping : "--") + " ms"; - // } - // ); - // } //]]> - \ No newline at end of file + diff --git a/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/subscribe.htm b/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/subscribe.htm index 4d53beeb0..6bbc7d54b 100644 --- a/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/subscribe.htm +++ b/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/subscribe.htm @@ -15,4 +15,4 @@ //]]> -<%+cbi/valuefooter%> \ No newline at end of file +<%+cbi/valuefooter%> diff --git a/package/lean/luci-app-ssr-plus/po/zh-cn/ssr-plus.po b/package/lean/luci-app-ssr-plus/po/zh-cn/ssr-plus.po index f6bdd2eab..bc9c47d8c 100644 --- a/package/lean/luci-app-ssr-plus/po/zh-cn/ssr-plus.po +++ b/package/lean/luci-app-ssr-plus/po/zh-cn/ssr-plus.po @@ -328,6 +328,9 @@ msgstr "切换检查重试次数" msgid "Enable adblock" msgstr "启用广告屏蔽" +msgid "adblock_url" +msgstr "广告屏蔽订阅" + msgid "Enable Process Deamon" msgstr "启用进程自动守护" diff --git a/package/lean/luci-app-ssr-plus/root/etc/china_ssr.txt b/package/lean/luci-app-ssr-plus/root/etc/china_ssr.txt index cf0c7c5ff..32e62a3da 100644 --- a/package/lean/luci-app-ssr-plus/root/etc/china_ssr.txt +++ b/package/lean/luci-app-ssr-plus/root/etc/china_ssr.txt @@ -450,7 +450,6 @@ 43.230.84.0/22 43.230.124.0/22 43.230.136.0/22 -43.230.168.0/22 43.230.220.0/22 43.230.224.0/22 43.230.228.0/22 @@ -2731,7 +2730,6 @@ 103.49.176.0/22 103.49.180.0/22 103.49.196.0/22 -103.49.248.0/22 103.50.36.0/22 103.50.44.0/22 103.50.48.0/22 @@ -6219,7 +6217,9 @@ 180.178.112.0/22 180.178.116.0/22 180.178.192.0/18 -180.184.0.0/14 +180.184.0.0/15 +180.186.0.0/16 +180.187.0.0/16 180.188.0.0/17 180.189.148.0/22 180.200.252.0/22 diff --git a/package/lean/luci-app-ssr-plus/root/etc/config/black.list b/package/lean/luci-app-ssr-plus/root/etc/config/black.list index e69de29bb..013fb9cc3 100644 --- a/package/lean/luci-app-ssr-plus/root/etc/config/black.list +++ b/package/lean/luci-app-ssr-plus/root/etc/config/black.list @@ -0,0 +1,53 @@ +91smartyun.pt +adobe.com +amazonaws.com +ampproject.org +apple.news +aws.amazon.com +azureedge.net +backpackers.com.tw +bitfinex.com +buzzfeed.com +clockwise.ee +cloudfront.net +coindesk.com +coinsquare.io +cryptocompare.com +dropboxstatic.com +eurecom.fr +gdax.com +github.com +kknews.cc +nutaq.com +openairinterface.org +skype.com +sublimetext.com +textnow.com +textnow.me +trouter.io +uploaded.net +whatsapp.com +whatsapp.net +wsj.net +google.com +google.com.hk +gstatic.com +googleusercontent.com +googlepages.com +googlevideo.com +googlecode.com +googleapis.com +googlesource.com +googledrive.com +ggpht.com +youtube.com +youtu.be +ytimg.com +twitter.com +facebook.com +fastly.net +akamai.net +akamaiedge.net +akamaihd.net +edgesuite.net +edgekey.net diff --git a/package/lean/luci-app-ssr-plus/root/etc/config/gfw.list b/package/lean/luci-app-ssr-plus/root/etc/config/gfw.list deleted file mode 100644 index b8772ba26..000000000 --- a/package/lean/luci-app-ssr-plus/root/etc/config/gfw.list +++ /dev/null @@ -1,53 +0,0 @@ -91smartyun.pt -adobe.com -amazonaws.com -ampproject.org -apple.news -aws.amazon.com -azureedge.net -backpackers.com.tw -bitfinex.com -buzzfeed.com -clockwise.ee -cloudfront.net -coindesk.com -coinsquare.io -cryptocompare.com -dropboxstatic.com -eurecom.fr -gdax.com -github.com -kknews.cc -nutaq.com -openairinterface.org -skype.com -sublimetext.com -textnow.com -textnow.me -trouter.io -uploaded.net -whatsapp.com -whatsapp.net -wsj.net -google.com -google.com.hk -gstatic.com -googleusercontent.com -googlepages.com -googlevideo.com -googlecode.com -googleapis.com -googlesource.com -googledrive.com -ggpht.com -youtube.com -youtu.be -ytimg.com -twitter.com -facebook.com -fastly.net -akamai.net -akamaiedge.net -akamaihd.net -edgesuite.net -edgekey.net \ No newline at end of file diff --git a/package/lean/luci-app-ssr-plus/root/etc/config/shadowsocksr b/package/lean/luci-app-ssr-plus/root/etc/config/shadowsocksr index 2e5e5822d..e8200c491 100644 --- a/package/lean/luci-app-ssr-plus/root/etc/config/shadowsocksr +++ b/package/lean/luci-app-ssr-plus/root/etc/config/shadowsocksr @@ -10,10 +10,9 @@ config global option switch_timeout '5' option switch_time '667' option switch_try_count '3' - option adblock '0' config socks5_proxy - option server 'nil' + option socks '0' option local_port '1080' option local_address '0.0.0.0' 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 8e9f22ef4..bf03a2ba3 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 @@ -41,17 +41,15 @@ uci_get_by_type() { echo ${ret:=$3} } -add_cron() -{ +add_cron() { sed -i '/shadowsocksr/d' $CRON_FILE - sed -i '/ssrplus.log/d' $CRON_FILE && echo '0 1 * * * echo "" > /tmp/ssrplus.log' >> $CRON_FILE - [ $(uci_get_by_type server_subscribe auto_update 0) -eq 1 ] && echo "0 $(uci_get_by_type server_subscribe auto_update_time) * * * /usr/bin/lua /usr/share/shadowsocksr/subscribe.lua" >> $CRON_FILE - [ $(uci_get_by_type server_subscribe auto_update 0) -eq 1 ] && echo "0 $(uci_get_by_type server_subscribe auto_update_time) * * * /usr/bin/lua /usr/share/shadowsocksr/update.lua" >> $CRON_FILE + sed -i '/ssrplus.log/d' $CRON_FILE && echo '0 1 * * * echo "" > /tmp/ssrplus.log' >>$CRON_FILE + [ $(uci_get_by_type server_subscribe auto_update 0) -eq 1 ] && echo "0 $(uci_get_by_type server_subscribe auto_update_time) * * * /usr/bin/lua /usr/share/shadowsocksr/subscribe.lua" >>$CRON_FILE + [ $(uci_get_by_type server_subscribe auto_update 0) -eq 1 ] && echo "0 $(uci_get_by_type server_subscribe auto_update_time) * * * /usr/bin/lua /usr/share/shadowsocksr/update.lua" >>$CRON_FILE crontab $CRON_FILE } -del_cron() -{ +del_cron() { sed -i '/shadowsocksr/d' $CRON_FILE sed -i '/ssrplus.log/d' $CRON_FILE /etc/init.d/cron restart @@ -60,341 +58,313 @@ del_cron() run_mode=$(uci_get_by_type global run_mode) gen_config_file() { - local host=$(uci_get_by_name $1 server) - if echo $host|grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$">/dev/null; then - hostip=${host} - elif [ "$host" != "${host#*:[0-9a-fA-F]}" ] ;then - hostip=${host} + local host=$(uci_get_by_name $1 server) + if echo $host | grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" >/dev/null; then + hostip=$host + elif [ "$host" != "${host#*:[0-9a-fA-F]}" ]; then + hostip=$host + else + hostip=$(ping $host -s 1 -c 1 | grep PING | cut -d'(' -f 2 | cut -d')' -f1) + if echo $hostip | grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" >/dev/null; then + hostip=$hostip else - hostip=`ping ${host} -s 1 -c 1 | grep PING | cut -d'(' -f 2 | cut -d')' -f1` - if echo $hostip|grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$">/dev/null; then - hostip=${hostip} - else - hostip=`cat /etc/ssr_ip` - fi + hostip=$(cat /etc/ssr_ip) fi - [ $2 = "0" -a $kcp_flag = "1" ] && hostip="127.0.0.1" - - if [ $2 = "0" ] ;then - config_file=$CONFIG_FILE - elif [ $2 = "1" ]; then - config_file=$CONFIG_UDP_FILE - else - config_file=$CONFIG_SOCK5_FILE + fi + [ "$2" == "0" -a "$kcp_flag" == "1" ] && hostip="127.0.0.1" + if [ "$2" == "0" ]; then + config_file=$CONFIG_FILE + elif [ "$2" == "1" ]; then + config_file=$CONFIG_UDP_FILE + else + config_file=$CONFIG_SOCK5_FILE + fi + if [ $(uci_get_by_name $1 fast_open 0) == "1" ]; then + fastopen="true" + else + fastopen="false" + fi + local stype=$(uci_get_by_name $1 type) + if [ "$stype" == "ss" ]; then + cat <<-EOF >$config_file + { + "server": "$hostip", + "server_port": $(uci_get_by_name $1 server_port), + "local_address": "0.0.0.0", + "local_port": $(uci_get_by_name $1 local_port), + "password": "$(uci_get_by_name $1 password)", + "timeout": $(uci_get_by_name $1 timeout 60), + "method": "$(uci_get_by_name $1 encrypt_method_ss)", + "reuse_port": true, + "fast_open": $fastopen + } + EOF + local plugin=$(uci_get_by_name $1 plugin) + if [ -n "$plugin" ] && [ "$plugin" == "simple-obfs" ]; then + plugin="obfs-local" fi - if [ $(uci_get_by_name $1 fast_open 0) = "1" ] ;then - fastopen="true"; - else - fastopen="false"; + if [ -n "$plugin" -a -x "/usr/bin/$plugin" ]; then + sed -i "s@$hostip\",@$hostip\",\n\"plugin\": \"$plugin\",\n\"plugin_opts\": \"$(uci_get_by_name $1 plugin_opts)\",@" $config_file fi -local stype=$(uci_get_by_name $1 type) -if [ "$stype" == "ss" ] ;then - cat <<-EOF >$config_file -{ -"server": "$hostip", -"server_port": $(uci_get_by_name $1 server_port), -"local_address": "0.0.0.0", -"local_port": $(uci_get_by_name $1 local_port), -"password": "$(uci_get_by_name $1 password)", -"timeout": $(uci_get_by_name $1 timeout 60), -"method": "$(uci_get_by_name $1 encrypt_method_ss)", -"reuse_port": true, -"fast_open": $fastopen -} -EOF - local plugin=$(uci_get_by_name $1 plugin) - if [ -n $plugin ] && [ $plugin == "simple-obfs" ]; then - plugin="obfs-local" - fi - if [ -n "$plugin" -a -x "/usr/bin/$plugin" ]; then - sed -i "s@$hostip\",@$hostip\",\n\"plugin\": \"$plugin\",\n\"plugin_opts\": \"$(uci_get_by_name $1 plugin_opts)\",@" $config_file - fi -elif [ "$stype" == "ssr" ] ;then -cat <<-EOF >$config_file -{ -"server": "$hostip", -"server_port": $(uci_get_by_name $1 server_port), -"local_address": "0.0.0.0", -"local_port": $(uci_get_by_name $1 local_port), -"password": "$(uci_get_by_name $1 password)", -"timeout": $(uci_get_by_name $1 timeout 60), -"method": "$(uci_get_by_name $1 encrypt_method)", -"protocol": "$(uci_get_by_name $1 protocol)", -"protocol_param": "$(uci_get_by_name $1 protocol_param)", -"obfs": "$(uci_get_by_name $1 obfs)", -"obfs_param": "$(uci_get_by_name $1 obfs_param)", -"reuse_port": true, -"fast_open": $fastopen -} -EOF - elif [ "$stype" == "v2ray" ] ;then - lua /usr/share/shadowsocksr/genv2config.lua $GLOBAL_SERVER tcp $(uci_get_by_name $1 local_port) > /var/etc/v2-ssr-retcp.json + elif [ "$stype" == "ssr" ]; then + cat <<-EOF >$config_file + { + "server": "$hostip", + "server_port": $(uci_get_by_name $1 server_port), + "local_address": "0.0.0.0", + "local_port": $(uci_get_by_name $1 local_port), + "password": "$(uci_get_by_name $1 password)", + "timeout": $(uci_get_by_name $1 timeout 60), + "method": "$(uci_get_by_name $1 encrypt_method)", + "protocol": "$(uci_get_by_name $1 protocol)", + "protocol_param": "$(uci_get_by_name $1 protocol_param)", + "obfs": "$(uci_get_by_name $1 obfs)", + "obfs_param": "$(uci_get_by_name $1 obfs_param)", + "reuse_port": true, + "fast_open": $fastopen + } + EOF + elif [ "$stype" == "v2ray" ]; then + lua /usr/share/shadowsocksr/genv2config.lua $GLOBAL_SERVER tcp $(uci_get_by_name $1 local_port) >/var/etc/v2-ssr-retcp.json sed -i 's/\\//g' /var/etc/v2-ssr-retcp.json - elif [ "$stype" == "trojan" ] ;then - lua /usr/share/shadowsocksr/gentrojanconfig.lua $GLOBAL_SERVER nat $(uci_get_by_name $1 local_port) > /var/etc/trojan-ssr-retcp.json + elif [ "$stype" == "trojan" ]; then + lua /usr/share/shadowsocksr/gentrojanconfig.lua $GLOBAL_SERVER nat $(uci_get_by_name $1 local_port) >/var/etc/trojan-ssr-retcp.json sed -i 's/\\//g' /var/etc/trojan-ssr-retcp.json -fi + fi } get_arg_out() { case "$(uci_get_by_type access_control router_proxy 1)" in - 1) echo "-o";; - 2) echo "-O";; + 1) echo "-o" ;; + 2) echo "-O" ;; esac } start_rules() { local server=$(uci_get_by_name $GLOBAL_SERVER server) #resolve name - if echo $server|grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$">/dev/null; then - server=${server} - elif [ "$server" != "${server#*:[0-9a-fA-F]}" ] ;then - server=${server} + if echo $server | grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" >/dev/null; then + server=$server + elif [ "$server" != "${server#*:[0-9a-fA-F]}" ]; then + server=$server else - server=`ping ${server} -s 1 -c 1 | grep PING | cut -d'(' -f 2 | cut -d')' -f1` - if echo $server|grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$">/dev/null; then + server=$(ping $server -s 1 -c 1 | grep PING | cut -d'(' -f 2 | cut -d')' -f1) + if echo $server | grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" >/dev/null; then echo $server >/etc/ssr_ip else - server=`cat /etc/ssr_ip` + server=$(cat /etc/ssr_ip) fi fi - kcp_server=$server - local kcp_enable=$(uci_get_by_name $GLOBAL_SERVER kcp_enable 0) - if [ $kcp_enable = "1" ] ;then + if [ $kcp_enable == "1" ]; then kcp_flag=1 fi - local local_port=$(uci_get_by_name $GLOBAL_SERVER local_port) local lan_ac_ips=$(uci_get_by_type access_control lan_ac_ips) local lan_ac_mode="b" local router_proxy=$(uci_get_by_type access_control router_proxy) - if [ "$GLOBAL_SERVER" = "$UDP_RELAY_SERVER" -a $kcp_flag = 0 ]; then + if [ "$GLOBAL_SERVER" == "$UDP_RELAY_SERVER" -a "$kcp_flag" == "0" ]; then ARG_UDP="-u" elif [ -n "$UDP_RELAY_SERVER" ]; then ARG_UDP="-U" local udp_server=$(uci_get_by_name $UDP_RELAY_SERVER server) local udp_local_port=$(uci_get_by_name $UDP_RELAY_SERVER local_port) fi - if [ -n "$lan_ac_ips" ]; then case "$lan_ac_mode" in - w|W|b|B) local ac_ips="$lan_ac_mode$lan_ac_ips";; + w | W | b | B) local ac_ips="$lan_ac_mode$lan_ac_ips" ;; esac fi - -#deal gfw firewall rule + #deal gfw firewall rule local gfwmode="" - if [ "$run_mode" = "gfw" ]; then + if [ "$run_mode" == "gfw" ]; then gfwmode="-g" - elif [ "$run_mode" = "router" ]; then + elif [ "$run_mode" == "router" ]; then gfwmode="-r" - elif [ "$run_mode" = "oversea" ]; then + elif [ "$run_mode" == "oversea" ]; then gfwmode="-c" - elif [ "$run_mode" = "all" ]; then + elif [ "$run_mode" == "all" ]; then gfwmode="-z" fi - local dports=$(uci_get_by_type global dports 1) - if [ $dports = "1" ] ;then + if [ $dports == "1" ]; then proxyport=" " else - proxyport="-m multiport --dports 22,53,587,465,995,993,143,80,443 " + proxyport="-m multiport --dports 22,53,587,465,995,993,143,80,443" fi - /usr/bin/ssr-rules \ - -s "$server" \ - -l "$local_port" \ - -S "$udp_server" \ - -L "$udp_local_port" \ - -a "$ac_ips" \ - -i "$(uci_get_by_type access_control wan_bp_list)" \ - -b "$(uci_get_by_type access_control wan_bp_ips)" \ - -w "$(uci_get_by_type access_control wan_fw_ips)" \ - -p "$(uci_get_by_type access_control lan_fp_ips)" \ - -G "$(uci_get_by_type access_control lan_gm_ips)" \ - -D "$proxyport" \ - $(get_arg_out) $gfwmode $ARG_UDP - + -s "$server" \ + -l "$local_port" \ + -S "$udp_server" \ + -L "$udp_local_port" \ + -a "$ac_ips" \ + -i "$(uci_get_by_type access_control wan_bp_list)" \ + -b "$(uci_get_by_type access_control wan_bp_ips)" \ + -w "$(uci_get_by_type access_control wan_fw_ips)" \ + -p "$(uci_get_by_type access_control lan_fp_ips)" \ + -G "$(uci_get_by_type access_control lan_gm_ips)" \ + -D "$proxyport" \ + $(get_arg_out) $gfwmode $ARG_UDP return $? } start_pdnsd() { local usr_dns="$1" local usr_port="$2" - local tcp_dns_list="208.67.222.222, 208.67.220.220" [ -z "$usr_dns" ] && usr_dns="8.8.8.8" [ -z "$usr_port" ] && usr_port="53" - [ -d /var/etc ] || mkdir -p /var/etc - - if [ ! -d /var/pdnsd ];then + if [ ! -d /var/pdnsd ]; then mkdir -p /var/pdnsd echo -ne "pd13\000\000\000\000" >/var/pdnsd/pdnsd.cache chown -R nobody:nogroup /var/pdnsd fi - - cat > /var/etc/pdnsd.conf </var/etc/pdnsd.conf + global{ + perm_cache=1024; + cache_dir="/var/pdnsd"; + pid_file="/var/run/pdnsd.pid"; + run_as="nobody"; + server_ip=127.0.0.1; + server_port=5335; + status_ctl=on; + query_method=tcp_only; + min_ttl=1h; + max_ttl=1w; + timeout=10; + neg_domain_pol=on; + proc_limit=2; + procq_limit=8; + par_queries=1; + } + server{ + label="ssr-usrdns"; + ip=$usr_dns; + port=$usr_port; + timeout=6; + uptest=none; + interval=10m; + purge_cache=off; + } + server{ + label="ssr-pdnsd"; + ip=$tcp_dns_list; + port=5353; + timeout=6; + uptest=none; + interval=10m; + purge_cache=off; + } + EOF /usr/sbin/pdnsd -c /var/etc/pdnsd.conf -d } - start_redir() { case "$(uci_get_by_name $GLOBAL_SERVER auth_enable)" in - 1|on|true|yes|enabled) ARG_OTA="-A";; - *) ARG_OTA="";; + 1 | on | true | yes | enabled) ARG_OTA="-A" ;; + *) ARG_OTA="" ;; esac - #deal kcp local kcp_enable=$(uci_get_by_name $GLOBAL_SERVER kcp_enable 0) - if [ $kcp_enable = "1" ] ;then - [ ! -f "/usr/bin/kcptun-client" ] && return 1 - - local kcp_str=`/usr/bin/kcptun-client -v |grep kcptun|wc -l` - [ "0" = $kcp_str ] && return 1 + if [ "$kcp_enable" == "1" ]; then + [ ! -f "/usr/bin/kcptun-client" ] && return 1 + local kcp_str=$(/usr/bin/kcptun-client -v | grep kcptun | wc -l) + [ "0" == "$kcp_str" ] && return 1 local kcp_port=$(uci_get_by_name $GLOBAL_SERVER kcp_port) local server_port=$(uci_get_by_name $GLOBAL_SERVER server_port) local password=$(uci_get_by_name $GLOBAL_SERVER kcp_password) local kcp_param=$(uci_get_by_name $GLOBAL_SERVER kcp_param) - [ "$password" != "" ] && password="--key "${password} + [ "$password" != "" ] && password="--key "$password service_start /usr/bin/kcptun-client \ - -r $kcp_server:$kcp_port \ - -l :$server_port $password $kcp_param + -r $kcp_server:$kcp_port \ + -l :$server_port $password $kcp_param kcp_enable_flag=1 fi - gen_config_file $GLOBAL_SERVER 0 local stype=$(uci_get_by_name $GLOBAL_SERVER type) - if [ "$stype" == "ss" ] ;then - sscmd="/usr/bin/ss-redir" - elif [ "$stype" == "ssr" ] ;then - sscmd="/usr/bin/ssr-redir" - elif [ "$stype" == "v2ray" ] ;then - sscmd="/usr/bin/v2ray/v2ray" - [ ! -f "$sscmd" ] && sscmd="/usr/bin/v2ray" - elif [ "$stype" == "trojan" ] ;then - sscmd="/usr/sbin/trojan" + if [ "$stype" == "ss" ]; then + sscmd="/usr/bin/ss-redir" + elif [ "$stype" == "ssr" ]; then + sscmd="/usr/bin/ssr-redir" + elif [ "$stype" == "v2ray" ]; then + sscmd="/usr/bin/v2ray/v2ray" + [ ! -f "$sscmd" ] && sscmd="/usr/bin/v2ray" + elif [ "$stype" == "trojan" ]; then + sscmd="/usr/sbin/trojan" fi - local utype=$(uci_get_by_name $UDP_RELAY_SERVER type) - if [ "$utype" == "ss" ] ;then - ucmd="/usr/bin/ss-redir" - elif [ "$utype" == "ssr" ] ;then - ucmd="/usr/bin/ssr-redir" - elif [ "$utype" == "v2ray" ] ;then - ucmd="/usr/bin/v2ray/v2ray" - [ ! -f "$ucmd" ] && ucmd="/usr/bin/v2ray" - elif [ "$utype" == "trojan" ] ;then - ucmd="/usr/sbin/trojan" + if [ "$utype" == "ss" ]; then + ucmd="/usr/bin/ss-redir" + elif [ "$utype" == "ssr" ]; then + ucmd="/usr/bin/ssr-redir" + elif [ "$utype" == "v2ray" ]; then + ucmd="/usr/bin/v2ray/v2ray" + [ ! -f "$ucmd" ] && ucmd="/usr/bin/v2ray" + elif [ "$utype" == "trojan" ]; then + ucmd="/usr/sbin/trojan" fi - - if [ "$(uci_get_by_type global threads 0)" = "0" ] ;then + if [ "$(uci_get_by_type global threads 0)" == "0" ]; then threads=$(cat /proc/cpuinfo | grep 'processor' | wc -l) else threads=$(uci_get_by_type global threads) fi - redir_tcp=1 - if [ "$stype" == "ss" -o "$stype" == "ssr" ] ;then - local last_config_file=$CONFIG_FILE - local pid_file="/var/run/ssr-retcp.pid" - for i in $(seq 1 $threads) - do - $sscmd -c $CONFIG_FILE $ARG_OTA -f /var/run/ssr-retcp_$i.pid >/dev/null 2>&1 - done - echo "$(date "+%Y-%m-%d %H:%M:%S") Shadowsocks/ShadowsocksR $threads Threads Started!" >> /tmp/ssrplus.log - elif [ "$stype" == "v2ray" ] ;then + if [ "$stype" == "ss" -o "$stype" == "ssr" ]; then + local last_config_file=$CONFIG_FILE + local pid_file="/var/run/ssr-retcp.pid" + for i in $(seq 1 $threads); do + $sscmd -c $CONFIG_FILE $ARG_OTA -f /var/run/ssr-retcp_$i.pid >/dev/null 2>&1 + done + echo "$(date "+%Y-%m-%d %H:%M:%S") Shadowsocks/ShadowsocksR $threads Threads Started!" >>/tmp/ssrplus.log + elif [ "$stype" == "v2ray" ]; then $sscmd -config /var/etc/v2-ssr-retcp.json >/dev/null 2>&1 & - echo "$(date "+%Y-%m-%d %H:%M:%S") $($sscmd -version | head -1) Started!" >> /tmp/ssrplus.log - elif [ "$stype" == "trojan" ] ;then + echo "$(date "+%Y-%m-%d %H:%M:%S") $($sscmd -version | head -1) Started!" >>/tmp/ssrplus.log + elif [ "$stype" == "trojan" ]; then $sscmd --config /var/etc/trojan-ssr-retcp.json >/dev/null 2>&1 & - echo "$(date "+%Y-%m-%d %H:%M:%S") $($sscmd --version 2>&1 | head -1) Started!" >> /tmp/ssrplus.log + echo "$(date "+%Y-%m-%d %H:%M:%S") $($sscmd --version 2>&1 | head -1) Started!" >>/tmp/ssrplus.log fi - - if [ -n "$UDP_RELAY_SERVER" ] ;then + if [ -n "$UDP_RELAY_SERVER" ]; then redir_udp=1 - if [ "$utype" == "ss" -o "$utype" == "ssr" ] ;then - case "$(uci_get_by_name $UDP_RELAY_SERVER auth_enable)" in - 1|on|true|yes|enabled) ARG_OTA="-A";; - *) ARG_OTA="";; - esac + if [ "$utype" == "ss" -o "$utype" == "ssr" ]; then + case "$(uci_get_by_name $UDP_RELAY_SERVER auth_enable)" in + 1 | on | true | yes | enabled) ARG_OTA="-A" ;; + *) ARG_OTA="" ;; + esac gen_config_file $UDP_RELAY_SERVER 1 last_config_file=$CONFIG_UDP_FILE pid_file="/var/run/ssr-reudp.pid" $ucmd -c $last_config_file $ARG_OTA -U -f /var/run/ssr-reudp.pid >/dev/null 2>&1 - elif [ "$utype" == "v2ray" ] ; then - lua /usr/share/shadowsocksr/genv2config.lua $UDP_RELAY_SERVER udp $(uci_get_by_name $UDP_RELAY_SERVER local_port) > /var/etc/v2-ssr-reudp.json - sed -i 's/\\//g' /var/etc/v2-ssr-reudp.json - $ucmd -config /var/etc/v2-ssr-reudp.json >/dev/null 2>&1 & - elif [ "$stype" == "trojan" ] ;then - lua /usr/share/shadowsocksr/gentrojanconfig.lua $GLOBAL_SERVER client 10801 > /var/etc/trojan-ssr-reudp.json - sed -i 's/\\//g' /var/etc/trojan-ssr-reudp.json - $ucmd --config /var/etc/trojan-ssr-reudp.json >/dev/null 2>&1 & - ipt2socks -U -4 -b 0.0.0.0 -s 127.0.0.1 -p 10801 -l $(uci_get_by_name $UDP_RELAY_SERVER local_port) >/dev/null 2>&1 & + elif [ "$utype" == "v2ray" ]; then + lua /usr/share/shadowsocksr/genv2config.lua $UDP_RELAY_SERVER udp $(uci_get_by_name $UDP_RELAY_SERVER local_port) >/var/etc/v2-ssr-reudp.json + sed -i 's/\\//g' /var/etc/v2-ssr-reudp.json + $ucmd -config /var/etc/v2-ssr-reudp.json >/dev/null 2>&1 & + elif [ "$stype" == "trojan" ]; then + lua /usr/share/shadowsocksr/gentrojanconfig.lua $GLOBAL_SERVER client 10801 >/var/etc/trojan-ssr-reudp.json + sed -i 's/\\//g' /var/etc/trojan-ssr-reudp.json + $ucmd --config /var/etc/trojan-ssr-reudp.json >/dev/null 2>&1 & + ipt2socks -U -4 -b 0.0.0.0 -s 127.0.0.1 -p 10801 -l $(uci_get_by_name $UDP_RELAY_SERVER local_port) >/dev/null 2>&1 & + fi fi - fi - - - #deal with dns - - if [ "$(uci_get_by_type global pdnsd_enable)" = "1" ] ;then - local dnsstr="$(uci_get_by_type global tunnel_forward 8.8.4.4:53)" - local dnsserver=`echo "$dnsstr"|awk -F ':' '{print $1}'` - local dnsport=`echo "$dnsstr"|awk -F ':' '{print $2}'` - if [ "$run_mode" = "gfw" ]; then - ipset add gfwlist $dnsserver 2>/dev/null - elif [ "$run_mode" = "oversea" ]; then - ipset add oversea $dnsserver 2>/dev/null - else - ipset add ss_spec_wan_ac $dnsserver nomatch 2>/dev/null - fi + if [ "$(uci_get_by_type global pdnsd_enable)" == "1" ]; then + local dnsstr="$(uci_get_by_type global tunnel_forward 8.8.4.4:53)" + local dnsserver=$(echo "$dnsstr" | awk -F ':' '{print $1}') + local dnsport=$(echo "$dnsstr" | awk -F ':' '{print $2}') + if [ "$run_mode" == "gfw" ]; then + ipset add gfwlist $dnsserver 2>/dev/null + elif [ "$run_mode" == "oversea" ]; then + ipset add oversea $dnsserver 2>/dev/null + else + ipset add ss_spec_wan_ac $dnsserver nomatch 2>/dev/null + fi start_pdnsd $dnsserver $dnsport pdnsd_enable_flag=1 fi - - if [ "$(uci_get_by_type global enable_switch)" = "1" ] ;then - if [ "$(uci_get_by_name $GLOBAL_SERVER switch_enable)" = "1" ] ;then - if [ -z "$switch_server" ] ;then + if [ "$(uci_get_by_type global enable_switch)" == "1" ]; then + if [ "$(uci_get_by_name $GLOBAL_SERVER switch_enable)" == "1" ]; then + if [ -z "$switch_server" ]; then local switch_time=$(uci_get_by_type global switch_time) local switch_timeout=$(uci_get_by_type global switch_timeout) service_start /usr/bin/ssr-switch start $switch_time $switch_timeout @@ -403,70 +373,68 @@ start_redir() { fi fi add_cron - return $? } gen_service_file() { - if [ $(uci_get_by_name $1 fast_open) = "1" ] ;then - fastopen="true"; + if [ $(uci_get_by_name $1 fast_open) == "1" ]; then + fastopen="true" else - fastopen="false"; + fastopen="false" fi cat <<-EOF >$2 -{ -"server": "0.0.0.0", -"server_port": $(uci_get_by_name $1 server_port), -"password": "$(uci_get_by_name $1 password)", -"timeout": $(uci_get_by_name $1 timeout 60), -"method": "$(uci_get_by_name $1 encrypt_method)", -"protocol": "$(uci_get_by_name $1 protocol)", -"protocol_param": "$(uci_get_by_name $1 protocol_param)", -"obfs": "$(uci_get_by_name $1 obfs)", -"obfs_param": "$(uci_get_by_name $1 obfs_param)", -"fast_open": $fastopen -} -EOF + { + "server": "0.0.0.0", + "server_port": $(uci_get_by_name $1 server_port), + "password": "$(uci_get_by_name $1 password)", + "timeout": $(uci_get_by_name $1 timeout 60), + "method": "$(uci_get_by_name $1 encrypt_method)", + "protocol": "$(uci_get_by_name $1 protocol)", + "protocol_param": "$(uci_get_by_name $1 protocol_param)", + "obfs": "$(uci_get_by_name $1 obfs)", + "obfs_param": "$(uci_get_by_name $1 obfs_param)", + "fast_open": $fastopen + } + EOF } start_service() { -[ $(uci_get_by_name $1 enable) = "0" ] && return 1 -let server_count=server_count+1 -if [ $server_count = 1 ] ;then - iptables -N SSR-SERVER-RULE && \ - iptables -t filter -I INPUT -j SSR-SERVER-RULE -fi - -gen_service_file $1 /var/etc/${NAME}_${server_count}.json -/usr/bin/ssr-server -c /var/etc/${NAME}_${server_count}.json -u -f /var/run/ssr-server${server_count}.pid >/dev/null 2>&1 -iptables -t filter -A SSR-SERVER-RULE -p tcp --dport $(uci_get_by_name $1 server_port) -j ACCEPT -iptables -t filter -A SSR-SERVER-RULE -p udp --dport $(uci_get_by_name $1 server_port) -j ACCEPT -return 0 + [ $(uci_get_by_name $1 enable 0) == "0" ] && return 1 + let server_count=server_count+1 + if [ "$server_count" == "1" ]; then + iptables -N SSR-SERVER-RULE && \ + iptables -t filter -I INPUT -j SSR-SERVER-RULE + fi + gen_service_file $1 /var/etc/${NAME}_$server_count.json + /usr/bin/ssr-server -c /var/etc/${NAME}_$server_count.json -u -f /var/run/ssr-server$server_count.pid >/dev/null 2>&1 + iptables -t filter -A SSR-SERVER-RULE -p tcp --dport $(uci_get_by_name $1 server_port) -j ACCEPT + iptables -t filter -A SSR-SERVER-RULE -p udp --dport $(uci_get_by_name $1 server_port) -j ACCEPT + return 0 } + gen_serv_include() { -FWI=$(uci get firewall.shadowsocksr.path 2>/dev/null) -[ -n "$FWI" ] || return 0 -if [ ! -f $FWI ] ;then - echo '#!/bin/sh' >$FWI -fi -extract_rules() { -echo "*filter" -iptables-save -t filter | grep SSR-SERVER-RULE|sed -e "s/^-A INPUT/-I INPUT/" -echo 'COMMIT' + FWI=$(uci get firewall.shadowsocksr.path 2>/dev/null) + [ -n "$FWI" ] || return 0 + if [ ! -f $FWI ]; then + echo '#!/bin/sh' >$FWI + fi + extract_rules() { + echo "*filter" + iptables-save -t filter | grep SSR-SERVER-RULE | sed -e "s/^-A INPUT/-I INPUT/" + echo 'COMMIT' + } + cat <<-EOF >>$FWI + iptables-save -c | grep -v "SSR-SERVER" | iptables-restore -c + iptables-restore -n <<-EOT + $(extract_rules) + EOT + EOF } -cat <<-EOF >>$FWI -iptables-save -c | grep -v "SSR-SERVER" | iptables-restore -c -iptables-restore -n <<-EOT -$(extract_rules) -EOT -EOF -} start_server() { - SERVER_ENABLE=$(uci_get_by_type server_global enable_server) - [ "$SERVER_ENABLE" = 0 ] && return 0 + SERVER_ENABLE=$(uci_get_by_type server_global enable_server 0) + [ "$SERVER_ENABLE" == "0" ] && return 0 mkdir -p /var/run /var/etc - config_load $NAME config_foreach start_service server_config gen_serv_include @@ -475,21 +443,20 @@ start_server() { start_local() { local local_server=$(uci_get_by_type socks5_proxy socks 0) - [ "$local_server" = 0 ] && return 0 + [ "$local_server" == "0" ] && return 0 mkdir -p /var/run /var/etc - echo '0.0.0.0 any' > /var/etc/srelay.conf - + echo '0.0.0.0 any' >/var/etc/srelay.conf /usr/bin/srelay -q -c /var/etc/srelay.conf \ - -i:$(uci_get_by_type socks5_proxy local_port 1080) >/dev/null 2>&1 + -i:$(uci_get_by_type socks5_proxy local_port 1080) >/dev/null 2>&1 local_enable=1 } rules() { - [ "$GLOBAL_SERVER" = "nil" ] && return 1 + [ "$GLOBAL_SERVER" == "nil" ] && return 1 mkdir -p /var/run /var/etc UDP_RELAY_SERVER=$(uci_get_by_type global udp_relay_server) - [ "$UDP_RELAY_SERVER" = "same" ] && UDP_RELAY_SERVER=$GLOBAL_SERVER - if start_rules ;then + [ "$UDP_RELAY_SERVER" == "same" ] && UDP_RELAY_SERVER=$GLOBAL_SERVER + if start_rules; then return 0 else return 1 @@ -497,66 +464,59 @@ rules() { } start() { - if [ -z "$switch_server" ] ;then + if [ -z "$switch_server" ]; then GLOBAL_SERVER=$(uci_get_by_type global global_server) else GLOBAL_SERVER=$switch_server switch_enable=1 fi - - if rules ;then - start_redir - - mkdir -p /tmp/dnsmasq.d && cp -a /etc/dnsmasq.ssr /tmp/ && cp -a /etc/dnsmasq.oversea /tmp/ - if ! [ "$run_mode" = "oversea" ] ;then - cat > /tmp/dnsmasq.d/dnsmasq-ssr.conf < /tmp/dnsmasq.d/dnsmasq-ssr.conf </dev/null 2>&1 - + if rules; then + start_redir + mkdir -p /tmp/dnsmasq.d && cp -a /etc/dnsmasq.ssr /tmp/ && cp -a /etc/dnsmasq.oversea /tmp/ + if ! [ "$run_mode" == "oversea" ]; then + cat <<-EOF >/tmp/dnsmasq.d/dnsmasq-ssr.conf + conf-dir=/tmp/dnsmasq.ssr + EOF + else + cat <<-EOF >/tmp/dnsmasq.d/dnsmasq-ssr.conf + conf-dir=/tmp/dnsmasq.oversea + EOF + fi + if [ $(uci_get_by_type global adblock 0) == "0" ]; then + rm -f /tmp/dnsmasq.ssr/ad.conf + fi + /usr/share/shadowsocksr/gfw2ipset.sh + /etc/init.d/dnsmasq restart >/dev/null 2>&1 fi start_server start_local - - if [ $(uci_get_by_type global monitor_enable) = 1 ] ;then + if [ $(uci_get_by_type global monitor_enable 0) == "1" ]; then let total_count=server_count+redir_tcp+redir_udp+tunnel_enable+kcp_enable_flag+local_enable+pdnsd_enable_flag+switch_enable - if [ $total_count -gt 0 ] ;then + if [ $total_count -gt 0 ]; then #param:server(count) redir_tcp(0:no,1:yes) redir_udp tunnel kcp local gfw service_start /usr/bin/ssr-monitor $server_count $redir_tcp $redir_udp $tunnel_enable $kcp_enable_flag $local_enable $pdnsd_enable_flag $switch_enable fi fi - - ENABLE_SERVER=$(uci_get_by_type global global_server) - [ "$ENABLE_SERVER" = "nil" ] && return 1 + ENABLE_SERVER=$(uci_get_by_type global global_server nil) + [ "$ENABLE_SERVER" == "nil" ] && return 1 } boot() { - (/usr/share/shadowsocksr/chinaipset.sh && sleep 5 && start >/dev/null 2>&1) & + (/usr/share/shadowsocksr/chinaipset.sh && sleep 3 && start >/dev/null 2>&1) & } stop() { /usr/bin/ssr-rules -f - srulecount=`iptables -L|grep SSR-SERVER-RULE|wc -l` - if [ $srulecount -gt 0 ] ;then + srulecount=$(iptables -L | grep SSR-SERVER-RULE | wc -l) + if [ $srulecount -gt 0 ]; then iptables -F SSR-SERVER-RULE - iptables -t filter -D INPUT -j SSR-SERVER-RULE + iptables -t filter -D INPUT -j SSR-SERVER-RULE iptables -X SSR-SERVER-RULE 2>/dev/null fi - if [ -z "$switch_server" ] ;then + if [ -z "$switch_server" ]; then kill -9 $(busybox ps -w | grep ssr-switch | grep -v grep | awk '{print $1}') >/dev/null 2>&1 fi - if [ $(uci_get_by_type global monitor_enable) = 1 ] ;then + if [ $(uci_get_by_type global monitor_enable 0) == "1" ]; then kill -9 $(busybox ps -w | grep ssr-monitor | grep -v grep | awk '{print $1}') >/dev/null 2>&1 fi killall -q -9 ssr-monitor @@ -570,12 +530,11 @@ stop() { killall -q -9 ssr-server killall -q -9 kcptun-client killall -q -9 srelay - if [ -f /var/run/pdnsd.pid ] ;then + if [ -f /var/run/pdnsd.pid ]; then kill $(cat /var/run/pdnsd.pid) >/dev/null 2>&1 else kill -9 $(busybox ps -w | grep pdnsd | grep -v grep | awk '{print $1}') >/dev/null 2>&1 fi - if [ -f "/tmp/dnsmasq.d/dnsmasq-ssr.conf" ]; then rm -f /tmp/dnsmasq.d/dnsmasq-ssr.conf /etc/init.d/dnsmasq restart >/dev/null 2>&1 diff --git a/package/lean/luci-app-ssr-plus/root/etc/uci-defaults/luci-ssr-plus b/package/lean/luci-app-ssr-plus/root/etc/uci-defaults/luci-ssr-plus index 97aa54a46..d4a383569 100755 --- a/package/lean/luci-app-ssr-plus/root/etc/uci-defaults/luci-ssr-plus +++ b/package/lean/luci-app-ssr-plus/root/etc/uci-defaults/luci-ssr-plus @@ -13,6 +13,7 @@ uci -q batch <<-EOF >/dev/null commit firewall EOF +killall -q -9 ssr-monitor ss-redir ssr-redir v2ray trojan ipt2socks ssr-server kcptun-client srelay /usr/share/shadowsocksr/gfw2ipset.sh rm -f /tmp/luci-indexcache exit 0 diff --git a/package/lean/luci-app-ssr-plus/root/usr/bin/ssr-gfw b/package/lean/luci-app-ssr-plus/root/usr/bin/ssr-gfw index 89a2da431..07ee49c45 100755 --- a/package/lean/luci-app-ssr-plus/root/usr/bin/ssr-gfw +++ b/package/lean/luci-app-ssr-plus/root/usr/bin/ssr-gfw @@ -1,31 +1,25 @@ #!/bin/sh -e -generate_china_banned() -{ - - cat $1 | base64 -d > /tmp/gfwlist.txt - rm -f $1 +generate_china_banned() { + cat $1 | base64 -d >/tmp/gfwlist.txt + rm -f $1 sed -i '/^@@|/d' /tmp/gfwlist.txt - cat /tmp/gfwlist.txt | sort -u | sed 's#!.\+##; s#|##g; s#@##g; s#http:\/\/##; s#https:\/\/##;' | sed '/\*/d; /apple\.com/d; /sina\.cn/d; /sina\.com\.cn/d; /baidu\.com/d; /byr\.cn/d; /jlike\.com/d; /weibo\.com/d; /zhongsou\.com/d; /youdao\.com/d; /sogou\.com/d; /so\.com/d; /soso\.com/d; /aliyun\.com/d; /taobao\.com/d; /jd\.com/d; /qq\.com/d' | sed '/^[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+$/d' | grep '^[0-9a-zA-Z\.-]\+$' | grep '\.' | sed 's#^\.\+##' | sort -u | - awk ' -BEGIN { prev = "________"; } { - cur = $0; - if (index(cur, prev) == 1 && substr(cur, 1 + length(prev) ,1) == ".") { - } else { + awk 'BEGIN { prev = "________"; } { + cur = $0; + if (index(cur, prev) == 1 && substr(cur, 1 + length(prev) ,1) == ".") { + } else { print cur; prev = cur; - } -}' | sort -u - + } + }' | sort -u } -generate_china_banned /tmp/gfw.b64 > /tmp/gfw.txt +generate_china_banned /tmp/gfw.b64 >/tmp/gfw.txt rm -f /tmp/gfwlist.txt sed '/.*/s/.*/server=\/\.&\/127.0.0.1#5335\nipset=\/\.&\/gfwlist/' /tmp/gfw.txt >/tmp/gfwnew.txt rm -f /tmp/gfw.txt - diff --git a/package/lean/luci-app-ssr-plus/root/usr/bin/ssr-monitor b/package/lean/luci-app-ssr-plus/root/usr/bin/ssr-monitor index 2ba7b8874..678846d79 100755 --- a/package/lean/luci-app-ssr-plus/root/usr/bin/ssr-monitor +++ b/package/lean/luci-app-ssr-plus/root/usr/bin/ssr-monitor @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/sh # # Copyright (C) 2017 openwrt-ssr # Copyright (C) 2017 yushi studio @@ -7,7 +7,6 @@ # See /LICENSE for more information. # - NAME=shadowsocksr uci_get_by_name() { @@ -27,8 +26,8 @@ tunnel_process=$4 kcp_process=$5 local_process=$6 pdnsd_process=$7 -if [ -z "$pdnsd_process" ] ;then -pdnsd_process=0 +if [ -z "$pdnsd_process" ]; then + pdnsd_process=0 fi i=0 @@ -43,90 +42,81 @@ kcp_param=$(uci_get_by_name $GLOBAL_SERVER kcp_param) sock5_port=$(uci_get_by_type socks5_proxy local_port 1080) -if echo $server|grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$">/dev/null; then +if echo "$server" | grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" >/dev/null; then server=${server} - else - server=`cat /etc/ssr_ip` +else + server=$(cat /etc/ssr_ip) fi -while [ "1" = "1" ] #死循环 -do - sleep 30 -#redir tcp - if [ $redir_tcp_process -gt 0 ] ;then - icount=`busybox ps -w | grep ssr-retcp |grep -v grep| wc -l` - if [ $icount = 0 ] ;then +while [ "1" == "1" ]; do #死循环 + sleep 30 + #redir tcp + if [ "$redir_tcp_process" -gt 0 ]; then + icount=$(busybox ps -w | grep ssr-retcp | grep -v grep | wc -l) + if [ "$icount" == 0 ]; then logger -t "$NAME" "ssr redir tcp error.restart!" - /etc/init.d/shadowsocksr restart + /etc/init.d/shadowsocksr restart exit 0 - fi - fi -#redir udp - if [ $redir_udp_process -gt 0 ] ;then - icount=`busybox ps -w | grep ssr-reudp|grep -v grep| wc -l` - if [ $icount = 0 ] ;then + fi + fi + #redir udp + if [ "$redir_udp_process" -gt 0 ]; then + icount=$(busybox ps -w | grep ssr-reudp | grep -v grep | wc -l) + if [ "$icount" == 0 ]; then logger -t "$NAME" "ssr redir udp error.restart!" - /etc/init.d/shadowsocksr restart + /etc/init.d/shadowsocksr restart exit 0 - fi - fi -#tunnel - if [ $tunnel_process -gt 0 ] ;then - icount=`busybox ps -w | grep ssr-tunnel |grep -v grep| wc -l` - if [ $icount = 0 ] ;then + fi + fi + #tunnel + if [ "$tunnel_process" -gt 0 ]; then + icount=$(busybox ps -w | grep ssr-tunnel | grep -v grep | wc -l) + if [ "$icount" == 0 ]; then logger -t "$NAME" "ssr tunnel error.restart!" - /etc/init.d/shadowsocksr restart + /etc/init.d/shadowsocksr restart exit 0 + fi + fi + #server + if [ "$server_process_count" -gt 0 ]; then + icount=$(busybox ps -w | grep ssr-server | grep -v grep | wc -l) + if [ "$icount" -lt "$server_process_count" ]; then #如果进程挂掉就重启它 + logger -t "$NAME" "ssr server error.restart!" + killall -q -9 ssr-server + for i in $(seq $server_process_count); do + /usr/bin/ssr-server -c /var/etc/shadowsocksr_$i.json -u -f /var/run/ssr-server$i.pid + done + fi + fi + #kcptun + if [ "$kcp_process" -gt 0 ]; then + icount=$(busybox ps -w | grep kcptun-client | grep -v grep | wc -l) + if [ "$icount" -lt "$kcp_process" ]; then #如果进程挂掉就重启它 + logger -t "$NAME" "ssr kcptun error.restart!" + killall -q -9 kcptun-client + (/usr/bin/kcptun-client -r $server:$kcp_port -l :$server_port $password $kcp_param &) + fi + fi + #srelay + if [ "$local_process" -gt 0 ]; then + icount=$(busybox ps -w | grep srelay | grep -v grep | wc -l) + if [ "$icount" -lt "$local_process" ]; then #如果进程挂掉就重启它 + logger -t "$NAME" "srelay error.restart!" + killall -q -9 srelay + (/usr/bin/srelay -q -c /etc/srelay.conf -i:$sock5_port -p /var/run/srelay.pid >/dev/null 2>&1) + fi + fi + #pdnsd + if [ "$pdnsd_process" -gt 0 ]; then + icount=$(busybox ps -w | grep pdnsd | grep -v grep | wc -l) + if [ "$icount" -lt "$pdnsd_process" ]; then #如果进程挂掉就重启它 + logger -t "$NAME" "pdnsd tunnel error.restart!" + if [ -f /var/run/pdnsd.pid ]; then + kill $(cat /var/run/pdnsd.pid) >/dev/null 2>&1 + else + kill -9 $(ps | grep pdnsd | grep -v grep | awk '{print $1}') >/dev/null 2>&1 fi - fi -#server - if [ $server_process_count -gt 0 ] ;then - icount=`busybox ps -w | grep ssr-server |grep -v grep| wc -l` - if [ $icount -lt $server_process_count ] #如果进程挂掉就重启它 - then - logger -t "$NAME" "ssr server error.restart!" - killall -q -9 ssr-server - for i in `seq $server_process_count` - do - /usr/bin/ssr-server -c /var/etc/shadowsocksr_$i.json -u -f /var/run/ssr-server$i.pid - done - fi - fi -#kcptun - if [ $kcp_process -gt 0 ] ;then - icount=`busybox ps -w | grep kcptun-client |grep -v grep| wc -l` - if [ $icount -lt $kcp_process ] #如果进程挂掉就重启它 - then - logger -t "$NAME" "ssr kcptun error.restart!" - killall -q -9 kcptun-client - - ( /usr/bin/kcptun-client -r $server:$kcp_port -l :$server_port $password $kcp_param &) - fi - fi -#local - if [ $local_process -gt 0 ] ;then - icount=`busybox ps -w | grep srelay |grep -v grep| wc -l` - if [ $icount -lt $local_process ] #如果进程挂掉就重启它 - then - logger -t "$NAME" "ssr local error.restart!" - killall -q -9 srelay - - ( /usr/bin/srelay -q -c /etc/srelay.conf -i:$sock5_port -p /var/run/ssr-local.pid >/dev/null 2>&1) - fi - fi -#pdnsd - if [ $pdnsd_process -gt 0 ] ;then - icount=`busybox ps -w | grep pdnsd |grep -v grep| wc -l` - if [ $icount -lt $pdnsd_process ] #如果进程挂掉就重启它 - then - logger -t "$NAME" "pdnsd tunnel error.restart!" - if [ -f /var/run/pdnsd.pid ] ;then - kill $(cat /var/run/pdnsd.pid) >/dev/null 2>&1 - else - kill -9 $(ps | grep pdnsd | grep -v grep | awk '{print $1}') >/dev/null 2>&1 - fi - - ( /usr/sbin/pdnsd -c /var/etc/pdnsd.conf -d &) - fi + (/usr/sbin/pdnsd -c /var/etc/pdnsd.conf -d &) fi + fi done 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 df47d12ed..527747011 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 @@ -7,9 +7,9 @@ # See /LICENSE for more information. # -TAG="_SS_SPEC_RULE_" # comment tag -IPT="iptables -t nat" # alias of iptables -FWI=$(uci get firewall.shadowsocksr.path 2>/dev/null) # firewall include file +TAG="_SS_SPEC_RULE_" # comment tag +IPT="iptables -t nat" # alias of iptables +FWI=$(uci get firewall.shadowsocksr.path 2>/dev/null) # firewall include file usage() { cat <<-EOF @@ -39,7 +39,7 @@ Valid options are: -g gfw list mode -r return china mode -h show this help message and exit -EOF + EOF exit $1 } @@ -75,54 +75,45 @@ flush_r() { ipset_r() { ipset -N gmlan hash:net 2>/dev/null - for ip in $LAN_GM_IP; do ipset -! add gmlan $ip ; done - - if [ "$RUNMODE" = "router" ] ;then - ipset -! -R <<-EOF || return 1 - create ss_spec_wan_ac hash:net - $(gen_iplist | sed -e "s/^/add ss_spec_wan_ac /") -EOF - ipset -N gfwlist hash:net 2>/dev/null - $IPT -N SS_SPEC_WAN_AC - $IPT -I SS_SPEC_WAN_AC -d $server -j RETURN - $IPT -A SS_SPEC_WAN_AC -m set --match-set ss_spec_wan_ac dst -j RETURN - $IPT -A SS_SPEC_WAN_AC -j SS_SPEC_WAN_FW - - elif [ "$RUNMODE" = "gfw" ] ;then - ipset -N gfwlist hash:net 2>/dev/null - $IPT -N SS_SPEC_WAN_AC - $IPT -A SS_SPEC_WAN_AC -m set --match-set gfwlist dst -j SS_SPEC_WAN_FW - $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 -I SS_SPEC_WAN_AC -d $server -j RETURN - - elif [ "$RUNMODE" = "oversea" ] ;then - ipset -N oversea hash:net 2>/dev/null - $IPT -N SS_SPEC_WAN_AC - ipset -N gmlan hash:net 2>/dev/null - for ip in $LAN_GM_IP; do ipset -! add gmlan $ip ; done - $IPT -A SS_SPEC_WAN_AC -m set --match-set china dst -j SS_SPEC_WAN_FW - $IPT -I SS_SPEC_WAN_AC -d $server -j RETURN - - elif [ "$RUNMODE" = "all" ] ;then - $IPT -N SS_SPEC_WAN_AC - $IPT -A SS_SPEC_WAN_AC -j SS_SPEC_WAN_FW - $IPT -I SS_SPEC_WAN_AC -d $server -j RETURN - + for ip in $LAN_GM_IP; do ipset -! add gmlan $ip; done + if [ "$RUNMODE" == "router" ]; then + ipset -! -R <<-EOF || return 1 + create ss_spec_wan_ac hash:net + $(gen_iplist | sed -e "s/^/add ss_spec_wan_ac /") + EOF + ipset -N gfwlist hash:net 2>/dev/null + $IPT -N SS_SPEC_WAN_AC + $IPT -I SS_SPEC_WAN_AC -d $server -j RETURN + $IPT -A SS_SPEC_WAN_AC -m set --match-set ss_spec_wan_ac dst -j RETURN + $IPT -A SS_SPEC_WAN_AC -j SS_SPEC_WAN_FW + elif [ "$RUNMODE" == "gfw" ]; then + ipset -N gfwlist hash:net 2>/dev/null + $IPT -N SS_SPEC_WAN_AC + $IPT -A SS_SPEC_WAN_AC -m set --match-set gfwlist dst -j SS_SPEC_WAN_FW + $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 -I SS_SPEC_WAN_AC -d $server -j RETURN + elif [ "$RUNMODE" == "oversea" ]; then + ipset -N oversea hash:net 2>/dev/null + $IPT -N SS_SPEC_WAN_AC + ipset -N gmlan hash:net 2>/dev/null + for ip in $LAN_GM_IP; do ipset -! add gmlan $ip; done + $IPT -A SS_SPEC_WAN_AC -m set --match-set china dst -j SS_SPEC_WAN_FW + $IPT -I SS_SPEC_WAN_AC -d $server -j RETURN + elif [ "$RUNMODE" == "all" ]; then + $IPT -N SS_SPEC_WAN_AC + $IPT -A SS_SPEC_WAN_AC -j SS_SPEC_WAN_FW + $IPT -I SS_SPEC_WAN_AC -d $server -j RETURN fi - ipset -N fplan hash:net 2>/dev/null - for ip in $LAN_FP_IP; do ipset -! add fplan $ip ; done + for ip in $LAN_FP_IP; do ipset -! add fplan $ip; done $IPT -I SS_SPEC_WAN_AC -m set --match-set fplan src -j SS_SPEC_WAN_FW - ipset -N whitelist hash:net 2>/dev/null ipset -N blacklist hash:net 2>/dev/null $IPT -I SS_SPEC_WAN_AC -m set --match-set blacklist dst -j SS_SPEC_WAN_FW $IPT -I SS_SPEC_WAN_AC -m set --match-set whitelist dst -j RETURN - for ip in $WAN_BP_IP; do ipset -! add whitelist $ip; done for ip in $WAN_FW_IP; do ipset -! add blacklist $ip; done - return $? } @@ -136,8 +127,8 @@ fw_rule() { $IPT -A SS_SPEC_WAN_FW -d 192.168.0.0/16 -j RETURN $IPT -A SS_SPEC_WAN_FW -d 224.0.0.0/4 -j RETURN $IPT -A SS_SPEC_WAN_FW -d 240.0.0.0/4 -j RETURN - $IPT -A SS_SPEC_WAN_FW -p tcp $PROXY_PORTS \ - -j REDIRECT --to-ports $local_port 2>/dev/null || { + $IPT -A SS_SPEC_WAN_FW -p tcp $PROXY_PORTS \ + -j REDIRECT --to-ports $local_port 2>/dev/null || { loger 3 "Can't redirect, please check the iptables." exit 1 } @@ -147,37 +138,37 @@ fw_rule() { ac_rule() { if [ -n "$LAN_AC_IP" ]; then case "${LAN_AC_IP:0:1}" in - w|W) - MATCH_SET="-m set --match-set ss_spec_lan_ac src" - ;; - b|B) - MATCH_SET="-m set ! --match-set ss_spec_lan_ac src" - ;; - *) - loger 3 "Bad argument \`-a $LAN_AC_IP\`." - return 2 - ;; + w | W) + MATCH_SET="-m set --match-set ss_spec_lan_ac src" + ;; + b | B) + MATCH_SET="-m set ! --match-set ss_spec_lan_ac src" + ;; + *) + loger 3 "Bad argument \`-a $LAN_AC_IP\`." + return 2 + ;; esac fi IFNAME=$(uci get -P/var/state network.lan.ifname 2>/dev/null) ipset -! -R <<-EOF || return 1 create ss_spec_lan_ac hash:net $(for ip in ${LAN_AC_IP:1}; do echo "add ss_spec_lan_ac $ip"; done) -EOF + EOF $IPT -I PREROUTING 1 ${IFNAME:+-i $IFNAME} -p tcp $EXT_ARGS $MATCH_SET \ - -m comment --comment "$TAG" -j SS_SPEC_WAN_AC + -m comment --comment "$TAG" -j SS_SPEC_WAN_AC if [ "$OUTPUT" = 1 ]; then $IPT -I OUTPUT 1 -p tcp $EXT_ARGS \ - -m comment --comment "$TAG" -j SS_SPEC_WAN_AC + -m comment --comment "$TAG" -j SS_SPEC_WAN_AC elif [ "$OUTPUT" = 2 ]; then ipset -! -R <<-EOF || return 1 - create ssr_gen_router hash:net - $(gen_spec_iplist | sed -e "s/^/add ssr_gen_router /") -EOF + create ssr_gen_router hash:net + $(gen_spec_iplist | sed -e "s/^/add ssr_gen_router /") + EOF $IPT -N SS_SPEC_ROUTER && \ $IPT -A SS_SPEC_ROUTER -m set --match-set ssr_gen_router dst -j RETURN && \ $IPT -A SS_SPEC_ROUTER -j SS_SPEC_WAN_FW - $IPT -I OUTPUT 1 -p tcp -m comment --comment "$TAG" -j SS_SPEC_ROUTER + $IPT -I OUTPUT 1 -p tcp -m comment --comment "$TAG" -j SS_SPEC_ROUTER fi return $? } @@ -200,32 +191,26 @@ tp_rule() { $ipt -A SS_SPEC_TPROXY -p udp -d 240.0.0.0/4 -j RETURN $ipt -A SS_SPEC_TPROXY -p udp -d $SERVER -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 + if [ "$RUNMODE" == "router" ]; then + $ipt -A SS_SPEC_TPROXY -p udp -m set --match-set gmlan src -m set ! --match-set china dst \ -j TPROXY --on-port "$LOCAL_PORT" --tproxy-mark 0x01/0x01 - - if [ "$RUNMODE" = "router" ] ;then - $ipt -A SS_SPEC_TPROXY -p udp -m set --match-set gmlan src -m set ! --match-set china dst \ + $ipt -A SS_SPEC_TPROXY -p udp $PROXY_PORTS -m set ! --match-set ss_spec_wan_ac dst \ -j TPROXY --on-port "$LOCAL_PORT" --tproxy-mark 0x01/0x01 - $ipt -A SS_SPEC_TPROXY -p udp $PROXY_PORTS -m set ! --match-set ss_spec_wan_ac dst \ + elif [ "$RUNMODE" == "gfw" ]; then + $ipt -A SS_SPEC_TPROXY -p udp -m set --match-set china dst -j RETURN + $ipt -A SS_SPEC_TPROXY -p udp -m set --match-set gmlan src -m set ! --match-set china dst \ -j TPROXY --on-port "$LOCAL_PORT" --tproxy-mark 0x01/0x01 - - elif [ "$RUNMODE" = "gfw" ] ;then - $ipt -A SS_SPEC_TPROXY -p udp -m set --match-set china dst -j RETURN - $ipt -A SS_SPEC_TPROXY -p udp -m set --match-set gmlan src -m set ! --match-set china dst \ + $ipt -A SS_SPEC_TPROXY -p udp -m set $PROXY_PORTS --match-set gfwlist dst \ -j TPROXY --on-port "$LOCAL_PORT" --tproxy-mark 0x01/0x01 - $ipt -A SS_SPEC_TPROXY -p udp -m set $PROXY_PORTS --match-set gfwlist dst \ + elif [ "$RUNMODE" == "oversea" ]; then + $ipt -A SS_SPEC_TPROXY -p udp $PROXY_PORTS -m set --match-set china dst \ -j TPROXY --on-port "$LOCAL_PORT" --tproxy-mark 0x01/0x01 - - elif [ "$RUNMODE" = "oversea" ] ;then - $ipt -A SS_SPEC_TPROXY -p udp $PROXY_PORTS -m set --match-set china dst \ - -j TPROXY --on-port "$LOCAL_PORT" --tproxy-mark 0x01/0x01 - - elif [ "$RUNMODE" = "all" ] ;then - $ipt -A SS_SPEC_TPROXY -p udp $PROXY_PORTS -j TPROXY --on-port "$LOCAL_PORT" --tproxy-mark 0x01/0x01 + elif [ "$RUNMODE" == "all" ]; then + $ipt -A SS_SPEC_TPROXY -p udp $PROXY_PORTS -j TPROXY --on-port "$LOCAL_PORT" --tproxy-mark 0x01/0x01 fi - $ipt -I PREROUTING 1 ${IFNAME:+-i $IFNAME} -p udp $EXT_ARGS $MATCH_SET \ - -m comment --comment "$TAG" -j SS_SPEC_TPROXY - + -m comment --comment "$TAG" -j SS_SPEC_TPROXY return $? } @@ -234,7 +219,7 @@ get_wan_ip() { $server $SERVER $WAN_BP_IP -EOF + EOF } gen_iplist() { @@ -257,7 +242,7 @@ gen_iplist() { 255.255.255.255 $(get_wan_ip) $(cat ${IGNORE_LIST:=/dev/null} 2>/dev/null) -EOF + EOF } gen_spec_iplist() { @@ -279,111 +264,106 @@ gen_spec_iplist() { 240.0.0.0/4 255.255.255.255 $(get_wan_ip) -EOF + EOF } gen_include() { [ -n "$FWI" ] || return 0 extract_rules() { echo "*$1" - iptables-save -t $1 | grep SS_SPEC_ |\ - sed -e "s/^-A \(OUTPUT\|PREROUTING\)/-I \1 1/" + iptables-save -t $1 | grep SS_SPEC_ | \ + sed -e "s/^-A \(OUTPUT\|PREROUTING\)/-I \1 1/" echo 'COMMIT' } cat <<-EOF >>$FWI - iptables-save -c | grep -v "SS_SPEC" | iptables-restore -c - iptables-restore -n <<-EOT - $(extract_rules nat) - $(extract_rules mangle) - EOT -EOF + iptables-save -c | grep -v "SS_SPEC" | iptables-restore -c + iptables-restore -n <<-EOT + $(extract_rules nat) + $(extract_rules mangle) + EOT + EOF return 0 } while getopts ":s:l:S:L:i:e:a:b:w:p:G:D:oOuUfgrczh" arg; do case "$arg" in - s) - server=$OPTARG - ;; - l) - local_port=$OPTARG - ;; - S) - SERVER=$OPTARG - ;; - L) - LOCAL_PORT=$OPTARG - ;; - i) - IGNORE_LIST=$OPTARG - ;; - e) - EXT_ARGS=$OPTARG - ;; - a) - LAN_AC_IP=$OPTARG - ;; - b) - WAN_BP_IP=$(for ip in $OPTARG; do echo $ip; done) - ;; - w) - WAN_FW_IP=$OPTARG - ;; - p) - LAN_FP_IP=$OPTARG - ;; - G) - LAN_GM_IP=$OPTARG - ;; - D) - PROXY_PORTS=$OPTARG - ;; - o) - OUTPUT=1 - ;; - O) - OUTPUT=2 - ;; - u) - TPROXY=1 - ;; - U) - TPROXY=2 - ;; - g) - RUNMODE=gfw - ;; - r) - RUNMODE=router - ;; - c) - RUNMODE=oversea - ;; - z) - RUNMODE=all - ;; - f) - flush_r - exit 0 - ;; - h) - usage 0 - ;; + s) + server=$OPTARG + ;; + l) + local_port=$OPTARG + ;; + S) + SERVER=$OPTARG + ;; + L) + LOCAL_PORT=$OPTARG + ;; + i) + IGNORE_LIST=$OPTARG + ;; + e) + EXT_ARGS=$OPTARG + ;; + a) + LAN_AC_IP=$OPTARG + ;; + b) + WAN_BP_IP=$(for ip in $OPTARG; do echo $ip; done) + ;; + w) + WAN_FW_IP=$OPTARG + ;; + p) + LAN_FP_IP=$OPTARG + ;; + G) + LAN_GM_IP=$OPTARG + ;; + D) + PROXY_PORTS=$OPTARG + ;; + o) + OUTPUT=1 + ;; + O) + OUTPUT=2 + ;; + u) + TPROXY=1 + ;; + U) + TPROXY=2 + ;; + g) + RUNMODE=gfw + ;; + r) + RUNMODE=router + ;; + c) + RUNMODE=oversea + ;; + z) + RUNMODE=all + ;; + f) + flush_r + exit 0 + ;; + h) usage 0 ;; esac done - if [ -z "$server" -o -z "$local_port" ]; then usage 2 fi - -if [ "$TPROXY" = 1 ]; then +if [ "$TPROXY" == 1 ]; then SERVER=$server LOCAL_PORT=$local_port -elif [ "$TPROXY" = 2 ]; then +elif [ "$TPROXY" == 2 ]; then : ${SERVER:?"You must assign an ip for the udp relay server."} : ${LOCAL_PORT:?"You must assign a port for the udp relay server."} fi - flush_r && fw_rule && ipset_r && ac_rule && tp_rule && gen_include -[ "$?" = 0 ] || loger 3 "Start failed!" -exit $? \ No newline at end of file +[ "$?" == 0 ] || loger 3 "Start failed!" +exit $? diff --git a/package/lean/luci-app-ssr-plus/root/usr/bin/ssr-switch b/package/lean/luci-app-ssr-plus/root/usr/bin/ssr-switch index d5fc313d2..b9cdd54aa 100755 --- a/package/lean/luci-app-ssr-plus/root/usr/bin/ssr-switch +++ b/package/lean/luci-app-ssr-plus/root/usr/bin/ssr-switch @@ -16,7 +16,6 @@ NAME=shadowsocksr ENABLE_SERVER=nil CONFIG_SWTICH_FILE=/var/etc/${NAME}_t.json - [ -n "$1" ] && cycle_time=$1 [ -n "$2" ] && switch_time=$2 @@ -37,147 +36,133 @@ CURRENT_SERVER=$DEFAULT_SERVER check_proxy() { local result=0 local try_count=$(uci_get_by_type global switch_try_count 3) - for i in $(seq 1 $try_count) - do - /usr/bin/ssr-check www.google.com 80 $switch_time 1 - if [ "$?" == "0" ]; then - # echo "$(date "+%Y-%m-%d %H:%M:%S") Check Google Proxy Success, count=$i" >> /tmp/ssrplus.log - result=0 - break - else - # echo "$(date "+%Y-%m-%d %H:%M:%S") Check Google Proxy Fail, count=$i" >> /tmp/ssrplus.log - /usr/bin/ssr-check www.baidu.com 80 $switch_time 1 + for i in $(seq 1 $try_count); do + /usr/bin/ssr-check www.google.com 80 $switch_time 1 if [ "$?" == "0" ]; then - result=1 + # echo "$(date "+%Y-%m-%d %H:%M:%S") Check Google Proxy Success, count=$i" >> /tmp/ssrplus.log + result=0 + break else - result=2 + # echo "$(date "+%Y-%m-%d %H:%M:%S") Check Google Proxy Fail, count=$i" >> /tmp/ssrplus.log + /usr/bin/ssr-check www.baidu.com 80 $switch_time 1 + if [ "$?" == "0" ]; then + result=1 + else + result=2 + fi fi - fi - sleep 1; + sleep 1 done - return $result; + return $result } - test_proxy() { -local servername=$(uci_get_by_name $1 server) -local serverport=$(uci_get_by_name $1 server_port) -ret=$(ping -c 3 $servername | grep 'loss' | awk -F ',' '{ print $3 }' | awk -F "%" '{ print $1 }') -[ -z "$ret" ] && return 1 -[ "$ret" -gt "50" ] && return 1 -ipset add ss_spec_wan_ac $servername 2>/dev/null -ret=$? -/usr/bin/ssr-check $servername $serverport $switch_time -local ret2=$? -if [ "$ret" = "0" ] ;then -ipset del ss_spec_wan_ac $servername 2>/dev/null -fi -if [ "$ret2" = "0" ] ;then -return 0 -else -return 1 -fi + local servername=$(uci_get_by_name $1 server) + local serverport=$(uci_get_by_name $1 server_port) + ret=$(ping -c 3 $servername | grep 'loss' | awk -F ',' '{ print $3 }' | awk -F "%" '{ print $1 }') + [ -z "$ret" ] && return 1 + [ "$ret" -gt "50" ] && return 1 + ipset add ss_spec_wan_ac $servername 2>/dev/null + ret=$? + /usr/bin/ssr-check $servername $serverport $switch_time + local ret2=$? + if [ "$ret" == "0" ]; then + ipset del ss_spec_wan_ac $servername 2>/dev/null + fi + if [ "$ret2" == "0" ]; then + return 0 + else + return 1 + fi } search_proxy() { -let server_count=server_count+1 -[ "$normal_flag" = "1" -a "$server_count" -le "$server_locate" ] && return 0 -[ "$(uci_get_by_name $1 switch_enable)" != "1" ] && return 1 -[ $ENABLE_SERVER != nil ] && return 0 -[ "$1" = "$CURRENT_SERVER" ] && return 0 -local servername=$(uci_get_by_name $1 server) -local serverport=$(uci_get_by_name $1 server_port) -ipset add ss_spec_wan_ac $servername 2>/dev/null -ret=$? -/usr/bin/ssr-check $servername $serverport $switch_time -local ret2=$? -if [ "$ret" = "0" ] ;then -ipset del ss_spec_wan_ac $servername 2>/dev/null -fi -if [ "$ret2" = "0" ] ;then -server_locate=$server_count -ENABLE_SERVER=$1 -return 0 -else -return 1 -fi + let server_count=server_count+1 + [ "$normal_flag" == "1" -a "$server_count" -le "$server_locate" ] && return 0 + [ "$(uci_get_by_name $1 switch_enable)" != "1" ] && return 1 + [ $ENABLE_SERVER != nil ] && return 0 + [ "$1" == "$CURRENT_SERVER" ] && return 0 + local servername=$(uci_get_by_name $1 server) + local serverport=$(uci_get_by_name $1 server_port) + ipset add ss_spec_wan_ac $servername 2>/dev/null + ret=$? + /usr/bin/ssr-check $servername $serverport $switch_time + local ret2=$? + if [ "$ret" == "0" ]; then + ipset del ss_spec_wan_ac $servername 2>/dev/null + fi + if [ "$ret2" == "0" ]; then + server_locate=$server_count + ENABLE_SERVER=$1 + return 0 + else + return 1 + fi } #选择可用的代理 select_proxy() { - -config_load $NAME -ENABLE_SERVER=nil -mkdir -p /var/run /var/etc -server_count=0 -config_foreach search_proxy servers - + config_load $NAME + ENABLE_SERVER=nil + mkdir -p /var/run /var/etc + server_count=0 + config_foreach search_proxy servers } #切换代理 switch_proxy() { -/etc/init.d/shadowsocksr restart $1 -return 0 + /etc/init.d/shadowsocksr restart $1 + return 0 } start() { -#不支持kcptun启用时的切换 -[ $(uci_get_by_name $DEFAULT_SERVER kcp_enable) = "1" ] && return 1 + #不支持kcptun启用时的切换 + [ $(uci_get_by_name $DEFAULT_SERVER kcp_enable) = "1" ] && return 1 -while [ "1" = "1" ] #死循环 -do - sleep $cycle_time - - LOGTIME=$(date "+%Y-%m-%d %H:%M:%S") - - - #判断当前代理是否为缺省服务器 - if [ "$CURRENT_SERVER" != "$DEFAULT_SERVER" ] ;then - #echo "not default proxy" - echo "$(date "+%Y-%m-%d %H:%M:%S") Current server is not default Main server, try to switch back." >> /tmp/ssrplus.log - - #检查缺省服务器是否正常 - if test_proxy $DEFAULT_SERVER ;then - #echo "switch to default proxy" - echo "$(date "+%Y-%m-%d %H:%M:%S") Main server is avilable." >> /tmp/ssrplus.log - #缺省服务器正常,切换回来 - CURRENT_SERVER=$DEFAULT_SERVER - switch_proxy $CURRENT_SERVER - echo "$(date "+%Y-%m-%d %H:%M:%S") switch to default ["$(uci_get_by_name $CURRENT_SERVER server)"] proxy!" >> /tmp/ssrplus.log - continue - else - echo "$(date "+%Y-%m-%d %H:%M:%S") Main server is NOT avilable.Continue using current server." >> /tmp/ssrplus.log - fi - fi - - #判断当前代理是否正常 - check_proxy - current_ret=$? - - if [ "$current_ret" = "1" ] ;then - #当前代理错误,判断有无可用的服务器 - #echo "current error" - echo "$(date "+%Y-%m-%d %H:%M:%S") Current server error, try to switch another server." >> /tmp/ssrplus.log - - select_proxy - if [ "$ENABLE_SERVER" != nil ] ;then - #有其他服务器可用,进行切换 - #echo $(uci_get_by_name $new_proxy server) - echo "$(date "+%Y-%m-%d %H:%M:%S") Another server is avilable, now switching server." >> /tmp/ssrplus.log - CURRENT_SERVER=$ENABLE_SERVER - switch_proxy $CURRENT_SERVER - normal_flag=1 - echo "$(date "+%Y-%m-%d %H:%M:%S") ShadowsocksR server switch OK" >> /tmp/ssrplus.log - else - switch_proxy $CURRENT_SERVER - normal_flag=1 - echo "$(date "+%Y-%m-%d %H:%M:%S") Try restart current server." >> /tmp/ssrplus.log - fi - else - normal_flag=0 - echo "$(date "+%Y-%m-%d %H:%M:%S") ShadowsocksR No Problem." >> /tmp/ssrplus.log - fi - - -done + while [ "1" == "1" ]; do #死循环 + sleep $cycle_time + LOGTIME=$(date "+%Y-%m-%d %H:%M:%S") + #判断当前代理是否为缺省服务器 + if [ "$CURRENT_SERVER" != "$DEFAULT_SERVER" ]; then + #echo "not default proxy" + echo "$(date "+%Y-%m-%d %H:%M:%S") Current server is not default Main server, try to switch back." >>/tmp/ssrplus.log + #检查缺省服务器是否正常 + if test_proxy $DEFAULT_SERVER; then + #echo "switch to default proxy" + echo "$(date "+%Y-%m-%d %H:%M:%S") Main server is avilable." >>/tmp/ssrplus.log + #缺省服务器正常,切换回来 + CURRENT_SERVER=$DEFAULT_SERVER + switch_proxy $CURRENT_SERVER + echo "$(date "+%Y-%m-%d %H:%M:%S") switch to default ["$(uci_get_by_name $CURRENT_SERVER server)"] proxy!" >>/tmp/ssrplus.log + continue + else + echo "$(date "+%Y-%m-%d %H:%M:%S") Main server is NOT avilable.Continue using current server." >>/tmp/ssrplus.log + fi + fi + #判断当前代理是否正常 + check_proxy + current_ret=$? + if [ "$current_ret" == "1" ]; then + #当前代理错误,判断有无可用的服务器 + #echo "current error" + echo "$(date "+%Y-%m-%d %H:%M:%S") Current server error, try to switch another server." >>/tmp/ssrplus.log + select_proxy + if [ "$ENABLE_SERVER" != nil ]; then + #有其他服务器可用,进行切换 + #echo $(uci_get_by_name $new_proxy server) + echo "$(date "+%Y-%m-%d %H:%M:%S") Another server is avilable, now switching server." >>/tmp/ssrplus.log + CURRENT_SERVER=$ENABLE_SERVER + switch_proxy $CURRENT_SERVER + normal_flag=1 + echo "$(date "+%Y-%m-%d %H:%M:%S") ShadowsocksR server switch OK" >>/tmp/ssrplus.log + else + switch_proxy $CURRENT_SERVER + normal_flag=1 + echo "$(date "+%Y-%m-%d %H:%M:%S") Try restart current server." >>/tmp/ssrplus.log + fi + else + normal_flag=0 + echo "$(date "+%Y-%m-%d %H:%M:%S") ShadowsocksR No Problem." >>/tmp/ssrplus.log + fi + done } 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 a9249ceed..c5decd28c 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 @@ -1,12 +1,5 @@ #!/bin/sh - mkdir -p /tmp/dnsmasq.ssr - -awk '!/^$/&&!/^#/{printf("ipset=/.%s/'"gfwlist"'\n",$0)}' /etc/config/gfw.list > /tmp/dnsmasq.ssr/custom_forward.conf -awk '!/^$/&&!/^#/{printf("server=/.%s/'"127.0.0.1#5335"'\n",$0)}' /etc/config/gfw.list >> /tmp/dnsmasq.ssr/custom_forward.conf - awk '!/^$/&&!/^#/{printf("ipset=/.%s/'"blacklist"'\n",$0)}' /etc/config/black.list > /tmp/dnsmasq.ssr/blacklist_forward.conf awk '!/^$/&&!/^#/{printf("server=/.%s/'"127.0.0.1#5335"'\n",$0)}' /etc/config/black.list >> /tmp/dnsmasq.ssr/blacklist_forward.conf - awk '!/^$/&&!/^#/{printf("ipset=/.%s/'"whitelist"'\n",$0)}' /etc/config/white.list > /tmp/dnsmasq.ssr/whitelist_forward.conf - diff --git a/package/lean/luci-app-ssr-plus/root/usr/share/shadowsocksr/subscribe.lua b/package/lean/luci-app-ssr-plus/root/usr/share/shadowsocksr/subscribe.lua index 30b35a2bf..7f64aaf75 100644 --- a/package/lean/luci-app-ssr-plus/root/usr/share/shadowsocksr/subscribe.lua +++ b/package/lean/luci-app-ssr-plus/root/usr/share/shadowsocksr/subscribe.lua @@ -95,14 +95,14 @@ end -- 处理数据 local function processData(szType, content) local result = { - auth_enable = '0', +-- auth_enable = '0', switch_enable = '1', type = szType, local_port = 1234, - timeout = 60, -- 不太确定 好像是死的 - fast_open = 0, - kcp_enable = 0, - kcp_port = 0, +-- timeout = 60, -- 不太确定 好像是死的 +-- fast_open = 0, +-- kcp_enable = 0, +-- kcp_port = 0, kcp_param = '--nocomp' } result.hashkey = type(content) == 'string' and md5(content) or md5(jsonStringify(content)) @@ -136,8 +136,8 @@ local function processData(szType, content) result.alter_id = info.aid result.vmess_id = info.id result.alias = info.ps - result.mux = 1 - result.concurrency = 8 +-- result.mux = 1 +-- result.concurrency = 8 if info.net == 'ws' then result.ws_host = info.host result.ws_path = info.path @@ -165,8 +165,8 @@ local function processData(szType, content) result.quic_key = info.key result.quic_security = info.securty end - if not info.security then - result.security = "auto" + if info.security then + result.security = info.security end if info.tls == "tls" or info.tls == "1" then result.tls = "1" diff --git a/package/lean/luci-app-ssr-plus/root/usr/share/shadowsocksr/update.lua b/package/lean/luci-app-ssr-plus/root/usr/share/shadowsocksr/update.lua index 9f62522ab..8c2958ad9 100644 --- a/package/lean/luci-app-ssr-plus/root/usr/share/shadowsocksr/update.lua +++ b/package/lean/luci-app-ssr-plus/root/usr/share/shadowsocksr/update.lua @@ -64,21 +64,14 @@ else log('更新失败!') end --- --[[ -if ucic:get_first('shadowsocksr', 'global', 'adblock', '') == '1' then +if ucic:get_first('shadowsocksr', 'global', 'adblock','0') == "1" then log('正在更新【广告屏蔽】数据库') - local need_process = 0 - if nixio.fs.access("/usr/bin/wget-ssl") then - refresh_cmd="wget-ssl --no-check-certificate -O - https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt > /tmp/adnew.conf" - need_process = 1 -else - refresh_cmd="wget -O /tmp/ad.conf http://iytc.net/tools/ad.conf" +if nixio.fs.access("/usr/bin/wget-ssl") then + refresh_cmd="wget-ssl --no-check-certificate -O - ".. ucic:get_first('shadowsocksr', 'global', 'adblock_url','https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt') .." > /tmp/adnew.conf" end sret=luci.sys.call(refresh_cmd .. " 2>/dev/null") if sret== 0 then - if need_process == 1 then - luci.sys.call("/usr/bin/ssr-ad") - end + luci.sys.call("/usr/bin/ssr-ad") icount = luci.sys.exec("cat /tmp/ad.conf | wc -l") if tonumber(icount)>1000 then if nixio.fs.access("/etc/dnsmasq.ssr/ad.conf") then @@ -104,4 +97,3 @@ else log('更新失败!') end end --- --]] diff --git a/package/lean/v2ray/Config.in b/package/lean/v2ray/Config.in index 99c6d4c4b..60700ede5 100644 --- a/package/lean/v2ray/Config.in +++ b/package/lean/v2ray/Config.in @@ -1,6 +1,10 @@ menu "V2Ray Configuration" depends on PACKAGE_v2ray +config V2RAY_COMPRESS_GOPROXY + bool "Compiling with GOPROXY proxy" + default n + choice prompt "JSON Config Support" default V2RAY_JSON_INTERNAL diff --git a/package/lean/v2ray/Makefile b/package/lean/v2ray/Makefile index c45932bd4..db6c2ed93 100644 --- a/package/lean/v2ray/Makefile +++ b/package/lean/v2ray/Makefile @@ -1,6 +1,6 @@ # # Copyright (C) 2019-2020 Xingwang Liao -# Copyright (C) 2019-2020 KFERMercer +# Copyright (C) 2019-2020 Mattraks # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -10,10 +10,10 @@ include $(TOPDIR)/rules.mk PKG_NAME:=v2ray PKG_VERSION:=4.22.1 -PKG_RELEASE:=7 +PKG_RELEASE:=5 PKG_BUILD_DIR:=$(BUILD_DIR)/v2ray-core-$(PKG_VERSION) -PKG_SOURCE:=$(PKG_NAME)-core-$(PKG_VERSION).tar.gz +PKG_SOURCE:=v2ray-core-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/v2ray/v2ray-core/tar.gz/v$(PKG_VERSION)? PKG_HASH:=31c1934eeac3552c7ab68eac9dc3e964e05f3c743b3733b0b6a0159c495019d6 @@ -27,6 +27,7 @@ PKG_CONFIG_DEPENDS := \ CONFIG_V2RAY_JSON_NONE \ CONFIG_V2RAY_EXCLUDE_V2CTL \ CONFIG_V2RAY_EXCLUDE_ASSETS \ + CONFIG_V2RAY_COMPRESS_GOPROXY \ CONFIG_V2RAY_COMPRESS_UPX \ CONFIG_V2RAY_DISABLE_NONE \ CONFIG_V2RAY_DISABLE_CUSTOM \ @@ -66,7 +67,7 @@ GO_PKG_LDFLAGS_X:= \ include $(INCLUDE_DIR)/package.mk include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk -define Package/v2ray +define Package/$(PKG_NAME) TITLE:=A platform for building proxies URL:=https://www.v2ray.com SECTION:=net @@ -75,17 +76,22 @@ define Package/v2ray DEPENDS:=$(GO_ARCH_DEPENDS) +ca-certificates endef -define Package/v2ray/config +define Package/$(PKG_NAME)/config source "$(SOURCE)/Config.in" endef -define Package/v2ray/description +define Package/$(PKG_NAME)/description Project V is a set of network tools that help you to build your own computer network. It secures your network connections and thus protects your privacy. This package contains v2ray, v2ctl and v2ray-assets. endef +ifeq ($(CONFIG_V2RAY_COMPRESS_GOPROXY),y) +export GO111MODULE=on +export GOPROXY=https://goproxy.cn +endif + V2RAY_SED_ARGS:= ifeq ($(CONFIG_V2RAY_JSON_INTERNAL),y) @@ -278,7 +284,7 @@ endif endif endef -define Package/v2ray/install +define Package/$(PKG_NAME)/install $(INSTALL_DIR) $(1)/usr/bin/v2ray $(INSTALL_BIN) $(GO_PKG_BUILD_BIN_DIR)/v2ray $(1)/usr/bin/v2ray @@ -288,9 +294,7 @@ ifneq ($(CONFIG_V2RAY_EXCLUDE_V2CTL),y) endif ifneq ($(CONFIG_V2RAY_EXCLUDE_ASSETS),y) - $(INSTALL_DATA) \ - $(PKG_BUILD_DIR)/release/config/{geoip,geosite}.dat \ - $(1)/usr/bin/v2ray + $(INSTALL_DATA) $(PKG_BUILD_DIR)/release/config/{geoip,geosite}.dat $(1)/usr/bin/v2ray endif endef @@ -299,5 +303,5 @@ $(eval $(call Download,geoip.dat)) $(eval $(call Download,geosite.dat)) endif -$(eval $(call GoBinPackage,v2ray)) -$(eval $(call BuildPackage,v2ray)) +$(eval $(call GoBinPackage,$(PKG_NAME))) +$(eval $(call BuildPackage,$(PKG_NAME)))