luci-app-ssr-plus-Jo: merge upstream source

This commit is contained in:
CN_SZTL 2019-12-29 09:33:49 +08:00
parent 9565fa70b9
commit 67e84c3da3
No known key found for this signature in database
GPG Key ID: 6850B6345C862176
61 changed files with 6859 additions and 5774 deletions

View File

@ -57,12 +57,14 @@ luci-theme-argonv3 source: [jerrykuku/luci-theme-argon](https://github.com/jerry
luci-theme-darkmatter source: [apollo-ng/luci-theme-darkmatter](https://github.com/apollo-ng/luci-theme-darkmatter).<br/>
luci-app-koolproxyR source: [Ameykyl/luci-app-koolproxyR](https://github.com/Ameykyl/luci-app-koolproxyR).<br/>
openwrt-chinadns-ng source: [pexcn/openwrt-chinadns-ng](https://github.com/pexcn/openwrt-chinadns-ng).<br/>
luci-app-ssr-plus-jo source: [Leo-Jo/luci-app-ssr-plus-jo](https://github.com/Leo-Jo/luci-app-ssr-plus-jo).<br/>
luci-app-ssr-plus-Jo source: [Leo-Jo-My/luci-app-ssr-plus-Jo](https://github.com/Leo-Jo-My/luci-app-ssr-plus-Jo).<br/>
openwrt-udpspeeder source: [pexcn/openwrt-udpspeeder](https://github.com/pexcn/openwrt-udpspeeder).<br/>
luci-app-onliner source: [rufengsuixing/luci-app-onliner](https://github.com/rufengsuixing/luci-app-onliner).<br/>
luci-app-dockerman source: [lisaac/luci-app-dockerman](https://github.com/lisaac/luci-app-dockerman).<br/>
luci-lib-docker source: [lisaac/luci-lib-docker](https://github.com/lisaac/luci-lib-docker).<br/>
openwrt-iptvhelper source: [riverscn/openwrt-iptvhelper](https://github.com/riverscn/openwrt-iptvhelper).
openwrt-iptvhelper source: [riverscn/openwrt-iptvhelper](https://github.com/riverscn/openwrt-iptvhelper).<br>
luci-app-autoipsetadder source: [rufengsuixing/luci-app-autoipsetadder](https://github.com/rufengsuixing/luci-app-autoipsetadder).<br>
luci-app-adguardhome source: [rufengsuixing/luci-app-adguardhome](https://github.com/rufengsuixing/luci-app-adguardhome).
# License
### [GPL v3](https://www.gnu.org/licenses/gpl-3.0.html).

View File

@ -1,10 +1,11 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-ssr-plus-jo
PKG_VERSION:=1.35
PKG_NAME:=luci-app-ssr-plus-Jo
PKG_VERSION:=1.41
PKG_RELEASE:=8
PKG_CONFIG_DEPENDS:= CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks \
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_V2ray \
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Trojan \
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Kcptun:kcptun \
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Server \
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Server \
@ -12,11 +13,12 @@ PKG_CONFIG_DEPENDS:= CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks \
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Socks \
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_dnscrypt_proxy \
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_dnsforwarder \
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_ChinaDNS \
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Chinadns \
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_haproxy \
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_privoxy \
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_simple-obfs\
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_simple-obfs-server\
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_ipt2socks\
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_GoQuiet-client\
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_GoQuiet-server\
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_v2ray-plugin
@ -32,9 +34,13 @@ config PACKAGE_$(PKG_NAME)_INCLUDE_V2ray
bool "Include V2ray"
default y
config PACKAGE_$(PKG_NAME)_INCLUDE_Trojan
bool "Include Trojan"
default n
config PACKAGE_$(PKG_NAME)_INCLUDE_Kcptun
bool "Include Kcptun"
default y
default n
config PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Server
bool "Include ShadowsocksR Server"
@ -60,7 +66,7 @@ config PACKAGE_$(PKG_NAME)_INCLUDE_dnsforwarder
bool "dnsforwarder"
default n
config PACKAGE_$(PKG_NAME)_INCLUDE_ChinaDNS
config PACKAGE_$(PKG_NAME)_INCLUDE_Chinadns
bool "chiandns"
default n
@ -79,6 +85,10 @@ config PACKAGE_$(PKG_NAME)_INCLUDE_simple-obfs
config PACKAGE_$(PKG_NAME)_INCLUDE_simple-obfs-server
bool "simple-obfs-server"
default n
config PACKAGE_$(PKG_NAME)_INCLUDE_ipt2socks
bool "Include ipt2socks"
default n
config PACKAGE_$(PKG_NAME)_INCLUDE_GoQuiet-client
bool "GoQuiet-client"
@ -93,15 +103,16 @@ config PACKAGE_$(PKG_NAME)_INCLUDE_v2ray-plugin
default n
endef
define Package/luci-app-ssr-plus-jo
define Package/luci-app-ssr-plus-Jo
SECTION:=luci
CATEGORY:=LuCI
SUBMENU:=3. Applications
TITLE:=SS/SSR/V2Ray LuCI interface
PKGARCH:=all
DEPENDS:=+shadowsocksr-libev-alt +ipset +ip-full +iptables-mod-tproxy +dnsmasq-full +coreutils +coreutils-base64 +bash pdnsd-alt +wget \
DEPENDS:=+shadowsocksr-libev-alt +ipset +ip-full +iptables-mod-tproxy +dnsmasq-full +coreutils +coreutils-base64 +bash +pdnsd-alt +wget +unzip \
+PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks:shadowsocks-libev-ss-redir \
+PACKAGE_$(PKG_NAME)_INCLUDE_V2ray:v2ray \
+PACKAGE_$(PKG_NAME)_INCLUDE_Trojan:trojan \
+PACKAGE_$(PKG_NAME)_INCLUDE_Kcptun:kcptun-client \
+PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Server:shadowsocksr-libev-server \
+PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Server:shadowsocks-libev-ss-server \
@ -109,11 +120,12 @@ define Package/luci-app-ssr-plus-jo
+PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Socks:shadowsocks-libev-ss-local \
+PACKAGE_$(PKG_NAME)_INCLUDE_dnscrypt_proxy:dnscrypt-proxy-full \
+PACKAGE_$(PKG_NAME)_INCLUDE_dnsforwarder:dnsforwarder \
+PACKAGE_$(PKG_NAME)_INCLUDE_ChinaDNS:openwrt_chinadns \
+PACKAGE_$(PKG_NAME)_INCLUDE_Chinadns:openwrt_chinadns \
+PACKAGE_$(PKG_NAME)_INCLUDE_haproxy:haproxy \
+PACKAGE_$(PKG_NAME)_INCLUDE_privoxy:privoxy \
+PACKAGE_$(PKG_NAME)_INCLUDE_simple-obfs:simple-obfs \
+PACKAGE_$(PKG_NAME)_INCLUDE_simple-obfs-server:simple-obfs-server \
+PACKAGE_$(PKG_NAME)_INCLUDE_ipt2socks:ipt2socks \
+PACKAGE_$(PKG_NAME)_INCLUDE_GoQuiet-client:gq-client \
+PACKAGE_$(PKG_NAME)_INCLUDE_GoQuiet-server:gq-server \
+PACKAGE_$(PKG_NAME)_INCLUDE_v2ray-plugin:v2ray-plugin
@ -125,7 +137,7 @@ endef
define Build/Compile
endef
define Package/luci-app-ssr-plus-jo/install
define Package/luci-app-ssr-plus-Jo/install
$(INSTALL_DIR) $(1)/usr/lib/lua/luci
cp -pR ./luasrc/* $(1)/usr/lib/lua/luci
$(INSTALL_DIR) $(1)/
@ -134,7 +146,7 @@ define Package/luci-app-ssr-plus-jo/install
cp -pR ./po/zh-cn/ssr-plus.zh-cn.lmo $(1)/usr/lib/lua/luci/i18n/ssr-plus.zh-cn.lmo
endef
define Package/luci-app-ssr-plus-jo/postinst
define Package/luci-app-ssr-plus-Jo/postinst
#!/bin/sh
if [ -z "$${IPKG_INSTROOT}" ]; then
( . /etc/uci-defaults/luci-ssr-plus ) && rm -f /etc/uci-defaults/luci-ssr-plus
@ -145,7 +157,7 @@ fi
exit 0
endef
define Package/luci-app-ssr-plus-jo/prerm
define Package/luci-app-ssr-plus-Jo/prerm
#!/bin/sh
if [ -z "$${IPKG_INSTROOT}" ]; then
/etc/init.d/shadowsocksr disable
@ -154,4 +166,4 @@ fi
exit 0
endef
$(eval $(call BuildPackage,luci-app-ssr-plus-jo))
$(eval $(call BuildPackage,luci-app-ssr-plus-Jo))

View File

@ -7,37 +7,37 @@ function index()
return
end
if nixio.fs.access("/usr/bin/ssr-redir") then
entry({"admin", "services", "shadowsocksr"},alias("admin", "services", "shadowsocksr", "client"), _("ShadowSocksR Plus+"),10).dependent = true
entry({"admin", "services", "shadowsocksr", "client"},cbi("shadowsocksr/client"),_("SSR Client"),10).leaf = true
entry({"admin", "services", "shadowsocksr", "servers"}, cbi("shadowsocksr/servers"), _("Severs Nodes"), 11).leaf = true
entry({"admin", "services", "shadowsocksr", "servers"},arcombine(cbi("shadowsocksr/servers"), cbi("shadowsocksr/client-config")),_("Severs Nodes"), 11).leaf = true
entry({"admin", "vpn", "shadowsocksr"},alias("admin", "vpn", "shadowsocksr", "client"), _("ShadowSocksR Plus+"),10).dependent = true
entry({"admin", "vpn", "shadowsocksr", "client"},cbi("shadowsocksr/client"),_("SSR Client"),10).leaf = true
entry({"admin", "vpn", "shadowsocksr", "servers"}, cbi("shadowsocksr/servers"), _("Severs Nodes"), 11).leaf = true
entry({"admin", "vpn", "shadowsocksr", "servers"},arcombine(cbi("shadowsocksr/servers"), cbi("shadowsocksr/client-config")),_("Severs Nodes"), 11).leaf = true
entry({"admin", "services", "shadowsocksr", "subscription"},cbi("shadowsocksr/subscription"), _("Subscription Managenent"),12).leaf = true
entry({"admin", "services", "shadowsocksr", "control"},cbi("shadowsocksr/control"),_("Access Control"),13).leaf = true
entry({"admin", "services", "shadowsocksr", "list"},cbi("shadowsocksr/list"),_("GFW List"),15).leaf = true
entry({"admin", "vpn", "shadowsocksr", "subscription"},cbi("shadowsocksr/subscription"), _("Subscription Managenent"),12).leaf = true
entry({"admin", "vpn", "shadowsocksr", "control"},cbi("shadowsocksr/control"),_("Access Control"),13).leaf = true
entry({"admin", "vpn", "shadowsocksr", "list"},cbi("shadowsocksr/list"),_("GFW List"),15).leaf = true
entry({"admin", "vpn", "shadowsocksr", "appointlist"},form("shadowsocksr/appointlist"),_("Appointlist List"), 17).leaf = true
entry({"admin", "services", "shadowsocksr", "automatic"},cbi("shadowsocksr/automatic"), _("Automatic Switching"),20).leaf = true
entry({"admin", "services", "shadowsocksr", "advanced"},cbi("shadowsocksr/advanced"), _("Advanced Settings"),21).leaf = true
entry({"admin", "vpn", "shadowsocksr", "automatic"},cbi("shadowsocksr/automatic"), _("Automatic Switching"),20).leaf = true
entry({"admin", "vpn", "shadowsocksr", "advanced"},cbi("shadowsocksr/advanced"), _("Advanced Settings"),21).leaf = true
elseif nixio.fs.access("/usr/bin/ssr-server") then
entry({"admin", "services", "shadowsocksr"},alias("admin", "services", "shadowsocksr", "server"), _("ShadowSocksR"),10).dependent = true
entry({"admin", "vpn", "shadowsocksr"},alias("admin", "vpn", "shadowsocksr", "server"), _("ShadowSocksR"),10).dependent = true
else
return
end
if nixio.fs.access("/usr/bin/ssr-server") then
entry({"admin", "services", "shadowsocksr", "server"},arcombine(cbi("shadowsocksr/server"), cbi("shadowsocksr/server-config")),_("SSR Server"),22).leaf = true
entry({"admin", "vpn", "shadowsocksr", "server"},arcombine(cbi("shadowsocksr/server"), cbi("shadowsocksr/server-config")),_("SSR Server"),22).leaf = true
end
entry({"admin", "services", "shadowsocksr", "status"},form("shadowsocksr/status"),_("Status"), 23).leaf = true
entry({"admin", "services", "shadowsocksr", "log"}, cbi("shadowsocksr/log"), _("Log"), 30).leaf = true
entry({"admin", "vpn", "shadowsocksr", "status"},form("shadowsocksr/status"),_("Status"), 23).leaf = true
entry({"admin", "vpn", "shadowsocksr", "log"}, cbi("shadowsocksr/log"), _("Log"), 30).leaf = true
entry({"admin", "services", "shadowsocksr", "refresh"}, call("refresh_data"))
entry({"admin", "services", "shadowsocksr", "checkport"}, call("check_port"))
entry({"admin", "services", "shadowsocksr", "checkports"}, call("check_ports"))
entry({"admin", "services", "shadowsocksr", "run"}, call("act_status"))
entry({"admin", "services", "shadowsocksr", "change"}, call("change_node"))
entry({"admin", "services", "shadowsocksr", "allserver"}, call("get_servers"))
entry({"admin", "services", "shadowsocksr", "ping"}, call("act_ping")).leaf=true
entry({"admin", "vpn", "shadowsocksr", "refresh"}, call("refresh_data"))
entry({"admin", "vpn", "shadowsocksr", "checkport"}, call("check_port"))
entry({"admin", "vpn", "shadowsocksr", "checkports"}, call("check_ports"))
entry({"admin", "vpn", "shadowsocksr", "run"}, call("act_status"))
entry({"admin", "vpn", "shadowsocksr", "change"}, call("change_node"))
entry({"admin", "vpn", "shadowsocksr", "allserver"}, call("get_servers"))
entry({"admin", "vpn", "shadowsocksr", "ping"}, call("act_ping")).leaf=true
end
@ -47,19 +47,19 @@ function act_status()
--全局服务器
e.global=luci.sys.call("ps -w | grep ssr-retcp | grep -v grep >/dev/null") == 0
--检测PDNSD状态
if tonumber(luci.sys.exec("ps -w | grep pdnsd |grep -v grep| wc -l"))>0 then
e.pdnsd= true
--检测chinadns状态
if tonumber(luci.sys.exec("ps -w | grep chinadns |grep -v grep| wc -l"))>0 then
e.chinadns= true
elseif tonumber(luci.sys.exec("ps -w | grep dnsparsing |grep -v grep| wc -l"))>0 then
e.pdnsd= true
e.chinadns= true
elseif tonumber(luci.sys.exec("ps -w | grep dnscrypt-proxy |grep -v grep| wc -l"))>0 then
e.pdnsd= true
elseif tonumber(luci.sys.exec("ps -w | grep dns-forwarder |grep -v grep| wc -l"))>0 then
e.pdnsd= true
e.chinadns= true
elseif tonumber(luci.sys.exec("ps -w | grep pdnsd |grep -v grep| wc -l"))>0 then
e.chinadns= true
elseif tonumber(luci.sys.exec("ps -w | grep dnsforwarder |grep -v grep| wc -l"))>0 then
e.pdnsd= true
elseif tonumber(luci.sys.exec("ps -w | grep https_dns_proxy |grep -v grep| wc -l"))>0 then
e.pdnsd= true
e.chinadns= true
end
--检测SOCKS5状态
if tonumber(luci.sys.exec("ps -w | grep ssr-local |grep -v grep| wc -l"))>0 then

View File

@ -0,0 +1,23 @@
local fs = require "nixio.fs"
local conffile = "/etc/dnsmasq.ssr/appoint_list.conf"
f = SimpleForm("custom", translate("Appoint dns List"))
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("/etc/init.d/dnsmasq restart")
end
end
return true
end
return f

View File

@ -9,8 +9,7 @@ local fs = require "nixio.fs"
local sys = require "luci.sys"
local sid = arg[1]
local uuid = luci.sys.exec("cat /proc/sys/kernel/random/uuid")
local http = luci.http
local ucursor = require "luci.model.uci".cursor()
local function isKcptun(file)
if not fs.access(file, "rwx", "rx", "rx") then
@ -89,7 +88,7 @@ local protocol = {
"auth_chain_f",
}
obfs = {
local obfs = {
"plain",
"http_simple",
"http_post",
@ -97,12 +96,6 @@ obfs = {
"tls1.2_ticket_auth",
}
local obfs_opts = {
"none",
"http",
"tls",
}
local securitys = {
"auto",
"none",
@ -111,9 +104,8 @@ local securitys = {
}
m = Map(shadowsocksr, translate("Edit ShadowSocksR Server"))
m.redirect = luci.dispatcher.build_url("admin/services/shadowsocksr/servers")
m.redirect = luci.dispatcher.build_url("admin/vpn/shadowsocksr/servers")
if m.uci:get(shadowsocksr, sid) ~= "servers" then
luci.http.redirect(m.redirect)
return
@ -124,25 +116,32 @@ s = m:section(NamedSection, sid, "servers")
s.anonymous = true
s.addremove = false
o = s:option(DummyValue,"ssr_url","配置链接")
o = s:option(DummyValue,"ssr_url","SS/SSR/V2RAY/TROJAN URL")
o.rawhtml = true
o.template = "shadowsocksr/ssrurl"
o.value =sid
o:depends("type", "ssr")
o = s:option(ListValue, "type", translate("Server Node Type"))
o:value("ssr", translate("ShadowsocksR"))
if nixio.fs.access("/usr/bin/ss-redir") then
o:value("ss", translate("Shadowsocks New Version"))
if nixio.fs.access("/usr/sbin/trojan") then
o:value("trojan", translate("Trojan"))
end
if nixio.fs.access("/usr/bin/v2ray/v2ray") then
o:value("v2ray", translate("V2Ray"))
end
o:value("ssr", translate("ShadowsocksR"))
if nixio.fs.access("/usr/bin/ss-redir") then
o:value("ss", translate("Shadowsocks"))
end
o.description = translate("Using incorrect encryption mothod may causes service fail to start")
o = s:option(Value, "alias", translate("Alias(optional)"))
o = s:option(Value, "server", translate("Server Address"))
o.datatype = "host"
o.rmempty = false
o = s:option(Value, "server_port", translate("Server Port"))
@ -164,6 +163,9 @@ o.password = true
o.rmempty = true
o:depends("type", "ssr")
o:depends("type", "ss")
o:depends("type", "trojan")
o = s:option(ListValue, "encrypt_method", translate("Encrypt Method"))
for _, v in ipairs(encrypt_methods) do o:value(v) end
@ -175,6 +177,28 @@ for _, v in ipairs(encrypt_methods_ss) do o:value(v) end
o.rmempty = true
o:depends("type", "ss")
o = s:option(ListValue, "plugin", translate("plugin"))
o:value("none", "None")
if nixio.fs.access("/usr/bin/v2ray-plugin") then
o:value("/usr/bin/v2ray-plugin", "v2ray-plugin")
end
if nixio.fs.access("/usr/bin/obfs-local") then
o:value("/usr/bin/obfs-local", "obfs-local")
end
if nixio.fs.access("/usr/bin/goquiet-client") then
o:value("/usr/bin/goquiet-client", "GoQuiet")
end
o.rmempty = false
o.default = "none"
o:depends("type", "ss")
o = s:option(Value, "plugin_opts", translate("Plugin Opts"))
o.rmempty = true
o:depends("plugin", "/usr/bin/v2ray-plugin")
o:depends("plugin", "/usr/bin/obfs-local")
o:depends("plugin", "/usr/bin/goquiet-client")
o = s:option(ListValue, "protocol", translate("Protocol"))
for _, v in ipairs(protocol) do o:value(v) end
o.rmempty = true
@ -188,21 +212,9 @@ for _, v in ipairs(obfs) do o:value(v) end
o.rmempty = true
o:depends("type", "ssr")
o = s:option(ListValue, "obfs_opts", translate("Obfs (可选)"))
for _, v in ipairs(obfs_opts) do o:value(v) end
o.rmempty = true
o:depends("type", "ss")
o = s:option(Value, "obfs_host", translate("Obfs-host (可选)"))
o:depends("type", "ss")
o = s:option(Value, "obfs_param", translate("Obfs param(optional)"))
o:depends("type", "ssr")
-- AlterId
o = s:option(Value, "alter_id", translate("AlterId"))
o.default = 100
@ -353,12 +365,14 @@ o.rmempty = true
o = s:option(Flag, "insecure", translate("allowInsecure"))
o.rmempty = true
o:depends("type", "v2ray")
o:depends("type", "trojan")
-- [[ TLS ]]--
o = s:option(Flag, "tls", translate("TLS"))
o.rmempty = true
o.default = "0"
o:depends("type", "v2ray")
o:depends("type", "trojan")
-- [[ Mux ]]--
o = s:option(Flag, "mux", translate("Mux"))
@ -377,6 +391,7 @@ o.rmempty = true
o.default = "0"
o:depends("type", "ssr")
o:depends("type", "ss")
o:depends("type", "trojan")
o = s:option(Flag, "switch_enable", translate("Enable Auto Switch"))
o.rmempty = false

View File

@ -123,6 +123,7 @@ o:depends("pdnsd_enable", "6")
o = s:option(Value, "tunnel_forward", translate("Anti-pollution DNS Server"))
o:value("0.0.0.0:53", translate("Using System Default DNS"))
o:value("0.0.0.0:5333", translate("Using acceleration center DNS"))
o:value("8.8.4.4:53", translate("Google Public DNS (8.8.4.4)"))
o:value("8.8.8.8:53", translate("Google Public DNS (8.8.8.8)"))
o:value("208.67.222.222:53", translate("OpenDNS (208.67.222.222)"))
@ -171,5 +172,5 @@ o.value =ip_count .. " " .. translate("Records")
o = s:option(Button,"check_port",translate("Check Server Port"))
o.template = "shadowsocksr/checkport"
o.value =translate("No Check")
m:section(SimpleSection).template = "shadowsocksr/myip"
return m

View File

@ -1,4 +1,5 @@
local m, s, o
local NXFS = require "nixio.fs"
m = Map("shadowsocksr", translate("IP black-and-white list"))
@ -14,7 +15,8 @@ o.datatype = "ip4addr"
o = s:taboption("wan_ac", DynamicList, "wan_fw_ips", translate("WAN Force Proxy IP"))
o.datatype = "ip4addr"
o = s:taboption("wan_ac", DynamicList, "wan_fk_ips", translate("WAN Fk Proxy IP"))
o.datatype = "ip4addr"
-- Part of LAN
s:tab("lan_ac", translate("LAN IP AC"))
@ -34,6 +36,7 @@ luci.ip.neighbors({ family = 4 }, function(entry)
o:value(entry.dest:string())
end
end)
o = s:taboption("lan_ac", DynamicList, "lan_gm_ips", translate("Game Mode Host List"))
o.datatype = "ipaddr"
luci.ip.neighbors({ family = 4 }, function(entry)
@ -42,14 +45,13 @@ luci.ip.neighbors({ family = 4 }, function(entry)
end
end)
-- s = m:section(TypedSection, "domain_white_list", translate("Domain White List"))
-- s.template = "cbi/tblsection"
-- s.anonymous = true
-- s.addremove = true
-- s.sortable = true
s = m:section(TypedSection, "domain_white_list", translate("Domain White List"))
s.template = "cbi/tblsection"
s.anonymous = true
s.addremove = true
s.sortable = true
o = s:option(Value, "domain_names", translate("Domain name (keyword only)"))
-- o = s:option(Value, "domain_names", translate("Domain name (keyword only)"))
-- Part of Self
-- s:tab("self_ac", translate("Router Self AC"))
@ -59,4 +61,40 @@ o = s:option(Value, "domain_names", translate("Domain name (keyword only)"))
-- o:value("2", translatef("Forwarded Proxy"))
-- o.rmempty = false
s:tab("esc", translate("Bypass Domain List"))
local escconf = "/etc/config/white.list"
o = s:taboption("esc", TextValue, "escconf")
o.rows = 13
o.wrap = "off"
o.rmempty = true
o.cfgvalue = function(self, section)
return NXFS.readfile(escconf) or ""
end
o.write = function(self, section, value)
NXFS.writefile(escconf, value:gsub("\r\n", "\n"))
end
o.remove = function(self, section, value)
NXFS.writefile(escconf, "")
end
s:tab("block", translate("Black Domain List"))
local blockconf = "/etc/config/black.list"
o = s:taboption("block", TextValue, "blockconf")
o.rows = 13
o.wrap = "off"
o.rmempty = true
o.cfgvalue = function(self, section)
return NXFS.readfile(blockconf) or " "
end
o.write = function(self, section, value)
NXFS.writefile(blockconf, value:gsub("\r\n", "\n"))
end
o.remove = function(self, section, value)
NXFS.writefile(blockconf, "")
end
m:section(SimpleSection).template = "shadowsocksr/myip"
return m

View File

@ -103,7 +103,7 @@ local securitys = {
m = Map(shadowsocksr, translate("Edit ShadowSocksR Server"))
m.redirect = luci.dispatcher.build_url("admin/services/shadowsocksr/server")
m.redirect = luci.dispatcher.build_url("admin/vpn/shadowsocksr/server")
if m.uci:get(shadowsocksr, sid) ~= "server_config" then
luci.http.redirect(m.redirect)
return
@ -163,24 +163,41 @@ o:depends("type", "ss")
o = s:option(ListValue, "plugin", translate("plugin"))
o:value("none", "None")
if nixio.fs.access("/usr/bin/v2ray-plugin") then
o:value("/usr/bin/v2ray-plugin", "v2ray-plugin")
end
if nixio.fs.access("/usr/bin/obfs-server") then
o:value("/usr/bin/obfs-server", "obfs-server")
end
if nixio.fs.access("/usr/bin/gq-server") then
o:value("/usr/bin/gq-server", "GoQuiet")
end
o.rmempty = false
o.default = "none"
o:depends("type", "ss")
o = s:option(Value, "plugin_opts", translate("Plugin Opts"))
o.rmempty = true
o:depends("plugin", "/usr/bin/v2ray-plugin")
o:depends("plugin", "/usr/bin/obfs-server")
o:depends("plugin", "/usr/bin/gq-server")
o = s:option(ListValue, "protocol", translate("Protocol"))
for _, v in ipairs(protocol) do o:value(v) end
o.rmempty = true
o:depends("type", "ssr")
o = s:option(Value, "protocol_param", translate("Protocol param(optional)"))
o:depends("type", "ssr")
o = s:option(ListValue, "obfs", translate("Obfs"))
for _, v in ipairs(obfs) do o:value(v) end
o.rmempty = true
o:depends("type", "ssr")
o = s:option(Value, "obfs_param", translate("Obfs param(optional)"))
o:depends("type", "ssr")
-- AlterId
o = s:option(Value, "alter_id", translate("AlterId"))
o.default = 100
@ -359,3 +376,4 @@ o.rmempty = true
o:depends("type", "ssr")
return m

View File

@ -77,7 +77,7 @@ sec.anonymous = true
sec.addremove = true
sec.sortable = true
sec.template = "cbi/tblsection"
sec.extedit = luci.dispatcher.build_url("admin/services/shadowsocksr/server/%s")
sec.extedit = luci.dispatcher.build_url("admin/vpn/shadowsocksr/server/%s")
function sec.create(...)
local sid = TypedSection.create(...)
if sid then

View File

@ -111,7 +111,7 @@ s.description = string.format(translate("Server Count") .. ": %d", server_count
s.addremove = true
s.sortable = true
s.template = "cbi/tblsection"
s.extedit = luci.dispatcher.build_url("admin/services/shadowsocksr/servers/%s")
s.extedit = luci.dispatcher.build_url("admin/vpn/shadowsocksr/servers/%s")
function s.create(...)
local sid = TypedSection.create(...)
if sid then

View File

@ -1,7 +1,7 @@
-- Copyright (C) 2017 yushi studio <ywb94@qq.com>
-- Licensed to the public under the GNU General Public License v3.
local IPK_Version="20191116.118"
local IPK_Version="20191202.120"
local m, s, o
local redir_run=0
local reudp_run=0
@ -22,6 +22,7 @@ local gfwmode=0
local pdnsd_run=0
local dnsforwarder_run=0
local dnscrypt_proxy_run=0
local chinadns_run=0
local haproxy_run=0
local privoxy_run=0
@ -30,6 +31,8 @@ gfwmode=1
end
local shadowsocksr = "shadowsocksr"
-- html constants
font_blue = [[<font color="green">]]
font_off = [[</font>]]
@ -53,6 +56,7 @@ else
end
local udp2raw_version=translate("Unknown")
local udp2raw_file="/usr/bin/udp2raw"
if not fs.access(udp2raw_file) then
@ -92,6 +96,9 @@ if nixio.fs.access("/etc/china_ssr.txt") then
ip_count = sys.exec("cat /etc/china_ssr.txt | wc -l")
end
local icount=sys.exec("ps -w | grep ssr-reudp |grep -v grep| wc -l")
if tonumber(icount)>0 then
reudp_run=1
@ -131,6 +138,10 @@ if luci.sys.call("pidof ssr-server >/dev/null") == 0 then
server_run=1
end
if luci.sys.call("busybox ps -w | grep ssr-tunnel |grep -v grep >/dev/null") == 0 then
tunnel_run=1
end
if luci.sys.call("pidof ss-server >/dev/null") == 0 then
sserver_run=1
end
@ -149,7 +160,11 @@ end
if luci.sys.call("pidof udpspeeder >/dev/null") == 0 then
udpspeeder_run=1
end
end
if luci.sys.call("pidof chinadns >/dev/null") == 0 then
chinadns_run=1
end
if luci.sys.call("pidof pdnsd >/dev/null") == 0 then
pdnsd_run=1
@ -163,6 +178,7 @@ if luci.sys.call("pidof dnscrypt-proxy >/dev/null") == 0 then
dnscrypt_proxy_run=1
end
if luci.sys.call("pidof haproxy >/dev/null") == 0 then
haproxy_run=1
end
@ -171,6 +187,8 @@ m = SimpleForm("Version")
m.reset = false
m.submit = false
s=m:field(DummyValue,"redir_run",translate("Global Client"))
s.rawhtml = true
if redir_run == 1 then
@ -195,6 +213,16 @@ else
s.value = translate("Not Running")
end
if nixio.fs.access("/usr/bin/chinadns") then
s=m:field(DummyValue,"chinadns_run",translate("ChinaDNS"))
s.rawhtml = true
if chinadns_run == 1 then
s.value =font_blue .. bold_on .. translate("Running") .. bold_off .. font_off
else
s.value = translate("Not Running")
end
end
s=m:field(DummyValue,"pdnsd_run",translate("PDNSD"))
s.rawhtml = true
if pdnsd_run == 1 then
@ -222,6 +250,7 @@ end
if nixio.fs.access("/usr/bin/ssr-local") then
s=m:field(DummyValue,"sock5_run",translate("SOCKS5 Proxy"))
s.rawhtml = true
@ -305,6 +334,7 @@ else
s.value = translate("Not Running")
end
end
s=m:field(DummyValue,"version",translate("IPK Version"))
s.rawhtml = true
s.value =IPK_Version
@ -319,10 +349,7 @@ s.value =font_blue .. bold_on .. translate("Running") .. bold_off .. font_off
else
s.value = translate("Not Running")
end
s=m:field(DummyValue,"udp2raw_project",translate("udp2raw tunnel Project"))
s.rawhtml = true
s.value =bold_on .. [[<a href="]] .. "https://github.com/wangyu-/udp2raw-tunnel" .. [[" >]]
.. "https://github.com/wangyu-/udp2raw-tunnel" .. [[</a>]] .. bold_off
s=m:field(DummyValue,"udpspeeder_version",translate("UDPspeeder Version"))
s.rawhtml = true
@ -334,33 +361,9 @@ s.value =font_blue .. bold_on .. translate("Running") .. bold_off .. font_off
else
s.value = translate("Not Running")
end
s=m:field(DummyValue,"udpspeeder_project",translate("UDPspeeder Project"))
s.rawhtml = true
s.value =bold_on .. [[<a href="]] .. "https://github.com/wangyu-/UDPspeeder" .. [[" >]]
.. "https://github.com/wangyu-/UDPspeeder" .. [[</a>]] .. bold_off
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")
s=m:field(DummyValue,"ad_data",translate("Advertising Data"))
s.rawhtml = true
s.template = "shadowsocksr/refresh"
s.value =tostring(math.ceil(ad_count)) .. " " .. translate("Records")
end
s=m:field(DummyValue,"ip_data",translate("China IP Data"))
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")
s=m:field(DummyValue,"feedback",translate("Feedback"))
s.template = "shadowsocksr/feedback"
s.value =translate("No feedback")
return m

View File

@ -13,9 +13,9 @@ local fs = require "nixio.fs"
local sys = require "luci.sys"
m = Map(shadowsocksr)
m:section(SimpleSection).template = "shadowsocksr/status"
-- Server Subscribe
s = m:section(TypedSection, "server_subscribe", translate("Servers subscription and manage"))
s = m:section(TypedSection, "server_subscribe", translate("Node Subscribe"))
s.anonymous = true
o = s:option(Flag, "auto_update", translate("Auto Update"))
@ -41,12 +41,6 @@ o.rmempty = false
o = s:option(DynamicList, "subscribe_url", translate("Subscribe URL"))
o.rmempty = true
o = s:option(Button,"update_Sub",translate("Update Subscribe List"))
o.inputstyle = "reload"
o.description = translate("Update subscribe url list first")
o.write = function()
luci.http.redirect(luci.dispatcher.build_url("admin", "services", "shadowsocksr", "servers"))
end
o = s:option(Flag, "proxy", translate("Through proxy update"))
o.rmempty = false
o.description = translate("Through proxy update list, Not Recommended ")
@ -55,7 +49,7 @@ o = s:option(Button,"update",translate("Update All Subscribe Severs"))
o.inputstyle = "apply"
o.write = function()
luci.sys.exec("bash /usr/share/shadowsocksr/subscribe.sh >>/tmp/ssrplus.log 2>&1")
luci.http.redirect(luci.dispatcher.build_url("admin", "services", "shadowsocksr", "servers"))
luci.http.redirect(luci.dispatcher.build_url("admin", "vpn", "shadowsocksr", "servers"))
end
o = s:option(Button,"update_v2ray",translate("Upgrade V2ray"))
@ -71,8 +65,9 @@ o.write = function()
uci:delete_all("shadowsocksr", "servers", function(s) return true end)
uci:save("shadowsocksr")
luci.sys.call("uci commit shadowsocksr && /etc/init.d/shadowsocksr stop")
luci.http.redirect(luci.dispatcher.build_url("admin", "services", "shadowsocksr", "servers"))
luci.http.redirect(luci.dispatcher.build_url("admin", "vpn", "shadowsocksr", "servers"))
return
end
return m

View File

@ -1,13 +1,12 @@
<%+cbi/valueheader%>
<script type="text/javascript">//<![CDATA[
function check_connect(btn,urlname)
{
btn.disabled = true;
btn.value = '<%:Check...%>';
murl=urlname;
XHR.get('<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr","check")%>',
XHR.get('<%=luci.dispatcher.build_url("admin", "vpn", "shadowsocksr","check")%>',
{ set:murl },
function(x,rv)
{
@ -18,15 +17,11 @@
s.innerHTML ="<font color='green'>"+"<%:Connect OK%>"+"</font>";
else
s.innerHTML ="<font color='red'>"+"<%:Connect Error%>"+"</font>";
}
btn.disabled = false;
btn.value = '<%:Check Connect%>';
}
);
return false;
}
//]]></script>

View File

@ -1,30 +1,23 @@
<%+cbi/valueheader%>
<script type="text/javascript">//<![CDATA[
function check_port(btn)
{
btn.disabled = true;
btn.value = '<%:Check...%>';
XHR.get('<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr","checkports")%>',
XHR.get('<%=luci.dispatcher.build_url("admin", "vpn", "shadowsocksr","checkports")%>',
null,
function(x,rv)
{
var s = document.getElementById('<%=self.option%>-status');
if (s)
{
s.innerHTML =rv.ret;
}
btn.disabled = false;
btn.value = '<%:Check Server%>';
}
);
return false;
}
//]]></script>

View File

@ -0,0 +1,22 @@
</style>
<div class="cbi-value">
<label class="cbi-value-title">udp2raw 项目</label>
<div class="cbi-value-field">
<input type="button" class="cbi-button cbi-input-reload" value="点击前往" onclick="javascript:window.open('https://github.com/wangyu-/udp2raw-tunnel','target');" />
</div>
</div>
<div class="cbi-value">
<label class="cbi-value-title">UDPspeeder 项目</label>
<div class="cbi-value-field">
<input type="button" class="cbi-button cbi-input-reload" value="点击前往" onclick="javascript:window.open('https://github.com/wangyu-/UDPspeeder','target');" />
</div>
</div>
</fieldset>
</fieldset>

View File

@ -1,4 +1,3 @@
<head>
<meta charset="utf-8">
<meta http-equiv="x-dns-prefetch-control" content="on">
@ -74,7 +73,6 @@
text-overflow: ellipsis;
transform:translateY(10%);
}
.sk-text-success {
color: #32b643;
font-size:15px;
@ -87,7 +85,6 @@
text-align: left;
transform:translateY(10%);
}
.sk-text-error {
color: #e85600;
font-size:15px;
@ -100,20 +97,16 @@
text-align: left;
transform:translateY(10%);
}
h3 {
margin: 5px 0 6px;
}
p {
margin: 10px 0;
}
a {
text-decoration: none;
color: #666;
}
</style>
</head>
<fieldset class="cbi-section">
@ -268,17 +261,14 @@
img.onerror = img.onload = null;
$$.getElementById(cbElID).innerHTML = '<span class="sk-text-error">连接超时</span>'
}, 5000);
img.onerror = () => {
clearTimeout(timeout);
$$.getElementById(cbElID).innerHTML = '<span class="sk-text-error">无法访问</span>'
}
img.onload = () => {
clearTimeout(timeout);
$$.getElementById(cbElID).innerHTML = '<span class="sk-text-success">连接正常</span>'
}
img.src = `https://${domain}/favicon.ico?${+(new Date)}`
},
runcheck: () => {
@ -289,7 +279,6 @@
HTTP.checker('www.youtube.com', 'http-youtube');
}
};
HTTP.runcheck();
IP.getIpipnetIP();
IP.getIpifyIP();
@ -304,7 +293,6 @@
$$.getElementById('ip-ipsb').innerHTML = data.address;
$$.getElementById('ip-ipsb-geo').innerHTML = `${data.country} ${data.province} ${data.city} ${data.isp.name}`
};
window.onload=myip_Load();
function myip_Load()
@ -337,10 +325,8 @@
$$.getElementById('ip-ipsb').innerHTML = data.address;
$$.getElementById('ip-ipsb-geo').innerHTML = `${data.country} ${data.province} ${data.city} ${data.isp.name}`
};
setTimeout("myip_Load()",1000*10);
}
</script>
<script defer="defer" src="https://whois.pconline.com.cn/ipJson.jsp?callback=getPcolIP"></script>
<script defer="defer" src="https://ip.sb/addrinfo?callback=getIpsbIP"></script>

View File

@ -7,7 +7,7 @@
//<![CDATA[
var pings = document.getElementsByClassName('pingtime');
for(var i = 0; i < pings.length; i++) {
XHR.get('/cgi-bin/luci/admin/services/shadowsocksr/ping', {
XHR.get('/cgi-bin/luci/admin/vpn/shadowsocksr/ping', {
index: i,
domain: pings[i].getAttribute("hint")
},
@ -15,7 +15,7 @@
pings[result.index].innerHTML = (result.ping ? "<b><font color=green>"+result.ping+"</font></b> ms" : "<b><font color=red> 检测失败 </font></b>");
}
);
XHR.poll(10,'/cgi-bin/luci/admin/services/shadowsocksr/ping',{
XHR.poll(10,'/cgi-bin/luci/admin/vpn/shadowsocksr/ping',{
index: i,
domain: pings[i].getAttribute("hint")
},

View File

@ -7,7 +7,7 @@
btn.disabled = true;
btn.value = '<%:Refresh...%> ';
murl=dataname;
XHR.get('<%=luci.dispatcher.build_url("admin", "services", "shadowsocksr","refresh")%>',
XHR.get('<%=luci.dispatcher.build_url("admin", "vpn", "shadowsocksr","refresh")%>',
{ set:murl },
function(x,rv)
{

View File

@ -11,7 +11,7 @@ local dsp = require "luci.dispatcher"
//<![CDATA[
var pings = document.getElementsByClassName('pingtime');
for(var i = 0; i < pings.length; i++) {
XHR.get('<%=dsp.build_url("admin/services/shadowsocksr/ping")%>', {
XHR.get('<%=dsp.build_url("admin/vpn/shadowsocksr/ping")%>', {
index: i,
domain: pings[i].getAttribute("hint")
},
@ -21,4 +21,4 @@ local dsp = require "luci.dispatcher"
);
}
//]]>
</script>
</script>

View File

@ -88,7 +88,7 @@
var s = document.getElementById(urlname + '-status');
if (!s)
return false;
var ssrurl = prompt("在这里黏贴配置链接 ssr:// | ss:// | vmess://", "");
var ssrurl = prompt("在这里黏贴配置链接 ssr:// | ss:// | vmess:// | trojan://", "");
if (ssrurl == null || ssrurl == "") {
s.innerHTML = "<font color='red'>用户取消</font>";
return false;
@ -169,6 +169,33 @@
}
s.innerHTML = "<font color='green'>导入Shadowsocks配置信息成功</font>";
return false;
} else if (ssu[0] == "trojan") {
var ploc = ssu[1].indexOf("#");
if (ploc > 0) {
url0 = ssu[1].substr(0, ploc);
param = ssu[1].substr(ploc + 1);
} else {
url0 = ssu[1]
}
var sstr = b64decsafe(url0);
document.getElementById('cbid.shadowsocksr.' + sid + '.type').value = "trojan";
document.getElementById('cbid.shadowsocksr.' + sid + '.type').dispatchEvent(event);
var team = sstr.split('@');
console.log(param);
var part1 = team[0].split(':');
var part2 = team[1].split(':');
document.getElementById('cbid.shadowsocksr.' + sid + '.server').value = part2[0];
document.getElementById('cbid.shadowsocksr.' + sid + '.server_port').value = part2[1];
document.getElementById('cbid.shadowsocksr.' + sid + '.password').value = part1[1];
if (param != undefined) {
document.getElementById('cbid.shadowsocksr.' + sid + '.alias').value = decodeURI(param);
}
s.innerHTML = "<font color='green'>导入Trojan配置信息成功</font>";
return false;
} else if (ssu[0] == "vmess") {
var sstr = b64DecodeUnicode(ssu[1]);
@ -223,8 +250,8 @@
//]]></script>
<input type="button" class="cbi-button cbi-button-apply" value="导入配置信息" onclick="return import_ssr_url(this, '<%=self.option%>', '<%=self.value%>')" />
<input type="button" class="cbi-button cbi-button-apply" value="<%:Export SSR%>" onclick="return export_ssr_url(this,'<%=self.option%>','<%=self.value%>')" /><span id="<%=self.option%>-status"></span>
<span id="<%=self.option%>-status"></span>
<%+cbi/valuefooter%>

View File

@ -0,0 +1,224 @@

<fieldset id="ShadowSocksR " class="cbi-section">
<h2 name=''content''> ShadowSocksR Plus+</h2>
<h2
<div class="cbi-map-descr">一个运行在OpenWrt上的科学上网客户端兼容<a href="https://github.com/shadowsocks/shadowsocks-libev" target="_blank"><em><u>Shadowsocks</u></em></a><a href="https://github.com/shadowsocksrr/shadowsocksr-libev" target="_blank"><em><u>ShadowsocksR</u></em></a><a href="https://github.com/Ameykyl/trojan" target="_blank"><em><u>Trojan</u></em></a><a href="https://github.com/v2ray/v2ray-core" target="_blank"><em><u>Vmess</u></em></a> 等协议的游戏加速工具。
</h2></div>
<style>
.pure-g{letter-spacing:-.31em;text-rendering:optimizespeed;font-family:FreeSans,Arimo,"Droid Sans",Helvetica,Arial,sans-serif;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-align-content:flex-start;-ms-flex-line-pack:start;align-content:flex-start}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){table .pure-g{display:block}}.opera-only :-o-prefocus,.pure-g{word-spacing:-.43em}.pure-u,.pure-u-1,.pure-u-1-1,.pure-u-1-12,.pure-u-1-2,.pure-u-1-24,.pure-u-1-3,.pure-u-1-4,.pure-u-1-5,.pure-u-1-6,.pure-u-1-8,.pure-u-10-24,.pure-u-11-12,.pure-u-11-24,.pure-u-12-24,.pure-u-13-24,.pure-u-14-24,.pure-u-15-24,.pure-u-16-24,.pure-u-17-24,.pure-u-18-24,.pure-u-19-24,.pure-u-2-24,.pure-u-2-3,.pure-u-2-5,.pure-u-20-24,.pure-u-21-24,.pure-u-22-24,.pure-u-23-24,.pure-u-24-24,.pure-u-3-24,.pure-u-3-4,.pure-u-3-5,.pure-u-3-8,.pure-u-4-24,.pure-u-4-5,.pure-u-5-12,.pure-u-5-24,.pure-u-5-5,.pure-u-5-6,.pure-u-5-8,.pure-u-6-24,.pure-u-7-12,.pure-u-7-24,.pure-u-7-8,.pure-u-8-24,.pure-u-9-24{display:inline-block;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-g [class*=pure-u]{font-family:sans-serif}.pure-u-1-24{width:4.1667%}.pure-u-1-12,.pure-u-2-24{width:8.3333%}.pure-u-1-8,.pure-u-3-24{width:12.5%}.pure-u-1-6,.pure-u-4-24{width:16.6667%}.pure-u-1-5{width:20%}.pure-u-5-24{width:20.8333%}.pure-u-1-4,.pure-u-6-24{width:25%}.pure-u-7-24{width:29.1667%}.pure-u-1-3,.pure-u-8-24{width:33.3333%}.pure-u-3-8,.pure-u-9-24{width:37.5%}.pure-u-2-5{width:40%}.pure-u-10-24,.pure-u-5-12{width:41.6667%}.pure-u-11-24{width:45.8333%}.pure-u-1-2,.pure-u-12-24{width:50%}.pure-u-13-24{width:54.1667%}.pure-u-14-24,.pure-u-7-12{width:58.3333%}.pure-u-3-5{width:60%}.pure-u-15-24,.pure-u-5-8{width:62.5%}.pure-u-16-24,.pure-u-2-3{width:66.6667%}.pure-u-17-24{width:70.8333%}.pure-u-18-24,.pure-u-3-4{width:75%}.pure-u-19-24{width:79.1667%}.pure-u-4-5{width:80%}.pure-u-20-24,.pure-u-5-6{width:83.3333%}.pure-u-21-24,.pure-u-7-8{width:87.5%}.pure-u-11-12,.pure-u-22-24{width:91.6667%}.pure-u-23-24{width:95.8333%}.pure-u-1,.pure-u-1-1,.pure-u-24-24,.pure-u-6-6{width:100%}
.status{
margin: 1.5rem -0.5rem 0 -0.5rem;
}
.block{
margin: 0.5rem 0.5rem;
padding: 0;
font-weight: normal;
font-style: normal;
line-height: 1;
font-family: inherit;
min-width: inherit;
overflow-x: auto;
overflow-y: hidden;
border: 1px solid rgba(0,0,0,.05);
border-radius: .375rem;
background-color: #4 ;
box-shadow: 0 0 2rem 0 rgba(136,152,170,.15);
}
.img-con{
margin: 1rem;
}
.green{
color: #2dce89;
}
.red{
color: #f5365c;
}
.block img{
max-width: 100%;
height: auto;
}
.pure-u-5-8{
display:flex;
align-items:center;
}
.block h4{
font-size: 1.3rem;
font-weight: bold;
margin: 0.75rem 0;
line-height: 1.8em;
}
@media screen and (max-width: 1920px) {
.block h4{
font-size: 1.2rem;
}
}
@media screen and (max-width: 1690px) {
.block h4{
font-size: 1rem;
}
}
@media screen and (max-width: 1290px) {
.block h4{
font-size: 0.8rem;
}
.pure-u-1-6{
width:33.333%;
}
}
@media screen and (max-width: 700px) {
.pure-u-1-6{
width:50%;
}
.img-con{
margin: 0.5rem;
}
.block h4{
font-size: 0.81rem;
}
}
<style>.mar-10 {margin-left: 50px; margin-right: 10px;}</style>
<fieldset id="_Shadowsocks_fieldset" class="cbi-section">
<legend>
<%:Running Status%>
</legend>
<div class="pure-g status">
<div class="pure-u-1-6">
<div class="block pure-g" >
<div class="pure-u-3-8">
<div class="img-con">
<img src="https://i.imgur.com/wzbtvXp.png" >
</div>
</div>
<div class="pure-u-5-8">
<h4 id="shadowsocksr_status" >科学上网<br><span class="red">未运行✘</span></h4>
</div>
</div>
</div>
<div class="pure-u-1-6">
<div class="block pure-g" >
<div class="pure-u-3-8">
<div class="img-con">
<img src="https://i.imgur.com/3mE04AZ.png">
</div>
</div>
<div class="pure-u-5-8">
<h4 id="google_status">国外网站<br><span class="red">无法访问✘</span></h4>
</div>
</div>
</div>
<div class="pure-u-1-6">
<div class="block pure-g" >
<div class="pure-u-3-8">
<div class="img-con">
<img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4wLjEsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0i5Zu+5bGCXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTAwIDEwMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6IzMzODhGRjt9DQoJLnN0MXtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiNGRkZGRkY7fQ0KPC9zdHlsZT4NCjxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIi8+DQo8ZyBpZD0i5pCc57SiX+eGiuaOjF82Nmljb24iPg0KCTxnIGlkPSJsb2dvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjEuMjEyMTIxLCA5MC45MDkwOTEpIj4NCgkJPHBhdGggaWQ9IkZpbGwtMSIgY2xhc3M9InN0MSIgZD0iTS03OS43LTU1LjRjNC41LDAsOC41LTUuNCw4LjUtMTEuOWMwLTYuNS0zLjctMTEuOS04LjUtMTEuOWMtNC41LDAtOC41LDUuNC04LjUsMTEuOQ0KCQkJQy04Ny45LTYwLjctODQuMi01NS40LTc5LjctNTUuNCIvPg0KCQk8cGF0aCBpZD0iRmlsbC0zIiBjbGFzcz0ic3QxIiBkPSJNLTU5LjktNTQuNWM2LjIsMC44LDEwLjItNS43LDExLTEwLjhjMC44LTQuOC0zLjEtMTAuOC03LjYtMTEuNmMtNC4yLTEuMS05LjksNS45LTEwLjIsMTAuNQ0KCQkJQy02Ny4yLTYxLTY2LjEtNTUuNC01OS45LTU0LjUiLz4NCgkJPHBhdGggaWQ9IkZpbGwtNSIgY2xhc3M9InN0MSIgZD0iTS05NS4zLTM4LjZjOC41LTEuNyw3LjEtMTEuNiw3LjEtMTMuOWMtMC4zLTMuNC00LjItOS4zLTkuOS04LjhjLTYuOCwwLjYtNy42LDEwLjItNy42LDEwLjINCgkJCUMtMTA2LjktNDYuNi0xMDMuOC0zNi45LTk1LjMtMzguNiIvPg0KCQk8cGF0aCBpZD0iRmlsbC03IiBjbGFzcz0ic3QxIiBkPSJNLTM1LjItNDYuM2MwLTIuNS0yLTkuNi05LjMtOS42Yy03LjQsMC04LjUsNi44LTguNSwxMS42YzAsNC41LDAuMywxMSw5LjYsMTAuOA0KCQkJQy0zNC40LTMzLjgtMzUuMi00NC0zNS4yLTQ2LjMiLz4NCgkJPHBhdGggaWQ9IkZpbGwtOSIgY2xhc3M9InN0MSIgZD0iTS04Ni41LTIxLjRjLTAuMywwLjYtMC44LDIuNS0wLjMsNGMwLjgsMy40LDQsMy43LDQsMy43aDQuMnYtMTAuOGgtNC44DQoJCQlDLTg1LjEtMjMuNi04Ni4yLTIxLjktODYuNS0yMS40Ii8+DQoJCTxwYXRoIGlkPSJGaWxsLTExIiBjbGFzcz0ic3QxIiBkPSJNLTUzLjEtOS41aC0xMi43Yy00LjgtMS4xLTUuMS00LjgtNS4xLTQuOHYtMTMuOWg1LjF2MTIuNWMwLjMsMS40LDIsMS43LDIsMS43aDUuNHYtMTMuOWg1LjQNCgkJCVYtOS41eiBNLTczLjItOS4ySC04NGMtNC44LTAuOC02LjgtNC4yLTYuOC00LjhjLTAuMy0wLjYtMS43LTMuMS0wLjgtNy42YzItNi41LDcuOS03LjEsNy45LTcuMWg1Ljd2LTcuMWg0LjgNCgkJCUMtNzMuMi0zNS44LTczLjItOS4yLTczLjItOS4yeiBNLTQ0LjYtMjUuM2MwLDAtOS42LTcuNC0xNS4zLTE1LjNjLTcuNi0xMS42LTE4LjQtNy4xLTIxLjgtMS4xYy0zLjQsNS45LTkuMSw5LjktOS45LDEwLjgNCgkJCWMtMC44LDAuOC0xMS42LDYuOC05LjEsMTcuM0MtOTguMS0zLjItODkuOS0zLjUtODkuOS0zLjVzNi4yLDAuNiwxMy4zLTEuMWM3LjEtMS43LDEzLjMsMC4zLDEzLjMsMC4zUy00Ni42LDEuMy00Mi05LjcNCgkJCUMtMzcuNS0xOS43LTQ0LjYtMjUuMy00NC42LTI1LjNMLTQ0LjYtMjUuM3oiLz4NCgk8L2c+DQo8L2c+DQo8L3N2Zz4NCg==">
</div>
</div>
<div class="pure-u-5-8">
<h4 id="baidu_status">国内网站<br><span class="red">无法访问✘</span></h4>
</div>
</div>
</div>
<div class="pure-u-1-6">
<div class="block pure-g" >
<div class="pure-u-3-8">
<div class="img-con">
<img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4wLjEsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0i5Zu+5bGCXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTAwIDEwMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6I0ZCQjE0MDt9DQoJLnN0MXtmaWxsOiNGRkZGRkY7fQ0KPC9zdHlsZT4NCjxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIi8+DQo8cGF0aCBjbGFzcz0ic3QxIiBkPSJNODYuOCw0Ny42QzgzLjYsMzMsNzQuOCwyMi41LDY2LjUsMjNoLTAuM2MtMy4zLDAtNi41LDEuMi04LjksMy4zYy0xLjgsMi00LjQsMy4yLTcuMSwzLjINCgljLTIuNiwwLTUuMS0xLjEtNi45LTNjLTIuNS0yLjMtNS44LTMuNS05LjEtMy41aC0wLjRjLTguMi0wLjUtMTcuMSwxMC0yMC4zLDI0LjZjLTMuNSwxNS41LDAuOCwyOS44LDkuNSwzMS45DQoJYzYuMywxLjYsMTMuMy0zLjksMTcuOS0xM2gxOC43YzQuNyw5LjEsMTEuNiwxNC42LDE3LjksMTNDODYsNzcuNCw5MC4yLDYzLjEsODYuOCw0Ny42TDg2LjgsNDcuNnogTTQyLjksNDguNUgzNnY3LjJoLTUuNnYtNy4yDQoJaC02Ljl2LTUuOGg2Ljl2LTcuMkgzNnY3LjJoNi45TDQyLjksNDguNXogTTYyLjcsNDkuMmMtMiwwLjEtMy43LTEuNC0zLjgtMy40Yy0wLjEtMiwxLjQtMy43LDMuNC0zLjhjMi0wLjEsMy43LDEuNCwzLjgsMy40DQoJYzAsMC4xLDAsMC4xLDAsMC4yQzY2LjIsNDcuNSw2NC43LDQ5LjEsNjIuNyw0OS4yQzYyLjcsNDkuMiw2Mi43LDQ5LjIsNjIuNyw0OS4yeiBNNzMuNyw0OS4yYy0yLDAuMS0zLjctMS40LTMuOC0zLjQNCgljLTAuMS0yLDEuNC0zLjcsMy40LTMuOGMyLTAuMSwzLjcsMS40LDMuOCwzLjRjMCwwLjEsMCwwLjEsMCwwLjJjMC4xLDEuOS0xLjQsMy41LTMuMywzLjZINzMuN3oiLz4NCjwvc3ZnPg0K">
</div>
</div>
<div class="pure-u-5-8">
<h4 id="game_status">游戏模式<br><span class="red">未运行✘</span></h4>
</div>
</div>
</div>
<div class="pure-u-1-6">
<div class="block pure-g" >
<div class="pure-u-3-8">
<div class="img-con">
<img src="https://i.imgur.com/bYz9YoR.png" >
</div>
</div>
<div class="pure-u-5-8">
<h4 id="SOCKS5_status">𝙎𝙊𝘾𝙆𝙎⑤<br><span class="red">未运行✘</span></h4>
</div>
</div>
</div>
<div class="pure-u-1-6">
<div class="block pure-g" >
<div class="pure-u-3-8">
<div class="img-con">
<img src="https://i.imgur.com/3hkGjsK.png" >
</div>
</div>
<div class="pure-u-5-8">
<h4 id="chinadns_status">𝐂𝐡𝐢𝐧𝐚𝐃𝐍𝐒<br><span class="red">未运行✘</span></h4>
</div>
</div>
</div>
</div>
</style>
<script type="text/javascript">//<![CDATA[
XHR.poll(5, '<%=url([[admin]], [[vpn]], [[shadowsocksr]], [[run]])%>', null,
function (x, data) {
var tb = document.getElementById('shadowsocksr_status');
var tb1 = document.getElementById('google_status');
var tb2 = document.getElementById('baidu_status');
var tb3 = document.getElementById('game_status');
var tb4 = document.getElementById('SOCKS5_status');
var tb5 = document.getElementById('chinadns_status');
if (data && tb) {
if (data.global) {
tb.innerHTML = '科学上网<br><span class="green">运行正常✔</span>';
} else {
tb.innerHTML = '科学上网<br><span class="red">未运行✘</span>';
}
if (data.google) {
tb1.innerHTML = '国外网站<br><span class="green">访问正常✔</span>';
} else {
tb1.innerHTML = '国外网站<br><span class="red">无法访问✘</span>';
}
if (data.baidu) {
tb2.innerHTML = '国内网站<br><span class="green">访问正常✔</span>';
} else {
tb2.innerHTML = '国内网站<br><span class="red">无法访问✘</span>';
}
if (data.game) {
tb3.innerHTML = '游戏模式<br><span class="green">运行正常✔</span>';
} else {
tb3.innerHTML = '游戏模式<br><span class="red">未运行✘</span>';
}
if (data.SOCKS5 ) {
tb4.innerHTML = '𝙎𝙊𝘾𝙆𝙎⑤<br><span class="green">运行正常✔</span>';
} else {
tb4.innerHTML = '𝙎𝙊𝘾𝙆𝙎⑤<br><span class="red">未运行✘</span>';
}
if (data.chinadns) {
tb5.innerHTML = '𝐂𝐡𝐢𝐧𝐚𝐃𝐍𝐒<br><span class="green">运行正常✔</span>';
} else {
tb5.innerHTML = '𝐂𝐡𝐢𝐧𝐚𝐃𝐍𝐒<br><span class="red">未运行✘</span>';
}
}
}
);
//]]>
</script></fieldset>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,5 @@
formyip.com
myepisodecalendar.com
subhd.com
msi.com
youtube.com

View File

@ -0,0 +1,2 @@
apple.com
microsoft.com

View File

@ -0,0 +1,3 @@
server=/.3g.music.qq.com/127.0.0.1#5335
ipset=/3g.music.qq.com/oversea

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,143 @@
server=/.1test.cn/119.29.29.29#53
server=/.360wzb.cn/119.29.29.29#53
server=/.51cdn.com/119.29.29.29#53
server=/.5test.cn/119.29.29.29#53
server=/.aicdn.com/119.29.29.29#53
server=/.alikunlun.com/119.29.29.29#53
server=/.alikunlun.net/119.29.29.29#53
server=/.b2r.com.cn/119.29.29.29#53
server=/.baiduyundns.cn/119.29.29.29#53
server=/.baiduyundns.com/119.29.29.29#53
server=/.baiduyundns.net/119.29.29.29#53
server=/.bcedns.cn/119.29.29.29#53
server=/.bcedns.com/119.29.29.29#53
server=/.bcedns.net/119.29.29.29#53
server=/.bdydns.cn/119.29.29.29#53
server=/.bdydns.com/119.29.29.29#53
server=/.bdydns.net/119.29.29.29#53
server=/.blueit.com/119.29.29.29#53
server=/.blueit.org.cn/119.29.29.29#53
server=/.cachecn.com/119.29.29.29#53
server=/.cachecn.net/119.29.29.29#53
server=/.cc-1.com/119.29.29.29#53
server=/.cc-cps.cn/119.29.29.29#53
server=/.cc-cps.com.cn/119.29.29.29#53
server=/.cc-cps.com/119.29.29.29#53
server=/.cc-cps.mobi/119.29.29.29#53
server=/.cc-cps.net/119.29.29.29#53
server=/.ccbench.com/119.29.29.29#53
server=/.ccgslb.cn/119.29.29.29#53
server=/.ccgslb.com.cn/119.29.29.29#53
server=/.ccgslb.com/119.29.29.29#53
server=/.ccgslb.net.cn/119.29.29.29#53
server=/.ccgslb.net/119.29.29.29#53
server=/.ccindex.cn/119.29.29.29#53
server=/.ccindex.com.cn/119.29.29.29#53
server=/.ccmplus.cn/119.29.29.29#53
server=/.ccmplus.com.cn/119.29.29.29#53
server=/.ccmplus.net/119.29.29.29#53
server=/.cdn2cdn.net/119.29.29.29#53
server=/.cdnetworks.net/119.29.29.29#53
server=/.cdngc.net/119.29.29.29#53
server=/.cdnsvc.cn/119.29.29.29#53
server=/.cdnsvc.com.cn/119.29.29.29#53
server=/.cdnsvc.com/119.29.29.29#53
server=/.cdnsvc.net.cn/119.29.29.29#53
server=/.cdnsvc.net/119.29.29.29#53
server=/.cdntip.com/119.29.29.29#53
server=/.cdnudns.com/119.29.29.29#53
server=/.chinacache.com.cn/119.29.29.29#53
server=/.chinacache.com/119.29.29.29#53
server=/.chinacache.net/119.29.29.29#53
server=/.chinacache.org/119.29.29.29#53
server=/.chinanetcenter.com/119.29.29.29#53
server=/.cloudcdn.cn/119.29.29.29#53
server=/.cloudcdn.net/119.29.29.29#53
server=/.clouddn.com/119.29.29.29#53
server=/.cloudglb.com/119.29.29.29#53
server=/.cloudglb.net/119.29.29.29#53
server=/.cloudtcp.net/119.29.29.29#53
server=/.cloudxns.com/119.29.29.29#53
server=/.cloudxns.net/119.29.29.29#53
server=/.dnspao.com/119.29.29.29#53
server=/.fastcdn.com /119.29.29.29#53
server=/.fastweb.com.cn/119.29.29.29#53
server=/.fastwebcdn.com/119.29.29.29#53
server=/.ffdns.net/119.29.29.29#53
server=/.fsspace.cn/119.29.29.29#53
server=/.fsspace.com.cn/119.29.29.29#53
server=/.fsspace.com/119.29.29.29#53
server=/.fwcdn.com/119.29.29.29#53
server=/.fwcdn.net/119.29.29.29#53
server=/.fwdns.net/119.29.29.29#53
server=/.fwmob.com/119.29.29.29#53
server=/.gccdn.net/119.29.29.29#53
server=/.gslbsvc.cn/119.29.29.29#53
server=/.gslbsvc.com.cn/119.29.29.29#53
server=/.gslbsvc.com/119.29.29.29#53
server=/.gslbsvc.net.cn/119.29.29.29#53
server=/.gslbsvc.net/119.29.29.29#53
server=/.hacdn.com/119.29.29.29#53
server=/.hacdn.net/119.29.29.29#53
server=/.hadns.net/119.29.29.29#53
server=/.hdslb.com/119.29.29.29#53
server=/.hdslb.net/119.29.29.29#53
server=/.hd-cdn.com/119.29.29.29#53
server=/.igslb.net/119.29.29.29#53
server=/.kunlunaq.com/119.29.29.29#53
server=/.kunlunar.com/119.29.29.29#53
server=/.kunlunca.com/119.29.29.29#53
server=/.kunluncan.com/119.29.29.29#53
server=/.kunlunea.com/119.29.29.29#53
server=/.kunlungem.com/119.29.29.29#53
server=/.kunlungr.com/119.29.29.29#53
server=/.kunlunhuf.com/119.29.29.29#53
server=/.kunlunle.com/119.29.29.29#53
server=/.kunlunli.com/119.29.29.29#53
server=/.kunlunno.com/119.29.29.29#53
server=/.kunlunpi.com/119.29.29.29#53
server=/.kunlunra.com/119.29.29.29#53
server=/.kunlunsa.com/119.29.29.29#53
server=/.kunlunsc.com/119.29.29.29#53
server=/.kunlunsl.com/119.29.29.29#53
server=/.kunlunso.com/119.29.29.29#53
server=/.kunlunta.com/119.29.29.29#53
server=/.kunlunvi.com/119.29.29.29#53
server=/.kunlunwe.com/119.29.29.29#53
server=/.lxdns.com/119.29.29.29#53
server=/.lxdns.net/119.29.29.29#53
server=/.lxsvc.cn /119.29.29.29#53
server=/.lxsvc.cn/119.29.29.29#53
server=/.lxsvc.net/119.29.29.29#53
server=/.myqcloud.com/119.29.29.29#53
server=/.myxns.cn/119.29.29.29#53
server=/.myxns.com.cn/119.29.29.29#53
server=/.myxns.net.cn/119.29.29.29#53
server=/.myxns.org/119.29.29.29#53
server=/.netcenter.com.cn/119.29.29.29#53
server=/.newdefend.cn/119.29.29.29#53
server=/.newdefend.com.cn/119.29.29.29#53
server=/.newdefend.com/119.29.29.29#53
server=/.newdefend.net.cn/119.29.29.29#53
server=/.newdefend.net/119.29.29.29#53
server=/.newdefend.org.cn/119.29.29.29#53
server=/.newdefend.org/119.29.29.29#53
server=/.ourglb0.com/119.29.29.29#53
server=/.ourwebat.com/119.29.29.29#53
server=/.ourwebcdn.com/119.29.29.29#53
server=/.qbox.me/119.29.29.29#53
server=/.qcloud.com/119.29.29.29#53
server=/.qingcdn.com/119.29.29.29#53
server=/.qiniudn.com/119.29.29.29#53
server=/.qiniudns.com/119.29.29.29#53
server=/.speedupchina.com/119.29.29.29#53
server=/.speedupchina.net/119.29.29.29#53
server=/.sz-dns.net/119.29.29.29#53
server=/.tcdn.qq.com/119.29.29.29#53
server=/.tlgslb.com /119.29.29.29#53
server=/.wangsu.com/119.29.29.29#53
server=/.webluker.com/119.29.29.29#53
server=/.wscdns.com/119.29.29.29#53
server=/.wsngb.com/119.29.29.29#53
server=/.xgslb.net/119.29.29.29#53
server=/.yunjiasu-cdn.net/119.29.29.29#53

View File

@ -0,0 +1,106 @@
ipset=/.91smartyun.pt/gfwlist
ipset=/.adobe.com/gfwlist
ipset=/.amazonaws.com/gfwlist
ipset=/.ampproject.org/gfwlist
ipset=/.apple.news/gfwlist
ipset=/.aws.amazon.com/gfwlist
ipset=/.azureedge.net/gfwlist
ipset=/.backpackers.com.tw/gfwlist
ipset=/.bitfinex.com/gfwlist
ipset=/.buzzfeed.com/gfwlist
ipset=/.clockwise.ee/gfwlist
ipset=/.cloudfront.net/gfwlist
ipset=/.coindesk.com/gfwlist
ipset=/.coinsquare.io/gfwlist
ipset=/.cryptocompare.com/gfwlist
ipset=/.dropboxstatic.com/gfwlist
ipset=/.eurecom.fr/gfwlist
ipset=/.gdax.com/gfwlist
ipset=/.github.com/gfwlist
ipset=/.kknews.cc/gfwlist
ipset=/.nutaq.com/gfwlist
ipset=/.openairinterface.org/gfwlist
ipset=/.skype.com/gfwlist
ipset=/.sublimetext.com/gfwlist
ipset=/.textnow.com/gfwlist
ipset=/.textnow.me/gfwlist
ipset=/.trouter.io/gfwlist
ipset=/.uploaded.net/gfwlist
ipset=/.whatsapp.com/gfwlist
ipset=/.whatsapp.net/gfwlist
ipset=/.wsj.net/gfwlist
ipset=/.google.com/gfwlist
ipset=/.google.com.hk/gfwlist
ipset=/.gstatic.com/gfwlist
ipset=/.googleusercontent.com/gfwlist
ipset=/.googlepages.com/gfwlist
ipset=/.googlevideo.com/gfwlist
ipset=/.googlecode.com/gfwlist
ipset=/.googleapis.com/gfwlist
ipset=/.googlesource.com/gfwlist
ipset=/.googledrive.com/gfwlist
ipset=/.ggpht.com/gfwlist
ipset=/.youtube.com/gfwlist
ipset=/.youtu.be/gfwlist
ipset=/.ytimg.com/gfwlist
ipset=/.twitter.com/gfwlist
ipset=/.facebook.com/gfwlist
ipset=/.fastly.net/gfwlist
ipset=/.akamai.net/gfwlist
ipset=/.akamaiedge.net/gfwlist
ipset=/.akamaihd.net/gfwlist
ipset=/.edgesuite.net/gfwlist
ipset=/.edgekey.net/gfwlist
server=/.91smartyun.pt/127.0.0.1#5335
server=/.adobe.com/127.0.0.1#5335
server=/.amazonaws.com/127.0.0.1#5335
server=/.ampproject.org/127.0.0.1#5335
server=/.apple.news/127.0.0.1#5335
server=/.aws.amazon.com/127.0.0.1#5335
server=/.azureedge.net/127.0.0.1#5335
server=/.backpackers.com.tw/127.0.0.1#5335
server=/.bitfinex.com/127.0.0.1#5335
server=/.buzzfeed.com/127.0.0.1#5335
server=/.clockwise.ee/127.0.0.1#5335
server=/.cloudfront.net/127.0.0.1#5335
server=/.coindesk.com/127.0.0.1#5335
server=/.coinsquare.io/127.0.0.1#5335
server=/.cryptocompare.com/127.0.0.1#5335
server=/.dropboxstatic.com/127.0.0.1#5335
server=/.eurecom.fr/127.0.0.1#5335
server=/.gdax.com/127.0.0.1#5335
server=/.github.com/127.0.0.1#5335
server=/.kknews.cc/127.0.0.1#5335
server=/.nutaq.com/127.0.0.1#5335
server=/.openairinterface.org/127.0.0.1#5335
server=/.skype.com/127.0.0.1#5335
server=/.sublimetext.com/127.0.0.1#5335
server=/.textnow.com/127.0.0.1#5335
server=/.textnow.me/127.0.0.1#5335
server=/.trouter.io/127.0.0.1#5335
server=/.uploaded.net/127.0.0.1#5335
server=/.whatsapp.com/127.0.0.1#5335
server=/.whatsapp.net/127.0.0.1#5335
server=/.wsj.net/127.0.0.1#5335
server=/.google.com/127.0.0.1#5335
server=/.google.com.hk/127.0.0.1#5335
server=/.gstatic.com/127.0.0.1#5335
server=/.googleusercontent.com/127.0.0.1#5335
server=/.googlepages.com/127.0.0.1#5335
server=/.googlevideo.com/127.0.0.1#5335
server=/.googlecode.com/127.0.0.1#5335
server=/.googleapis.com/127.0.0.1#5335
server=/.googlesource.com/127.0.0.1#5335
server=/.googledrive.com/127.0.0.1#5335
server=/.ggpht.com/127.0.0.1#5335
server=/.youtube.com/127.0.0.1#5335
server=/.youtu.be/127.0.0.1#5335
server=/.ytimg.com/127.0.0.1#5335
server=/.twitter.com/127.0.0.1#5335
server=/.facebook.com/127.0.0.1#5335
server=/.fastly.net/127.0.0.1#5335
server=/.akamai.net/127.0.0.1#5335
server=/.akamaiedge.net/127.0.0.1#5335
server=/.akamaihd.net/127.0.0.1#5335
server=/.edgesuite.net/127.0.0.1#5335
server=/.edgekey.net/127.0.0.1#5335

View File

@ -74,6 +74,8 @@ server=/.2008xianzhang.info/127.0.0.1#5335
ipset=/.2008xianzhang.info/gfwlist
server=/.2017.hk/127.0.0.1#5335
ipset=/.2017.hk/gfwlist
server=/.21join.com/127.0.0.1#5335
ipset=/.21join.com/gfwlist
server=/.21pron.com/127.0.0.1#5335
ipset=/.21pron.com/gfwlist
server=/.21sextury.com/127.0.0.1#5335
@ -176,6 +178,8 @@ server=/.6park.com/127.0.0.1#5335
ipset=/.6park.com/gfwlist
server=/.6parker.com/127.0.0.1#5335
ipset=/.6parker.com/gfwlist
server=/.6parknews.com/127.0.0.1#5335
ipset=/.6parknews.com/gfwlist
server=/.7capture.com/127.0.0.1#5335
ipset=/.7capture.com/gfwlist
server=/.7cow.com/127.0.0.1#5335
@ -686,6 +690,8 @@ server=/.avdb.tv/127.0.0.1#5335
ipset=/.avdb.tv/gfwlist
server=/.avfantasy.com/127.0.0.1#5335
ipset=/.avfantasy.com/gfwlist
server=/.avg.com/127.0.0.1#5335
ipset=/.avg.com/gfwlist
server=/.avgle.com/127.0.0.1#5335
ipset=/.avgle.com/gfwlist
server=/.avidemux.org/127.0.0.1#5335
@ -1230,6 +1236,8 @@ server=/.busayari.com/127.0.0.1#5335
ipset=/.busayari.com/gfwlist
server=/.businessinsider.com/127.0.0.1#5335
ipset=/.businessinsider.com/gfwlist
server=/.businesstoday.com.tw/127.0.0.1#5335
ipset=/.businesstoday.com.tw/gfwlist
server=/.businessweek.com/127.0.0.1#5335
ipset=/.businessweek.com/gfwlist
server=/.busytrade.com/127.0.0.1#5335
@ -1592,6 +1600,8 @@ server=/.chinasoul.org/127.0.0.1#5335
ipset=/.chinasoul.org/gfwlist
server=/.chinasucks.net/127.0.0.1#5335
ipset=/.chinasucks.net/gfwlist
server=/.chinatimes.com/127.0.0.1#5335
ipset=/.chinatimes.com/gfwlist
server=/.chinatopsex.com/127.0.0.1#5335
ipset=/.chinatopsex.com/gfwlist
server=/.chinatown.com.au/127.0.0.1#5335
@ -2164,6 +2174,8 @@ server=/.demo.opera-mini.net/127.0.0.1#5335
ipset=/.demo.opera-mini.net/gfwlist
server=/.democrats.org/127.0.0.1#5335
ipset=/.democrats.org/gfwlist
server=/.demosisto.hk/127.0.0.1#5335
ipset=/.demosisto.hk/gfwlist
server=/.depositphotos.com/127.0.0.1#5335
ipset=/.depositphotos.com/gfwlist
server=/.derekhsu.homeip.net/127.0.0.1#5335
@ -2218,6 +2230,8 @@ server=/.directcreative.com/127.0.0.1#5335
ipset=/.directcreative.com/gfwlist
server=/.discoins.com/127.0.0.1#5335
ipset=/.discoins.com/gfwlist
server=/.disconnect.me/127.0.0.1#5335
ipset=/.disconnect.me/gfwlist
server=/.discordapp.com/127.0.0.1#5335
ipset=/.discordapp.com/gfwlist
server=/.discordapp.net/127.0.0.1#5335
@ -2254,12 +2268,16 @@ server=/.dm530.net/127.0.0.1#5335
ipset=/.dm530.net/gfwlist
server=/.dmcdn.net/127.0.0.1#5335
ipset=/.dmcdn.net/gfwlist
server=/.dmhy.org/127.0.0.1#5335
ipset=/.dmhy.org/gfwlist
server=/.dmm.co.jp/127.0.0.1#5335
ipset=/.dmm.co.jp/gfwlist
server=/.dns-dns.com/127.0.0.1#5335
ipset=/.dns-dns.com/gfwlist
server=/.dns-stuff.com/127.0.0.1#5335
ipset=/.dns-stuff.com/gfwlist
server=/.dns.google/127.0.0.1#5335
ipset=/.dns.google/gfwlist
server=/.dns04.com/127.0.0.1#5335
ipset=/.dns04.com/gfwlist
server=/.dns05.com/127.0.0.1#5335
@ -2282,6 +2300,8 @@ server=/.dnvod.tv/127.0.0.1#5335
ipset=/.dnvod.tv/gfwlist
server=/.doctorvoice.org/127.0.0.1#5335
ipset=/.doctorvoice.org/gfwlist
server=/.documentingreality.com/127.0.0.1#5335
ipset=/.documentingreality.com/gfwlist
server=/.dojin.com/127.0.0.1#5335
ipset=/.dojin.com/gfwlist
server=/.dok-forum.net/127.0.0.1#5335
@ -2578,6 +2598,8 @@ server=/.en.hao123.com/127.0.0.1#5335
ipset=/.en.hao123.com/gfwlist
server=/.enanyang.my/127.0.0.1#5335
ipset=/.enanyang.my/gfwlist
server=/.encyclopedia.com/127.0.0.1#5335
ipset=/.encyclopedia.com/gfwlist
server=/.enewstree.com/127.0.0.1#5335
ipset=/.enewstree.com/gfwlist
server=/.enfal.de/127.0.0.1#5335
@ -2860,6 +2882,8 @@ server=/.fanhaodang.com/127.0.0.1#5335
ipset=/.fanhaodang.com/gfwlist
server=/.fanqiang.tk/127.0.0.1#5335
ipset=/.fanqiang.tk/gfwlist
server=/.fanqiangdang.com/127.0.0.1#5335
ipset=/.fanqiangdang.com/gfwlist
server=/.fanqianghou.com/127.0.0.1#5335
ipset=/.fanqianghou.com/gfwlist
server=/.fanqiangyakexi.net/127.0.0.1#5335
@ -2926,6 +2950,8 @@ server=/.feedburner.com/127.0.0.1#5335
ipset=/.feedburner.com/gfwlist
server=/.feeds.fileforum.com/127.0.0.1#5335
ipset=/.feeds.fileforum.com/gfwlist
server=/.feedx.net/127.0.0.1#5335
ipset=/.feedx.net/gfwlist
server=/.feelssh.com/127.0.0.1#5335
ipset=/.feelssh.com/gfwlist
server=/.feer.com/127.0.0.1#5335
@ -3152,6 +3178,8 @@ server=/.freefuckvids.com/127.0.0.1#5335
ipset=/.freefuckvids.com/gfwlist
server=/.freegao.com/127.0.0.1#5335
ipset=/.freegao.com/gfwlist
server=/.freehongkong.org/127.0.0.1#5335
ipset=/.freehongkong.org/gfwlist
server=/.freeilhamtohti.org/127.0.0.1#5335
ipset=/.freeilhamtohti.org/gfwlist
server=/.freekwonpyong.org/127.0.0.1#5335
@ -3232,6 +3260,8 @@ server=/.fscked.org/127.0.0.1#5335
ipset=/.fscked.org/gfwlist
server=/.fsurf.com/127.0.0.1#5335
ipset=/.fsurf.com/gfwlist
server=/.ftchinese.com/127.0.0.1#5335
ipset=/.ftchinese.com/gfwlist
server=/.ftp1.biz/127.0.0.1#5335
ipset=/.ftp1.biz/gfwlist
server=/.ftpserver.biz/127.0.0.1#5335
@ -3856,6 +3886,8 @@ server=/.guaneryu.com/127.0.0.1#5335
ipset=/.guaneryu.com/gfwlist
server=/.guangming.com.my/127.0.0.1#5335
ipset=/.guangming.com.my/gfwlist
server=/.guangnianvpn.com/127.0.0.1#5335
ipset=/.guangnianvpn.com/gfwlist
server=/.guardster.com/127.0.0.1#5335
ipset=/.guardster.com/gfwlist
server=/.guishan.org/127.0.0.1#5335
@ -3928,6 +3960,8 @@ server=/.hakkatv.org.tw/127.0.0.1#5335
ipset=/.hakkatv.org.tw/gfwlist
server=/.handcraftedsoftware.org/127.0.0.1#5335
ipset=/.handcraftedsoftware.org/gfwlist
server=/.hanime.tv/127.0.0.1#5335
ipset=/.hanime.tv/gfwlist
server=/.hanunyi.com/127.0.0.1#5335
ipset=/.hanunyi.com/gfwlist
server=/.haoel.github.io/127.0.0.1#5335
@ -5178,6 +5212,8 @@ server=/.lighti.me/127.0.0.1#5335
ipset=/.lighti.me/gfwlist
server=/.lightnovel.cn/127.0.0.1#5335
ipset=/.lightnovel.cn/gfwlist
server=/.lightyearvpn.com/127.0.0.1#5335
ipset=/.lightyearvpn.com/gfwlist
server=/.lihkg.com/127.0.0.1#5335
ipset=/.lihkg.com/gfwlist
server=/.like.com/127.0.0.1#5335
@ -6250,6 +6286,8 @@ server=/.ny.visiontimes.com/127.0.0.1#5335
ipset=/.ny.visiontimes.com/gfwlist
server=/.nyaa.eu/127.0.0.1#5335
ipset=/.nyaa.eu/gfwlist
server=/.nyaa.si/127.0.0.1#5335
ipset=/.nyaa.si/gfwlist
server=/.nydus.ca/127.0.0.1#5335
ipset=/.nydus.ca/gfwlist
server=/.nylon-angel.com/127.0.0.1#5335
@ -6994,6 +7032,8 @@ server=/.qvodzy.org/127.0.0.1#5335
ipset=/.qvodzy.org/gfwlist
server=/.qxbbs.org/127.0.0.1#5335
ipset=/.qxbbs.org/gfwlist
server=/.qz.com/127.0.0.1#5335
ipset=/.qz.com/gfwlist
server=/.r18.com/127.0.0.1#5335
ipset=/.r18.com/gfwlist
server=/.ra.gg/127.0.0.1#5335
@ -7038,10 +7078,14 @@ server=/.rapidmoviez.com/127.0.0.1#5335
ipset=/.rapidmoviez.com/gfwlist
server=/.rapidvpn.com/127.0.0.1#5335
ipset=/.rapidvpn.com/gfwlist
server=/.rarbgprx.org/127.0.0.1#5335
ipset=/.rarbgprx.org/gfwlist
server=/.raremovie.cc/127.0.0.1#5335
ipset=/.raremovie.cc/gfwlist
server=/.raremovie.net/127.0.0.1#5335
ipset=/.raremovie.net/gfwlist
server=/.raw.githubusercontent.com/127.0.0.1#5335
ipset=/.raw.githubusercontent.com/gfwlist
server=/.rawgit.com/127.0.0.1#5335
ipset=/.rawgit.com/gfwlist
server=/.rawgithub.com/127.0.0.1#5335
@ -7338,8 +7382,6 @@ server=/.seapuff.com/127.0.0.1#5335
ipset=/.seapuff.com/gfwlist
server=/.search.aol.com/127.0.0.1#5335
ipset=/.search.aol.com/gfwlist
server=/.search.disconnect.me/127.0.0.1#5335
ipset=/.search.disconnect.me/gfwlist
server=/.search.yahoo.co.jp/127.0.0.1#5335
ipset=/.search.yahoo.co.jp/gfwlist
server=/.search.yahoo.com/127.0.0.1#5335
@ -9014,6 +9056,8 @@ server=/.tycool.com/127.0.0.1#5335
ipset=/.tycool.com/gfwlist
server=/.typepad.com/127.0.0.1#5335
ipset=/.typepad.com/gfwlist
server=/.u15.info/127.0.0.1#5335
ipset=/.u15.info/gfwlist
server=/.u9un.com/127.0.0.1#5335
ipset=/.u9un.com/gfwlist
server=/.ub0.cc/127.0.0.1#5335
@ -9500,6 +9544,8 @@ server=/.waselpro.com/127.0.0.1#5335
ipset=/.waselpro.com/gfwlist
server=/.washeng.net/127.0.0.1#5335
ipset=/.washeng.net/gfwlist
server=/.washingtonpost.com/127.0.0.1#5335
ipset=/.washingtonpost.com/gfwlist
server=/.watch8x.com/127.0.0.1#5335
ipset=/.watch8x.com/gfwlist
server=/.watchinese.com/127.0.0.1#5335
@ -9840,8 +9886,6 @@ server=/.www.cmoinc.org/127.0.0.1#5335
ipset=/.www.cmoinc.org/gfwlist
server=/.www.dwheeler.com/127.0.0.1#5335
ipset=/.www.dwheeler.com/gfwlist
server=/.www.ftchinese.com/127.0.0.1#5335
ipset=/.www.ftchinese.com/gfwlist
server=/.www.gmiddle.com/127.0.0.1#5335
ipset=/.www.gmiddle.com/gfwlist
server=/.www.gmiddle.net/127.0.0.1#5335
@ -10108,6 +10152,8 @@ server=/.yibaochina.com/127.0.0.1#5335
ipset=/.yibaochina.com/gfwlist
server=/.yidio.com/127.0.0.1#5335
ipset=/.yidio.com/gfwlist
server=/.yigeni.com/127.0.0.1#5335
ipset=/.yigeni.com/gfwlist
server=/.yilubbs.com/127.0.0.1#5335
ipset=/.yilubbs.com/gfwlist
server=/.yingsuoss.com/127.0.0.1#5335

View File

@ -67,6 +67,7 @@ del_cron()
}
run_mode=$(uci_get_by_type global run_mode)
v2ray_path=$(uci_get_by_type server_subscribe v2ray_path)
gen_config_file() {
local use_conf_file=$(uci_get_by_name $1 use_conf_file)
@ -77,7 +78,7 @@ gen_config_file() {
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`
hostip=`nslookup ${host} | grep 'Address 1' | sed 's/Address 1: //g'`
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
@ -177,6 +178,9 @@ EOF
fi
sed -i 's/\\//g' /var/etc/v2-ssr-retcp.json
fi
elif [ "$stype" == "trojan" ] ;then
lua /usr/share/shadowsocksr/gentrojanconfig.lua $GLOBAL_SERVER tcp $(uci_get_by_name $1 local_port) > /var/etc/trojan-ssr-retcp.json
sed -i 's/\\//g' /var/etc/trojan-ssr-retcp.json
fi
}
@ -196,7 +200,7 @@ start_rules() {
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`
server=`nslookup ${server} | grep 'Address 1' | sed 's/Address 1: //g'`
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
@ -242,6 +246,13 @@ start_rules() {
elif [ "$run_mode" = "all" ]; then
gfwmode="-z"
fi
local dports=$(uci_get_by_type global dports 1)
if [ $dports = "1" ] ;then
proxyport=" "
else
proxyport="-m multiport --dports 22,53,587,465,995,993,143,80,443 "
fi
/usr/bin/ssr-rules \
-s "$server" \
@ -254,6 +265,7 @@ start_rules() {
-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" \
-k "$(uci_get_by_type access_control wan_fk_ips)" \
$(get_arg_out) $gfwmode $ARG_UDP
@ -631,6 +643,8 @@ start_redir() {
sscmd="/usr/bin/ss-redir"
elif [ "$stype" == "ssr" ] ;then
sscmd="/usr/bin/ssr-redir"
elif [ "$stype" == "trojan" ] ;then
sscmd="/usr/sbin/trojan"
elif [ "$stype" == "v2ray" ] ;then
sscmd="/usr/bin/v2ray/v2ray"
fi
@ -640,6 +654,8 @@ start_redir() {
ucmd="/usr/bin/ss-redir"
elif [ "$utype" == "ssr" ] ;then
ucmd="/usr/bin/ssr-redir"
elif [ "$stype" == "trojan" ] ;then
ucmd="/usr/sbin/trojan"
elif [ "$utype" == "v2ray" ] ;then
ucmd="/usr/bin/v2ray/v2ray"
fi
@ -659,9 +675,14 @@ start_redir() {
$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
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
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
fi
if [ -n "$UDP_RELAY_SERVER" ] ;then
@ -675,6 +696,11 @@ start_redir() {
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 [ "$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
@ -689,7 +715,7 @@ start_redir() {
local dnsserver=`echo "$dnsstr"|awk -F ':' '{print $1}'`
local dnsport=`echo "$dnsstr"|awk -F ':' '{print $2}'`
if [ "$dnsserver" = "0.0.0.0" ]; then
echo "$(date "+%Y-%m-%d %H:%M:%S") dns="$dnsserver"" >> /tmp/ssrplus.log
echo "$(date "+%Y-%m-%d %H:%M:%S") dns="$dnsstr"" >> /tmp/ssrplus.log
else
if [ "$run_mode" = "gfw" ]; then
ipset add gfwlist $dnsserver 2>/dev/null
@ -865,7 +891,6 @@ start_service() {
lua /usr/share/shadowsocksr/genv2config_server.lua $1 > /var/etc/v2ray-server-${server_count}.json
fi
sed -i 's/\\//g' /var/etc/v2-ssr-retcp.json
/usr/bin/v2ray/v2ray -config /var/etc/v2ray-server-${server_count}.json >/dev/null 2>&1 &
iptables -t filter -A SSR-SERVER-RULE -p tcp --dport $(uci_get_by_name $1 server_port) -j ACCEPT
@ -951,8 +976,8 @@ rules() {
fi
}
start() {
case "$(uci_get_by_type udp2raw udp2raw_enable)" in
start() {
case "$(uci_get_by_type udp2raw udp2raw_enable)" in
1|on|true|yes|enabled)
start_udp2raw
;;
@ -968,10 +993,8 @@ start() {
else
GLOBAL_SERVER=$switch_server
switch_enable=1
fi
HAPROXY_MODE="0"
if [ "$GLOBAL_SERVER" = "__haproxy__" ]; then
GLOBAL_SERVER=$(uci -X show shadowsocksr | grep servers | awk -F'[.=]' '{print $2}' | head -n 1)
@ -982,17 +1005,17 @@ start() {
[ $HAPROXY_MODE = "1" ] && start_haproxy && haproxy_enable=1
start_redir
mkdir -p /tmp/dnsmasq.d
if ! [ "$run_mode" = "oversea" ]; then
for domain_names in $(uci -X show shadowsocksr | grep domain_white_list | awk -F'[.=]' '{print $2}'); do
local DOMAIN_NANES=$(uci_get_by_name $domain_names domain_names)
sed -i "/$DOMAIN_NANES/d" /etc/dnsmasq.ssr/custom_forward.conf
sed -i "/$DOMAIN_NANES/d" /etc/dnsmasq.ssr/gfw_base.conf
sed -i "/$DOMAIN_NANES/d" /etc/dnsmasq.ssr/gfw_list.conf
done
# for domain_names in $(uci -X show shadowsocksr | grep domain_white_list | awk -F'[.=]' '{print $2}'); do
# local DOMAIN_NANES=$(uci_get_by_name $domain_names domain_names)
#
# sed -i "/$DOMAIN_NANES/d" /etc/dnsmasq.ssr/custom_forward.conf
# sed -i "/$DOMAIN_NANES/d" /etc/dnsmasq.ssr/gfw_base.conf
# sed -i "/$DOMAIN_NANES/d" /etc/dnsmasq.ssr/gfw_list.conf
# done
sleep 2
@ -1013,6 +1036,8 @@ EOF
fi
/usr/share/shadowsocksr/gfw2ipset.sh
/etc/init.d/dnsmasq restart >/dev/null 2>&1
fi
@ -1060,6 +1085,7 @@ stop() {
killall -q -9 ssr-monitor
killall -q -9 ss-redir
killall -q -9 ssr-redir
killall -q -9 trojan
killall -q -9 v2ray
killall -q -9 ssr-server
killall -q -9 ss-server
@ -1075,10 +1101,10 @@ stop() {
killall -q -9 obfs-server
killall -q -9 chinadns
killall -q -9 udp2raw
killall -q -9 udpspeeder
/usr/bin/udp2raw --clear >/dev/null
killall -q -9 udpspeeder
/usr/bin/udp2raw --clear >/dev/null
if [ -f /var/run/pdnsd.pid ] ;then
kill $(cat /var/run/pdnsd.pid) >/dev/null 2>&1
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
@ -1107,3 +1133,4 @@ stop() {
del_cron
}

View File

@ -10,8 +10,6 @@
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
bt=$(uci get shadowsocksr.@global[0].bt 2>/dev/null)
bt_port=$(uci get shadowsocksr.@global[0].bt_port 2>/dev/null)
usage() {
cat <<-EOF
@ -30,6 +28,7 @@ usage() {
-w <wan_ips> wan ip of will be forwarded
-p <fp_lan_ips> lan ip of will be global proxy
-G <gm_lan_ips> lan ip of will be game mode proxy
-D <proxy_ports> proxy ports
-k <wan_fk_ips> wan ip of will be forwarded
-e <extra_options> extra options for iptables
-o apply the rules to the OUTPUT chain
@ -71,11 +70,16 @@ flush_r() {
ipset -X fplan 2>/dev/null
ipset -X gmlan 2>/dev/null
ipset -X oversea 2>/dev/null
ipset -X whitelist 2>/dev/null
ipset -X blacklist 2>/dev/null
[ -n "$FWI" ] && echo '#!/bin/sh' >$FWI
return 0
}
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
@ -92,12 +96,9 @@ EOF
ipset -N gfwlist hash:net 2>/dev/null
for ip in $WAN_FW_IP; do ipset -! add gfwlist $ip ; done
$IPT -N SS_SPEC_WAN_AC
$IPT -A SS_SPEC_WAN_AC -m set --match-set gfwlist dst -j SS_SPEC_WAN_FW
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 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 -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 -I SS_SPEC_WAN_AC -d $server -j RETURN
elif [ "$RUNMODE" = "oversea" ] ;then
@ -133,6 +134,14 @@ EOF
ipset -N fplan hash:net 2>/dev/null
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 src -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 $?
}
@ -147,10 +156,7 @@ 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
if [ $bt -eq 1 ] ;then
$IPT -A SS_SPEC_WAN_FW -p tcp --dport $bt_port -j RETURN
fi
$IPT -A SS_SPEC_WAN_FW -p tcp \
$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
@ -211,37 +217,36 @@ 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
if [ $bt -eq 1 ] ;then
$IPT -A SS_SPEC_TPROXY -p udp --dport $bt_port -j RETURN
fi
$ipt -A SS_SPEC_TPROXY -p udp -d $SERVER -j RETURN
$ipt -A SS_SPEC_TPROXY -p udp -m set --match-set fplan src \
$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 ss_spec_wan_ac dst \
$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
$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
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
$ipt -A SS_SPEC_TPROXY -p udp -m set --match-set gfwlist 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
elif [ "$RUNMODE" = "oversea" ] ;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
$ipt -A SS_SPEC_TPROXY -p udp -m set --match-set gfwlist 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
elif [ "$RUNMODE" = "routers" ] ;then
$ipt -A SS_SPEC_TPROXY -p udp -m set --match-set china dst \
$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 -j TPROXY --on-port "$LOCAL_PORT" --tproxy-mark 0x01/0x01
$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 \
@ -321,7 +326,7 @@ EOF
return 0
}
while getopts ":s:l:S:L:i:e:a:b:w:p:G:k:oOuUfgrRczh" arg; do
while getopts ":s:l:S:L:i:e:a:b:w:p:G:D:k:oOuUfgrRczh" arg; do
case "$arg" in
s)
server=$OPTARG
@ -356,6 +361,9 @@ while getopts ":s:l:S:L:i:e:a:b:w:p:G:k:oOuUfgrRczh" arg; do
G)
LAN_GM_IP=$OPTARG
;;
D)
PROXY_PORTS=$OPTARG
;;
k)
WAN_FK_IP=$OPTARG
;;
@ -411,3 +419,6 @@ fi
flush_r && fw_rule && ipset_r && ac_rule && tp_rule && gen_include
[ "$?" = 0 ] || loger 3 "Start failed!"
exit $?
de
[ "$?" = 0 ] || loger 3 "Start failed!"
exit $?

View File

@ -0,0 +1,37 @@
local ucursor = require "luci.model.uci".cursor()
local json = require "luci.jsonc"
local server_section = arg[1]
local proto = arg[2]
local local_port = arg[3]
local server = ucursor:get_all("shadowsocksr", server_section)
local trojan = {
run_type = "nat",
local_addr = "0.0.0.0",
local_port = tonumber(local_port),
remote_addr = server.server,
remote_port = tonumber(server.server_port),
-- 传入连接
password = {server.password},
-- 传出连接
ssl = {
verify = true,
verify_hostname = true,
cert = (server.certificate == "1") and server.certpath or "",
cipher = "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:RSA-AES128-GCM-SHA256:RSA-AES256-GCM-SHA384:RSA-AES128-SHA:RSA-AES256-SHA:RSA-3DES-EDE-SHA",
sni = server.tls_host,
alpn = {"h2", "http/1.1"},
curve = "",
reuse_session = true,
session_ticket = true,
},
tcp = {
no_delay = true,
keep_alive = true,
fast_open = (server.fast_open == "1") and true or false,
fast_open_qlen = 20
}
}
print(json.stringify(trojan, 1))

View File

@ -0,0 +1,11 @@
#!/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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,4 +0,0 @@
#!/bin/sh
awk '!/^$/&&!/^#/{printf("ipset=/.%s/'"gfwlist"'\n",$0)}' /etc/config/gfw.list > /etc/dnsmasq.ssr/custom_forward.conf
awk '!/^$/&&!/^#/{printf("server=/.%s/'"127.0.0.1#5335"'\n",$0)}' /etc/config/gfw.list >> /etc/dnsmasq.ssr/custom_forward.conf