OpenClash: update to latest git HEAD
This commit is contained in:
parent
f1fdb26d1a
commit
af3af28423
@ -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>
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
@ -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
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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 fndroid,Use Other Rules If V2ray Subcription")
|
||||
o.description = translate("Power By fndroid,Use Other Rules If V2rayN Subcription")
|
||||
o.default="clash"
|
||||
|
||||
o = s:taboption("config_update", Value, "subscribe_url")
|
||||
|
||||
@ -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){
|
||||
|
||||
@ -139,7 +139,7 @@
|
||||
<span class="ip-title">IPIP 国内:</span><span class="ip-result" id="ip-ipipnet"></span> <span class="ip-geo" id="ip-ipipnet-geo"></span>
|
||||
</p>
|
||||
<p>
|
||||
<span class="ip-title">太平洋 国内:</span><span class="ip-result" id="ip-pcol"></span> <span class="ip-geo" id="ip-pcol-ipip"></span>
|
||||
<span class="ip-title">IP.PC 国内:</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 海外:</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>
|
||||
|
||||
@ -0,0 +1,3 @@
|
||||
<%+cbi/valueheader%>
|
||||
<span class="pingtime" hint="<%=self:cfgvalue(section)%>">-- ms</span>
|
||||
<%+cbi/valuefooter%>
|
||||
@ -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>
|
||||
@ -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){
|
||||
|
||||
@ -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
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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"
|
||||
}
|
||||
|
||||
@ -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 fndroid,Use Other Rules If V2ray Subcription"
|
||||
msgstr "API提供:Fndroid,V2ray类型的订阅可配合第三方规则使用"
|
||||
msgid "Power By fndroid,Use Other Rules If V2rayN Subcription"
|
||||
msgstr "API提供:Fndroid,V2rayN类型的订阅可配合第三方规则使用"
|
||||
|
||||
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 "添加到策略组(请勿重复添加)"
|
||||
|
||||
0
package/ctcgfw/luci-app-openclash/tools/po2lmo/src/po2lmo
Executable file → Normal file
0
package/ctcgfw/luci-app-openclash/tools/po2lmo/src/po2lmo
Executable file → Normal file
Loading…
Reference in New Issue
Block a user