diff --git a/package/ctcgfw/luci-app-vssr-coexist/luasrc/controller/vssr.lua b/package/ctcgfw/luci-app-vssr-coexist/luasrc/controller/vssr.lua index 95fdd3ff55..27e73633f1 100644 --- a/package/ctcgfw/luci-app-vssr-coexist/luasrc/controller/vssr.lua +++ b/package/ctcgfw/luci-app-vssr-coexist/luasrc/controller/vssr.lua @@ -22,9 +22,10 @@ end entry({"admin", "vpn", "vssr", "subscription"},cbi("vssr/subscription"), _("Subscription"),12).leaf = true entry({"admin", "vpn", "vssr", "control"}, cbi("vssr/control"), _("Access Control"), 13).leaf = true -- 访问控制 - + entry({"admin", "vpn", "vssr", "servers-list"}, cbi("vssr/servers-list"), + _("Severs Nodes"), 14).leaf = true entry({"admin", "vpn", "vssr", "advanced"}, cbi("vssr/advanced"), - _("Advanced Settings"), 14).leaf = true -- 高级设置 + _("Advanced Settings"), 15).leaf = true -- 高级设置 elseif nixio.fs.access("/usr/bin/ssr-server") then entry({"admin", "vpn", "vssr"}, alias("admin", "vpn", "vssr", "server"), _("vssr"), 10).dependent = @@ -45,6 +46,7 @@ entry({"admin", "vpn", "vssr", "status"},form("vssr/status"),_("Status"), 23).le entry({"admin", "vpn", "vssr", "refresh"}, call("refresh_data")) -- 更新白名单和GFWLIST entry({"admin", "vpn", "vssr", "checkport"}, call("check_port")) -- 检测单个端口并返回Ping entry({"admin", "vpn", "vssr", "checkports"}, call("check_ports")) + entry({"admin", "vpn", "vssr", "ping"}, call("act_ping")).leaf=true entry({"admin", "vpn", "vssr", "run"}, call("act_status")) -- 检测全局服务器状态 entry({"admin", "vpn", "vssr", "change"}, call("change_node")) -- 切换节点 entry({"admin", "vpn", "vssr", "allserver"}, call("get_servers")) -- 获取所有节点Json @@ -196,6 +198,14 @@ function act_status() luci.http.write_json(e) end +function act_ping() + local e={} + e.index=luci.http.formvalue("index") + e.ping=luci.sys.exec("ping -c 1 -W 1 %q 2>&1 | grep -o 'time=[0-9]*.[0-9]' | awk -F '=' '{print$2}'"%luci.http.formvalue("domain")) + luci.http.prepare_content("application/json") + luci.http.write_json(e) +end + function check_status() local set ="/usr/bin/ssr-check www." .. luci.http.formvalue("set") .. ".com 80 3 1" sret=luci.sys.call(set) diff --git a/package/ctcgfw/luci-app-vssr-coexist/luasrc/model/cbi/vssr/servers-list.lua b/package/ctcgfw/luci-app-vssr-coexist/luasrc/model/cbi/vssr/servers-list.lua new file mode 100644 index 0000000000..10a3912d13 --- /dev/null +++ b/package/ctcgfw/luci-app-vssr-coexist/luasrc/model/cbi/vssr/servers-list.lua @@ -0,0 +1,77 @@ +-- 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 vssr = "vssr" + + +local uci = luci.model.uci.cursor() +local server_count = 0 +uci:foreach("vssr", "servers", function(s) + server_count = server_count + 1 +end) + + + +m = Map(vssr) +m:section(SimpleSection).template = "vssr/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/vssr/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 + +o = s:option(DummyValue,"server",translate("Ping Latency")) +o.template="vssr/ping1" +o.width="10%" + +m:append(Template("vssr/server_list")) + +return m diff --git a/package/ctcgfw/luci-app-vssr-coexist/luasrc/view/vssr/ping1.htm b/package/ctcgfw/luci-app-vssr-coexist/luasrc/view/vssr/ping1.htm new file mode 100644 index 0000000000..e01ea20af2 --- /dev/null +++ b/package/ctcgfw/luci-app-vssr-coexist/luasrc/view/vssr/ping1.htm @@ -0,0 +1,28 @@ +<%+cbi/valueheader%> +-- ms +<%+cbi/valuefooter%> + + + \ No newline at end of file diff --git a/package/ctcgfw/luci-app-vssr-coexist/po/zh_Hans/vssr.po b/package/ctcgfw/luci-app-vssr-coexist/po/zh_Hans/vssr.po index 26eac573dd..4043a1f164 100644 --- a/package/ctcgfw/luci-app-vssr-coexist/po/zh_Hans/vssr.po +++ b/package/ctcgfw/luci-app-vssr-coexist/po/zh_Hans/vssr.po @@ -48,6 +48,9 @@ msgid "Ping All Servers" msgstr "PING 所有节点" +msgid "Ping Latency" +msgstr "Ping 延迟" + msgid "vssr Server" msgstr "vssr 服务端"