luci-app-ssr-plus-Jo: sync with upstream source

This commit is contained in:
CN_SZTL 2020-02-28 00:56:45 +08:00
parent 9c8c7856b1
commit 4b55af17a4
No known key found for this signature in database
GPG Key ID: 6850B6345C862176
29 changed files with 2313 additions and 530 deletions

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-ssr-plus-Jo
PKG_VERSION:=1.46
PKG_VERSION:=1.47
PKG_RELEASE:=8
PKG_CONFIG_DEPENDS:= CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks \
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_V2ray \

View File

@ -7,19 +7,17 @@ function index()
return
end
if nixio.fs.access("/usr/bin/ssr-redir") then
entry({"admin", "vpn"}, firstchild(), "VPN", 45).dependent = false
entry({"admin", "vpn"}, firstchild(), "VPN", 45).dependent = false
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", "vpn", "shadowsocksr", "servers"}, cbi("shadowsocksr/servers"), _("Node List"), 11).leaf = true
entry({"admin", "vpn", "shadowsocksr", "servers"},arcombine(cbi("shadowsocksr/servers"), cbi("shadowsocksr/client-config")),_("Node List"), 11).leaf = true
entry({"admin", "vpn", "shadowsocksr", "subscription"},cbi("shadowsocksr/subscription"), _("Subscription Managenent"),12).leaf = true
entry({"admin", "vpn", "shadowsocksr", "subscription"},cbi("shadowsocksr/subscription"), _("Subscription"),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", "servers-list"}, cbi("shadowsocksr/servers-list"), _("Severs Nodes"), 14).leaf = true
entry({"admin", "vpn", "shadowsocksr", "appointlist"},form("shadowsocksr/appointlist"),_("Appointlist List"), 17).leaf = true
entry({"admin", "vpn", "shadowsocksr", "automatic"},cbi("shadowsocksr/automatic"), _("Automatic Switching"),20).leaf = true
entry({"admin", "vpn", "shadowsocksr", "udp2raw"},cbi("shadowsocksr/udp2raw"),_("udp2raw tunnel"),16).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", "vpn", "shadowsocksr"},alias("admin", "vpn", "shadowsocksr", "server"), _("ShadowSocksR"),10).dependent = true
@ -38,9 +36,77 @@ entry({"admin", "vpn", "shadowsocksr", "appointlist"},form("shadowsocksr/appoint
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", "subscribe"}, call("get_subscribe"))
entry({"admin", "vpn", "shadowsocksr", "ping"}, call("act_ping")).leaf=true
end
function get_subscribe()
local cjson = require "cjson"
local e = {}
local uci = luci.model.uci.cursor()
local auto_update = luci.http.formvalue("auto_update")
local auto_update_time = luci.http.formvalue("auto_update_time")
local proxy = luci.http.formvalue("proxy")
local subscribe_url = luci.http.formvalue("subscribe_url")
if subscribe_url ~= "[]" then
local cmd1 = 'uci set shadowsocksr.@server_subscribe[0].auto_update="' ..
auto_update .. '"'
local cmd2 = 'uci set shadowsocksr.@server_subscribe[0].auto_update_time="' ..
auto_update_time .. '"'
local cmd3 = 'uci set shadowsocksr.@server_subscribe[0].proxy="' .. proxy .. '"'
luci.sys.call('uci delete shadowsocksr.@server_subscribe[0].subscribe_url ')
luci.sys.call(cmd1)
luci.sys.call(cmd2)
luci.sys.call(cmd3)
for k, v in ipairs(cjson.decode(subscribe_url)) do
luci.sys.call(
'uci add_list shadowsocksr.@server_subscribe[0].subscribe_url="' .. v ..
'"')
end
luci.sys.call('uci commit shadowsocksr')
luci.sys.call(
"nohup /usr/share/shadowsocksr/subscribe.sh >/www/check_update.htm 2>/dev/null &")
e.error = 0
else
e.error = 1
end
luci.http.prepare_content("application/json")
luci.http.write_json(e)
end
-- 获取所有节点
function get_servers()
local uci = luci.model.uci.cursor()
local server_table = {}
uci:foreach("shadowsocksr", "servers", function(s)
s["name"] = s[".name"]
table.insert(server_table,s)
end)
luci.http.prepare_content("application/json")
luci.http.write_json(server_table)
end
-- 切换节点
function change_node()
local e={}
local uci = luci.model.uci.cursor()
local sid = luci.http.formvalue("set")
local name = ""
uci:foreach("shadowsocksr", "global", function(s)
name = s[".name"]
end)
e.status = false
e.sid = sid
if sid ~= "" then
uci:set("shadowsocksr", name, "global_server" , sid)
luci.sys.call("uci commit shadowsocksr && /etc/init.d/shadowsocksr restart")
e.status = true
end
luci.http.prepare_content("application/json")
luci.http.write_json(e)
end
-- 检测全局服务器状态
function act_status()
@ -278,3 +344,33 @@ function check_ports()
end
-- 检测单个节点状态并返回连接速度
function check_port()
local sockets = require "socket"
local set = luci.http.formvalue("host")
local port = luci.http.formvalue("port")
local retstring = ""
local iret = 1
iret = luci.sys.call(" ipset add ss_spec_wan_ac " .. set .. " 2>/dev/null")
socket = nixio.socket("inet", "stream")
socket:setopt("socket", "rcvtimeo", 3)
socket:setopt("socket", "sndtimeo", 3)
local t0 = sockets.gettime()
ret = socket:connect(set, port)
if tostring(ret) == "true" then
socket:close()
retstring = "1"
else
retstring = "0"
end
if iret == 0 then
luci.sys.call(" ipset del ss_spec_wan_ac " .. set)
end
local t1 = sockets.gettime()
local tt =t1 -t0
luci.http.prepare_content("application/json")
luci.http.write_json({ret = retstring , used = math.floor(tt*1000 + 0.5)})
end

View File

@ -98,26 +98,34 @@ table.sort(key_table)
m = Map(shadowsocksr)
-- [[ haProxy ]]--
s = m:section(TypedSection, "global_haproxy", translate("haProxy settings"))
-- [[ global ]]--
s = m:section(TypedSection, "global", translate("Server failsafe auto swith settings"))
s.anonymous = true
o = s:option(Flag, "admin_enable", translate("Enabling the Management Console"))
o = s:option(Flag, "monitor_enable", translate("Enable Process Deamon"))
o.rmempty = false
o.default = 1
o.default = "1"
o = s:option(Value, "admin_port", translate("Service Port"))
o = s:option(Flag, "enable_switch", translate("Enable Auto Switch"))
o.rmempty = false
o.default = "1"
o = s:option(Value, "switch_time", translate("Switch check cycly(second)"))
o.datatype = "uinteger"
o.default = 1111
o:depends("enable_switch", "1")
o.default = 667
o = s:option(Value, "switch_timeout", translate("Check timout(second)"))
o.datatype = "uinteger"
o:depends("enable_switch", "1")
o.default = 5
o = s:option(Value, "switch_try_count", translate("Check Try Count"))
o.datatype = "uinteger"
o:depends("enable_switch", "1")
o.default = 3
o = s:option(Value, "admin_user", translate("User name"))
o.default = "admin"
o = s:option(Value, "admin_password", translate("Password"))
o.default = "root"
-- [[ SOCKS5 Proxy ]]--
if nixio.fs.access("/usr/bin/ssr-local") then
@ -147,109 +155,38 @@ o.rmempty = false
end
end
-- [[ udp2raw ]]--
if nixio.fs.access("/usr/bin/udp2raw") then
s = m:section(TypedSection, "udp2raw", translate("udp2raw tunnel"))
-- [[ adblock ]]--
s = m:section(TypedSection, "global", translate("adblock settings"))
s.anonymous = true
o = s:option(Flag, "udp2raw_enable", translate("Enable udp2raw"))
o.default = 0
o = s:option(Flag, "adblock", translate("Enable adblock"))
o.rmempty = false
o = s:option(Value, "server", translate("Server Address"))
o.datatype = "host"
o.rmempty = false
o = s:option(Value, "adblock_url", translate("adblock_url"))
o.default = "https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt"
o = s:option(Value, "server_port", translate("Server Port"))
o.datatype = "port"
o.rmempty = false
-- [[ haProxy ]]--
o = s:option(Value, "local_port", translate("Local Port"))
o.datatype = "port"
o.rmempty = false
o = s:option(Value, "key", translate("Password"))
o.password = true
o.rmempty = false
o = s:option(ListValue, "raw_mode", translate("Raw Mode"))
for _, v in ipairs(raw_mode) do o:value(v) end
o.default = "faketcp"
o.rmempty = false
o = s:option(ListValue, "seq_mode", translate("Seq Mode"))
for _, v in ipairs(seq_mode) do o:value(v) end
o.default = "3"
o.rmempty = false
o = s:option(ListValue, "cipher_mode", translate("Cipher Mode"))
for _, v in ipairs(cipher_mode) do o:value(v) end
o.default = "xor"
o.rmempty = false
o = s:option(ListValue, "auth_mode", translate("Auth Mode"))
for _, v in ipairs(auth_mode) do o:value(v) end
o.default = "simple"
o.rmempty = false
end
-- [[ udpspeeder ]]--
if nixio.fs.access("/usr/bin/udpspeeder") then
s = m:section(TypedSection, "udpspeeder", translate("UDPspeeder"))
s = m:section(TypedSection, "global_haproxy", translate("haProxy settings"))
s.anonymous = true
o = s:option(Flag, "udpspeeder_enable", translate("Enable UDPspeeder"))
o.default = 0
o = s:option(Flag, "admin_enable", translate("Enabling the Management Console"))
o.rmempty = false
o.default = 1
o = s:option(Value, "server", translate("Server Address"))
o.datatype = "host"
o.rmempty = false
o = s:option(Value, "server_port", translate("Server Port"))
o.datatype = "port"
o.rmempty = false
o = s:option(Value, "local_port", translate("Local Port"))
o.datatype = "port"
o.rmempty = false
o = s:option(Value, "key", translate("Password"))
o.password = true
o.rmempty = false
o = s:option(ListValue, "speeder_mode", translate("Speeder Mode"))
for _, v in ipairs(speeder_mode) do o:value(v) end
o.default = "0"
o.rmempty = false
o = s:option(Value, "fec", translate("Fec"))
o.default = "20:10"
o.rmempty = false
o = s:option(Value, "mtu", translate("Mtu"))
o = s:option(Value, "admin_port", translate("Service Port"))
o.datatype = "uinteger"
o.default = 1250
o.rmempty = false
o.default = 1111
o = s:option(Value, "queue_len", translate("Queue Len"))
o.datatype = "uinteger"
o.default = 200
o.rmempty = false
o = s:option(Value, "admin_user", translate("User name"))
o.default = "admin"
o = s:option(Value, "timeout", translate("Fec Timeout"))
o.datatype = "uinteger"
o.default = 8
o.rmempty = false
o = s:option(Value, "admin_password", translate("Password"))
o.default = "root"
end
return m

View File

@ -39,7 +39,11 @@ o.datatype = "uinteger"
o:depends("enable_switch", "1")
o.default = 5
o = s:option(Value, "switch_try_count", translate("Check Try Count"))
o.datatype = "uinteger"
o:depends("enable_switch", "1")
o.default = 3
return m

View File

@ -136,7 +136,9 @@ o:value("ss", translate("Shadowsocks"))
end
o.description = translate("Using incorrect encryption mothod may causes service fail to start")
upload_conf = s:option(FileUpload, "")
upload_conf.template = "cbi/other_upload2"
upload_conf:depends("use_conf_file", 1)
o = s:option(Value, "alias", translate("Alias(optional)"))
@ -227,13 +229,13 @@ o.rmempty = true
o.default = uuid
o:depends("type", "v2ray")
-- 加密方式
-- 鍔犲瘑鏂瑰紡
o = s:option(ListValue, "security", translate("Encrypt Method"))
for _, v in ipairs(securitys) do o:value(v, v:upper()) end
o.rmempty = true
o:depends("type", "v2ray")
-- 传输协议
-- 浼犺緭鍗忚
o = s:option(ListValue, "transport", translate("Transport"))
o:value("tcp", "TCP")
o:value("kcp", "mKCP")
@ -243,50 +245,50 @@ o:value("quic", "QUIC")
o.rmempty = true
o:depends("type", "v2ray")
-- [[ TCP部分 ]]--
-- [[ TCP閮ㄥ垎 ]]--
-- TCP伪装
-- TCP浼
o = s:option(ListValue, "tcp_guise", translate("Camouflage Type"))
o:depends("transport", "tcp")
o:value("none", translate("None"))
o:value("http", "HTTP")
o.rmempty = true
-- HTTP域名
-- HTTP鍩熷悕
o = s:option(DynamicList, "http_host", translate("HTTP Host"))
o:depends("tcp_guise", "http")
o.rmempty = true
-- HTTP路径
-- HTTP璺緞
o = s:option(DynamicList, "http_path", translate("HTTP Path"))
o:depends("tcp_guise", "http")
o.rmempty = true
-- [[ WS部分 ]]--
-- [[ WS閮ㄥ垎 ]]--
-- WS域名
-- WS鍩熷悕
o = s:option(Value, "ws_host", translate("WebSocket Host"))
o:depends("transport", "ws")
o.rmempty = true
-- WS路径
-- WS璺緞
o = s:option(Value, "ws_path", translate("WebSocket Path"))
o:depends("transport", "ws")
o.rmempty = true
-- [[ H2部分 ]]--
-- [[ H2閮ㄥ垎 ]]--
-- H2域名
-- H2鍩熷悕
o = s:option(DynamicList, "h2_host", translate("HTTP/2 Host"))
o:depends("transport", "h2")
o.rmempty = true
-- H2路径
-- H2璺緞
o = s:option(Value, "h2_path", translate("HTTP/2 Path"))
o:depends("transport", "h2")
o.rmempty = true
-- [[ QUIC部分 ]]--
-- [[ QUIC閮ㄥ垎 ]]--
o = s:option(ListValue, "quic_security", translate("QUIC Security"))
o:depends("transport", "quic")
@ -309,7 +311,7 @@ o:value("wechat-video", translate("WechatVideo"))
o:value("dtls", "DTLS 1.2")
o:value("wireguard", "WireGuard")
-- [[ mKCP部分 ]]--
-- [[ mKCP閮ㄥ垎 ]]--
o = s:option(ListValue, "kcp_guise", translate("Camouflage Type"))
o:depends("transport", "kcp")
@ -442,3 +444,4 @@ o:depends("type", "ss")
end
return m

View File

@ -127,6 +127,12 @@ o:value("1", translate("1 Thread"))
o:value("2", translate("2 Threads"))
o:value("4", translate("4 Threads"))
o:value("8", translate("8 Threads"))
o:value("16", translate("16 Threads"))
o:value("32", translate("32 Threads"))
o:value("64", translate("64 Threads"))
o:value("128", translate("128 Threads"))
o:value("256", translate("256 Threads"))
o:value("512", translate("512 Threads"))
o.default = "0"
o.rmempty = false

View File

@ -15,44 +15,49 @@ 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"))
o = s:taboption("lan_ac", DynamicList, "lan_ac_ips", translate("LAN Bypassed Host List"))
o = s:taboption("lan_ac", ListValue, "lan_ac_mode", translate("LAN Access Control"))
o:value("0", translate("Disable"))
o:value("w", translate("Allow listed only"))
o:value("b", translate("Allow all except listed"))
o.rmempty = false
o = s:taboption("lan_ac", DynamicList, "lan_ac_ips", translate("LAN Host List"))
o.datatype = "ipaddr"
luci.ip.neighbors({ family = 4 }, function(entry)
if entry.reachable then
o:value(entry.dest:string())
end
if entry.reachable then
o:value(entry.dest:string())
end
end)
o:depends("lan_ac_mode", "w")
o:depends("lan_ac_mode", "b")
o = s:taboption("lan_ac", DynamicList, "lan_bp_ips", translate("LAN Bypassed Host List"))
o.datatype = "ipaddr"
luci.ip.neighbors({ family = 4 }, function(entry)
if entry.reachable then
o:value(entry.dest:string())
end
end)
o = s:taboption("lan_ac", DynamicList, "lan_fp_ips", translate("LAN Force Proxy Host List"))
o.datatype = "ipaddr"
luci.ip.neighbors({ family = 4 }, function(entry)
if entry.reachable then
o:value(entry.dest:string())
end
if entry.reachable then
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)
if entry.reachable then
o:value(entry.dest:string())
end
if entry.reachable then
o:value(entry.dest:string())
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
-- o = s:option(Value, "domain_names", translate("Domain name (keyword only)"))
-- Part of Self
-- s:tab("self_ac", translate("Router Self AC"))
-- o = s:taboption("self_ac",ListValue, "router_proxy", translate("Router Self Proxy"))
@ -96,5 +101,4 @@ o.remove = function(self, section, value)
NXFS.writefile(blockconf, "")
end
m:section(SimpleSection).template = "shadowsocksr/myip"
return m

View File

@ -12,5 +12,4 @@ function t.cfgvalue()
end
t.readonly="readonly"
return f
return f

View File

@ -0,0 +1,23 @@
local fs = require "nixio.fs"
local conffile = "/etc/dnsmasq.oversea/base_list.conf"
f = SimpleForm("custom", translate("Oversea Custom List"))
t = f:field(TextValue, "conf")
t.rmempty = true
t.rows = 13
function t.cfgvalue()
return fs.readfile(conffile) or ""
end
function f.handle(self, state, data)
if state == FORM_VALID then
if data.conf then
fs.writefile(conffile, data.conf:gsub("\r\n", "\n"))
luci.sys.call("/etc/init.d/dnsmasq restart")
end
end
return true
end
return f

View File

@ -377,3 +377,4 @@ o:depends("type", "ssr")
return m

View File

@ -113,3 +113,4 @@ o.width="10%"
m:append(Template("shadowsocksr/server_list"))
return m

View File

@ -0,0 +1,80 @@
-- Licensed to the public under the GNU General Public License v3.
local m, s, o
local shadowsocksr = "shadowsocksr"
local uci = luci.model.uci.cursor()
local server_count = 0
uci:foreach("shadowsocksr", "servers", function(s)
server_count = server_count + 1
end)
local fs = require "nixio.fs"
local sys = require "luci.sys"
m = Map(shadowsocksr)
m:section(SimpleSection).template = "shadowsocksr/status"
-- [[ Servers Manage ]]--
s = m:section(TypedSection, "servers")
s.anonymous = true
s.addremove = true
s.description = string.format(translate("Server Count") .. ": %d", server_count)
s.sortable = true
s.template = "cbi/tblsection"
s.extedit = luci.dispatcher.build_url("admin/vpn/shadowsocksr/servers/%s")
function s.create(...)
local sid = TypedSection.create(...)
if sid then
luci.http.redirect(s.extedit % sid)
return
end
end
o = s:option(DummyValue, "type", translate("Type"))
function o.cfgvalue(...)
return Value.cfgvalue(...) or translate("")
end
o = s:option(DummyValue, "alias", translate("Alias"))
function o.cfgvalue(...)
return Value.cfgvalue(...) or translate("None")
end
o = s:option(DummyValue, "server", translate("Server Address"))
function o.cfgvalue(...)
return Value.cfgvalue(...) or "?"
end
o = s:option(DummyValue, "server_port", translate("Server Port"))
function o.cfgvalue(...)
return Value.cfgvalue(...) or "?"
end
o = s:option(DummyValue, "encrypt_method", translate("Encrypt Method"))
o.width="10%"
o = s:option(DummyValue, "protocol", translate("Protocol"))
o.width="10%"
o = s:option(DummyValue, "obfs", translate("Obfs"))
o.width="10%"
o = s:option(Flag, "switch_enable", translate("Enable Auto Switch"))
function o.cfgvalue(...)
return Value.cfgvalue(...) or "?"
end
if nixio.fs.access("/usr/bin/kcptun-client") then
o = s:option(Flag, "kcp_enable", translate("KcpTun"))
function o.cfgvalue(...)
return Value.cfgvalue(...) or "?"
end
end
o = s:option(DummyValue,"server",translate("Ping Latency"))
o.template="shadowsocksr/ping"
o.width="10%"
m:append(Template("shadowsocksr/server_list"))
return m

View File

@ -1,80 +1,62 @@
-- Licensed to the public under the GNU General Public License v3.
local d = require "luci.dispatcher"
local fs = require "nixio.fs"
local sys = require "luci.sys"
local uci = require "luci.model.uci".cursor()
local m, s, o
local shadowsocksr = "shadowsocksr"
local uci = luci.model.uci.cursor()
local server_count = 0
local server_table = {}
uci:foreach("shadowsocksr", "servers", function(s)
server_count = server_count + 1
server_count = server_count + 1
s["name"] = s[".name"]
table.insert(server_table, s)
end)
local name = ""
uci:foreach("shadowsocksr", "global", function(s) name = s[".name"] end)
m = Map(shadowsocksr)
m:section(SimpleSection).template = "shadowsocksr/status"
-- [[ Servers Manage ]]--
m:section(SimpleSection).template = "shadowsocksr/status"
-- [[ Servers List ]]--
s = m:section(TypedSection, "servers")
s.anonymous = true
s.description = string.format(translate("Server Count") .. ": %d", server_count)
s.addremove = true
s.sortable = true
s.template = "cbi/tblsection"
s.sortable = false
s.des = server_count
s.current = uci:get("shadowsocksr", name, "global_server")
s.template = "cbi/add"
s.extedit = luci.dispatcher.build_url("admin/vpn/shadowsocksr/servers/%s")
function s.create(...)
local sid = TypedSection.create(...)
if sid then
luci.http.redirect(s.extedit % sid)
return
end
if sid then
luci.http.redirect(s.extedit % sid)
return
end
end
o = s:option(DummyValue, "type", translate("Type"))
function o.cfgvalue(...)
return Value.cfgvalue(...) or translate("")
end
function o.cfgvalue(...) return Value.cfgvalue(...) or translate("") end
o = s:option(DummyValue, "alias", translate("Alias"))
function o.cfgvalue(...)
return Value.cfgvalue(...) or translate("None")
end
function o.cfgvalue(...) return Value.cfgvalue(...) or translate("None") end
o = s:option(DummyValue, "server", translate("Server Address"))
function o.cfgvalue(...)
return Value.cfgvalue(...) or "?"
end
function o.cfgvalue(...) return Value.cfgvalue(...) or "?" end
o = s:option(DummyValue, "server_port", translate("Server Port"))
function o.cfgvalue(...)
return Value.cfgvalue(...) or "?"
end
o = s:option(DummyValue, "encrypt_method", translate("Encrypt Method"))
o.width="10%"
o = s:option(DummyValue, "protocol", translate("Protocol"))
o.width="10%"
o = s:option(DummyValue, "obfs", translate("Obfs"))
o.width="10%"
o = s:option(Flag, "switch_enable", translate("Enable Auto Switch"))
function o.cfgvalue(...)
return Value.cfgvalue(...) or "?"
end
function o.cfgvalue(...) return Value.cfgvalue(...) or "?" end
if nixio.fs.access("/usr/bin/kcptun-client") then
o = s:option(Flag, "kcp_enable", translate("KcpTun"))
function o.cfgvalue(...)
return Value.cfgvalue(...) or "?"
end
o = s:option(DummyValue, "kcp_enable", translate("KcpTun"))
function o.cfgvalue(...) return Value.cfgvalue(...) or "?" end
end
o = s:option(DummyValue,"server",translate("Ping Latency"))
o.template="shadowsocksr/ping"
o.width="10%"
m:append(Template("shadowsocksr/server_list"))
return m

View File

@ -1,73 +1,74 @@
-- Licensed to the public under the GNU General Public License v3.
local m, s, o
local shadowsocksr = "shadowsocksr"
local shadowsocksr= "shadowsocksr"
local uci = luci.model.uci.cursor()
local server_count = 0
uci:foreach("shadowsocksr", "servers", function(s)
server_count = server_count + 1
end)
local server_table = {}
local gfwmode=0
local gfw_count=0
local ip_count=0
if nixio.fs.access("/etc/dnsmasq.ssr/gfw_list.conf") then
gfwmode=1
end
local fs = require "nixio.fs"
local sys = require "luci.sys"
if gfwmode==1 then
gfw_count = tonumber(sys.exec("cat /etc/dnsmasq.ssr/gfw_list.conf | wc -l"))/2
end
m = Map(shadowsocksr)
m:section(SimpleSection).template = "shadowsocksr/status"
-- [[ 节点订阅 ]]--
s = m:section(TypedSection, "server_subscribe", translate("Node Subscribe"))
s = m:section(TypedSection, "server_subscribe", translate("Subscription"))
s.anonymous = true
o = s:option(Flag, "auto_update", translate("Auto Update"))
o.rmempty = false
o.description = translate("Auto Update Server subscription, GFW list and CHN route")
o = s:option(ListValue, "edition", translate("V2 Edition"))
o:value(" 4.21.3 ", " 4.21.3 ")
o:value("4.20.0", "4.20.0")
o:value("4.19.1", "4.19.1")
o:value("4.18.2", "4.18.2")
o:value("4.18.1", "4.18.1")
o:value("4.18.0", "4.18.0")
o.rmempty = false
o = s:option(ListValue, "auto_update_time", translate("Update time (every day)"))
for t = 0,23 do
o:value(t, t..":00")
o:value(t, t..":00")
end
o.default=2
o.rmempty = false
o = s:option(DynamicList, "subscribe_url", translate("Subscribe URL"))
o = s:option(DynamicList, "subscribe_url", translate("Subscribe URL"),
translate("Before subscribing please click below to delete all servers in the subscription"))
o.rmempty = true
o = s:option(Flag, "proxy", translate("Through proxy update"))
o.rmempty = false
o.description = translate("Through proxy update list, Not Recommended ")
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", "vpn", "shadowsocksr", "servers"))
end
o = s:option(Button,"update_v2ray",translate("Upgrade V2ray"))
o.inputstyle = "reload"
o.write = function()
luci.sys.call("bash /usr/share/shadowsocksr/v2ray_update1.sh >>/tmp/ssrplus.log 2>&1")
end
o = s:option(DummyValue, "", "")
o.rawhtml = true
o.template = "shadowsocksr/update_subscribe"
o = s:option(Button,"delete",translate("Delete all severs"))
o.inputstyle = "reset"
o.description = string.format(translate("Server Count") .. ": %d", server_count)
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", "vpn", "shadowsocksr", "servers"))
return
uci:delete_all("vssr", "servers", function(s) return true end)
uci:commit("vssr")
luci.sys.call("uci commit vssrsr && /etc/init.d/vssr stop")
luci.http.redirect(luci.dispatcher.build_url("admin", "vpn", "vssr", "servers"))
return
end
return m

View File

@ -0,0 +1,197 @@
-- Copyright (C) 2017 yushi studio <ywb94@qq.com> github.com/ywb94
-- Copyright (C) 2018 lean <coolsnowwolf@gmail.com> github.com/coolsnowwolf
-- Licensed to the public under the GNU General Public License v3.
local m, s, sec, o, kcp_enable
local shadowsocksr = "shadowsocksr"
m = Map(shadowsocksr)
local server_table = {}
local encrypt_methods = {
"none",
"table",
"rc4",
"rc4-md5-6",
"rc4-md5",
"aes-128-cfb",
"aes-192-cfb",
"aes-256-cfb",
"aes-128-ctr",
"aes-192-ctr",
"aes-256-ctr",
"bf-cfb",
"camellia-128-cfb",
"camellia-192-cfb",
"camellia-256-cfb",
"cast5-cfb",
"des-cfb",
"idea-cfb",
"rc2-cfb",
"seed-cfb",
"salsa20",
"chacha20",
"chacha20-ietf",
}
local protocol = {
"origin",
"verify_deflate",
"auth_sha1_v4",
"auth_aes128_sha1",
"auth_aes128_md5",
"auth_chain_a",
"auth_chain_b",
"auth_chain_c",
"auth_chain_d",
"auth_chain_e",
"auth_chain_f",
}
obfs = {
"plain",
"http_simple",
"http_post",
"random_head",
"tls1.2_ticket_auth",
}
local raw_mode = {
"faketcp",
"udp",
"icmp",
}
local seq_mode = {
"0",
"1",
"2",
"3",
"4",
}
local cipher_mode = {
"none",
"xor",
"aes128cbc",
}
local auth_mode = {
"none",
"simple",
"md5",
"crc32",
}
local speeder_mode = {
"0",
"1",
}
-- [[ udp2raw ]]--
if nixio.fs.access("/usr/bin/udp2raw") then
s = m:section(TypedSection, "udp2raw", translate(" UDP2raw "))
s.anonymous = true
o = s:option(Flag, "udp2raw_enable", translate("Enable udp2raw"))
o.default = 0
o.rmempty = false
o = s:option(Value, "server", translate("Server Address"))
o.datatype = "host"
o.rmempty = false
o = s:option(Value, "server_port", translate("Server Port"))
o.datatype = "port"
o.rmempty = false
o = s:option(Value, "local_port", translate("Local Port"))
o.datatype = "port"
o.rmempty = false
o = s:option(Value, "key", translate("Password"))
o.password = true
o.rmempty = false
o = s:option(ListValue, "raw_mode", translate("Raw Mode"))
for _, v in ipairs(raw_mode) do o:value(v) end
o.default = "faketcp"
o.rmempty = false
o = s:option(ListValue, "seq_mode", translate("Seq Mode"))
for _, v in ipairs(seq_mode) do o:value(v) end
o.default = "3"
o.rmempty = false
o = s:option(ListValue, "cipher_mode", translate("Cipher Mode"))
for _, v in ipairs(cipher_mode) do o:value(v) end
o.default = "xor"
o.rmempty = false
o = s:option(ListValue, "auth_mode", translate("Auth Mode"))
for _, v in ipairs(auth_mode) do o:value(v) end
o.default = "simple"
o.rmempty = false
end
-- [[ udpspeeder ]]--
if nixio.fs.access("/usr/bin/udpspeeder") then
s = m:section(TypedSection, "udpspeeder", translate("UDPspeeder"))
s.anonymous = true
o = s:option(Flag, "udpspeeder_enable", translate("Enable UDPspeeder"))
o.default = 0
o.rmempty = false
o = s:option(Value, "server", translate("Server Address"))
o.datatype = "host"
o.rmempty = false
o = s:option(Value, "server_port", translate("Server Port"))
o.datatype = "port"
o.rmempty = false
o = s:option(Value, "local_port", translate("Local Port"))
o.datatype = "port"
o.rmempty = false
o = s:option(Value, "key", translate("Password"))
o.password = true
o.rmempty = false
o = s:option(ListValue, "speeder_mode", translate("Speeder Mode"))
for _, v in ipairs(speeder_mode) do o:value(v) end
o.default = "0"
o.rmempty = false
o = s:option(Value, "fec", translate("Fec"))
o.default = "20:10"
o.rmempty = false
o = s:option(Value, "mtu", translate("Mtu"))
o.datatype = "uinteger"
o.default = 1250
o.rmempty = false
o = s:option(Value, "queue_len", translate("Queue Len"))
o.datatype = "uinteger"
o.default = 200
o.rmempty = false
o = s:option(Value, "timeout", translate("Fec Timeout"))
o.datatype = "uinteger"
o.default = 8
o.rmempty = false
end
return m

View File

@ -0,0 +1,409 @@
<style>
.cbi-section-table-row {
position: relative;
background: #172b4d;
margin: 10px;
padding: 8px 15px 10px 65px;
box-shadow: 0 0 1rem 0 rgba(136,152,170,.75);
border-radius: .5rem;
border: 0;
color: #ffffff;
text-align: left;
line-height: 1.7em;
white-space: nowrap;
     text-overflow: ellipsis;
overflow: hidden;
transition: all 0.3s;
}
.incon.fast ,.cbi-section-table-row.fast{
background: #009966!important;
}
.incon.nopass ,.cbi-section-table-row.nopass{
background: #dc3545 !important;
}
.incon.middle ,.cbi-section-table-row.middle{
background: #fbc658 !important;
}
.incon.slow ,.cbi-section-table-row.slow{
background: #fb6340 !important;
}
.host_con.fast{
color: #00ff18;
}
.host_con.nopass{
color: #f5365c;
}
.host_con.middle{
color: #ffff00;
}
.host_con.slow{
color: #ffa200;
}
.loadings {
position: absolute;
width: 100%;
height: 100%;
background: rgba(255,255,255,0.7);
border-radius: .5rem;
left: 0;
top: 0;
z-index: 10;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
justify-content: center;
align-items: center;
font-size: 30px;
transition: all 0.3s;
}
.loadings.hide{
opacity:0;
visibility:hidden;
pointer-events:none;
}
.loadings span {
animation: anim-rotate 2s infinite linear;
height: 30px;
}
.incon {
display: inline-block;
margin: 0.2em 0;
}
.incon:nth-child(2) {
position: absolute;
display:flex;
align-items:center;
justify-content: center;
left: 0;
top: -3px;
width: 55px;
height: 105%;
border: 0;
background: #00CED1;
text-transform: uppercase;
}
.incon:nth-child(3) {
padding-left: 0px;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
.incon:nth-child(5) ,.incon:nth-child(6){
display: none;
}
.cbi-section-table-cell {
text-align: right;
}
.ssr-button {
background: none;
color: #fff;
padding: 0 0 0 0.8rem;
}
.ssr-button:hover,
.ssr-button:focus,
.ssr-button:active {
color: #fff;
outline: 0;
text-decoration: none;
box-shadow: none;
}
.cbi-section h3{
margin-left:10px;
margin-top:1rem;
}
.cbi-button-check {
color: #fff !important;
background-color: #008080 !important;
border-color: #2e6da4 !important;
font-size:14px;
padding:0.5rem 0.8rem;
float:right;
margin-right:10px;
margin-top:-0.5rem;
}
.cbi-section-table-cell{
position:relative;
}
.host_con{
position:absolute;
left:0;
width:50px;
text-align: left;
height:22px;
font-weight: bold;
}
.host_ok{
color:#fff;
background:#2dce89;
padding: 0.1rem 0.5rem;
border-radius: 0.2rem;
}
.host_error{
color:#fff;
background:#f5365c;
padding: 0.1rem 0.5rem;
border-radius: 0.2rem;
}
.cbi-button-add{
position:fixed;
padding: 0.3rem 0.5rem;
z-index:1000;
width:80px !important;
height:80px;
bottom:50px;
right:60px;
font-size:20px;
border-radius:50%;
display:block;
background-color: #008080!important;
border-color: #008080 !important;
box-shadow: 0 0 1rem 0 rgba(136,152,170,.75);
}
.statused{
position: absolute;
z-index: 20;
right: 0;
top: 0;
background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4wLjEsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0i5Zu+5bGCXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMjAwIDIwMCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjAwIDIwMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6IzZGOUEzNzt9DQoJLnN0MXtmaWxsOiNGRkZGRkY7fQ0KPC9zdHlsZT4NCjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0wLjIsMGwxOTkuNiwyMDBMMjAwLDAuMkwwLjIsMHoiLz4NCjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNjQuNSw1MS4zTDEyMyw5My44Yy0wLjksMS0yLjEsMS40LTMuNCwxLjRjLTEuMywwLTIuNS0wLjQtMy40LTEuNEw5OSw3NS42Yy0xLjgtMS45LTEuNi00LjksMC40LTYuOA0KCWMyLTEuOSw1LTEuOSw2LjgsMGwxMy41LDE0LjJsMzcuNy0zOC42YzEuOC0xLjksNC44LTEuOSw2LjgsMEMxNjYuMSw0Ni40LDE2Ni4zLDQ5LjQsMTY0LjUsNTEuM0wxNjQuNSw1MS4zeiIvPg0KPC9zdmc+DQo=');
background-size: contain;
width: 50px;
height: 50px;
transition: all 0.2s;
pointer-events: none;
}
.statused.hide{
visibility: hidden;
opacity: 0;
}
@media screen and (max-width: 1900px) {
.pure-u-1-5{
width:25%;
}
}
@media screen and (max-width: 1600px) {
.pure-u-1-5{
width:33.33333333%;
}
}
@media screen and (max-width: 1200px) {
.pure-u-1-5{
width:50%;
}
.status .pure-u-1-5{
width:33.333%;
}
}
@media screen and (max-width: 700px) {
.pure-u-1-5{
width:100%;
font-size: 14px;
}
.status .pure-u-1-5{
width: 50%;
}
}
</style>
<fieldset class="cbi-section" id="cbi-apply-shadowsocksr1" style="display: none;">
<span class="panel-title">正在应用更改</span>
<img src="/luci-static/resources/icons/loading.gif" alt="载入中" style="vertical-align:middle">
</fieldset>
<!-- tblsection -->
<fieldset class="cbi-section" id="cbi-<%=self.config%>-<%=self.sectiontype%>">
<button class="cbi-button cbi-button-check ">检查所有节点</button><span class="panel-title">服务器列表 (总计 <%- print(self.des)-%>个节点)</span>
<div class="cbi-section-node">
<%- local count = 0 -%>
<div class="cbi-section-table pure-g">
<%- local isempty = true
for i, k in ipairs(self:cfgsections()) do
section = k
isempty = false
scope = { valueheader = "cbi/cell_valueheader", valuefooter = "cbi/cell_valuefooter" }
-%>
<div class="pure-u-1-5">
<div class="cbi-section-table-row " id="cbi-<%=self.config%>-<%=section%>">
<div class="loadings hide"><span class="icon-loading"></span></div>
<div class="incon type" ></div>
<div class="incon alias"></div>
<div class="incon switch_enable"></div>
<div class="statused hide"></div>
<%- if self.extedit or self.addremove then -%>
<div class="cbi-section-table-cell">
<div class="host_con">
</div>
<a class="cbi-button ssr-button " type="button" value="" onclick="apply_node('<%=section%>')" alt="应用" title="应用"><span class="icon-edit"></span> 应用</a>
<%- if self.extedit then -%>
<a class="cbi-button ssr-button " type="button" value=""
<%- if type(self.extedit) == "string" then
%> onclick="location.href='<%=self.extedit:format(section)%>'"
<%- elseif type(self.extedit) == "function" then
%> onclick="location.href='<%=self:extedit(section)%>'"
<%- end
%> alt="<%:Edit%>" title="<%:Edit%>" ><span class="icon-edit"></span> <%:Edit%></a>
<%- end; if self.addremove then %>
<button class="cbi-button ssr-button" type="submit" value="" onclick="this.form.cbi_state = 'del-section'; return true" name="cbi.rts.<%=self.config%>.<%=k%>" alt="<%:Delete%>" title="<%:Delete%>" /><span class="icon-delete"></span> <%:Delete%></button>
<%- end -%>
</div>
<%- end -%>
</div>
</div>
<%- end -%>
<%- if isempty then -%>
<div class="cbi-section-table-row">
<div colspan="<%=count%>"><em><br /><%:This section contains no values yet%></em></div>
</div>
<%- end -%>
</div>
<% if self.error then %>
<div class="cbi-section-error">
<ul><% for _, c in pairs(self.error) do for _, e in ipairs(c) do -%>
<li><%=pcdata(e):gsub("\n","<br />")%></li>
<%- end end %></ul>
</div>
<% end %>
<%- if self.addremove then -%>
<% if self.template_addremove then include(self.template_addremove) else -%>
<div class="cbi-section-create cbi-tblsection-create">
<% if self.anonymous then %>
<input class="cbi-button cbi-button-add" type="submit" value="<%:Add%>" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" title="<%:Add%>" />
<% else %>
<% if self.invalid_cts then -%><div class="cbi-section-error"><% end %>
<input type="text" class="cbi-section-create-name" id="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" data-type="uciname" data-optional="true" />
<input class="cbi-button cbi-button-add" type="submit" onclick="this.form.cbi_state = 'add-section'; return true" value="<%:Add%>" title="<%:Add%>" />
<% if self.invalid_cts then -%>
<br /><%:Invalid%></div>
<%- end %>
<% end %>
</div>
<%- end %>
<%- end -%>
</div>
</fieldset>
<!-- /tblsection -->
<script type="text/javascript">
function apply_node(node){
$("#cbi-apply-shadowsocksr1").show();
$.get('<%=luci.dispatcher.build_url("admin", "vpn", "shadowsocksr","change")%>',
{
set:node
},
function (data, status) {
$("#cbi-apply-shadowsocksr1").hide();
if (data.status ) {
var id = '#cbi-<%=self.config%>-'+node;
$(".statused").addClass("hide");
$(id).find(".statused").removeClass("hide");
}
});
}
$(document).ready(function () {
setTimeout(function() { check(); }, 500);
function check() {
$(".host_con").html("");
$(".pure-u-1-5").each(function () {
host = $(this).find(".cbi-section-table-row ").attr("server");
port = $(this).find(".cbi-section-table-row ").attr("server_port");
$(".host_con").text("--ms");
check_port(host, port, this);
});
}
$.get('<%=luci.dispatcher.build_url("admin", "vpn", "shadowsocksr","allserver")%>',
function (data) {
$.each(data, function (i, val) {
var id = '#cbi-<%=self.config%>-'+val.name;
if(val.name == "<%=self.current%>"){
$(id).find(".statused").removeClass("hide");
}
$(id).find(".type").text(val.type);
$(id).find(".alias").text(val.alias);
var switch_text = (val.switch_enable == 1)?'<span class="icon-switch" title="自动切换"></span>':'';
$(id).find(".switch_enable").html(switch_text);
$(id).attr("server",val.server);
$(id).attr("server_port",val.server_port) ;
});
}, "json");
function check_port(hosts, ports, target) {
$.get('<%=luci.dispatcher.build_url("admin", "vpn", "shadowsocksr","checkport")%>',
{
host: hosts,
port: ports
},
function (data, status) {
$(target).find(".loadings").addClass("hide");
$(target).find(".incon").removeClass("fast");
$(target).find(".incon").removeClass("middle");
$(target).find(".incon").removeClass("slow");
$(target).find(".incon").removeClass("nopass");
$(target).find(".host_con").removeClass("fast");
$(target).find(".host_con").removeClass("middle");
$(target).find(".host_con").removeClass("slow");
$(target).find(".host_con").removeClass("nopass");
if (data.ret == 1) {
if (data.used <= 80) {
$(target).find(".incon").eq(0).addClass("fast");
$(target).find(".host_con").addClass("fast");
} else if (data.used > 80 && data.used <= 200) {
$(target).find(".incon").eq(0).addClass("middle");
$(target).find(".host_con").addClass("middle");
} else if (data.used > 200) {
$(target).find(".incon").eq(0).addClass("slow");
$(target).find(".host_con").addClass("slow");
}
$(target).find(".host_con").text(data.used + "ms");
} else {
$(target).find(".incon").eq(0).addClass("nopass");
$(target).find(".host_con").addClass("nopass");
$(target).find(".host_con").text("Error");
}
});
}
$(".cbi-button-check").click(function () {
check();
return false;
});
//check();
});
</script>

View File

@ -0,0 +1,6 @@
<%+cbi/valueheader%>
<label class="cbi-value-title" style="display:inline-block; width: 180px" for="ulfile"><%:Choose local file:%></label>
<input class="cbi-input-file" style="width: 400px" type="file" id="ulfile" name="ulfile" />
<%+cbi/valuefooter%>

View File

@ -1,6 +1,7 @@
<%+cbi/valueheader%>
<script type="text/javascript">//<![CDATA[
function check_connect(btn,urlname)
{
btn.disabled = true;
@ -17,11 +18,15 @@
s.innerHTML ="<font color='green'>"+"<%:Connect OK%>"+"</font>";
else
s.innerHTML ="<font color='red'>"+"<%:Connect Error%>"+"</font>";
}
btn.disabled = false;
btn.value = '<%:Check Connect%>';
}
);
return false;
}
//]]></script>

View File

@ -1,6 +1,7 @@
<%+cbi/valueheader%>
<script type="text/javascript">//<![CDATA[
function check_port(btn)
{
btn.disabled = true;
@ -12,12 +13,18 @@
var s = document.getElementById('<%=self.option%>-status');
if (s)
{
s.innerHTML =rv.ret;
}
btn.disabled = false;
btn.value = '<%:Check Server%>';
}
);
return false;
}
//]]></script>

View File

@ -1,3 +1,4 @@
<head>
<meta charset="utf-8">
<meta http-equiv="x-dns-prefetch-control" content="on">
@ -73,6 +74,7 @@
text-overflow: ellipsis;
transform:translateY(10%);
}
.sk-text-success {
color: #32b643;
font-size:15px;
@ -85,6 +87,7 @@
text-align: left;
transform:translateY(10%);
}
.sk-text-error {
color: #e85600;
font-size:15px;
@ -97,16 +100,20 @@
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">
@ -163,7 +170,7 @@
url2='https://ip.skk.moe';
window.open(url2);
}
const $$ = document;
const $$ = document;
$$.getElementById('ip-webrtc').innerHTML = '查询中...';
$$.getElementById('ip-pcol').innerHTML = '查询中...';
$$.getElementById('ip-ipify').innerHTML = '查询中...';
@ -194,7 +201,8 @@
throw error;
}),
parseIPIpip: (ip, elID) => {
IP.get(`https://api.skk.moe/network/parseIp/ipip/v3/${ip}`, 'json')
IP.get(`https://api.skk.moe/network/parseIp/ipip/v3/${ip}`, 'json')
.then(resp => {
let x = '';
for (let i of resp.data) {
@ -293,8 +301,8 @@
$$.getElementById('ip-pcol-ipip').innerHTML = `${data.pro} ${data.city} ${data.region} ${pcisp[1]}`;
};
function getIpsbIP(data){
$$.getElementById('ip-ipsb').innerHTML = data.ip;
IP.parseIPIpip(data.ip, 'ip-ipsb-geo');
$$.getElementById('ip-ipsb').innerHTML = data.address;
$$.getElementById('ip-ipsb-geo').innerHTML = `${data.country} ${data.province} ${data.city} ${data.isp.name}`
};
window.onload=myip_Load();
@ -310,7 +318,7 @@
var sbip = document.getElementsByTagName('HEAD').item(0);
var sbipScript= document.createElement("script");
sbipScript.defer = "defer";
sbipScript.src='https://api-ipv4.ip.sb/jsonip?callback=getIpsbIP';
sbipScript.src='https://ip.sb/addrinfo?callback=getIpsbIP';
sbip.appendChild(sbipScript);
const $$ = document;
@ -326,8 +334,8 @@
$$.getElementById('ip-pcol-ipip').innerHTML = `${data.pro} ${data.city} ${data.region} ${pcisp[1]}`;
};
function getIpsbIP(data){
$$.getElementById('ip-ipsb').innerHTML = data.ip;
IP.parseIPIpip(data.ip, 'ip-ipsb-geo');
$$.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);
@ -335,6 +343,8 @@
</script>
<script defer="defer" src="https://whois.pconline.com.cn/ipJson.jsp?callback=getPcolIP"></script>
<script defer="defer" src="https://api-ipv4.ip.sb/jsonip?callback=getIpsbIP"></script>
<script defer="defer" src="https://ip.sb/addrinfo?callback=getIpsbIP"></script>
</body>
</html>

View File

@ -1,15 +1,9 @@

<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%}
<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;
margin: 0rem -0.5rem -0.7rem -0.5rem;
}
.block{
margin: 0.5rem 0.5rem;
@ -21,24 +15,38 @@
min-width: inherit;
overflow-x: auto;
overflow-y: hidden;
border: 1px solid rgba(0,0,0,.05);
border: 1px solid rgba(0,0,0,.20);
border-radius: .375rem;
background-color: #4 ;
background-color: #4;
box-shadow: 0 0 2rem 0 rgba(136,152,170,.15);
}
.img-con{
margin: 1rem;
}
.green{
font-size:1.25rem;
color: #2dce89;
}
.red{
color: #f5365c;
font-size:1.25rem;
color: #fb6340;
}
.sk-text-success{
color: #2dce89;
}
.sk-text-error{
color: #fb6340;
}
.gap{
margin-right:0.5rem;
}
.block img{
max-width: 100%;
width: 48px;
height: auto;
float:right;
}
.pure-u-5-8{
display:flex;
@ -46,179 +54,124 @@
}
.block h4{
font-size: 1.3rem;
font-weight: bold;
margin: 0.75rem 0;
.block h4{
font-size: .8125rem;
font-weight: 600;
margin: 1rem;
color:#8898aa!important;
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) {
@media screen and (max-width: 720px) {
.pure-u-1-6{
width:50%;
}
.img-con{
margin: 0.5rem;
}
.block h4{
font-size: 0.81rem;
.pure-u-1-2{
width:100%;
}
}
</style>
<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" >
<style>.mar-10 {margin-left: 50px; margin-right: 10px;}</style>
</head>
<body>
<div class="pure-g status">
<div class="pure-u-1-6">
<div class="block pure-g">
<div class="pure-u-3-5">
<h4 id="shadowsocksr_status"><%:Client%><br /><span class="red"><%:Not Running%></span></h4>
</div>
<div class="pure-u-2-5">
<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>
<div class="pure-u-1-6">
<div class="block pure-g">
<div class="pure-u-3-5">
<h4 id="baidu_status">国内网站<br><span class="red">无法访问✘</span></h4>
</div>
<div class="pure-u-2-5">
<div class="img-con">
<img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4wLjEsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0i5Zu+5bGCXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTAwIDEwMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6IzMzODhGRjt9DQoJLnN0MXtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiNGRkZGRkY7fQ0KPC9zdHlsZT4NCjxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIi8+DQo8ZyBpZD0i5pCc57SiX+eGiuaOjF82Nmljb24iPg0KCTxnIGlkPSJsb2dvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjEuMjEyMTIxLCA5MC45MDkwOTEpIj4NCgkJPHBhdGggaWQ9IkZpbGwtMSIgY2xhc3M9InN0MSIgZD0iTS03OS43LTU1LjRjNC41LDAsOC41LTUuNCw4LjUtMTEuOWMwLTYuNS0zLjctMTEuOS04LjUtMTEuOWMtNC41LDAtOC41LDUuNC04LjUsMTEuOQ0KCQkJQy04Ny45LTYwLjctODQuMi01NS40LTc5LjctNTUuNCIvPg0KCQk8cGF0aCBpZD0iRmlsbC0zIiBjbGFzcz0ic3QxIiBkPSJNLTU5LjktNTQuNWM2LjIsMC44LDEwLjItNS43LDExLTEwLjhjMC44LTQuOC0zLjEtMTAuOC03LjYtMTEuNmMtNC4yLTEuMS05LjksNS45LTEwLjIsMTAuNQ0KCQkJQy02Ny4yLTYxLTY2LjEtNTUuNC01OS45LTU0LjUiLz4NCgkJPHBhdGggaWQ9IkZpbGwtNSIgY2xhc3M9InN0MSIgZD0iTS05NS4zLTM4LjZjOC41LTEuNyw3LjEtMTEuNiw3LjEtMTMuOWMtMC4zLTMuNC00LjItOS4zLTkuOS04LjhjLTYuOCwwLjYtNy42LDEwLjItNy42LDEwLjINCgkJCUMtMTA2LjktNDYuNi0xMDMuOC0zNi45LTk1LjMtMzguNiIvPg0KCQk8cGF0aCBpZD0iRmlsbC03IiBjbGFzcz0ic3QxIiBkPSJNLTM1LjItNDYuM2MwLTIuNS0yLTkuNi05LjMtOS42Yy03LjQsMC04LjUsNi44LTguNSwxMS42YzAsNC41LDAuMywxMSw5LjYsMTAuOA0KCQkJQy0zNC40LTMzLjgtMzUuMi00NC0zNS4yLTQ2LjMiLz4NCgkJPHBhdGggaWQ9IkZpbGwtOSIgY2xhc3M9InN0MSIgZD0iTS04Ni41LTIxLjRjLTAuMywwLjYtMC44LDIuNS0wLjMsNGMwLjgsMy40LDQsMy43LDQsMy43aDQuMnYtMTAuOGgtNC44DQoJCQlDLTg1LjEtMjMuNi04Ni4yLTIxLjktODYuNS0yMS40Ii8+DQoJCTxwYXRoIGlkPSJGaWxsLTExIiBjbGFzcz0ic3QxIiBkPSJNLTUzLjEtOS41aC0xMi43Yy00LjgtMS4xLTUuMS00LjgtNS4xLTQuOHYtMTMuOWg1LjF2MTIuNWMwLjMsMS40LDIsMS43LDIsMS43aDUuNHYtMTMuOWg1LjQNCgkJCVYtOS41eiBNLTczLjItOS4ySC04NGMtNC44LTAuOC02LjgtNC4yLTYuOC00LjhjLTAuMy0wLjYtMS43LTMuMS0wLjgtNy42YzItNi41LDcuOS03LjEsNy45LTcuMWg1Ljd2LTcuMWg0LjgNCgkJCUMtNzMuMi0zNS44LTczLjItOS4yLTczLjItOS4yeiBNLTQ0LjYtMjUuM2MwLDAtOS42LTcuNC0xNS4zLTE1LjNjLTcuNi0xMS42LTE4LjQtNy4xLTIxLjgtMS4xYy0zLjQsNS45LTkuMSw5LjktOS45LDEwLjgNCgkJCWMtMC44LDAuOC0xMS42LDYuOC05LjEsMTcuM0MtOTguMS0zLjItODkuOS0zLjUtODkuOS0zLjVzNi4yLDAuNiwxMy4zLTEuMWM3LjEtMS43LDEzLjMsMC4zLDEzLjMsMC4zUy00Ni42LDEuMy00Mi05LjcNCgkJCUMtMzcuNS0xOS43LTQ0LjYtMjUuMy00NC42LTI1LjNMLTQ0LjYtMjUuM3oiLz4NCgk8L2c+DQo8L2c+DQo8L3N2Zz4NCg==" />
</div>
</div>
</div>
</div>
<div class="pure-u-1-6">
<div class="block pure-g">
<div class="pure-u-3-5">
<h4 id="google_status">国外网站<br><span class="red">无法访问✘</span></h4>
</div>
<div class="pure-u-2-5">
<div class="img-con">
<img src="https://i.imgur.com/3mE04AZ.png">
</div>
</div>
</div>
</div>
<div class="pure-u-1-6">
<div class="block pure-g">
<div class="pure-u-3-5">
<h4 id="game_status"><%:Game Mode%><br /><span class="red"><%:Not Running%></span></h4>
</div>
<div class="pure-u-2-5">
<div class="img-con">
<img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4wLjEsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0i5Zu+5bGCXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTAwIDEwMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6I0ZCQjE0MDt9DQoJLnN0MXtmaWxsOiNGRkZGRkY7fQ0KPC9zdHlsZT4NCjxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIi8+DQo8cGF0aCBjbGFzcz0ic3QxIiBkPSJNODYuOCw0Ny42QzgzLjYsMzMsNzQuOCwyMi41LDY2LjUsMjNoLTAuM2MtMy4zLDAtNi41LDEuMi04LjksMy4zYy0xLjgsMi00LjQsMy4yLTcuMSwzLjINCgljLTIuNiwwLTUuMS0xLjEtNi45LTNjLTIuNS0yLjMtNS44LTMuNS05LjEtMy41aC0wLjRjLTguMi0wLjUtMTcuMSwxMC0yMC4zLDI0LjZjLTMuNSwxNS41LDAuOCwyOS44LDkuNSwzMS45DQoJYzYuMywxLjYsMTMuMy0zLjksMTcuOS0xM2gxOC43YzQuNyw5LjEsMTEuNiwxNC42LDE3LjksMTNDODYsNzcuNCw5MC4yLDYzLjEsODYuOCw0Ny42TDg2LjgsNDcuNnogTTQyLjksNDguNUgzNnY3LjJoLTUuNnYtNy4yDQoJaC02Ljl2LTUuOGg2Ljl2LTcuMkgzNnY3LjJoNi45TDQyLjksNDguNXogTTYyLjcsNDkuMmMtMiwwLjEtMy43LTEuNC0zLjgtMy40Yy0wLjEtMiwxLjQtMy43LDMuNC0zLjhjMi0wLjEsMy43LDEuNCwzLjgsMy40DQoJYzAsMC4xLDAsMC4xLDAsMC4yQzY2LjIsNDcuNSw2NC43LDQ5LjEsNjIuNyw0OS4yQzYyLjcsNDkuMiw2Mi43LDQ5LjIsNjIuNyw0OS4yeiBNNzMuNyw0OS4yYy0yLDAuMS0zLjctMS40LTMuOC0zLjQNCgljLTAuMS0yLDEuNC0zLjcsMy40LTMuOGMyLTAuMSwzLjcsMS40LDMuOCwzLjRjMCwwLjEsMCwwLjEsMCwwLjJjMC4xLDEuOS0xLjQsMy41LTMuMywzLjZINzMuN3oiLz4NCjwvc3ZnPg0K" />
</div>
</div>
</div>
</div>
<div class="pure-u-1-6">
<div class="block pure-g">
<div class="pure-u-3-5">
<h4 id="chinadns_status">𝐂𝐡𝐢𝐧𝐚𝐃𝐍𝐒<br /><span class="red"><%:Not Running%></span></h4>
</div>
<div class="pure-u-2-5">
<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>
</div>
<div class="pure-u-1-6">
<div class="block pure-g">
<div class="pure-u-3-5">
<h4 id="SOCKS5_status">𝙎𝙊𝘾𝙆𝙎5<br /><span class="red"><%:Not Running%></span></h4>
</div>
<div class="pure-u-2-5">
<div class="img-con">
<img src="https://i.imgur.com/bYz9YoR.png" >
</div>
</div>
</div>
</div>
</div>
</div>
<script>
</style>
<script type="text/javascript">//<![CDATA[
//<![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>';
}
if (data) {
document.getElementById('shadowsocksr_status').innerHTML = data.global?'<%:Client%><br><span class="green">运行正常✔</span>':'<%:Client%><br><span class="red">未运行✘</span>';
document.getElementById('baidu_status').innerHTML = data.baidu?'国内网站<br><span class="green">访问正常✔</span>':'国内网站<br><span class="red">无法访问✘</span>';
document.getElementById('google_status').innerHTML = data.google?'国外网站<br><span class="green">访问正常✔</span>':'国外网站<br><span class="red">无法访问✘</span>';
document.getElementById('game_status').innerHTML = data.game?'游戏模式<br><span class="green">运行正常✔</span>':'游戏模式<br><span class="red">未运行✘</span>';
document.getElementById('chinadns_status').innerHTML = data.chinadns?'ChinaDNS<br><span class="green">运行正常✔</span>':'ChinaDNS<br><span class="red">未运行✘</span>';
document.getElementById('SOCKS5_status').innerHTML = data.SOCKS5?'𝙎𝙊𝘾𝙆𝙎5<br><span class="green">运行正常✔</span>':'𝙎𝙊𝘾𝙆𝙎5<br><span class="red">未运行✘</span>';
}
}
);
//]]>
</script></fieldset>
</script>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,123 @@
<%+cbi/valueheader%>
<link rel="stylesheet" href="/luci-static/shadowsocksr/css/shadowsocksr.css?v=72883">
<label class="cbi-value-title"><%= translate("Update") %></label>
<div class="cbi-value-field">
<input class="cbi-button cbi-button-reload" id="update_subscribe" type="button"
size="0" value="<%= translate("Save And Start Subscribe") %>">
</div>
<script type="text/javascript">
//<![CDATA[
var _responseLen;
var noChange = 0;
var x = 5;
var modal = '<div class="modals-bg">' +
'<div class="modals">' +
'<h2><%:Subscription%></h2>'+
'<h3 style="margin-left:0;"><%:Subscribing,Please do not refresh!%></h3>'+
'<textarea cols="63" rows="28" wrap="on" readonly="readonly" id="log_content3" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"></textarea>'+
'</div>'+
'</div>';
function update_subscribe() {
$("body").append(modal);
$(".modals-bg").show();
setTimeout("get_realtime_log();", 500);
}
function submit_url(){
prefix_array = $("#cbi-shadowsocksr-server_subscribe .cbi-section-node").attr("id").split("-");
prefix_array[0] = "cbid";
prefix = prefix_array.join(".");
if($("[name='"+prefix+".auto_update']").is(":checked")){
var auto_update = "1";
}else{
var auto_update = "0";
}
var auto_update_time = $("[name='"+prefix+".auto_update_time']").val();
var subscribe_url = [];
$("[name='"+prefix+".subscribe_url']").each(function(){
if($(this).val() != ""){
subscribe_url.push($(this).val());
}
});
if($("[name='"+prefix+".proxy']").is(":checked")){
var proxy = "1";
}else{
var proxy = "0";
}
var data = {
auto_update:auto_update,
auto_update_time : auto_update_time,
subscribe_url: JSON.stringify(subscribe_url),
proxy: proxy
}
//console.log(data);
$.ajax({
type: "post",
url: "<%=luci.dispatcher.build_url('admin', 'vpn', 'shadowsocksr','subscribe')%>",
dataType : "json",
data: data,
success: function (d) {
if(d.error == 0){
//console.log("开始订阅");
update_subscribe();
}else{
alert("请至少填写一个订阅链接");
}
}
});
}
$("#update_subscribe").click(function(){
//console.log("提交数据");
submit_url();
return false;
});
function refresh_page(){
location.reload();
return false;
}
function get_realtime_log() {
$.ajax({
url: '/check_update.htm?v='+parseInt(Math.random() * 100000000),
dataType: 'html',
error: function (xhr) {
setTimeout("get_realtime_log();", 1000);
},
success: function (response) {
var retArea = document.getElementById("log_content3");
if (response.search("END SUBSCRIBE") != -1) {
noChange++;
}
console.log(noChange);
if (noChange > 10) {
window.location.href="<%=luci.dispatcher.build_url('admin', 'vpn', 'shadowsocksr','servers')%>"
return false;
} else {
setTimeout("get_realtime_log();", 250);
}
retArea.value = response;
retArea.scrollTop = retArea.scrollHeight;
_responseLen = response.length;
},
error: function () {
setTimeout("get_realtime_log();", 500);
}
});
}
//]]>
</script>
<%+cbi/valuefooter%>

View File

@ -119,6 +119,7 @@
27.116.44.0/22
27.121.72.0/21
27.121.120.0/21
27.123.232.0/22
27.128.0.0/15
27.131.220.0/22
27.144.0.0/16
@ -424,6 +425,7 @@
43.228.148.0/22
43.228.152.0/22
43.228.188.0/22
43.229.16.0/22
43.229.40.0/22
43.229.48.0/22
43.229.56.0/22
@ -705,7 +707,6 @@
43.240.128.0/22
43.240.132.0/22
43.240.136.0/22
43.240.144.0/22
43.240.156.0/22
43.240.160.0/22
43.240.164.0/22
@ -2052,6 +2053,7 @@
103.12.184.0/22
103.12.232.0/22
103.13.12.0/22
103.13.72.0/23
103.13.124.0/22
103.13.144.0/22
103.13.196.0/22
@ -2717,6 +2719,7 @@
103.47.136.0/22
103.47.140.0/22
103.47.212.0/22
103.48.20.0/22
103.48.52.0/22
103.48.92.0/22
103.48.144.0/22
@ -3172,6 +3175,7 @@
103.76.72.0/22
103.76.84.0/22
103.76.92.0/22
103.76.104.0/22
103.76.216.0/22
103.76.220.0/22
103.76.224.0/22
@ -3824,20 +3828,6 @@
103.124.216.0/22
103.125.20.0/22
103.125.44.0/22
103.125.132.0/22
103.125.164.0/22
103.125.196.0/22
103.125.236.0/22
103.125.248.0/22
103.126.0.0/22
103.126.16.0/22
103.126.44.0/22
103.126.100.0/22
103.126.124.0/22
103.126.128.0/22
103.126.132.0/22
103.126.208.0/22
103.126.241.0/24
103.129.52.0/22
103.129.148.0/22
103.130.132.0/22
@ -3852,67 +3842,6 @@
103.131.224.0/22
103.131.228.0/22
103.131.240.0/22
103.132.60.0/22
103.132.64.0/22
103.132.68.0/22
103.132.72.0/22
103.132.76.0/22
103.132.80.0/22
103.132.104.0/22
103.132.108.0/22
103.132.112.0/22
103.132.116.0/22
103.132.120.0/22
103.132.160.0/22
103.132.164.0/22
103.132.188.0/22
103.132.208.0/22
103.132.212.0/22
103.132.234.0/23
103.133.12.0/22
103.133.40.0/22
103.133.128.0/22
103.133.136.0/22
103.133.176.0/22
103.133.232.0/22
103.134.12.0/24
103.134.196.0/22
103.135.80.0/22
103.135.124.0/22
103.135.148.0/22
103.135.156.0/22
103.135.160.0/22
103.135.164.0/22
103.135.176.0/22
103.135.184.0/22
103.135.192.0/22
103.135.196.0/22
103.135.236.0/22
103.136.128.0/22
103.136.232.0/22
103.137.57.0/24
103.137.58.0/23
103.137.60.0/24
103.137.76.0/22
103.137.136.0/23
103.137.149.0/24
103.137.180.0/22
103.137.236.0/22
103.138.2.0/23
103.138.12.0/23
103.138.80.0/22
103.138.134.0/23
103.138.156.0/23
103.138.208.0/23
103.138.220.0/23
103.138.246.0/23
103.138.248.0/23
103.139.0.0/23
103.139.2.0/23
103.139.22.0/23
103.139.113.0/24
103.139.134.0/23
103.139.136.0/23
103.192.0.0/22
103.192.4.0/22
103.192.8.0/22
@ -5275,11 +5204,9 @@
116.204.132.0/22
116.204.168.0/22
116.204.216.0/22
116.204.232.0/22
116.204.236.0/22
116.204.244.0/22
116.205.0.0/16
116.206.92.0/22
116.206.100.0/22
116.206.176.0/22
116.207.0.0/16
116.208.0.0/14
@ -5700,7 +5627,6 @@
123.242.196.0/22
123.244.0.0/14
123.249.0.0/16
123.253.108.0/22
123.254.96.0/22
123.254.100.0/22
124.6.64.0/18
@ -6197,7 +6123,6 @@
183.184.0.0/13
183.192.0.0/10
188.131.128.0/17
192.51.188.0/24
192.55.46.0/24
192.55.68.0/22
192.102.204.0/23
@ -6221,15 +6146,12 @@
192.140.208.0/22
192.140.212.0/22
192.144.128.0/17
192.197.113.0/24
193.112.0.0/16
198.175.100.0/22
199.212.57.0/24
202.0.100.0/23
202.0.122.0/23
202.0.176.0/22
202.3.128.0/23
202.3.134.0/24
202.4.128.0/19
202.4.252.0/22
202.5.208.0/22
@ -6252,7 +6174,6 @@
202.8.12.0/24
202.8.24.0/24
202.8.77.0/24
202.8.120.0/22
202.8.128.0/19
202.8.192.0/20
202.9.32.0/24
@ -6438,7 +6359,6 @@
202.52.34.0/24
202.52.47.0/24
202.52.143.0/24
202.52.144.0/24
202.53.140.0/24
202.53.143.0/24
202.57.192.0/22
@ -6449,7 +6369,6 @@
202.57.216.0/22
202.57.240.0/20
202.58.0.0/24
202.58.101.0/24
202.58.104.0/22
202.58.112.0/22
202.59.0.0/24
@ -6574,7 +6493,6 @@
202.92.252.0/22
202.93.0.0/22
202.93.252.0/22
202.94.68.0/24
202.94.74.0/24
202.94.81.0/24
202.94.92.0/22
@ -7036,6 +6954,7 @@
203.8.0.0/24
203.8.8.0/24
203.8.23.0/24
203.8.24.0/21
203.8.70.0/24
203.8.82.0/24
203.8.86.0/23
@ -7099,6 +7018,7 @@
203.12.66.0/24
203.12.70.0/23
203.12.87.0/24
203.12.88.0/21
203.12.100.0/23
203.12.103.0/24
203.12.114.0/24
@ -7106,6 +7026,7 @@
203.12.130.0/24
203.12.137.0/24
203.12.196.0/22
203.12.200.0/21
203.12.211.0/24
203.12.219.0/24
203.12.226.0/24
@ -7113,6 +7034,7 @@
203.13.18.0/24
203.13.24.0/24
203.13.44.0/23
203.13.80.0/21
203.13.88.0/23
203.13.92.0/22
203.13.173.0/24
@ -7128,6 +7050,7 @@
203.14.114.0/23
203.14.118.0/24
203.14.162.0/24
203.14.184.0/21
203.14.192.0/24
203.14.194.0/23
203.14.214.0/24
@ -7753,7 +7676,6 @@
203.86.250.0/24
203.86.254.0/23
203.88.32.0/19
203.88.100.0/22
203.88.192.0/19
203.89.0.0/22
203.89.8.0/21
@ -7943,7 +7865,6 @@
203.222.192.0/20
203.223.0.0/20
203.223.16.0/21
204.52.191.0/24
210.2.0.0/20
210.2.16.0/20
210.5.0.0/19
@ -8071,6 +7992,7 @@
211.164.0.0/14
212.64.0.0/17
212.129.128.0/17
216.250.108.0/22
218.0.0.0/16
218.1.0.0/16
218.2.0.0/15

View File

@ -1,9 +1,9 @@
address=/qgjapp.com/127.0.0.1
address=/wxs666.cn/127.0.0.1
address=/pufenchuanmu.com/127.0.0.1
address=/0024aaaa.com/127.0.0.1
address=/00880808.com/127.0.0.1
address=/008844.cc/127.0.0.1
address=/0133hao.net/127.0.0.1
address=/01fen.com/127.0.0.1
address=/02123s.com/127.0.0.1
address=/022aifang.com/127.0.0.1
address=/023hysj.com/127.0.0.1
@ -277,6 +277,8 @@ address=/9dtiny.cn/127.0.0.1
address=/9h6qq.cn/127.0.0.1
address=/9kff.com/127.0.0.1
address=/9nwg9sib9e.com/127.0.0.1
address=/9uys.co/127.0.0.1
address=/9wlm.com/127.0.0.1
address=/9wotuan.com/127.0.0.1
address=/9xiazaiqi.com/127.0.0.1
address=/a.youdao.com/127.0.0.1
@ -443,6 +445,7 @@ address=/caliyuna.cn/127.0.0.1
address=/cangnews.com/127.0.0.1
address=/caob5.info/127.0.0.1
address=/caolvch.com/127.0.0.1
address=/caredaily.me/127.0.0.1
address=/carpenterrprp.com/127.0.0.1
address=/cayanfang.com/127.0.0.1
address=/cb.baidu.com/127.0.0.1
@ -881,6 +884,7 @@ address=/hzxma.com/127.0.0.1
address=/i.zhuoyaju.com/127.0.0.1
address=/i3818.com/127.0.0.1
address=/i92xue.com/127.0.0.1
address=/icemf.com/127.0.0.1
address=/id528.com/127.0.0.1
address=/idasai.com/127.0.0.1
address=/idasui.cn/127.0.0.1
@ -961,6 +965,7 @@ address=/jktopia.com/127.0.0.1
address=/jl027.com/127.0.0.1
address=/jlssbz.com/127.0.0.1
address=/jlwljym.com/127.0.0.1
address=/jnxz88.cn/127.0.0.1
address=/jnyngg.cn/127.0.0.1
address=/johtzj.com/127.0.0.1
address=/josipr.com/127.0.0.1
@ -998,6 +1003,7 @@ address=/jxxiangchu.com/127.0.0.1
address=/jystea.com/127.0.0.1
address=/k12shequ.com/127.0.0.1
address=/k1815.com/127.0.0.1
address=/k8yy.tv/127.0.0.1
address=/ka12138.top/127.0.0.1
address=/kan8.xyz/127.0.0.1
address=/kawa11.space/127.0.0.1
@ -1060,6 +1066,7 @@ address=/laobei.top/127.0.0.1
address=/laolinow.com/127.0.0.1
address=/lashou1000.com/127.0.0.1
address=/lc1b2.cn/127.0.0.1
address=/lc442.com/127.0.0.1
address=/ldgjhd.net/127.0.0.1
address=/le4le.com/127.0.0.1
address=/leamain.net/127.0.0.1
@ -1075,7 +1082,9 @@ address=/lhafy.com/127.0.0.1
address=/lhengilin.com/127.0.0.1
address=/lhusy.com/127.0.0.1
address=/liangziweixg.com/127.0.0.1
address=/liaoren85.com/127.0.0.1
address=/librarymanagement.cn/127.0.0.1
address=/lievr.cc/127.0.0.1
address=/lifu11.com/127.0.0.1
address=/liliwoin.top/127.0.0.1
address=/linjiajia.cn/127.0.0.1
@ -1095,6 +1104,7 @@ address=/lnctc.net/127.0.0.1
address=/lnfund.org.cn/127.0.0.1
address=/loandatec.com/127.0.0.1
address=/log.interest.mix.sina.com.cn/127.0.0.1
address=/lolmp4.com/127.0.0.1
address=/long88.app/127.0.0.1
address=/loveconer.com/127.0.0.1
address=/lovestyl.com/127.0.0.1
@ -1141,6 +1151,7 @@ address=/meilides.com/127.0.0.1
address=/meimeidaren.com/127.0.0.1
address=/meimeiha.com/127.0.0.1
address=/meiti1.net/127.0.0.1
address=/mengbingyuan.com/127.0.0.1
address=/mengheyu.com/127.0.0.1
address=/menghuanzs.com/127.0.0.1
address=/mengmengdas.com/127.0.0.1
@ -1171,12 +1182,14 @@ address=/mr087.cn/127.0.0.1
address=/mrksys.com/127.0.0.1
address=/ms758.com/127.0.0.1
address=/mscimg.com/127.0.0.1
address=/mskjf.com/127.0.0.1
address=/msltzer.cn/127.0.0.1
address=/mstzym.com/127.0.0.1
address=/msujd.cn/127.0.0.1
address=/mtqys.com/127.0.0.1
address=/mu722.com/127.0.0.1
address=/mushan.xin/127.0.0.1
address=/mxdregs.com/127.0.0.1
address=/mxmrt.com/127.0.0.1
address=/mygeneclub.com/127.0.0.1
address=/mytzdhz.cn/127.0.0.1
@ -1295,7 +1308,9 @@ address=/qclcdn.cn/127.0.0.1
address=/qcupup.com/127.0.0.1
address=/qdchunyu.com/127.0.0.1
address=/qdsfzz.cn/127.0.0.1
address=/qevcxo.cn/127.0.0.1
address=/qfs365.com/127.0.0.1
address=/qgjapp.com/127.0.0.1
address=/qgss8.com/127.0.0.1
address=/qhaif.com/127.0.0.1
address=/qi-duo.com/127.0.0.1
@ -1316,6 +1331,7 @@ address=/qmname.com/127.0.0.1
address=/qnvih8.cn/127.0.0.1
address=/qo26.com/127.0.0.1
address=/qoiusky.com/127.0.0.1
address=/qpokok.com/127.0.0.1
address=/qqm98.com/127.0.0.1
address=/qqtx.me/127.0.0.1
address=/qs01.cn/127.0.0.1
@ -1378,6 +1394,7 @@ address=/sadobo.com/127.0.0.1
address=/saf588.com/127.0.0.1
address=/safe524.xyz/127.0.0.1
address=/saferwet.com/127.0.0.1
address=/saitef.cn/127.0.0.1
address=/sangxi.top/127.0.0.1
address=/sanjinma.com/127.0.0.1
address=/sboite.cn/127.0.0.1
@ -1401,7 +1418,6 @@ address=/sfloushi.com/127.0.0.1
address=/sfxl.com.cn/127.0.0.1
address=/sfz023.com/127.0.0.1
address=/sgbfjs.info/127.0.0.1
address=/sgftrrs.com/127.0.0.1
address=/shama5.com/127.0.0.1
address=/shandongkuntuo.com/127.0.0.1
address=/shanglinli.com/127.0.0.1
@ -1413,7 +1429,6 @@ address=/shenglonghg.net/127.0.0.1
address=/shentupk85.com/127.0.0.1
address=/shenyian.net/127.0.0.1
address=/shiftrro.com/127.0.0.1
address=/shillivee.pro/127.0.0.1
address=/shkywh.com/127.0.0.1
address=/shouwangba.cn/127.0.0.1
address=/shouyouyou.com/127.0.0.1
@ -1425,7 +1440,6 @@ address=/shxinjie.cn/127.0.0.1
address=/shypqc.com/127.0.0.1
address=/si9377.com/127.0.0.1
address=/sicentlife.com/127.0.0.1
address=/sifakaoshi360.com/127.0.0.1
address=/sigbusa.com/127.0.0.1
address=/sigo99.com/127.0.0.1
address=/sina-img.club/127.0.0.1
@ -1494,6 +1508,7 @@ address=/szrk3.com/127.0.0.1
address=/sztbjs.com/127.0.0.1
address=/szxiuchang.com/127.0.0.1
address=/szxpsg.com/127.0.0.1
address=/szxzytech.com/127.0.0.1
address=/t415n.cn/127.0.0.1
address=/t58b.com/127.0.0.1
address=/t70123.com/127.0.0.1
@ -1504,6 +1519,7 @@ address=/taobaly.cn/127.0.0.1
address=/taobaoaliyun.cn/127.0.0.1
address=/taobaojx.com/127.0.0.1
address=/taobayun.cn/127.0.0.1
address=/taoguanda.com/127.0.0.1
address=/taohanpai.com/127.0.0.1
address=/taoyuay.top/127.0.0.1
address=/tbaocdn.com/127.0.0.1
@ -1670,6 +1686,7 @@ address=/wuyekanba.com/127.0.0.1
address=/wvstatic.cn/127.0.0.1
address=/wwlolbs.com/127.0.0.1
address=/wxbdfm.com/127.0.0.1
address=/wxs666.cn/127.0.0.1
address=/wxstatic.cn/127.0.0.1
address=/wxxfqc.com/127.0.0.1
address=/wyhzzy.com/127.0.0.1
@ -1912,6 +1929,7 @@ address=/zitanmushu.com/127.0.0.1
address=/ziyuantx.com/127.0.0.1
address=/zjhim.com/127.0.0.1
address=/zjhoudao.com/127.0.0.1
address=/zjrtuhds.top/127.0.0.1
address=/zl588.com/127.0.0.1
address=/zmgod.com/127.0.0.1
address=/zmlled.cn/127.0.0.1
@ -2127,7 +2145,6 @@ address=/imgadsame.liba.com/127.0.0.1
address=/inte.sogou.com/127.0.0.1
address=/ivy.pconline.com.cn/127.0.0.1
address=/iwanad.baidu.com/127.0.0.1
address=/j.6avz.com/127.0.0.1
address=/j.avz4.com/127.0.0.1
address=/jmsyzj.com/127.0.0.1
address=/js.45bubu.com/127.0.0.1
@ -2755,6 +2772,7 @@ address=/lraa.xiaoniutui.com/127.0.0.1
address=/luoshenbest.cn/127.0.0.1
address=/lv.myapks.com/127.0.0.1
address=/lyz.radio366.com/127.0.0.1
address=/m1.100how.com/127.0.0.1
address=/m1.27com.com/127.0.0.1
address=/m1.51kaowang.com/127.0.0.1
address=/m1.81312.com/127.0.0.1
@ -2804,6 +2822,7 @@ address=/pingshu365.xyz/127.0.0.1
address=/pkk1.zuimeiniwo.com/127.0.0.1
address=/pp.wayqq.com/127.0.0.1
address=/ppt.tianya999.com/127.0.0.1
address=/pss.meizhejie.com/127.0.0.1
address=/psywed.com/127.0.0.1
address=/ptw.la/127.0.0.1
address=/q1.yyxwzx.com/127.0.0.1
@ -2822,6 +2841,7 @@ address=/rdbd.xsread.com/127.0.0.1
address=/rmcxw.cn/127.0.0.1
address=/rmcxw.net/127.0.0.1
address=/ruan88.com/127.0.0.1
address=/s.yaozui.com/127.0.0.1
address=/s.zixuntop.com/127.0.0.1
address=/s1.dapenti.com/127.0.0.1
address=/s1.dugoogle.com/127.0.0.1
@ -2870,6 +2890,7 @@ address=/undm.qibulo.com/127.0.0.1
address=/union1.cnbetacdn.com/127.0.0.1
address=/uniondm.cz88.net/127.0.0.1
address=/usejj.wangkl.com/127.0.0.1
address=/uu1.3gu.com/127.0.0.1
address=/uuu.pctowap.com/127.0.0.1
address=/v1.kwpewga.cn/127.0.0.1
address=/v1.phb123.com/127.0.0.1
@ -3063,6 +3084,7 @@ address=/runkao.net/127.0.0.1
address=/stunninglover.com/127.0.0.1
address=/cryptaloot.pro/127.0.0.1
address=/01w47q.cn/127.0.0.1
address=/0217qpineuxbcdhopswkvf.xyz/127.0.0.1
address=/0234408.cn/127.0.0.1
address=/02m5j.cn/127.0.0.1
address=/03196688.com/127.0.0.1
@ -3086,6 +3108,7 @@ address=/118ex.cn/127.0.0.1
address=/119cgpt.com/127.0.0.1
address=/12381236.com/127.0.0.1
address=/12jf3.cn/127.0.0.1
address=/12rge.xyz/127.0.0.1
address=/12rng.cn/127.0.0.1
address=/1314sss.top/127.0.0.1
address=/1494.top/127.0.0.1
@ -3167,6 +3190,7 @@ address=/609623.com/127.0.0.1
address=/63xs.com:8016/127.0.0.1
address=/64si.com/127.0.0.1
address=/678sky.com/127.0.0.1
address=/688ct.com/127.0.0.1
address=/6945k6.cn/127.0.0.1
address=/69u0t.cn/127.0.0.1
address=/69yll.cn/127.0.0.1
@ -3297,6 +3321,7 @@ address=/baiyangzs.com/127.0.0.1
address=/baolutongwuye.cn/127.0.0.1
address=/bapkt.com/127.0.0.1
address=/barnfps.com/127.0.0.1
address=/bbbr8.com/127.0.0.1
address=/bbbx.xyz/127.0.0.1
address=/bbeyay41026.cn/127.0.0.1
address=/bbvjs.com/127.0.0.1
@ -3514,6 +3539,7 @@ address=/dkmnn.top/127.0.0.1
address=/dldsrs.com/127.0.0.1
address=/dlouf.com/127.0.0.1
address=/dlvnxf.cn/127.0.0.1
address=/dmouy.cn/127.0.0.1
address=/dmpsj.cn/127.0.0.1
address=/dn189.com/127.0.0.1
address=/dnfeu.com/127.0.0.1
@ -3919,6 +3945,7 @@ address=/jlvskg.cn/127.0.0.1
address=/jlxzt.com/127.0.0.1
address=/jmxlaser.com/127.0.0.1
address=/jndczg.com/127.0.0.1
address=/jnmqym4.cn/127.0.0.1
address=/jnsdkjzs.com/127.0.0.1
address=/jollyspring.com/127.0.0.1
address=/jotrening.com/127.0.0.1
@ -3975,6 +4002,7 @@ address=/kjfhe.com/127.0.0.1
address=/kjhfy.com/127.0.0.1
address=/kl6636.net/127.0.0.1
address=/klgzzs.cn/127.0.0.1
address=/klorn.cn/127.0.0.1
address=/klsadm.com/127.0.0.1
address=/kltent.cn/127.0.0.1
address=/kmfnkj.com/127.0.0.1
@ -4297,6 +4325,7 @@ address=/qlaot.com/127.0.0.1
address=/qldua.cn/127.0.0.1
address=/qloer.com/127.0.0.1
address=/qlonglong.com/127.0.0.1
address=/qlssbq.cn/127.0.0.1
address=/qneit.com/127.0.0.1
address=/qq0au.cn/127.0.0.1
address=/qqdashabi.top/127.0.0.1
@ -4355,6 +4384,7 @@ address=/sczhilong.cn/127.0.0.1
address=/sdabfw.cn/127.0.0.1
address=/sdahxz.xyz/127.0.0.1
address=/sdaiv.com/127.0.0.1
address=/sdakxz.xyz/127.0.0.1
address=/sdgdtz.cn/127.0.0.1
address=/sdkdm.com/127.0.0.1
address=/sdsqyyc.com/127.0.0.1
@ -4393,6 +4423,7 @@ address=/smdhek58726.cn/127.0.0.1
address=/smpdth.cn/127.0.0.1
address=/smvip8.cn/127.0.0.1
address=/smxay.com/127.0.0.1
address=/sokoyo-fq.com/127.0.0.1
address=/sonomoyo.com/127.0.0.1
address=/sonsang.cn/127.0.0.1
address=/sosjyx.com/127.0.0.1
@ -4692,6 +4723,7 @@ address=/yajiuwz.xyz/127.0.0.1
address=/yanbenji.cn/127.0.0.1
address=/yangzhenpeng.top/127.0.0.1
address=/yanjunbo.com/127.0.0.1
address=/yantairuide.com/127.0.0.1
address=/ybaih.com/127.0.0.1
address=/ybaiu.com/127.0.0.1
address=/ybanj.com/127.0.0.1
@ -4716,6 +4748,7 @@ address=/yicixingjinkou.com/127.0.0.1
address=/yicuntian.cn/127.0.0.1
address=/yierheng.top/127.0.0.1
address=/yijieweizf.com/127.0.0.1
address=/yijuxie.com/127.0.0.1
address=/yikuaiqian.com.cn/127.0.0.1
address=/yimai51.cn/127.0.0.1
address=/yimeize.cn/127.0.0.1
@ -4797,6 +4830,7 @@ address=/zhamm.cn/127.0.0.1
address=/zhfyws.com/127.0.0.1
address=/zhivalley.cn/127.0.0.1
address=/zhiyaowan.cn/127.0.0.1
address=/zhongchengzp.com/127.0.0.1
address=/zhongfujiaoyu.cn/127.0.0.1
address=/zhongwangmy.cn/127.0.0.1
address=/zhouqin520.top/127.0.0.1
@ -4882,173 +4916,357 @@ address=/qhdbfjx.com/127.0.0.1
address=/sohu999.com/127.0.0.1
address=/tcmdz.com/127.0.0.1
address=/withad.cn/127.0.0.1
address=/1getbestf1le3.xyz/127.0.0.1
address=/4t6u1amm3t3n.com/127.0.0.1
address=/9t5.me/127.0.0.1
address=/abgligarchan.com/127.0.0.1
address=/acmsg.online/127.0.0.1
address=/acticgreasonsc.info/127.0.0.1
address=/adfrastingathles.info/127.0.0.1
address=/adsrv.me/127.0.0.1
address=/adziondin.club/127.0.0.1
address=/aggravedgaree.info/127.0.0.1
address=/agrammemarg.info/127.0.0.1
address=/agreenikeru.site/127.0.0.1
address=/aickeeho.com/127.0.0.1
address=/ailaskarc.club/127.0.0.1
address=/ailwayssteverin.info/127.0.0.1
address=/aimassare.club/127.0.0.1
address=/aimrawwas.site/127.0.0.1
address=/airsanguages.info/127.0.0.1
address=/airstossiplarge.info/127.0.0.1
address=/albalbant.com/127.0.0.1
address=/alealebag.site/127.0.0.1
address=/aleapeact.club/127.0.0.1
address=/alhistoriousg.info/127.0.0.1
address=/aliticalpassister.info/127.0.0.1
address=/alldeveldefinite.info/127.0.0.1
address=/allycollegedstrie.info/127.0.0.1
address=/ampallall.site/127.0.0.1
address=/aniashboy.club/127.0.0.1
address=/anybagant.club/127.0.0.1
address=/anycadark.site/127.0.0.1
address=/armashair.site/127.0.0.1
address=/artantash.club/127.0.0.1
address=/arthwhilearthu.info/127.0.0.1
address=/artneesrparkete.info/127.0.0.1
address=/ashaidart.site/127.0.0.1
address=/ashamparm.site/127.0.0.1
address=/askaspalb.online/127.0.0.1
address=/atelovesinothic.info/127.0.0.1
address=/atesbrothereso.info/127.0.0.1
address=/atoultou.com/127.0.0.1
address=/augnuxun.net/127.0.0.1
address=/aujaujoa.net/127.0.0.1
address=/aurdeert.net/127.0.0.1
address=/authornernsa.pro/127.0.0.1
address=/auxml.com/127.0.0.1
address=/avwincall.info/127.0.0.1
address=/awehobrasp.live/127.0.0.1
address=/aweinkbum.com/127.0.0.1
address=/awhootoa.net/127.0.0.1
address=/awhoufob.com/127.0.0.1
address=/ayrovalcontain.info/127.0.0.1
address=/bathibsa.com/127.0.0.1
address=/bauthair.net/127.0.0.1
address=/bebreloomr.com/127.0.0.1
address=/beewanuk.net/127.0.0.1
address=/beiven.pw/127.0.0.1
address=/bestvideo2019.xyz/127.0.0.1
address=/bidiology.com/127.0.0.1
address=/binsatbee.club/127.0.0.1
address=/bityah-sym.com/127.0.0.1
address=/bloglife24.com/127.0.0.1
address=/boratestfishke.info/127.0.0.1
address=/boubeeth.com/127.0.0.1
address=/boursnormaticm.info/127.0.0.1
address=/bupserge.com/127.0.0.1
address=/cadslimz.com/127.0.0.1
address=/camantasp.club/127.0.0.1
address=/canonch.pro/127.0.0.1
address=/casinohacksforyou.com/127.0.0.1
address=/cauthuny.net/127.0.0.1
address=/cdnads.com/127.0.0.1
address=/ceincreatedaughtcha.info/127.0.0.1
address=/ceparateauab.info/127.0.0.1
address=/certakesime.site/127.0.0.1
address=/cespousseluniv.info/127.0.0.1
address=/changement.pro/127.0.0.1
address=/chengaib.net/127.0.0.1
address=/choorgiw.net/127.0.0.1
address=/chugagre.com/127.0.0.1
address=/ckardwithinktab.info/127.0.0.1
address=/clickathere.com/127.0.0.1
address=/clickcdn.co/127.0.0.1
address=/collectpush.com/127.0.0.1
address=/compensions.pro/127.0.0.1
address=/counevan.pro/127.0.0.1
address=/countertrck.com/127.0.0.1
address=/cpalabtracking.com/127.0.0.1
address=/cpcmart.com/127.0.0.1
address=/criminglynuk.pro/127.0.0.1
address=/cryartarm.online/127.0.0.1
address=/cssimplicanab.info/127.0.0.1
address=/ctsjackupspete.info/127.0.0.1
address=/culreelt.com/127.0.0.1
address=/cupallask.site/127.0.0.1
address=/cutopportings.info/127.0.0.1
address=/cyneburg-yam.com/127.0.0.1
address=/dacoloment.pro/127.0.0.1
address=/dainaith.net/127.0.0.1
address=/dardwebertoha.info/127.0.0.1
address=/dating2cloud.org/127.0.0.1
address=/dcontonalscho.info/127.0.0.1
address=/dddomainccc.com/127.0.0.1
address=/decisionediv.site/127.0.0.1
address=/delainlygoverhe.info/127.0.0.1
address=/denotatorum.site/127.0.0.1
address=/desigactinific.pro/127.0.0.1
address=/dgafgadsgkjg.top/127.0.0.1
address=/diantcummiere.info/127.0.0.1
address=/dimessing-parker.com/127.0.0.1
address=/dingsincernett.info/127.0.0.1
address=/discoverapp.xyz/127.0.0.1
address=/ditookry.com/127.0.0.1
address=/dmastescaugh.info/127.0.0.1
address=/dolsoste.com/127.0.0.1
address=/domisesvivin.info/127.0.0.1
address=/dooptoug.net/127.0.0.1
address=/dorthuredwardles.info/127.0.0.1
address=/dortoolr.com/127.0.0.1
address=/duchoono.com/127.0.0.1
address=/duhochid.net/127.0.0.1
address=/duxumpou.com/127.0.0.1
address=/e2ertt.com/127.0.0.1
address=/echoazou.com/127.0.0.1
address=/edcritessuspi.info/127.0.0.1
address=/edencourtbrita.info/127.0.0.1
address=/edoutoam.net/127.0.0.1
address=/edvforeveretest.info/127.0.0.1
address=/eeltaung.com/127.0.0.1
address=/eengaums.com/127.0.0.1
address=/eergurty.net/127.0.0.1
address=/eforeantheirma.info/127.0.0.1
address=/egroacho.com/127.0.0.1
address=/elastinabuker.site/127.0.0.1
address=/eleasuredfas.info/127.0.0.1
address=/ememoricane.info/127.0.0.1
address=/encountryf.pro/127.0.0.1
address=/enormitteen.pro/127.0.0.1
address=/enseptedsome.info/127.0.0.1
address=/entstronicsform.info/127.0.0.1
address=/entualagreetsd.info/127.0.0.1
address=/epresententifi.info/127.0.0.1
address=/eralsstroying.info/127.0.0.1
address=/eraltradiansid.info/127.0.0.1
address=/erkhxw.com/127.0.0.1
address=/erversarycompa.info/127.0.0.1
address=/esauwoan.com/127.0.0.1
address=/estionexperime.info/127.0.0.1
address=/eunformeranothe.info/127.0.0.1
address=/eyhempsedinte.info/127.0.0.1
address=/fadsans.com/127.0.0.1
address=/fadsanz.com/127.0.0.1
address=/fadsecs.com/127.0.0.1
address=/fadsims.com/127.0.0.1
address=/fadsips.com/127.0.0.1
address=/fadslims.com/127.0.0.1
address=/fadsoks.com/127.0.0.1
address=/fadspmz.com/127.0.0.1
address=/fagmomqua.site/127.0.0.1
address=/fazoumee.net/127.0.0.1
address=/feed.r-tb.com/127.0.0.1
address=/feed777.me/127.0.0.1
address=/feelineweatyeng.info/127.0.0.1
address=/ffortyimagist.info/127.0.0.1
address=/fishkekcamp.info/127.0.0.1
address=/fixsirrod.site/127.0.0.1
address=/flowwiththetide.xyz/127.0.0.1
address=/fufoatch.com/127.0.0.1
address=/fuyuap.xyz/127.0.0.1
address=/g2afse.com/127.0.0.1
address=/gadsans.com/127.0.0.1
address=/gadsanz.com/127.0.0.1
address=/gadsats.com/127.0.0.1
address=/gadsecz.com/127.0.0.1
address=/gadsimz.com/127.0.0.1
address=/gadsipz.com/127.0.0.1
address=/gadskis.com/127.0.0.1
address=/gadsokz.com/127.0.0.1
address=/gapsfartrely.best/127.0.0.1
address=/gardoult.com/127.0.0.1
address=/gdmconvtrck.com/127.0.0.1
address=/gebralefukim.site/127.0.0.1
address=/gedspecificano.info/127.0.0.1
address=/gleergie.net/127.0.0.1
address=/global-surveys.co/127.0.0.1
address=/globwo.online/127.0.0.1
address=/glomseci.com/127.0.0.1
address=/gludraus.com/127.0.0.1
address=/go2.global/127.0.0.1
address=/gobovoul.net/127.0.0.1
address=/gongeeta.net/127.0.0.1
address=/gragliapastri.info/127.0.0.1
address=/grampouz.net/127.0.0.1
address=/graunada.com/127.0.0.1
address=/grementessenti.info/127.0.0.1
address=/grexoacu.com/127.0.0.1
address=/groackam.com/127.0.0.1
address=/grubsoan.com/127.0.0.1
address=/h3btqpy2abc3.com/127.0.0.1
address=/haftobso.net/127.0.0.1
address=/hamadotax.site/127.0.0.1
address=/haypaydig.club/127.0.0.1
address=/heckagny.com/127.0.0.1
address=/himselvepostly.site/127.0.0.1
address=/hoosorie.com/127.0.0.1
address=/hounicuy.com/127.0.0.1
address=/housandady.site/127.0.0.1
address=/housopsi.net/127.0.0.1
address=/huckauhy.com/127.0.0.1
address=/hwhiffonprotect.info/127.0.0.1
address=/ideliv.net/127.0.0.1
address=/iglaique.net/127.0.0.1
address=/imounsos.com/127.0.0.1
address=/ingdaughtexam.info/127.0.0.1
address=/ingprographyt.info/127.0.0.1
address=/inpagepush.com/127.0.0.1
address=/instantresp.com/127.0.0.1
address=/inwig3aqg9xq.com/127.0.0.1
address=/ionrefreshotsev.info/127.0.0.1
address=/ipsoorel.com/127.0.0.1
address=/iulianus-mon.com/127.0.0.1
address=/jahediretictho.info/127.0.0.1
address=/jamestop.xyz/127.0.0.1
address=/jaugloup.com/127.0.0.1
address=/jechesmacaltont.info/127.0.0.1
address=/jicmutse.com/127.0.0.1
address=/jinsoopt.net/127.0.0.1
address=/joawapti.net/127.0.0.1
address=/justookr.net/127.0.0.1
address=/katerigordas.pro/127.0.0.1
address=/kaukoany.net/127.0.0.1
address=/kcampairsang.info/127.0.0.1
address=/keepaira.net/127.0.0.1
address=/kegpoihat.club/127.0.0.1
address=/ketstheralinver.info/127.0.0.1
address=/kitferdog.site/127.0.0.1
address=/knottishhuntilc.info/127.0.0.1
address=/koocaucy.com/127.0.0.1
address=/koutobey.net/127.0.0.1
address=/kudzuphloemgunk.tech/127.0.0.1
address=/kumanaun.net/127.0.0.1
address=/labortiontrifee.info/127.0.0.1
address=/ladsdown.com/127.0.0.1
address=/laichaim.net/127.0.0.1
address=/lassistslegisten.info/127.0.0.1
address=/ldevillaechildren.info/127.0.0.1
address=/leathtexactlycin.info/127.0.0.1
address=/lebkeresxa.ml/127.0.0.1
address=/leontius-eli.com/127.0.0.1
address=/lessite.pro/127.0.0.1
address=/linkev.com/127.0.0.1
address=/loaphour.com/127.0.0.1
address=/locothet.com/127.0.0.1
address=/loobusir.com/127.0.0.1
address=/lutachechu.pro/127.0.0.1
address=/lynormationpas.info/127.0.0.1
address=/lyzenoti.pro/127.0.0.1
address=/madplypie.club/127.0.0.1
address=/madsans.com/127.0.0.1
address=/maihaimo.com/127.0.0.1
address=/maipoted.com/127.0.0.1
address=/mauzobou.net/127.0.0.1
address=/mbethnarrowe.info/127.0.0.1
address=/mbledeparatea.info/127.0.0.1
address=/meehaina.net/127.0.0.1
address=/megmobpoi.club/127.0.0.1
address=/melo.space/127.0.0.1
address=/metricfast.com/127.0.0.1
address=/mewnetwag.site/127.0.0.1
address=/mibsooks.net/127.0.0.1
address=/mikrairs.com/127.0.0.1
address=/mirafaren.pw/127.0.0.1
address=/moapteeg.net/127.0.0.1
address=/mob1ledev1ces.com/127.0.0.1
address=/moderningvigil.pro/127.0.0.1
address=/monadplug.com/127.0.0.1
address=/mopushy.com/127.0.0.1
address=/mozgvya.com/127.0.0.1
address=/mprisedluxemb.info/127.0.0.1
address=/mptedcazdep.info/127.0.0.1
address=/nadjustifygas.info/127.0.0.1
address=/nailowhe.net/127.0.0.1
address=/nbasicalbuffere.info/127.0.0.1
address=/nbf9b5aurl.com/127.0.0.1
address=/ncefoundanges.info/127.0.0.1
address=/ncylegiatede.info/127.0.0.1
address=/nelsdecademi.info/127.0.0.1
address=/neltoole.net/127.0.0.1
address=/nesoaghu.net/127.0.0.1
address=/nessendencec.info/127.0.0.1
address=/netcatx.com/127.0.0.1
address=/netpatas.com/127.0.0.1
address=/newvideos.xyz/127.0.0.1
address=/nfarmerlycompa.info/127.0.0.1
address=/ngholishingsm.info/127.0.0.1
address=/niebrundveepursuede.info/127.0.0.1
address=/nishathlessharr.info/127.0.0.1
address=/nishfarmerlypas.info/127.0.0.1
address=/nlzz7a3md4sx.com/127.0.0.1
address=/noagloot.net/127.0.0.1
address=/noaloheb.com/127.0.0.1
address=/noclef.com/127.0.0.1
address=/noglolra.com/127.0.0.1
address=/norakseemlyntr.info/127.0.0.1
address=/notification-centar.com/127.0.0.1
address=/notifysrv.com/127.0.0.1
address=/noutstancerewe.info/127.0.0.1
address=/ntsartingaccura.info/127.0.0.1
address=/ntsimprovide.info/127.0.0.1
address=/oajujirg.net/127.0.0.1
address=/obaukads.com/127.0.0.1
address=/obefjbb4mykw.com/127.0.0.1
address=/od0gddq27wkk.com/127.0.0.1
address=/officultpolicit.pro/127.0.0.1
address=/ohmchoicechi.online/127.0.0.1
address=/olicyconsendsi.info/127.0.0.1
address=/ommodatesjoin.info/127.0.0.1
address=/omoaxaus.net/127.0.0.1
address=/onalentressionw.info/127.0.0.1
address=/onindexicowillio.info/127.0.0.1
address=/onscribedpastrong.info/127.0.0.1
address=/ooxoatse.com/127.0.0.1
address=/ophoahik.net/127.0.0.1
address=/optvx.com/127.0.0.1
address=/oratedencourse.info/127.0.0.1
address=/oratorsresente.info/127.0.0.1
address=/orcjagpox.com/127.0.0.1
address=/ortantchangem.info/127.0.0.1
address=/oselyprepartie.info/127.0.0.1
address=/osmondards.pro/127.0.0.1
address=/otsurvedchange.info/127.0.0.1
address=/oughgoalityabo.info/127.0.0.1
address=/ountapaveralle.info/127.0.0.1
address=/ouzoadru.net/127.0.0.1
address=/overribleintena.info/127.0.0.1
address=/oweverycanvas.info/127.0.0.1
address=/padsabz.com/127.0.0.1
address=/padsatz.com/127.0.0.1
address=/padsecs.com/127.0.0.1
address=/pagiwp.com/127.0.0.1
address=/pagnookr.net/127.0.0.1
address=/parketbedde.info/127.0.0.1
address=/pasaigul.com/127.0.0.1
address=/paula-secundinus.com/127.0.0.1
address=/paveralleycoun.info/127.0.0.1
address=/peethobo.com/127.0.0.1
address=/performanceonclick.com/127.0.0.1
address=/petchesa.net/127.0.0.1
address=/pgradualirelev.info/127.0.0.1
address=/phabsoun.net/127.0.0.1
address=/pharougn.com/127.0.0.1
address=/pheekrie.com/127.0.0.1
address=/pheevoug.com/127.0.0.1
address=/phookree.com/127.0.0.1
address=/plyvitablesagree.info/127.0.0.1
@ -5056,85 +5274,164 @@ address=/poleonaryprac.info/127.0.0.1
address=/portedlysarcatc.info/127.0.0.1
address=/possipationd.info/127.0.0.1
address=/poubotem.com/127.0.0.1
address=/poudeeri.com/127.0.0.1
address=/powerapp.download/127.0.0.1
address=/poxeemso.com/127.0.0.1
address=/prevealhealth.info/127.0.0.1
address=/productorbash.info/127.0.0.1
address=/productorsy.pro/127.0.0.1
address=/provisituske.site/127.0.0.1
address=/pryrhoohs.site/127.0.0.1
address=/psoaksoo.com/127.0.0.1
address=/psoanouy.net/127.0.0.1
address=/ptaivain.net/127.0.0.1
address=/ptiftoud.com/127.0.0.1
address=/ptogheeb.net/127.0.0.1
address=/ptoulsey.com/127.0.0.1
address=/puntoenun.site/127.0.0.1
address=/push.house/127.0.0.1
address=/pushpush.net/127.0.0.1
address=/pushworldtool.com/127.0.0.1
address=/rdsb2.club/127.0.0.1
address=/realsrv.com/127.0.0.1
address=/realtime-bid.com/127.0.0.1
address=/reasonalattracke.info/127.0.0.1
address=/redads.biz/127.0.0.1
address=/redappeneticfr.info/127.0.0.1
address=/redewdit.pro/127.0.0.1
address=/redirect2719.ws/127.0.0.1
address=/refunsiy.net/127.0.0.1
address=/replentcautiful.info/127.0.0.1
address=/resbargarettybe.info/127.0.0.1
address=/returnessety.site/127.0.0.1
address=/revolutelyplan.info/127.0.0.1
address=/rexadvert.xyz/127.0.0.1
address=/rgvqcsxqge.com/127.0.0.1
address=/rheaddelainlyco.info/127.0.0.1
address=/riahungardedig.info/127.0.0.1
address=/ridgelorridorsag.info/127.0.0.1
address=/rinedcountilconsiden.info/127.0.0.1
address=/rintellsfundrew.info/127.0.0.1
address=/ripslifestassoci.info/127.0.0.1
address=/riptukri.net/127.0.0.1
address=/rizeintellingente.info/127.0.0.1
address=/robjamguy.club/127.0.0.1
address=/ronoutom.net/127.0.0.1
address=/roustast.net/127.0.0.1
address=/routeme.one/127.0.0.1
address=/routeserve.info/127.0.0.1
address=/rsleaderingmu.info/127.0.0.1
address=/runmeethoomes.info/127.0.0.1
address=/rydresa.info/127.0.0.1
address=/sadorsagreeng.info/127.0.0.1
address=/sadsecz.com/127.0.0.1
address=/santrateduk.site/127.0.0.1
address=/sapsixysho.pro/127.0.0.1
address=/searchmulty.com/127.0.0.1
address=/securecloud-dt.com/127.0.0.1
address=/seepsocu.net/127.0.0.1
address=/sexagogal.site/127.0.0.1
address=/sgftrrs.com/127.0.0.1
address=/shenouth.com/127.0.0.1
address=/shiptoud.com/127.0.0.1
address=/shoawhom.com/127.0.0.1
address=/silsfrastinggove.info/127.0.0.1
address=/singthouthappi.info/127.0.0.1
address=/sisewepod.com/127.0.0.1
address=/sisterncoalitical.info/127.0.0.1
address=/smenqskfmpfxnb.bid/127.0.0.1
address=/soagrist.net/127.0.0.1
address=/soofeest.net/127.0.0.1
address=/sousaira.com/127.0.0.1
address=/spentalwithinga.info/127.0.0.1
address=/ssqualismother.info/127.0.0.1
address=/stargoug.com/127.0.0.1
address=/stoassod.com/127.0.0.1
address=/stonseeb.net/127.0.0.1
address=/streamclub.best/127.0.0.1
address=/streamclub.fun/127.0.0.1
address=/styheremo.site/127.0.0.1
address=/supertrackingz.com/127.0.0.1
address=/surfacecharo.info/127.0.0.1
address=/taifouwo.com/127.0.0.1
address=/tamechangekn.info/127.0.0.1
address=/tarawerap.com/127.0.0.1
address=/tartoals.net/127.0.0.1
address=/taryarguestio.info/127.0.0.1
address=/televeniesuc.pro/127.0.0.1
address=/tentdinationgab.info/127.0.0.1
address=/terialnevitiesini.info/127.0.0.1
address=/thamsais.com/127.0.0.1
address=/theeburs.com/127.0.0.1
address=/thefastpush.com/127.0.0.1
address=/thefuncoolstuff.com/127.0.0.1
address=/themselvebu.site/127.0.0.1
address=/thigeeph.com/127.0.0.1
address=/thighiny.com/127.0.0.1
address=/thimoaph.net/127.0.0.1
address=/thitegnu.net/127.0.0.1
address=/thodsserentlya.info/127.0.0.1
address=/thomagejut.site/127.0.0.1
address=/tifybecausingp.info/127.0.0.1
address=/tionpronomyim.info/127.0.0.1
address=/tiveacquisitsprett.info/127.0.0.1
address=/toapsira.net/127.0.0.1
address=/tonewithough.info/127.0.0.1
address=/totogetica.com/127.0.0.1
address=/trackingzen.com/127.0.0.1
address=/trackspeeder.com/127.0.0.1
address=/trkunited.com/127.0.0.1
address=/tujestimater.pro/127.0.0.1
address=/uagesspecifica.info/127.0.0.1
address=/ufoukolt.com/127.0.0.1
address=/ugoupams.com/127.0.0.1
address=/uinelypresse.info/127.0.0.1
address=/ukcomparends.pro/127.0.0.1
address=/ummerciseha.info/127.0.0.1
address=/untridrisa.cf/127.0.0.1
address=/upush.co/127.0.0.1
address=/uremechangec.info/127.0.0.1
address=/urgwritishimpos.info/127.0.0.1
address=/ushooque.net/127.0.0.1
address=/uthworkreaseu.info/127.0.0.1
address=/utpenedwritted.info/127.0.0.1
address=/utstancecaricit.info/127.0.0.1
address=/veewakim.net/127.0.0.1
address=/veremund-hon.com/127.0.0.1
address=/viatepigan.com/127.0.0.1
address=/viebitgreasy.email/127.0.0.1
address=/vimdiebid.club/127.0.0.1
address=/virashux.net/127.0.0.1
address=/vixirtab.com/127.0.0.1
address=/vknrfwwxhxaxupqp.pro/127.0.0.1
address=/voluumtracker.com/127.0.0.1
address=/wacucmiy.net/127.0.0.1
address=/wadsotch.com/127.0.0.1
address=/wagoapse.com/127.0.0.1
address=/wahamtou.net/127.0.0.1
address=/waitingpresen.info/127.0.0.1
address=/warsalsintrol.site/127.0.0.1
address=/watchingssui.info/127.0.0.1
address=/waugeboa.net/127.0.0.1
address=/weegebul.net/127.0.0.1
address=/weethery.com/127.0.0.1
address=/whadaupo.net/127.0.0.1
address=/whaustou.net/127.0.0.1
address=/wheessoo.com/127.0.0.1
address=/whoshood.com/127.0.0.1
address=/wimsocou.com/127.0.0.1
address=/wizwarsum.site/127.0.0.1
address=/woogoust.com/127.0.0.1
address=/woovooza.net/127.0.0.1
address=/wrongerababan.info/127.0.0.1
address=/xmlppcbuzz.com/127.0.0.1
address=/yeprimlax.club/127.0.0.1
address=/yinsterkneeline.info/127.0.0.1
address=/z501lpfg9x8v.com/127.0.0.1
address=/zaivikuk.com/127.0.0.1
address=/zaugroaw.net/127.0.0.1
address=/zaushegi.net/127.0.0.1
address=/zrnedsainsteady.info/127.0.0.1
address=/zudrurta.com/127.0.0.1
address=/46.165.197.153/127.0.0.1
address=/46.165.197.231/127.0.0.1
@ -5146,6 +5443,7 @@ address=/burporess.pro/127.0.0.1
address=/clearadnetwork.com/127.0.0.1
address=/clkrev.com/127.0.0.1
address=/shillivee.pro/127.0.0.1
address=/steepto.com/127.0.0.1
address=/adminpromotion.com/127.0.0.1
address=/adsalesforce.com/127.0.0.1
address=/amazingfunnvideos.com/127.0.0.1
@ -5424,7 +5722,6 @@ address=/adbidgo.com/127.0.0.1
address=/adplexo.com/127.0.0.1
address=/adservi.com/127.0.0.1
address=/aebadu.com/127.0.0.1
address=/aoredi.com/127.0.0.1
address=/bebadu.com/127.0.0.1
address=/billionpops.com/127.0.0.1
address=/cebadu.com/127.0.0.1
@ -5441,7 +5738,6 @@ address=/doublelimpup.com/127.0.0.1
address=/dsp.wtf/127.0.0.1
address=/earnbigo.com/127.0.0.1
address=/eoredi.com/127.0.0.1
address=/fabrkrup.com/127.0.0.1
address=/fastpopclick.com/127.0.0.1
address=/fastpopunder.com/127.0.0.1
address=/febadu.com/127.0.0.1
@ -5604,7 +5900,6 @@ address=/d1ebha2k07asm5.cloudfront.net/127.0.0.1
address=/d1grtyyel8f1mh.cloudfront.net/127.0.0.1
address=/d1i9kr6k34lyp.cloudfront.net/127.0.0.1
address=/d1il9t8pu4dsoj.cloudfront.net/127.0.0.1
address=/d1ks8roequxbwa.cloudfront.net/127.0.0.1
address=/d1mbgf0ge24riu.cloudfront.net/127.0.0.1
address=/d1n3tk65esqc4k.cloudfront.net/127.0.0.1
address=/d1nmxiiewlx627.cloudfront.net/127.0.0.1
@ -5681,7 +5976,6 @@ address=/dasfdasfasdf.no-ip.info/127.0.0.1
address=/data.neuroxmedia.com/127.0.0.1
address=/dbam.dashbida.com/127.0.0.1
address=/dbcdqp72lzmvj.cloudfront.net/127.0.0.1
address=/dc5k8fg5ioc8s.cloudfront.net/127.0.0.1
address=/ddvfoj5yrl2oi.cloudfront.net/127.0.0.1
address=/deacon.ghfkk.com/127.0.0.1
address=/delivery-dev.thebloggernetwork.com/127.0.0.1
@ -5689,7 +5983,6 @@ address=/delivery.thebloggernetwork.com/127.0.0.1
address=/dew9ckzjyt2gn.cloudfront.net/127.0.0.1
address=/display.digitalriver.com/127.0.0.1
address=/djr4k68f8n55o.cloudfront.net/127.0.0.1
address=/djv99sxoqpv11.cloudfront.net/127.0.0.1
address=/djz9es32qen64.cloudfront.net/127.0.0.1
address=/dm0acvguygm9h.cloudfront.net/127.0.0.1
address=/dmkdtkad2jyb9.cloudfront.net/127.0.0.1
@ -5804,9 +6097,32 @@ address=/yeas.yahoo.co.jp/127.0.0.1
address=/yield-op-idsync.live.streamtheworld.com/127.0.0.1
address=/zapads.zapak.com/127.0.0.1
address=/d141wsrw9m4as6.cloudfront.net/127.0.0.1
address=/d1bxkgbbc428vi.cloudfront.net/127.0.0.1
address=/d1ilwohzbe4ao6.cloudfront.net/127.0.0.1
address=/d1jnvfp2m6fzvq.cloudfront.net/127.0.0.1
address=/d1ks8roequxbwa.cloudfront.net/127.0.0.1
address=/d1n1ppeppre6d4.cloudfront.net/127.0.0.1
address=/d1nkvehlw5hmj4.cloudfront.net/127.0.0.1
address=/d1rjzrtsxlzawf.cloudfront.net/127.0.0.1
address=/d1w24oanovvxvg.cloudfront.net/127.0.0.1
address=/d22z575k8abudv.cloudfront.net/127.0.0.1
address=/d2e30rravz97d4.cloudfront.net/127.0.0.1
address=/d2glav2919q4cw.cloudfront.net/127.0.0.1
address=/d31mxuhvwrofft.cloudfront.net/127.0.0.1
address=/d347nuc6bd1dvs.cloudfront.net/127.0.0.1
address=/d3a49eam5ump99.cloudfront.net/127.0.0.1
address=/d3b2hhehkqd158.cloudfront.net/127.0.0.1
address=/d3hj4iyx6t1waz.cloudfront.net/127.0.0.1
address=/d3kpkrgd3aj4o7.cloudfront.net/127.0.0.1
address=/d3qu0b872n4q3x.cloudfront.net/127.0.0.1
address=/d3t3lxfqz2g5hs.cloudfront.net/127.0.0.1
address=/d3vnm1492fpnm2.cloudfront.net/127.0.0.1
address=/dc5k8fg5ioc8s.cloudfront.net/127.0.0.1
address=/dn3uy6cx65ujf.cloudfront.net/127.0.0.1
address=/dpd9yiocsyy6p.cloudfront.net/127.0.0.1
address=/du01z5hhojprz.cloudfront.net/127.0.0.1
address=/dw9uc6c6b8nwx.cloudfront.net/127.0.0.1
address=/dxkkb5tytkivf.cloudfront.net/127.0.0.1
address=/iadc.qwapi.com/127.0.0.1
address=/d3jgr4uve1d188.cloudfront.net/127.0.0.1
address=/d3ujids68p6xmq.cloudfront.net/127.0.0.1
@ -5880,6 +6196,7 @@ address=/djv99sxoqpv11.cloudfront.net/127.0.0.1
address=/dkm6b5q0h53z4.cloudfront.net/127.0.0.1
address=/fontent.streamp1ay.me/127.0.0.1
address=/fun.wormania.io/127.0.0.1
address=/fun1.arcadeprehacks.com/127.0.0.1
address=/gen.etherscan.io/127.0.0.1
address=/hawk.pcgamer.com/127.0.0.1
address=/imgcache.sythe.org/127.0.0.1
@ -5898,6 +6215,8 @@ address=/web.tmearn.com/127.0.0.1
address=/ww2.gestyy.com/127.0.0.1
address=/x.castanet.net/127.0.0.1
address=/gontent.steamplay.me/127.0.0.1
address=/hontent.steamplay.me/127.0.0.1
address=/vontent.powvideo.net/127.0.0.1
address=/wontent.powvideo.net/127.0.0.1
address=/yontent.powvideo.net/127.0.0.1
address=/meta.streamcloud.eu/127.0.0.1

View File

@ -676,7 +676,9 @@ start_redir() {
done
echo "$(date "+%Y-%m-%d %H:%M:%S") Shadowsocks/ShadowsocksR $threads Threads Started!" >> /tmp/ssrplus.log
elif [ "$stype" == "trojan" ] ;then
for i in $(seq 1 $threads); do
$sscmd --config /var/etc/trojan-ssr-retcp.json >/dev/null 2>&1 &
done
echo "$(date "+%Y-%m-%d %H:%M:%S") $($sscmd --version 2>&1 | head -1) Started!" >> /tmp/ssrplus.log
elif [ "$stype" == "v2ray" ] ;then

View File

@ -30,6 +30,7 @@ local trojan = {
tcp = {
no_delay = true,
keep_alive = true,
reuse_port = true,
fast_open = (server.fast_open == "1") and true or false,
fast_open_qlen = 20
}

View File

@ -0,0 +1,704 @@
@import url("flag-icon.min.css");
/*!
Pure v1.0.1
Copyright 2013 Yahoo!
Licensed under the BSD License.
https://github.com/pure-css/pure/blob/master/LICENSE.md
*/
.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-box-orient: horizontal;
-webkit-box-direction: normal;
-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 {
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,
.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-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-5-5 {
width: 100%
}
.status {
margin: 1rem -0.5rem 1rem -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: .500rem;
background-color: #f4;
box-shadow: 0 0 2rem 0 rgba(136, 152, 170, .15);
}
.img-con {
margin: 1rem;
}
.pure-img{
max-height: 100%;
width: auto;
}
.green {
font-size: 1.25rem;
color: #2dce89;
}
.red {
font-size: 1.25rem;
color: #fb6340;
}
.sk-text-success {
color: #2dce89;
}
.sk-text-error {
color: #fb6340;
}
.gap {
margin-right: 0.5rem;
}
.block img {
width: 48px;
height: auto;
float: right;
}
.pure-u-5-8 {
display: flex;
align-items: center;
}
.block h4 {
font-size: .8125rem;
font-weight: 600;
margin: 1rem;
color: #8898aa !important;
line-height: 1.8em;
}
.p-in5{
padding: 8px;
}
.cbi-section-table-row {
position: relative;
background: #f4;
margin: 10px;
padding: 8px 15px 10px 70px;
box-shadow: 0 0 1rem 0 rgba(136,152,170,.75);
border-radius: .5rem;
border: 0;
color: #fff;
text-align: left;
line-height: 1.7em;
white-space: nowrap;
     text-overflow: ellipsis;
overflow: hidden;
transition: all 0.3s;
}
.cbi-section-table-row:hover{
background: #fff;
}
.cbi-section-table-row.fast{
background: #5e72e4;
color: #fff;
}
.cbi-section-table-row.fast .ssr-button{
color: #fff;
}
.cbi-section-table-row.fast .ssr-button:hover,
.cbi-section-table-row.fast .ssr-button:focus,
.cbi-section-table-row.fast .ssr-button:active {
color: #fff;
outline: 0;
text-decoration: none;
box-shadow: none;
}
.host_con.fast {
color: #6f9a37;
}
.host_con.nopass {
color: #dc3545;
}
.host_con.middle {
color: #fbc658;
}
.host_con.slow {
color: #fb6340;
}
.loadings {
position: absolute;
width: 100%;
height: 100%;
background: rgba(255, 255, 255, 0.7);
border-radius: .5rem;
left: 0;
top: 0;
z-index: 10;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
justify-content: center;
align-items: center;
font-size: 30px;
transition: all 0.3s;
}
.loadings.hide {
opacity: 0;
visibility: hidden;
pointer-events: none;
}
.loadings span {
animation: anim-rotate 2s infinite linear;
height: 30px;
}
.alias{
margin-bottom:1px;
}
.incon:nth-child(2) {
position: absolute;
left: 0;
top: 0;
width: 61px;
height: 100%;
border: 0;
border-right: #d1dfed 1px solid;
background-position: top;
}
.incon:nth-child(2) .tp{
position: absolute;
left: 0;
bottom: 0;
height: 25%;
width: 100%;
text-align: center;
font-size: 12px;
line-height: 15px;
color: #fff;
background: #525f7f;
}
.incon:nth-child(3) {
padding-left: 0px;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
.incon:nth-child(5),
.incon:nth-child(6) {
display: none;
}
.cbi-section-table-cell {
text-align: right;
}
.ssr-button {
background: none;
color: #525f7f;
padding: 0 0 0 6px;
height: auto;
line-height: 1.5em;
}
.ssr-button:hover,
.ssr-button:focus,
.ssr-button:active {
color: #525f7f;
outline: 0;
text-decoration: none;
box-shadow: none;
}
.cbi-section h3 {
margin-left: 10px;
margin-top: 1rem;
}
.cbi-button-check {
color: #fff !important;
background-color: #336633 !important;
border-color: #2e6da4 !important;
font-size:12px;
padding:0.5rem 0.8rem;
float:right;
margin-right:10px;
margin-top:0rem;
}
.cbi-section-table-cell {
position: relative;
}
.host_con {
position: absolute;
left: 0;
width: 50px;
text-align: left;
height: 22px;
font-weight: bold;
}
.host_ok {
color: #fff;
background: #2dce89;
padding: 0.1rem 0.5rem;
border-radius: 0.2rem;
}
.host_error {
color: #fff;
background: #f5365c;
padding: 0.1rem 0.5rem;
border-radius: 0.2rem;
}
footer.mobile-hide{
display: block;
}
.cbi-button-add{
position:fixed;
padding: 0.3rem 0.5rem;
z-index:1000;
width:70px !important;
height:70px;
bottom:90px;
right:55px;
font-size:20px;
border-radius:50%;
display:block;
background-color: #336633!important;
border-color: #CC6699 !important;
box-shadow: 0 0 1rem 0 rgba(136,152,170,.75);
}
.mar-10 {margin-left: 50px; margin-right: 10px;}
.status-bar{
position: fixed;
bottom: 0;
right: 0;
box-shadow: 0 0 2rem 0 rgba(136,152,170,.3);
color: #525f7f;
background: #fff;
z-index: 5;
box-sizing: border-box;
}
.status-bar .inner{
margin: 1em;
}
.status-bar .inner .flag{
height: 3em;
display: block;
float: left;
margin-right: 1em;
}
.status-bar .icon-con{
height: 3em;
text-align: right;
}
@media screen and (max-width: 1900px) {
.pure-u-1-5 {
width: 25%;
}
}
@media screen and (max-width: 1600px) {
.pure-u-1-5 {
width: 33.33333333%;
}
}
@media screen and (max-width: 1200px) {
.pure-u-1-5 {
width: 50%;
}
.status .pure-u-1-5 {
width: 33.333%;
}
}
@media screen and (max-width: 700px) {
.pure-u-1-4 {
width: 50%;
}
.pure-u-1-2 {
width: 100%;
}
.pure-u-1-5 {
width: 100%;
font-size: 14px;
}
.status .pure-u-1-5 {
width: 50%;
}
.cbi-button-add {
position: fixed;
padding: 0.3rem 0.5rem;
z-index: 1000;
width: 50px !important;
height: 50px;
bottom: 90px;
right: 5px;
font-size: 16px;
border-radius: 50%;
display: block;
background-color: #fb6340!important;
border-color: #fb6340 !important;
box-shadow: 0 0 1rem 0 rgba(136, 152, 170, .75);
}
}
.modals-bg {
position: fixed;
z-index: 999;
width: 100%;
height: 100%;
left: 0;
top: 0;
background: rgba(255, 255, 255, 0.8);
display: none;
}
.modals {
position: fixed;
z-index: 100;
width: 60%;
height: 500px;
background: #172b4d;
left: 20%;
top: 15%;
color: #fff;
border-radius: 10px;
padding: 20px;
box-sizing: border-box;
-moz-box-sizing: border-box;
/* Firefox */
-webkit-box-sizing: border-box;
/* Safari */
}
.modals h2 {
padding: 0 !important;
}
.modals h3 {
font-size: 14px;
color: #f5365c !important;
background: transparent;
margin: 0;
padding: 0;
}
#log_content3 {
border: 0;
width: 99%;
height: calc(100% - 4rem);
font-family: 'Lucida Console';
font-size: 11px;
background: transparent;
color: #FFFFFF;
outline: none;
padding-left: 3px;
padding-right: 22px;
overflow: hidden
}
@media screen and (max-width: 1024px) {
.modals {
position: fixed;
z-index: 100;
width: 80%;
height: 500px;
background: #172b4d;
left: 10%;
top: 15%;
color: #fff;
border-radius: 10px;
padding: 20px;
}
}
@media screen and (max-width: 700px) {
.modals-bg {
position: fixed;
z-index: 100000;
}
.modals {
width: 100%;
height: 100%;
left: 0;
top: 0;
}
.status-bar .pure-u-1-2{
width: 50%;
}
.status-bar .inner .flag{
height: 3em;
display: block;
float: left;
margin-right: 1em;
}
.status-bar .icon-con{
height: 2.5em;
text-align: right;
}
}