luci-app-ssr-plus-Jo: merge upstream source
This commit is contained in:
parent
9565fa70b9
commit
67e84c3da3
@ -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).
|
||||
|
||||
@ -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))
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
|
||||
@ -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>
|
||||
@ -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>
|
||||
@ -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>
|
||||
@ -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>
|
||||
@ -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")
|
||||
},
|
||||
@ -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)
|
||||
{
|
||||
@ -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>
|
||||
@ -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%>
|
||||
|
||||
@ -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
Binary file not shown.
@ -0,0 +1,5 @@
|
||||
formyip.com
|
||||
myepisodecalendar.com
|
||||
subhd.com
|
||||
msi.com
|
||||
youtube.com
|
||||
@ -0,0 +1,2 @@
|
||||
apple.com
|
||||
microsoft.com
|
||||
@ -0,0 +1,3 @@
|
||||
server=/.3g.music.qq.com/127.0.0.1#5335
|
||||
ipset=/3g.music.qq.com/oversea
|
||||
|
||||
5687
package/ctcgfw/luci-app-ssr-plus-Jo/root/etc/dnsmasq.ssr/ad.conf
Normal file
5687
package/ctcgfw/luci-app-ssr-plus-Jo/root/etc/dnsmasq.ssr/ad.conf
Normal file
File diff suppressed because it is too large
Load Diff
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -274,3 +274,4 @@ do
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
@ -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 $?
|
||||
@ -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))
|
||||
11
package/ctcgfw/luci-app-ssr-plus-Jo/root/usr/share/shadowsocksr/gfw2ipset.sh
Executable file
11
package/ctcgfw/luci-app-ssr-plus-Jo/root/usr/share/shadowsocksr/gfw2ipset.sh
Executable 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
File diff suppressed because it is too large
Load Diff
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user