OpenClash: sync with upstream source

This commit is contained in:
CN_SZTL 2020-04-09 01:39:30 +08:00
parent e53ac1001f
commit 85866629a8
No known key found for this signature in database
GPG Key ID: 6850B6345C862176
9 changed files with 113 additions and 50 deletions

View File

@ -954,7 +954,7 @@ EOF
echo "" >$START_LOG
else
if [ "$rule_source" != 0 ] || [ "$enable_custom_clash_rules" != 0 ]; then
echo "错误: OpenClash 启动失败,尝试还原规则并重新启动 Clash 主程序..." >$START_LOG
echo "错误: OpenClash 启动失败,尝试还原第三方规则并重新启动 Clash 主程序..." >$START_LOG
echo "${LOGTIME} OpenClash Can Not Start, Try Use Backup Rules Start Again" >> $LOG_FILE
mv "$START_BACKUP" /etc/openclash/configrules.bak
sed -i -n '/^Rule:/,$p' /etc/openclash/configrules.bak

View File

@ -68,6 +68,7 @@ form.submit=false
tb=form:section(Table,e)
nu=tb:option(DummyValue,"num",translate("Order Number"))
st=tb:option(DummyValue,"exist",translate("State"))
st.template="openclash/cfg_check"
nm=tb:option(DummyValue,"name",translate("Rule Name"))
fm=tb:option(DummyValue,"filename",translate("File Name"))
mt=tb:option(DummyValue,"mtime",translate("Update Time"))

View File

@ -166,32 +166,6 @@ o:value("websocket", translate("websocket (ws)"))
o:value("http", translate("http"))
o:depends("type", "vmess")
-- [[ skip-cert-verify ]]--
o = s:option(ListValue, "skip_cert_verify", translate("skip-cert-verify"))
o.rmempty = true
o.default = "false"
o:value("true")
o:value("false")
o:depends("obfs", "websocket")
o:depends("obfs_vmess", "none")
o:depends("obfs_vmess", "websocket")
o:depends("type", "socks5")
o:depends("type", "http")
o:depends("type", "trojan")
-- [[ TLS ]]--
o = s:option(ListValue, "tls", translate("TLS"))
o.rmempty = true
o.default = "false"
o:value("true")
o:value("false")
o:depends("obfs", "websocket")
o:depends("obfs_vmess", "none")
o:depends("obfs_vmess", "websocket")
o:depends("obfs_vmess", "http")
o:depends("type", "socks5")
o:depends("type", "http")
o = s:option(Value, "host", translate("obfs-hosts"))
o.datatype = "host"
o.rmempty = true
@ -218,6 +192,32 @@ o.rmempty = true
o:depends("obfs", "websocket")
o:depends("obfs_vmess", "websocket")
-- [[ skip-cert-verify ]]--
o = s:option(ListValue, "skip_cert_verify", translate("skip-cert-verify"))
o.rmempty = true
o.default = "false"
o:value("true")
o:value("false")
o:depends("obfs", "websocket")
o:depends("obfs_vmess", "none")
o:depends("obfs_vmess", "websocket")
o:depends("type", "socks5")
o:depends("type", "http")
o:depends("type", "trojan")
-- [[ TLS ]]--
o = s:option(ListValue, "tls", translate("TLS"))
o.rmempty = true
o.default = "false"
o:value("true")
o:value("false")
o:depends("obfs", "websocket")
o:depends("obfs_vmess", "none")
o:depends("obfs_vmess", "websocket")
o:depends("obfs_vmess", "http")
o:depends("type", "socks5")
o:depends("type", "http")
o = s:option(Value, "keep_alive", translate("keep-alive"))
o.rmempty = true
o.default = "true"

View File

@ -2,7 +2,7 @@
<div style="text-align: center;">
<%
local val = self:cfgvalue(section)
if val == "启用" or val == "Enable" or val == "检查通过" or val == "Config Normal" then
if val == "启用" or val == "Enable" or val == "检查通过" or val == "Config Normal" or val == "Exist" or val == "已下载" then
%>
<div style="color: green; font-weight:bold;">
<%

View File

@ -60,6 +60,7 @@ config_cus_up()
sleep 3
echo "" >$START_LOG
fi
rm -rf /tmp/Proxy_Group 2>/dev/null
}
config_su_check()

View File

@ -55,8 +55,28 @@ else
awk '/Proxy Group:/,/Rule:/{print}' "$CONFIG_FILE" 2>/dev/null |sed 's/\"//g' 2>/dev/null |sed "s/\'//g" 2>/dev/null |sed 's/\t/ /g' 2>/dev/null >/tmp/yaml_group.yaml 2>&1
fi 2>/dev/null
if [ "$servers_update" -ne "1" ] || [ "$servers_if_update" != "1" ] || [ -z "$(grep "config groups" "$CFG_FILE" 2>/dev/null)" ]; then
echo "正在删除旧配置..." >$START_LOG
#判断当前配置文件是否已经有策略组信息
cfg_group_name()
{
local section="$1"
config_get "config" "$section" "config" ""
if [ -z "$config" ]; then
return
fi
[ "$config" = "$CONFIG_NAME" ] && {
config_group_exist="1"
}
}
config_load "openclash"
config_foreach cfg_group_name "groups"
#删除不必要的配置
cfg_delete()
{
echo "正在删除旧配置..." >$START_LOG
#删除策略组
group_num=$(grep "config groups" "$CFG_FILE" |wc -l)
for ((i=$group_num;i>=0;i--))
@ -66,7 +86,7 @@ echo "正在删除旧配置..." >$START_LOG
uci commit openclash
fi
done
#删除启用节点
#删除启用节点
server_num=$(grep "config servers" "$CFG_FILE" |wc -l)
for ((i=$server_num;i>=0;i--))
do
@ -77,7 +97,7 @@ echo "正在删除旧配置..." >$START_LOG
fi
fi
done
#删除启用代理集
#删除启用代理集
provider_num=$(grep "config proxy-provider" "$CFG_FILE" 2>/dev/null |wc -l)
for ((i=$provider_num;i>=0;i--))
do
@ -88,6 +108,10 @@ echo "正在删除旧配置..." >$START_LOG
fi
fi
done
}
if [ "$servers_update" -ne "1" ] || [ "$servers_if_update" != "1" ] || [ -z "$config_group_exist" ]; then
cfg_delete
else
/usr/share/openclash/yml_proxys_get.sh
exit 0

View File

@ -93,6 +93,43 @@ cfg_get_dynamic()
echo "$(grep "^ \{0,\}$1" "$2" 2>/dev/null |grep -v "^ \{0,\}- name:" |grep -v "^ \{0,\}- keep-alive" |awk -v tag=$1 'BEGIN{FS=tag} {print $2}' 2>/dev/null |sed 's/,.*//' 2>/dev/null |sed 's/\}.*//' 2>/dev/null |sed 's/^ \{0,\}//g' 2>/dev/null |sed 's/ \{0,\}$//g' 2>/dev/null)"
}
cfg_new_servers_groups_check()
{
if [ -z "$1" ]; then
return
fi
[ "$1" = "$2" ] && {
config_group_exist="1"
}
}
cfg_group_name()
{
local section="$1"
config_get "name" "$section" "name" ""
config_get "config" "$section" "config" ""
if [ -z "$config" ]; then
return
fi
if [ "$config" != "$CONFIG_NAME" ] && [ "$config" != "all" ]; then
return
fi
if [ -z "$name" ]; then
return
fi
config_list_foreach "config" "new_servers_group" cfg_new_servers_groups_check "$name"
}
#判断当前配置文件策略组信息是否包含指定策略组
config_load "openclash"
config_foreach cfg_group_name "groups"
echo "开始更新【$CONFIG_NAME】的代理集配置..." >$START_LOG
yml_provider_name_get()
@ -218,7 +255,7 @@ do
#加入策略组
if [ "$servers_if_update" = "1" ] && [ ! -z "$new_servers_group" ] && [ ! -z "$(grep "config groups" "$CFG_FILE")" ]; then
if [ "$servers_if_update" = "1" ] && [ ! -z "$new_servers_group" ] && [ ! -z "$config_group_exist" ]; then
#新代理集且设置默认策略组时加入指定策略组
config_load "openclash"
config_list_foreach "config" "new_servers_group" cfg_new_provider_groups_get
@ -381,7 +418,7 @@ cfg_new_servers_groups_get()
${uci_add}groups="${1}"
}
echo "开始更新【$CONFIG_NAME】的服务器节点配置..." >$START_LOG
[ "$servers_update" -eq "1" ] && {
@ -643,7 +680,7 @@ do
fi
#加入策略组
if [ "$servers_if_update" = "1" ] && [ ! -z "$new_servers_group" ] && [ ! -z "$(grep "config groups" "$CFG_FILE")" ]; then
if [ "$servers_if_update" = "1" ] && [ ! -z "$new_servers_group" ] && [ ! -z "$config_group_exist" ]; then
#新节点且设置默认策略组时加入指定策略组
config_load "openclash"
config_list_foreach "config" "new_servers_group" cfg_new_servers_groups_get

View File

@ -157,20 +157,6 @@ fi
sed -i '/- DOMAIN-KEYWORD,announce,DIRECT/d' "$4" 2>/dev/null
sed -i '/- DOMAIN-KEYWORD,torrent,DIRECT/d' "$4" 2>/dev/null
if [ "$3" = 1 ]; then
sed -i '/^Rule:/a\##Custom Rules End##' "$4" 2>/dev/null
sed -i '/^Rule:/a\##Custom Rules##' "$4" 2>/dev/null
sed -i '/^##Custom Rules##/r/etc/openclash/custom/openclash_custom_rules.list' "$4" 2>/dev/null
sed -i '/^ \{0,\}- MATCH,/i\##Custom Rules 2##' "$4" 2>/dev/null
sed -i '/^##Custom Rules 2##/a\##Custom Rules 2 End##' "$4" 2>/dev/null
sed -i '/^##Custom Rules 2##/r/etc/openclash/custom/openclash_custom_rules_2.list' "$4" 2>/dev/null
fi
if [ "$5" = 1 ] || [ "$3" = 1 ] || [ "$7" = 1 ] || [ -z "$(grep '- IP-CIDR,198.18.0.1/16,REJECT,no-resolve' "$4")" ]; then
sed -i "s/^ \{0,\}-/-/" "$4" 2>/dev/null #修改参数空格
sed -i "s/^\t\{0,\}-/-/" "$4" 2>/dev/null #修改参数tab
fi
if [ -z "$(grep '- IP-CIDR,198.18.0.1/16,REJECT,no-resolve' "$4")" ] && [ "$6" = "fake-ip" ]; then
if [ ! -z "$(grep "^ \{0,\}- IP-CIDR,198.18.0.1/16" "$4")" ]; then
sed -i "/^ \{0,\}- IP-CIDR,198.18.0.1\/16/c\- IP-CIDR,198.18.0.1\/16,REJECT,no-resolve" "$4"
@ -196,4 +182,18 @@ fi
sed -i "s/###- MATCH,/- MATCH,/" "$4" 2>/dev/null
sed -i "s/###- FINAL,/- FINAL,/" "$4" 2>/dev/null
fi
fi
if [ "$3" = 1 ]; then
sed -i '/^Rule:/a\##Custom Rules End##' "$4" 2>/dev/null
sed -i '/^Rule:/a\##Custom Rules##' "$4" 2>/dev/null
sed -i '/^##Custom Rules##/r/etc/openclash/custom/openclash_custom_rules.list' "$4" 2>/dev/null
sed -i '/^ \{0,\}- MATCH,/i\##Custom Rules 2##' "$4" 2>/dev/null
sed -i '/^##Custom Rules 2##/a\##Custom Rules 2 End##' "$4" 2>/dev/null
sed -i '/^##Custom Rules 2##/r/etc/openclash/custom/openclash_custom_rules_2.list' "$4" 2>/dev/null
fi
if [ "$5" = 1 ] || [ "$3" = 1 ] || [ "$7" = 1 ] || [ -z "$(grep '- IP-CIDR,198.18.0.1/16,REJECT,no-resolve' "$4")" ]; then
sed -i "s/^ \{0,\}-/-/" "$4" 2>/dev/null #修改参数空格
sed -i "s/^\t\{0,\}-/-/" "$4" 2>/dev/null #修改参数tab
fi

View File

@ -6,7 +6,7 @@ msgid "OpenClash"
msgstr "OpenClash"
msgid "A Clash Client For OpenWrt"
msgstr "一个运行在OpenWrt上的Clash客户端兼容Shadowsocks、Vmess、trojan、Snell等协议根据灵活的规则配置实现策略代理"
msgstr "一个运行在OpenWrt上的Clash客户端兼容Shadowsocks、Vmess、Trojan、Snell等协议根据灵活的规则配置实现策略代理"
msgid "Global Settings(Will Modify The Config File Or Subscribe According To The Settings On This Page)"
msgstr "全局设置(将按照本页设置自动修改配置文件和获取订阅)"