OpenClash: update to latest git HEAD

This commit is contained in:
CN_SZTL 2019-10-16 23:14:57 +08:00
parent f1fdb26d1a
commit af3af28423
No known key found for this signature in database
GPG Key ID: 6850B6345C862176
22 changed files with 311 additions and 105 deletions

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-openclash
PKG_VERSION:=0.34.7
PKG_VERSION:=0.35.2
PKG_RELEASE:=beta
PKG_MAINTAINER:=vernesong <https://github.com/vernesong/OpenClash>

View File

@ -50,11 +50,38 @@ time2.google.com
time3.google.com
time4.google.com
#放行网易云音乐
.music.163.com
music.163.com
interface.music.163.com
interface3.music.163.com
apm.music.163.com
apm3.music.163.com
clientlog.music.163.com
clientlog3.music.163.com
music.126.net
vod.126.net
#百度音乐
sug.qianqian.com
music.taihe.com
#酷狗音乐
songsearch.kugou.com
trackercdn.kugou.com
#酷我音乐
kuwo.cn
#JOOX音乐
api-jooxtt.sanook.com
api.joox.com
#QQ音乐
y.qq.com
streamoc.music.tc.qq.com
mobileoc.music.tc.qq.com
isure.stream.qqmusic.qq.com
dl.stream.qqmusic.qq.com
aqqmusic.tc.qq.com
amobile.music.tc.qq.com
#虾米音乐
xiami.com
#咪咕音乐
music.migu.cn
#win10本地连接检测
msftconnecttest.com
msftncsi.com

View File

@ -56,7 +56,8 @@ change_dns() {
}
revert_dns() {
uci del dhcp.@dnsmasq[-1].server >/dev/null 2>&1
dns_port=$(uci get openclash.config.dns_port 2>/dev/null)
uci del_list dhcp.@dnsmasq[0].server=127.0.0.1#"$dns_port" >/dev/null 2>&1
uci set dhcp.@dnsmasq[0].resolvfile=/tmp/resolv.conf.auto
uci set dhcp.@dnsmasq[0].noresolv=0
uci delete dhcp.@dnsmasq[0].cachesize
@ -67,9 +68,13 @@ revert_dns() {
fake_block() {
if [ "$1" = "fake-ip" ]; then
if [ ! -f /etc/openclash/dnsmasq_fake_block.conf ]; then
sh /usr/share/openclash/openclash_fake_block.sh
/usr/share/openclash/openclash_fake_block.sh
elif [ "$(awk -F '/' '{print $3}' /etc/openclash/dnsmasq_fake_block.conf |head -1)" != "114.114.114.114" ] && [ -z "$2" ]; then
/usr/share/openclash/openclash_fake_block.sh
elif [ "$(awk -F '/' '{print $3}' /etc/openclash/dnsmasq_fake_block.conf |head -1)" != "$2" ] && [ ! -z "$2" ]; then
sh /usr/share/openclash/openclash_fake_block.sh
/usr/share/openclash/openclash_fake_block.sh
elif [ ! -z "$(grep "config servers" /etc/config/openclash)" ] && [ -z "$(grep -F '#Server Nodes' /etc/openclash/dnsmasq_fake_block.conf)" ]; then
/usr/share/openclash/openclash_fake_block.sh
fi
mkdir -p /tmp/dnsmasq.d
ln -s /etc/openclash/dnsmasq_fake_block.conf /tmp/dnsmasq.d/dnsmasq_openclash.conf
@ -548,14 +553,14 @@ stop()
#ipv4
iptables -t nat -F openclash >/dev/null 2>&1
nat_clashs=$(iptables -nvL PREROUTING -t nat |sed 1,2d |sed -n '/openclash/=' |sort -r)
nat_clashs=$(iptables -nvL PREROUTING -t nat |sed 1,2d |sed -n '/openclash/=' |sort -rn)
for nat_clash in $nat_clashs; do
iptables -t nat -D PREROUTING "$nat_clash" >/dev/null 2>&1
done
iptables -t nat -X openclash >/dev/null 2>&1
out_lines=$(iptables -nvL OUTPUT -t nat |sed 1,2d |sed -n '/198.18.0.0\/16/=' 2>/dev/null |sort -r)
out_lines=$(iptables -nvL OUTPUT -t nat |sed 1,2d |sed -n '/198.18.0.0\/16/=' 2>/dev/null |sort -rn)
for out_line in $out_lines; do
iptables -t nat -D OUTPUT "$out_line" >/dev/null 2>&1
done

File diff suppressed because one or more lines are too long

View File

@ -17,6 +17,7 @@ function index()
entry({"admin", "services", "openclash", "update_ma"},call("action_update_ma"))
entry({"admin", "services", "openclash", "opupdate"},call("action_opupdate"))
entry({"admin", "services", "openclash", "coreupdate"},call("action_coreupdate"))
entry({"admin", "services", "openclash", "ping"}, call("act_ping"))
entry({"admin", "services", "openclash", "settings"},cbi("openclash/settings"),_("Global Settings"), 30).leaf = true
entry({"admin", "services", "openclash", "servers"},cbi("openclash/servers"),_("Severs&Groups"), 40).leaf = true
entry({"admin", "services", "openclash", "servers-config"},cbi("openclash/servers-config"), nil).leaf = true
@ -280,4 +281,12 @@ function action_coreupdate()
luci.http.write_json({
coreup = coreup();
})
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

View File

@ -6,6 +6,10 @@ local fs = require "nixio.fs"
local sys = require "luci.sys"
local sid = arg[1]
font_red = [[<font color="red">]]
font_off = [[</font>]]
bold_on = [[<strong>]]
bold_off = [[</strong>]]
m = Map(openclash, translate("Edit Group"))
m.pageaction = false
@ -46,7 +50,7 @@ o:depends("type", "fallback")
o:depends("type", "load-balance")
o = s:option(DynamicList, "other_group", translate("Other Group"))
o.description = translate("The added Proxy Groups Must Exist")
o.description = font_red..bold_on..translate("The Added Proxy Groups Must Exist Except 'DIRECT' & 'REJECT'")..bold_off..font_off
uci:foreach("openclash", "groups",
function(s)
if s.name ~= "" and s.name ~= nil and s.name ~= m.uci:get(openclash, sid, "name") then
@ -69,7 +73,7 @@ o.inputstyle = "apply"
o.write = function()
m.uci:commit(openclash)
sys.call("/usr/share/openclash/yml_groups_name_ch.sh start")
luci.http.redirect(luci.dispatcher.build_url("admin", "services", "openclash", "servers"))
luci.http.redirect(m.redirect)
end
o = a:option(Button,"Back")
@ -77,7 +81,7 @@ o.inputtitle = translate("Back Configurations")
o.inputstyle = "reset"
o.write = function()
m.uci:revert(openclash)
luci.http.redirect(luci.dispatcher.build_url("admin", "services", "openclash", "servers"))
luci.http.redirect(m.redirect)
end
return m

View File

@ -7,6 +7,11 @@ local sys = require "luci.sys"
local sid = arg[1]
local uuid = luci.sys.exec("cat /proc/sys/kernel/random/uuid")
font_red = [[<font color="red">]]
font_off = [[</font>]]
bold_on = [[<strong>]]
bold_off = [[</strong>]]
local encrypt_methods_ss = {
-- stream
@ -196,7 +201,7 @@ o:depends("type", "socks5")
o:depends("type", "http")
o = s:option(DynamicList, "groups", translate("Proxy Group"))
o.description = translate("No Need Set when Config Create, The added Proxy Groups Must Exist")
o.description = font_red..bold_on..translate("No Need Set when Config Create, The added Proxy Groups Must Exist")..bold_off..font_off
o.rmempty = true
m.uci:foreach("openclash", "groups",
function(s)
@ -213,6 +218,7 @@ o.inputtitle = translate("Commit Configurations")
o.inputstyle = "apply"
o.write = function()
m.uci:commit(openclash)
sys.call("sh /usr/share/openclash/cfg_servers_address_fake_block.sh &")
luci.http.redirect(m.redirect)
end

View File

@ -15,7 +15,7 @@ s = m:section(TypedSection, "openclash")
s.anonymous = true
o = s:option(ListValue, "create_config", translate("Create Config"))
o.description = translate("Create Config By One-Click Only Need Proxys")
o.description = font_red .. bold_on .. translate("Create Config By One-Click Only Need Proxys") .. bold_off .. font_off
o:value("0", translate("Disable"))
o:value("1", translate("Enable"))
o.default=0
@ -28,7 +28,7 @@ o:value("ConnersHua", translate("ConnersHua Rules"))
o:value("ConnersHua_return", translate("ConnersHua Return Rules"))
o = s:option(ListValue, "servers_update", translate("Keep Settings"))
o.description = font_red .. bold_on .. translate("Only Update Servers Below When Subscription").. bold_off .. font_off
o.description = font_red .. bold_on .. translate("Only Update Servers Below When Subscription") .. bold_off .. font_off
o:value("0", translate("Disable"))
o:value("1", translate("Enable"))
o.default=0
@ -110,6 +110,10 @@ function o.cfgvalue(...)
return Value.cfgvalue(...) or translate("None")
end
o = s:option(DummyValue,"server",translate("Ping Latency"))
o.template="openclash/ping"
o.width="10%"
local tt = {
{Delete_Unused_Servers, Delete_Severs, Delete_Groups}
}
@ -180,4 +184,5 @@ o.write = function()
luci.http.redirect(luci.dispatcher.build_url("admin", "services", "openclash"))
end
m:append(Template("openclash/server_list"))
return m

View File

@ -28,7 +28,7 @@ s:tab("version_update", translate("Version Update"))
---- General Settings
local cpu_model=SYS.exec("opkg status libc 2>/dev/null |grep 'Architecture' |awk -F ': ' '{print $2}' 2>/dev/null")
o = s:taboption("settings", ListValue, "core_version", translate("Chose to Download"))
o = s:taboption("settings", ListValue, "core_version", font_red..bold_on..translate("Chose to Download")..bold_off..font_off)
o.description = translate("CPU Model")..': '..font_green..bold_on..cpu_model..bold_off..font_off..', '..translate("Select Based On Your CPU Model For Core Update, Wrong Version Will Not Work")
o:value("linux-386")
o:value("linux-amd64", translate("linux-amd64(x86-64)"))
@ -45,26 +45,26 @@ o:value("linux-mipsle-hardfloat")
o:value("0", translate("Not Set"))
o.default=0
o = s:taboption("settings", ListValue, "en_mode", translate("Select Mode"))
o = s:taboption("settings", ListValue, "en_mode", font_red..bold_on..translate("Select Mode")..bold_off..font_off)
o.description = translate("Select Mode For OpenClash Work, Network Error Try Flush DNS Cache")
o:value("redir-host", translate("redir-host"))
o:value("fake-ip", translate("fake-ip"))
o.default = "redir-host"
o = s:taboption("settings", ListValue, "proxy_mode", translate("Proxy Mode"))
o = s:taboption("settings", ListValue, "proxy_mode", font_red..bold_on..translate("Proxy Mode")..bold_off..font_off)
o.description = translate("Select Proxy Mode")
o:value("Rule", translate("Rule Mode"))
o:value("Global", translate("Global Mode"))
o:value("Direct", translate("Direct Mode"))
o:value("Rule", translate("Rule Proxy Mode"))
o:value("Global", translate("Global Proxy Mode"))
o:value("Direct", translate("Direct Proxy Mode"))
o.default = "Rule"
o = s:taboption("settings", ListValue, "log_level", translate("Log Level"))
o.description = translate("Select Core's Log Level")
o:value("info")
o:value("warning")
o:value("error")
o:value("debug")
o:value("silent")
o:value("info", translate("Info Mode"))
o:value("warning", translate("Warning Mode"))
o:value("error", translate("Error Mode"))
o:value("debug", translate("Debug Mode"))
o:value("silent", translate("Silent Mode"))
o.default = "silent"
o = s:taboption("settings", Value, "proxy_port")
@ -89,13 +89,13 @@ o.rmempty = false
o.description = translate("Please Make Sure Ports Available")
---- DNS Settings
o = s:taboption("dns", ListValue, "enable_redirect_dns", translate("Redirect Local DNS Setting"))
o = s:taboption("dns", ListValue, "enable_redirect_dns", font_red..bold_on..translate("Redirect Local DNS Setting")..bold_off..font_off)
o.description = translate("Set Local DNS Redirect")
o:value("0", translate("Disable"))
o:value("1", translate("Enable"))
o.default = 1
o = s:taboption("dns", ListValue, "enable_custom_dns", translate("Custom DNS Setting"))
o = s:taboption("dns", ListValue, "enable_custom_dns", font_red..bold_on..translate("Custom DNS Setting")..bold_off..font_off)
o.description = font_red..bold_on..translate("Set OpenClash Upstream DNS Resolve Server")..bold_off..font_off
o:value("0", translate("Disable"))
o:value("1", translate("Enable"))
@ -133,7 +133,7 @@ o.inputstyle = "reload"
o.write = function()
m.uci:set("openclash", "config", "enable", 1)
m.uci:commit("openclash")
SYS.call("sh /usr/share/openclash/openclash_fake_block.sh && /etc/init.d/openclash restart >/dev/null 2>&1 &")
SYS.call("/usr/share/openclash/openclash_fake_block.sh >/dev/null 2>&1 && /etc/init.d/openclash restart >/dev/null 2>&1 &")
HTTP.redirect(DISP.build_url("admin", "services", "openclash"))
end
@ -156,7 +156,7 @@ function custom_fake_black.write(self, section, value)
end
---- Rules Settings
o = s:taboption("rules", ListValue, "enable_custom_clash_rules", translate("Custom Clash Rules"))
o = s:taboption("rules", ListValue, "enable_custom_clash_rules", font_red..bold_on..translate("Custom Clash Rules")..bold_off..font_off)
o.description = translate("Use Custom Rules")
o:value("0", translate("Disable"))
o:value("1", translate("Enable"))
@ -232,7 +232,7 @@ o:value("0", translate("Disable"))
o:value("1", translate("Enable"))
o.default=0
o = s:taboption("config_update", DynamicList, "servers_update_keyword", translate("Keyword Matching Setting"))
o = s:taboption("config_update", DynamicList, "servers_update_keyword", font_red..bold_on..translate("Keyword Matching Setting")..bold_off..font_off)
o.description = font_red..bold_on..translate("Only Keep Servers which Matching Keywords, eg: hk or tw&bgp")..bold_off..font_off
o.rmempty = true
@ -256,9 +256,9 @@ o.rmempty = false
o = s:taboption("config_update", ListValue, "config_update_url_type", translate("Update Url Type"))
o:value("clash", translate("Clash"))
o:value("v2ray", translate("V2ray"))
o:value("v2rayn", translate("V2rayN"))
o:value("surge", translate("Surge"))
o.description = translate("Power By fndroidUse Other Rules If V2ray Subcription")
o.description = translate("Power By fndroidUse Other Rules If V2rayN Subcription")
o.default="clash"
o = s:taboption("config_update", Value, "subscribe_url")

View File

@ -1,8 +1,10 @@
<fieldset class="cbi-section">
<table>
<tr><td width="25%"> Clash 核心发布: </td><td width="25%" align="left" id="_binupdate"><%:Collecting data...%></td><td width="25%"> OpenClash 客户端发布: </td><td width="25%" align="left" id="_openupdate"><%:Collecting data...%></td></tr>
<tr><td width="25%"> Clash 核心开发: Dreamacro </td><td width="25%" align="left" id="_Dreamacro"><%:Collecting data...%></td><td width="25%"> OpenClash 客户端开发: vernesong </td><td width="25%" align="left" id="_vernesong"><%:Collecting data...%></td></tr>
<tr><td width="25%"> Luci For Clash: frainzy1477 </td><td width="25%" align="left" id="_frainzy1477"><%:Collecting data...%></td><td width="25%"> MyIP: SukkaW </td><td width="25%" align="left" id="_SukkaW"><%:Collecting data...%></td></tr>
<tr><td width="25%"> Clash 核心: Dreamacro </td><td width="25%" align="left" id="_Dreamacro"><%:Collecting data...%></td><td width="25%"> OpenClash 客户端: vernesong </td><td width="25%" align="left" id="_vernesong"><%:Collecting data...%></td></tr>
<tr><td width="25%"> Clash 客户端: frainzy1477 </td><td width="25%" align="left" id="_frainzy1477"><%:Collecting data...%></td><td width="25%"> MyIP: SukkaW </td><td width="25%" align="left" id="_SukkaW"><%:Collecting data...%></td></tr>
<tr><td width="25%"> 第三方规则: lhie1 </td><td width="25%" align="left" id="_lhie1_dev"><%:Collecting data...%></td><td width="25%"> 第三方规则: ConnersHua </td><td width="25%" align="left" id="_ConnersHua_dev"><%:Collecting data...%></td></tr>
<tr><td width="25%"> Yacd 控制面板: haishanh </td><td width="25%" align="left" id="_haishanh"><%:Collecting data...%></td><td width="25%"> GEOIP 数据库MaxMind </td><td width="25%" align="left" id="_MaxMind"><%:Collecting data...%></td></tr>
</table>
</fieldset>
@ -11,6 +13,10 @@
var vernesong = document.getElementById('_vernesong');
var frainzy1477 = document.getElementById('_frainzy1477');
var SukkaW = document.getElementById('_SukkaW');
var lhie1_dev = document.getElementById('_lhie1_dev');
var ConnersHua_dev = document.getElementById('_ConnersHua_dev');
var MaxMind = document.getElementById('_MaxMind');
var haishanh = document.getElementById('_haishanh');
var binupdate = document.getElementById('_binupdate');
var openupdate = document.getElementById('_openupdate');
var github = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABiCAMAAACRZYZ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3FpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1Y2NjZGI4My1kMGJiLWExNDUtYmYyNy03ZmRkMTJmY2EwYTQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RENEOUYxRjE5RjJDMTFFOUEwNjVGMTc0MUI4MUNFQzgiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RENEOUYxRjA5RjJDMTFFOUEwNjVGMTc0MUI4MUNFQzgiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjVjY2NkYjgzLWQwYmItYTE0NS1iZjI3LTdmZGQxMmZjYTBhNCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1Y2NjZGI4My1kMGJiLWExNDUtYmYyNy03ZmRkMTJmY2EwYTQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4s6CIvAAACdlBMVEX+/v78/PzExMT9/f35+fn19fX4+Pj6+vrX19fy8vL7+/sICAjr6+vq6urd3d3x8fFDQ0Obm5vw8PDc3Nz29vYoKCi5ubnn5+cPDw/h4eHY2NiOjo6Dg4NLS0vs7OxFRUXv7+/t7e3u7u4vLy8JCQkQEBANDQ0DAwMGBgYEBARpaWnBwcGvr6/39/fQ0NDNzc3IyMh8fHy7u7uEhISjo6MrKytgYGCGhoZ6enqZmZnS0tI0NDShoaGxsbFlZWUgICAWFhYlJSVMTEwsLCwKCgo6OjqUlJQcHBwaGhr09PQpKSldXV2fn5+4uLiQkJACAgLo6Ojp6elGRkba2tqWlpYBAQHZ2dmnp6fFxcWSkpKurq5KSkqysrI9PT0FBQWYmJhnZ2e9vb1zc3NERETz8/N4eHh+fn5mZmbHx8eIiIiKioq1tbVhYWGoqKhXV1cTExMeHh6srKxqamqLi4ukpKTb29sqKirCwsKmpqbOzs5aWlo8PDyMjIzV1dWdnZ2zs7OFhYXl5eUXFxd0dHQHBweenp7W1tZ9fX0iIiLg4OAtLS2NjY3AwMCgoKCJiYmwsLCPj4/U1NRWVlYRERFPT0+Hh4dsbGxvb2/Pz8/Dw8MdHR0uLi5NTU2+vr4fHx/R0dE5OTm/v7+ioqJQUFDGxsbJyckUFBTKyso2NjZRUVEZGRmtra3i4uImJiZSUlLe3t6CgoJUVFRtbW3Ly8sYGBjMzMwwMDDT09NJSUkkJCRISEi2trZkZGRBQUEMDAy6uro/Pz9/f39ra2sODg4nJycSEhJ7e3s7OzsVFRVycnIyMjJcXFxbW1t2dnYbGxv///8AAAD///9H5/bkAAAA0nRSTlP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wD8iKrvAAAFUElEQVR42qya90PbOBTHZRKTQQgBMgoByipll00H0E1bRhfr2l6v+7r3uLbXvXvd19t777333svqf3SpTRzbT4ptyd/fkJ7ex9iK9PSe0B2L8lxeVx//qKO4PdJ3qHhXbXzlloOi1bHIilFJxs2X92CgT1adimY7Awnc2JyFqare0RbjhbhfWVuDTTT54RaRAyKunI0taVZbOSNk44k/sGVV7y9jgKDBSdiW7tsp2IWMhrBtffaxLYjnCmbS1LB1yOm5mFFnCq1C7sUcyrUEQfdjLvX4zSHuVZhTh3LMIA2/YG5VlaWHlE/ATuhyOognCzujHDpE+NIhBv6ugQaR5mPHdMZFgWzCDupNMmQQO6pcEiSgt/nzrM2XF9r0r74hCCFot87iSUmS3Ld2WSXU3nInBjTpG/0AslVvIEiyShdbQUxbpFgL+uYdRshSff8bUlKebjPEmEc1Xq7vmW6ALNB3D0gpuZuVtpn/nHq7zhsMBt8vzOgu6uhTWvtFjWm9YU9GOsjXhqfLl7QqmPve4OkGJOmVGVvXE5mua1pmcNOrhbiMcY9PYlKm8VW6NZBc0MkG8Rv9XExBwAPgTDaIABz5VMhh7NB/AiEfJCGuSvgADn0T5avchUyBXV42yFLoqXscMgd2tbJB2qCnhxSISPoZCywMRPKULUNIYVYNG2QhwdViGfIgocfP9rpcBFcLpATER+gYkhgVIDiLJSCvw+ZnJGath962JyDXsVO/d8oLW5uAwE9yVuLQMeBuD0JhGM8FeCBhwiRG+aBtgsQleJadgurgcYkPcgI4vIHGIJgPEgQOr6Mf4Svkg5QCh/3oqFPLPH25D6HVoC3MBxEmGx0+jS45tSuqEPCb+A/NchriP2d0uBvB89siTsgSo8OfURU8ijn94avQJKencA5cQgib2Tt8kGyYDUMR0HaVD3IcOJyJJoK2Ij7INeBwBtoH2tr5IMXAYTEiHKU8PAzXCPD3GDoJIYU8EEIQuQYdgY0dPBBCIiuKYk6Fj/TIy4tchKivix1yDyHNKqI7RwlsxAyphs7mJ0KilwiQ86yMBwjOWhOQUVIozrgS+0m+mhIQoYrQsYTthf1KchW+G9VvJuF/YKCgOSRPG+Sjw6fEZMYM2/NYWE10FJUhrnnknEmJPUYJJX+ZqZwZt9KSPzYWMc80WpJq/GCqyYh89XeF1qLF4onL0zJCyyHlJ5MF6p6yLDFA1KV6egOmMwAFhul5qtlqRuLzZNP38ihxg9bsdq83jzoJBN+Fm2mLOXUqRFJLGQPKczcbTOctf6QREi5MDFWaJNwSp1I1S5Q6pLxWKo//0Gid5SKsuOYFqVe1STXNTi9T0IiVsNJlxuiTtJA8TY/8zIYD2EXyJxkwgRToc5CtqZ5v5fH9OusyMkRMz/jGkOjUxsTKHv+XtihKm8dPpS2luox54QLNR1amf48mPKNN4X3pIEdgGn0byHYNfaH8+fuBBhokNw3jcUKuXmpXuyvU4Lnx6vFYuvxElM54SyJVHdwpgzyr62IGHeIj109Sn+USR3BiSKGDclMqcfAT73+yl14425naGEUuyLF0JcB4yu5aHjvkt/TFzBXaROj6w1u83iHvs80v2oN0mpVlD5BGFdmCPGpeYI7aiShJkJNWSuWF52ClzQbkCWv1+DwQpK2xDAmVWL6+0GUYOmwVEkc2LmIE9SWwFdYgFQft3fZAe7UxwhVLkHrB9uWYnHiN+RTWnEc6y5iu+WwcTkbJtTTI9nGDyv0FzBeWysdekH2M0iBKor+iq5zr6hVq7Iw8t42+eDW9G5n6vGDi5H8BBgCTacDsFxo/3wAAAABJRU5ErkJggg=="
@ -18,6 +24,10 @@
vernesong.innerHTML = '<img src="https://avatars2.githubusercontent.com/u/42875168?s=460&v=4" alt="vernesong" width="30" onerror="return imgerrorfun(this,this.src)" onclick="return vernesong_rediret()" />';
frainzy1477.innerHTML = '<img src="https://avatars2.githubusercontent.com/u/49537471?s=460&v=4" alt="frainzy1477" width="30" onerror="return imgerrorfun(this,this.src)" onclick="return frainzy1477_rediret()" />';
SukkaW.innerHTML = '<img src="https://avatars0.githubusercontent.com/u/40715044?s=460&v=4" alt="SukkaW" width="30" onerror="return imgerrorfun(this,this.src)" onclick="return SukkaW_rediret()" />';
lhie1_dev.innerHTML = '<img src="https://avatars0.githubusercontent.com/u/11873197?s=460&v=4" alt="lhie1" width="30" onerror="return imgerrorfun(this,this.src)" onclick="return lhie1_rediret()" />';
ConnersHua_dev.innerHTML = '<img src="https://avatars1.githubusercontent.com/u/11730838?s=460&v=4" alt="ConnersHua" width="30" onerror="return imgerrorfun(this,this.src)" onclick="return ConnersHua_rediret()" />';
MaxMind.innerHTML = '<img src="https://avatars3.githubusercontent.com/u/1181834?s=200&v=4" alt="MaxMind" width="30" onerror="return imgerrorfun(this,this.src)" onclick="return MaxMind_rediret()" />';
haishanh.innerHTML = '<img src="https://avatars1.githubusercontent.com/u/1166872?s=460&v=4" alt="haishanh" width="30" onerror="return imgerrorfun(this,this.src)" onclick="return haishanh_rediret()" />';
binupdate.innerHTML = '<img src="'+github+'" alt="binupdate" width="30" height="30" onclick="return binupdate_rediret()" />';
openupdate.innerHTML = '<img src="'+github+'" alt="openupdate" width="30" height="30" onclick="return openupdate_rediret()" />';
@ -41,15 +51,35 @@
url4='https://github.com/SukkaW';
window.open(url4);
}
function lhie1_rediret()
{
url5='https://github.com/lhie1';
window.open(url5);
}
function ConnersHua_rediret()
{
url6='https://github.com/ConnersHua';
window.open(url6);
}
function binupdate_rediret()
{
url5='https://github.com/vernesong/OpenClash/releases/tag/Clash';
window.open(url5);
url7='https://github.com/vernesong/OpenClash/releases/tag/Clash';
window.open(url7);
}
function openupdate_rediret()
{
url6='https://github.com/vernesong/OpenClash/releases';
window.open(url6);
url8='https://github.com/vernesong/OpenClash/releases';
window.open(url8);
}
function MaxMind_rediret()
{
url9='https://www.maxmind.com/en/geoip2-country-database';
window.open(url9);
}
function haishanh_rediret()
{
url10='https://github.com/haishanh';
window.open(url10);
}
function imgerrorfun(imgobj,imgSrc){

View File

@ -139,7 +139,7 @@
<span class="ip-title">IPIP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;国内:</span><span class="ip-result" id="ip-ipipnet"></span> <span class="ip-geo" id="ip-ipipnet-geo"></span>
</p>
<p>
<span class="ip-title">太平洋&nbsp;&nbsp;国内:</span><span class="ip-result" id="ip-pcol"></span> <span class="ip-geo" id="ip-pcol-ipip"></span>
<span class="ip-title">IP.PC&nbsp;&nbsp;&nbsp;&nbsp;国内:</span><span class="ip-result" id="ip-pcol"></span> <span class="ip-geo" id="ip-pcol-ipip"></span>
</p>
<p>
<span class="ip-title">IP.SB&nbsp;&nbsp;&nbsp;&nbsp;海外:</span><span class="ip-result" id="ip-ipsb"></span> <span class="ip-geo" id="ip-ipsb-geo"></span>
@ -222,9 +222,8 @@
},
getWebrtcIP: () => {
window.RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
let pc = new RTCPeerConnection({ iceServers: [] }),
let pc = new RTCPeerConnection({ iceServers: [] }),
noop = () => { };
pc.createDataChannel('');
pc.createOffer(pc.setLocalDescription.bind(pc), noop);
pc.onicecandidate = (ice) => {
@ -336,7 +335,7 @@
IP.getIpifyIP();
IP.getWebrtcIP();
setTimeout("myip_Load()",1000*20);
setTimeout("myip_Load()",1000*10);
}
</script>

View File

@ -0,0 +1,3 @@
<%+cbi/valueheader%>
<span class="pingtime" hint="<%=self:cfgvalue(section)%>">-- ms</span>
<%+cbi/valuefooter%>

View File

@ -0,0 +1,32 @@
<%#
Copyright 2018-2019 Lienol <lawlienol@gmail.com>
Licensed to the public under the Apache License 2.0.
-%>
<%
local dsp = require "luci.dispatcher"
-%>
<script type="text/javascript">
//<![CDATA[
var pings = document.getElementsByClassName('pingtime');
for(var i = 0; i < pings.length; i++) {
XHR.get('<%=dsp.build_url("admin", "services", "openclash", "ping")%>', {
index: i,
domain: pings[i].getAttribute("hint")
},
function(x, result) {
pings[result.index].innerHTML = (result.ping ? "<b><font color=green>"+result.ping+"</font></b> ms" : "<b><font color=red><%: 检测失败 %></font></b>");
}
);
XHR.poll(10,'<%=dsp.build_url("admin", "services", "openclash", "ping")%>',{
index: i,
domain: pings[i].getAttribute("hint")
},
function(x, result) {
pings[result.index].innerHTML = (result.ping ? "<b><font color=green>"+result.ping+"</font></b> ms" : "<b><font color=red><%: 检测失败 %></font></b>");
}
);
}
//]]>
</script>

View File

@ -114,7 +114,7 @@
function telegrampage()
{
url6='https://telegram.clash.dev';
url6='https://t.me/joinchat/D4mVX0n-n5mOK6YO_W3_Og';
window.open(url6);
}
@ -145,9 +145,11 @@
function clashversion_error()
{
clashversion.innerHTML = '<img id="currenntver" src="'+status.currentversion+'" alt="currentversion" width="181px" onclick="return go_update()">';
XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "currentversion")%>', status.currentversion, function(x, status) {
if ( x && x.status == 200 ) {
clashversion.innerHTML = '<img id="currenntver" src="'+status.currentversion+'" alt="currentversion" width="181px" onclick="return go_update()">';
}
});
}
function imgerrorfuns(imgobj,imgSrc){

View File

@ -0,0 +1,13 @@
#!/bin/sh
status=$(ps|grep -c /usr/share/openclash/cfg_servers_address_fake_block.sh)
[ "$status" -gt "3" ] && exit 0
en_mode=$(uci get openclash.config.en_mode 2>/dev/null)
if pidof clash >/dev/null && [ "$en_mode" = "fake-ip" ]; then
rm -rf /tmp/dnsmasq.d/dnsmasq_openclash.conf >/dev/null 2>&1
/usr/share/openclash/openclash_fake_block.sh
mkdir -p /tmp/dnsmasq.d
ln -s /etc/openclash/dnsmasq_fake_block.conf /tmp/dnsmasq.d/dnsmasq_openclash.conf >/dev/null 2>&1
/etc/init.d/dnsmasq restart >/dev/null 2>&1
fi

View File

@ -12,11 +12,14 @@ subscribe_url=$(uci get openclash.config.subscribe_url 2>/dev/null)
en_mode=$(uci get openclash.config.en_mode 2>/dev/null)
servers_update=$(uci get openclash.config.servers_update 2>/dev/null)
servers_update_keyword=$(uci get openclash.config.servers_update_keyword 2>/dev/null)
config_dawnload()
dns_port=$(uci get openclash.config.dns_port 2>/dev/null)
enable_redirect_dns=$(uci get openclash.config.enable_redirect_dns 2>/dev/null)
disable_masq_cache=$(uci get openclash.config.disable_masq_cache 2>/dev/null)
config_download()
{
if [ "$URL_TYPE" == "V2ray" ]; then
echo "开始下载v2ray配置文件..." >$START_LOG
if [ "$URL_TYPE" == "v2rayn" ]; then
echo "开始下载V2rayN配置文件..." >$START_LOG
subscribe_url=`echo $subscribe_url |sed 's/{/%7B/g;s/}/%7D/g;s/:/%3A/g;s/\"/%22/g;s/,/%2C/g;s/?/%3F/g;s/=/%3D/g;s/&/%26/g;s/\//%2F/g'`
wget-ssl --no-check-certificate --quiet --timeout=10 --tries=2 https://tgbot.lbyczf.com/v2rayn2clash?url="$subscribe_url" -O /tmp/config.yaml
elif [ "$URL_TYPE" == "surge" ]; then
@ -33,6 +36,7 @@ config_cus_up()
{
if [ "$servers_update" -eq "1" ] || [ ! -z "$servers_update_keyword" ]; then
echo "配置文件替换成功,开始挑选节点..." >$START_LOG
echo "${LOGTIME} Config Update Successful" >>$LOG_FILE
uci set openclash.config.servers_if_update=1
uci commit openclash
/usr/share/openclash/yml_groups_get.sh
@ -59,6 +63,7 @@ config_su_check()
else
echo "配置文件没有任何更新,停止继续操作..." >$START_LOG
rm -rf /tmp/config.yaml
change_dns
echo "${LOGTIME} Updated Config No Change, Do Nothing" >>$LOG_FILE
sleep 5
echo "" >$START_LOG
@ -80,34 +85,53 @@ config_error()
echo "" >$START_LOG
}
config_dawnload
change_dns()
{
if pidof clash >/dev/null; then
if [ "$enable_redirect_dns" -ne "0" ]; then
uci del dhcp.@dnsmasq[-1].server >/dev/null 2>&1
uci add_list dhcp.@dnsmasq[0].server=127.0.0.1#"$dns_port"
uci delete dhcp.@dnsmasq[0].resolvfile
uci set dhcp.@dnsmasq[0].noresolv=1
[ "$disable_masq_cache" -eq "1" ] && {
uci set dhcp.@dnsmasq[0].cachesize=0
}
uci commit dhcp
/etc/init.d/dnsmasq restart >/dev/null 2>&1
fi
nohup /usr/share/openclash/openclash_watchdog.sh &
fi
}
config_download
if [ "$?" -eq "0" ] && [ "$(ls -l /tmp/config.yaml |awk '{print int($5/1024)}')" -ne 0 ]; then
config_su_check
else
if pidof clash >/dev/null; then
echo "配置文件下载失败,尝试不使用代理下载配置文件..." >$START_LOG
if [ "$en_mode" = "fake-ip"]; then
resolve_sub_ips=$(nslookup "$subscribe_url" 114.114.114.114 |grep Address |awk -F ': ' '{print $2}')
else
resolve_sub_ips=$(nslookup "$subscribe_url" 127.0.0.1 |grep Address |awk -F ': ' '{print $2}')
fi
for resolve_sub_ip in $resolve_sub_ips; do
iptables -t nat -I openclash -d "$resolve_sub_ip" -j RETURN >/dev/null 2>&1
watchdog_pids=$(ps |grep openclash_watchdog.sh |grep -v grep |awk '{print $1}' 2>/dev/null)
for watchdog_pid in $watchdog_pids; do
kill -9 "$watchdog_pid" >/dev/null 2>&1
done
uci del_list dhcp.@dnsmasq[0].server=127.0.0.1#"$dns_port" >/dev/null 2>&1
uci set dhcp.@dnsmasq[0].resolvfile=/tmp/resolv.conf.auto
uci set dhcp.@dnsmasq[0].noresolv=0
uci delete dhcp.@dnsmasq[0].cachesize
uci commit dhcp
/etc/init.d/dnsmasq restart >/dev/null 2>&1
sleep 3
config_dawnload
config_download
if [ "$?" -eq "0" ] && [ "$(ls -l /tmp/config.yaml |awk '{print int($5/1024)}')" -ne 0 ]; then
config_su_check
else
change_dns
config_error
fi
for resolve_sub_ip in $resolve_sub_ips; do
iptables -t nat -D openclash -d "$resolve_sub_ip" -j RETURN >/dev/null 2>&1
done
else
config_error
fi

View File

@ -1,5 +1,8 @@
#! /bin/sh
echo "设置Fake-IP黑名单..." >$START_LOG
#!/bin/bash /etc/rc.common
START_LOG="/tmp/openclash_start.log"
echo "正在设置Fake-IP黑名单..." >$START_LOG
direct_dns=$(uci get openclash.config.direct_dns 2>/dev/null)
[ -z "$direct_dns" ] && {
direct_dns="114.114.114.114"
@ -11,3 +14,27 @@ do
echo "server=/$i/$direct_dns" >>/etc/openclash/dnsmasq_fake_block.conf
fi
done
cfg_server_address()
{
local section="$1"
config_get "server" "$section" "server" ""
IFIP=$(echo $server |grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$")
if [ -z "$IFIP" ] && [ ! -z "$server" ]; then
echo "server=/$server/$direct_dns" >>/etc/openclash/dnsmasq_fake_block.conf
noip="false"
else
return
fi
}
#Fake下正确检测节点延迟
noip="true"
echo "#Server Nodes" >>/etc/openclash/dnsmasq_fake_block.conf
config_load "openclash"
config_foreach cfg_server_address "servers"
[ "$noip" = "true" ] && {
sed -i '/#Server Nodes/d' /etc/openclash/dnsmasq_fake_block.conf 2>/dev/null
}
echo "" >$START_LOG

View File

@ -61,10 +61,10 @@
fi
if [ -z "$(grep '^mode: $13' "$7")" ]; then
if [ ! -z "$(grep "^ \{0,\}^mode:" "$7")" ]; then
sed -i "/^ \{0,\}^mode:/c\^mode: ${13}" "$7"
if [ ! -z "$(grep "^ \{0,\}mode:" "$7")" ]; then
sed -i "/^ \{0,\}mode:/c\mode: ${13}" "$7"
else
sed -i "/^dns:/i\^mode: ${13}" "$7"
sed -i "/^dns:/i\mode: ${13}" "$7"
fi
fi

View File

@ -112,9 +112,9 @@ do
#节点存在时获取节点编号
if [ "$servers_if_update" = "1" ]; then
server_num=$(grep "$server_name$" "$match_servers" |awk -F '.' '{print $1}')
server_num=$(grep -Fw "$server_name" "$match_servers" |awk -F '.' '{print $1}')
if [ "$servers_update" -eq "1" ] && [ ! -z "$server_num" ]; then
sed -i "/${server_name}$/c\#match#" "$match_servers" 2>/dev/null
sed -i "/^${server_num}\./c\#match#" "$match_servers" 2>/dev/null
elif [ ! -z "$servers_update_keyword" ]; then #匹配关键字订阅节点
match="false"
config_load "openclash"
@ -123,9 +123,6 @@ do
echo "跳过【$server_name】服务器节点..." >$START_LOG
continue
fi
elif [ "$servers_update" -eq "1" ]; then
echo "跳过【$server_name】服务器节点..." >$START_LOG
continue
fi
fi
#type
@ -147,7 +144,7 @@ do
#obfs:
obfs="$(cfg_get "obfs:" "$single_server")"
#psk:
obfs="$(cfg_get "psk:" "$single_server")"
psk="$(cfg_get "psk:" "$single_server")"
#obfs-host:
obfs_host="$(cfg_get "obfs-host:" "$single_server")"
#mode:
@ -196,8 +193,8 @@ do
${uci_set}obfs="$obfs"
${uci_set}host="$obfs_host"
${uci_set}obfs_snell="$mode"
[ -z "$obfs" ] && [ "$server_type" != "snell" ] && ${uci_set}obfs="$mode"
[ -z "$mode" ] && [ "$server_type" != "snell" ] && ${uci_set}obfs="none"
[ -z "$obfs" ] && ${uci_set}obfs="$mode"
[ -z "$obfs" ] && [ -z "$mode" ] && ${uci_set}obfs="none"
[ -z "$mode" ] && ${uci_set}obfs_snell="none"
[ -z "$mode" ] && [ ! -z "$network" ] && ${uci_set}obfs_vmess="websocket"
[ -z "$mode" ] && [ -z "$network" ] && ${uci_set}obfs_vmess="none"
@ -231,7 +228,7 @@ do
uci_set="uci -q set $name.$uci_name_tmp."
uci_add="uci -q add_list $name.$uci_name_tmp."
if [ -z "$new_servers_group" ] && [ "$servers_if_update" = "1" ]; then
if [ -z "$new_servers_group" ] && [ "$servers_if_update" = "1" ] && [ "$servers_update" -eq "1" ]; then
${uci_set}enabled="0"
else
${uci_set}enabled="1"
@ -253,11 +250,14 @@ do
${uci_set}udp="$udp"
${uci_set}obfs="$obfs"
${uci_set}host="$obfs_host"
${uci_set}obfs_snell="$mode"
[ -z "$obfs" ] && ${uci_set}obfs="$mode"
[ -z "$mode" ] && ${uci_set}obfs="none"
[ -z "$obfs" ] && [ -z "$mode" ] && ${uci_set}obfs="none"
[ -z "$mode" ] && ${uci_set}obfs_snell="none"
[ -z "$mode" ] && [ ! -z "$network" ] && ${uci_set}obfs_vmess="websocket"
[ -z "$mode" ] && [ -z "$network" ] && ${uci_set}obfs_vmess="none"
[ -z "$obfs_host" ] && ${uci_set}host="$host"
${uci_set}psk="$psk"
${uci_set}tls="$tls"
${uci_set}skip_cert_verify="$verify"
${uci_set}path="$path"
@ -295,7 +295,6 @@ do
done
fi
fi
uci commit openclash
done
@ -303,23 +302,23 @@ done
if [ "$servers_update" -eq "1" ] && [ "$servers_if_update" = "1" ]; then
echo "删除订阅中已不存在的节点..." >$START_LOG
sed -i '/#match#/d' "$match_servers" 2>/dev/null
cat $match_servers |sort -r |while read line
do
if [ -z "$(echo "$line")" ]; then
cat $match_servers |awk -F '.' '{print $1}' |sort -rn |while read line
do
if [ -z "$line" ]; then
continue
fi
server_num=$(echo "$line" |awk -F '.' '{print $1}')
if [ "$(uci get openclash.@servers["$server_num"].manual)" = "0" ]; then
uci delete openclash.@servers["$server_num"] 2>/dev/null
if [ "$(uci get openclash.@servers["$line"].manual)" = "0" ]; then
uci delete openclash.@servers["$line"] 2>/dev/null
fi
done
fi
uci set openclash.config.servers_if_update=0
uci commit openclash
/usr/share/openclash/cfg_servers_address_fake_block.sh
echo "配置文件读取完成!" >$START_LOG
sleep 3
echo "" >$START_LOG
uci set openclash.config.servers_if_update=0
uci commit openclash
rm -rf /tmp/servers.yaml 2>/dev/null
rm -rf /tmp/yaml_proxy.yaml 2>/dev/null
rm -rf /tmp/group_*.yaml 2>/dev/null

View File

@ -270,6 +270,7 @@ uci set openclash.config.Domestic="Domestic"
uci set openclash.config.Others="Others"
[ "$config_auto_update" -eq 1 ] && {
uci set openclash.config.servers_update="1"
uci del openclash.config.new_servers_group >/dev/null 2>&1
uci add_list openclash.config.new_servers_group="Auto - UrlTest"
uci add_list openclash.config.new_servers_group="Proxy"
uci add_list openclash.config.new_servers_group="AsianTV"
@ -328,6 +329,7 @@ uci set openclash.config.Domestic="Domestic"
uci set openclash.config.Others="Others"
[ "$config_auto_update" -eq 1 ] && {
uci set openclash.config.servers_update="1"
uci del openclash.config.new_servers_group >/dev/null 2>&1
uci add_list openclash.config.new_servers_group="Auto - UrlTest"
uci add_list openclash.config.new_servers_group="Proxy"
uci add_list openclash.config.new_servers_group="AsianTV"
@ -363,6 +365,7 @@ uci set openclash.config.Proxy="Proxy"
uci set openclash.config.Others="Others"
[ "$config_auto_update" -eq 1 ] && {
uci set openclash.config.servers_update="1"
uci del openclash.config.new_servers_group >/dev/null 2>&1
uci add_list openclash.config.new_servers_group="Auto - UrlTest"
uci add_list openclash.config.new_servers_group="Proxy"
}

View File

@ -6,7 +6,7 @@ msgid "OpenClash"
msgstr "OpenClash"
msgid "A Clash Client For OpenWrt"
msgstr "一个运行在OpenWrt上的Clash客户端兼容Shadowsocks、Vmess等协议根据灵活的规则配置实现策略代理"
msgstr "一个运行在OpenWrt上的Clash客户端兼容Shadowsocks、Vmess、Snell等协议,根据灵活的规则配置实现策略代理"
msgid "Global Settings(Will Modify The Config File Or Subscribe According To The Settings On This Page)"
msgstr "全局设置(将按照本页设置自动修改配置文件和获取订阅)"
@ -87,7 +87,7 @@ msgid "Download Configurations"
msgstr "下载配置"
msgid "Select Mode"
msgstr "运行模式"
msgstr "*运行模式"
msgid "redir-host"
msgstr "Redir-Host兼容模式"
@ -99,28 +99,43 @@ msgid "Select Mode For OpenClash Work, Network Error Try Flush DNS Cache"
msgstr "选择运行模式在兼容模式下无法代理路由器自身流量如客户端的网络无法连接请尝试清除DNS缓存"
msgid "Proxy Mode"
msgstr "代理模式"
msgstr "*代理模式"
msgid "Select Proxy Mode"
msgstr "选择默认代理模式"
msgid "Rule Mode"
msgid "Rule Proxy Mode"
msgstr "Rule【策略代理】"
msgid "Global Mode"
msgid "Global Proxy Mode"
msgstr "Global【全局代理需前往控制面板手动指定节点】"
msgid "Direct Mode"
msgid "Direct Proxy Mode"
msgstr "Direct【全局直连】"
msgid "Log Level"
msgstr "日志等级"
msgid "Info Mode"
msgstr "Info【信息】"
msgid "Warning Mode"
msgstr "Warning【警告】"
msgid "Error Mode"
msgstr "Error【错误】"
msgid "Debug Mode"
msgstr "Debug【调试】"
msgid "Silent Mode"
msgstr "Silent【静默】"
msgid "Select Core's Log Level"
msgstr "选择内核日志的默认输出模式"
msgid "Redirect Local DNS Setting"
msgstr "本地DNS劫持"
msgstr "*本地DNS劫持"
msgid "Set Local DNS Redirect"
msgstr "默认启用将自动设置Dnsmasq的上游服务器如和其他插件冲突可停用但须将OpenClash作为冲突插件的唯一上游服务器"
@ -159,7 +174,7 @@ msgid "Specify DNS Server"
msgstr "Fake-IP模式黑名单DNS服务器"
msgid "Specify DNS Server For List, Only One IP Server Address Support"
msgstr "指定下方列表中域名的DNS服务器只支持填写一个IP地址,更改后点击下方按钮生效"
msgstr "指定下方列表中域名的DNS服务器只支持填写一个IP地址"
msgid "Domain Names In The List Do Not Return Fake-IP, One rule per line"
msgstr "每行请只填写一个域名列表中的域名在Fake-IP模式下查询DNS时将返回真实IP地址更改后点击上方按钮生效"
@ -199,7 +214,7 @@ msgstr "IPV6类型DNS解析"
msgid "Force Enable to Resolve ipv6 DNS Requests"
msgstr ""
"固件须配置好IPV6的NAT果您没有公网IPV6地址但开启了IPV6的DHCP服务客户端连接可能会出现异常"
"固件须配置好IPV6的NAT你不使用IPV6请关闭固件的相关服务避免客户端连接出现异常"
msgid "Rules Setting"
msgstr "规则设置(访问控制)"
@ -230,7 +245,7 @@ msgid "Keyword Matching Setting"
msgstr "筛选节点"
msgid "Only Keep Servers which Matching Keywords, eg: hk or tw&bgp"
msgstr "仅订阅名字与以上任意关键字匹配的节点,不区分大小写。格式示例:香港、台湾&bgp"
msgstr "仅订阅名字与以上任意一行关键字匹配的节点,不区分大小写,条件且请用(&)表示。格式示例:香港、台湾&bgp"
msgid "Please Make Sure Ports Available"
msgstr "请确保端口可用"
@ -241,8 +256,8 @@ msgstr "订阅地址"
msgid "Update Url Type"
msgstr "订阅地址类型"
msgid "Power By fndroidUse Other Rules If V2ray Subcription"
msgstr "API提供FndroidV2ray类型的订阅可配合第三方规则使用"
msgid "Power By fndroidUse Other Rules If V2rayN Subcription"
msgstr "API提供FndroidV2rayN类型的订阅可配合第三方规则使用"
msgid "Update Subcription"
msgstr "更新订阅配置"
@ -422,7 +437,7 @@ msgid "<New>"
msgstr "<可更新>"
msgid "Chose to Download"
msgstr "选择内核编译版本"
msgstr "*选择内核编译版本"
msgid "Select Based On Your CPU Model For Core Update, Wrong Version Will Not Work"
msgstr "请根据处理器架构选择以便下载、更新对应内核,错误的版本将不能正常运行"
@ -454,7 +469,7 @@ msgid "Load Config"
msgstr "读取配置"
msgid "Delete Unused Servers"
msgstr "删除未选中节点"
msgstr "删除未启用节点"
msgid "Delete Severs"
msgstr "清空服务器配置"
@ -478,7 +493,7 @@ msgid "New Servers Group"
msgstr "新节点默认策略组"
msgid "Set The New Subscribe Server's Default Proxy Groups"
msgstr "选择符合订阅要求的新节点的默认策略组"
msgstr "选择符合订阅要求的新节点的默认策略组(请勿重复添加)"
msgid "Choose Template For Create Config"
msgstr "选择配置文件模板"
@ -501,6 +516,9 @@ msgstr "服务器地址"
msgid "Server Port"
msgstr "服务器端口"
msgid "Ping Latency"
msgstr "服务器延迟"
msgid "Edit Server"
msgstr "编辑服务器配置"
@ -579,8 +597,8 @@ msgstr "负载均衡Load-Balance"
msgid "Other Group"
msgstr "包含其他策略组(请勿重复添加)"
msgid "The added Proxy Groups Must Exist"
msgstr "注意:修改配置文件前添加的策略组必须已创建"
msgid "The Added Proxy Groups Must Exist Except 'DIRECT' & 'REJECT'"
msgstr "注意:除'DIRECT'和'REJECT'外,修改配置文件前添加的其他策略组必须已创建"
msgid "Proxy Group"
msgstr "添加到策略组(请勿重复添加)"

View File