update 2023-07-02 23:35:28

This commit is contained in:
github-actions[bot] 2023-07-02 23:35:28 +08:00
parent c89a983671
commit 6b9f821408
23 changed files with 1203 additions and 894 deletions

View File

@ -5,12 +5,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=dnsproxy
PKG_VERSION:=0.50.2
PKG_VERSION:=0.51.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/AdguardTeam/dnsproxy/tar.gz/v$(PKG_VERSION)?
PKG_HASH:=f65764a196508bc134e05cdb9d282b790641dfe0e8e8aa99b01544317f791487
PKG_HASH:=230f13bcfe48a650c0ffd0574092fd956f5fb6351c622ae869d2bd0058a539b4
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
PKG_LICENSE:=Apache-2.0

View File

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

View File

@ -110,8 +110,9 @@ o = s:option(Value, "routing_mark", translate("routing-mark"))
o.rmempty = true
o.placeholder = translate("2333")
o = s:option(DynamicList, "other_group", translate("Other Group"))
o = s:option(DynamicList, "other_group", translate("Other Group (Support Regex)"))
o.description = font_red..bold_on..translate("The Added Proxy Groups Must Exist Except 'DIRECT' & 'REJECT'")..bold_off..font_off
o:value("all", translate("All Groups"))
uci:foreach("openclash", "groups",
function(s)
if s.name ~= "" and s.name ~= nil and s.name ~= m.uci:get(openclash, sid, "name") then

View File

@ -310,6 +310,17 @@ end
o:value("DIRECT")
o:value("REJECT")
o = s:option(ListValue, "miHoYo", translate("miHoYo"))
o:depends("rule_name", "lhie1")
o.rmempty = true
for groupname in string.gmatch(groupnames, "([^'##\n']+)##") do
if groupname ~= nil and groupname ~= "" then
o:value(groupname)
end
end
o:value("DIRECT")
o:value("REJECT")
o = s:option(ListValue, "Speedtest", translate("Speedtest"))
o:depends("rule_name", "lhie1")
o.rmempty = true

View File

@ -108,7 +108,7 @@ o = s:option(Value, "health_check_interval", translate("Health Check Interval(s)
o.default = "300"
o.rmempty = false
o = s:option(DynamicList, "groups", translate("Proxy Group"))
o = s:option(DynamicList, "groups", translate("Proxy Group (Support Regex)"))
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
o:value("all", translate("All Groups"))

View File

@ -174,7 +174,7 @@ o:depends("type", "trojan")
o = s:option(Value, "tc_ip", translate("Server IP"))
o.rmempty = true
o.placeholder = translate("127.0.0.1")
o.datatype = "ip4addr"
o.datatype = "or(ip4addr, ip6addr)"
o:depends("type", "tuic")
o = s:option(Value, "tc_token", translate("Token"))
@ -852,7 +852,46 @@ o = s:option(Value, "routing_mark", translate("routing-mark"))
o.rmempty = true
o.placeholder = translate("2333")
o = s:option(DynamicList, "groups", translate("Proxy Group"))
-- [[ other-setting ]]--
o = s:option(Value, "other_parameters", translate("Other Parameters"))
o.template = "cbi/tvalue"
o.rows = 20
o.wrap = "off"
o.description = font_red..bold_on..translate("Edit Your Other Parameters Here")..bold_off..font_off
o.rmempty = true
function o.cfgvalue(self, section)
if self.map:get(section, "other_parameters") == nil then
return "# Example:\n"..
"# Only support YAML, four spaces need to be reserved at the beginning of each line to maintain formatting alignment\n"..
"# 示例:\n"..
"# 仅支持 YAML, 每行行首需要多保留四个空格以使脚本处理后能够与上方配置保持格式对齐\n"..
"# type: ss\n"..
"# server: \"127.0.0.1\"\n"..
"# port: 443\n"..
"# cipher: rc4-md5\n"..
"# password: \"123456\"\n"..
"# udp: true\n"..
"# udp-over-tcp: false\n"..
"# ip-version: \"dual\"\n"..
"# tfo: true\n"..
"# smux:\n"..
"# enabled: false\n"..
"# plugin-opts:\n"..
"# mode: tls\n"..
"# host: world.taobao.com"
else
return Value.cfgvalue(self, section)
end
end
function o.validate(self, value)
if value then
value = value:gsub("\r\n?", "\n")
value = value:gsub("%c*$", "")
end
return value
end
o = s:option(DynamicList, "groups", translate("Proxy Group (Support Regex)"))
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
o:value("all", translate("All Groups"))
@ -862,7 +901,7 @@ m.uci:foreach("openclash", "groups",
o:value(s.name)
end
end)
local t = {
{Commit, Back}
}

View File

@ -41,7 +41,7 @@ o = s:option(Flag, "servers_update", translate("Keep Settings"))
o.description = font_red .. bold_on .. translate("Only Update Servers Below When Subscription") .. bold_off .. font_off
o.default = 0
o = s:option(DynamicList, "new_servers_group", translate("New Servers Group"))
o = s:option(DynamicList, "new_servers_group", translate("New Servers Group (Support Regex)"))
o.description = translate("Set The New Subscribe Server's Default Proxy Groups")
o.rmempty = true
o:depends("servers_update", 1)

View File

@ -12,6 +12,7 @@
.sub_tab_show{
display: inline-block;
white-space: nowrap;
color: var(--gray-dark);
font-size: 12px;
margin: 0 auto;
-webkit-transition: all 1.5s;

View File

@ -22,6 +22,7 @@
.tool_label_span {
display: inline-block;
white-space: nowrap;
}
.tool_label_select {

View File

@ -663,8 +663,8 @@ msgstr "保留配置"
msgid "Only Update Servers Below When Subscription"
msgstr "订阅时仅更新节点和代理集,保留下方策略组设置,不修改顺序"
msgid "New Servers Group"
msgstr "新节点默认策略组"
msgid "New Servers Group (Support Regex)"
msgstr "新节点默认策略组(请勿重复添加,支持正则匹配)"
msgid "Set The New Subscribe Server's Default Proxy Groups"
msgstr "选择符合订阅要求的新节点的默认策略组(请勿重复添加)"
@ -843,8 +843,8 @@ msgstr "Load-Balance【负载均衡】"
msgid "Relay-Traffic"
msgstr "Relay【嵌套中转】"
msgid "Other Group"
msgstr "包含其他策略组(请勿重复添加)"
msgid "Other Group (Support Regex)"
msgstr "包含其他策略组(请勿重复添加,支持正则匹配"
msgid "The Added Proxy Groups Must Exist Except 'DIRECT' & 'REJECT'"
msgstr "注意:除'DIRECT'和'REJECT'外,修改配置文件前添加的其他策略组必须已创建"
@ -852,8 +852,8 @@ msgstr "注意:除'DIRECT'和'REJECT'外,修改配置文件前添加的其
msgid "The Added Proxy Provider Must Exist"
msgstr "修改配置文件前添加的代理集必须已创建"
msgid "Proxy Group"
msgstr "添加到策略组(请勿重复添加)"
msgid "Proxy Group (Support Regex)"
msgstr "添加到策略组(请勿重复添加,支持正则匹配"
msgid "Set Proxy Group"
msgstr "指定策略组"
@ -1701,8 +1701,8 @@ msgstr "替换成功,检测到已启用节点筛选,开始挑选节点..."
msgid "is Replaced Successfully, Start to Reserving..."
msgstr "替换成功,检测到已启用保留配置,开始进行设置..."
msgid "Config File Download Successful, Check If There is Any Update..."
msgstr "配置文件下载成功,检查是否有更新..."
msgid "Config File Test Successful, Check If There is Any Update..."
msgstr "配置文件测试成功,检查是否有更新..."
msgid "Are Updates, Start Replacing..."
msgstr "有更新,开始替换..."
@ -3394,4 +3394,28 @@ msgid "Warning: Can't Settting Only Intranet Allowed Function, Get IPv4 WAN Inte
msgstr "警告:设置仅允许内网功能失败,无法获取 IPv4 的 WAN 接口名称,请确保防火墙设置中 IPv4 WAN 区域的名称为 wan如设备无 WAN 口请忽略此提示..."
msgid "Warning: Can't Settting Only Intranet Allowed Function, Get IPv6 WAN Interfaces error, Please Verify The Firewall's WAN Zone Name is wan, Ignore This IF The Device Does not Have a WAN Interfaces..."
msgstr "警告:设置仅允许内网功能失败,无法获取 IPv6 的 WAN 接口名称,请确保防火墙设置中 IPv6 WAN 区域的名称为 wan如设备无 WAN 口请忽略此提示..."
msgstr "警告:设置仅允许内网功能失败,无法获取 IPv6 的 WAN 接口名称,请确保防火墙设置中 IPv6 WAN 区域的名称为 wan如设备无 WAN 口请忽略此提示..."
msgid "Config File Download Successful, Test If There is Any Errors..."
msgstr "配置文件下载成功,使用内核测试是否有错误..."
msgid "configuration file"
msgstr "配置文件"
msgid "test failed"
msgstr "测试失败..."
msgid "test is successful"
msgstr "测试成功..."
msgid "Error: Config File Tested Faild, Please Check The Log Infos!"
msgstr "错误:配置文件测试失败,请查看《内核日志》排查失败原因!"
msgid "Test The Config File First..."
msgstr "启动前调用内核测试配置文件..."
msgid "Other Parameters"
msgstr "其他附加配置"
msgid "Edit Your Other Parameters Here"
msgstr "请在此编辑您的附加配置"

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,9 @@
payload:
# > miHoYo
- DOMAIN-SUFFIX,bh3.com
- DOMAIN-SUFFIX,hoyolab.com
- DOMAIN-SUFFIX,hoyoverse.com
- DOMAIN-SUFFIX,mihayo.com
- DOMAIN-SUFFIX,mihoyo.com
- DOMAIN-SUFFIX,miyoushe.com
- DOMAIN-SUFFIX,yuanshen.com

View File

@ -34,6 +34,9 @@ DNSMASQ_CONF_DIR=$(uci -q get dhcp.@dnsmasq[0].confdir || echo '/tmp/dnsmasq.d')
DNSMASQ_CONF_DIR=${DNSMASQ_CONF_DIR%*/}
custom_china_domain_dns_server=$(uci -q get openclash.config.custom_china_domain_dns_server || echo "114.114.114.114")
FW4=$(command -v fw4)
CLASH="/etc/openclash/clash"
CLASH_CONFIG="/tmp"
if [ -z "$DNSPORT" ]; then
DNSPORT=$(netstat -nlp |grep -E '127.0.0.1:.*dnsmasq' |awk -F '127.0.0.1:' '{print $2}' |awk '{print $1}' |head -1 || echo 53)
@ -60,6 +63,28 @@ kill_watchdog() {
done >/dev/null 2>&1
}
config_test()
{
if [ -f "$CLASH" ]; then
LOG_OUT "Config File Download Successful, Test If There is Any Errors..."
test_info=$(nohup $CLASH -t -d $CLASH_CONFIG -f "$CFG_FILE")
local IFS=$'\n'
for i in $test_info; do
if [ -n "$(echo "$i" |grep "configuration file")" ]; then
local info=$(echo "$i" |sed "s# ${CFG_FILE} #【${CONFIG_FILE}】#g")
LOG_OUT "$info"
else
echo "$i" >> "$LOG_FILE"
fi
done
if [ -n "$(echo "$test_info" |grep "test failed")" ]; then
return 1
fi
else
return 0
fi
}
config_download()
{
if [ -n "$subscribe_url_param" ]; then
@ -158,7 +183,7 @@ config_cus_up()
config_su_check()
{
LOG_OUT "Config File Download Successful, Check If There is Any Update..."
LOG_OUT "Config File Test Successful, Check If There is Any Update..."
sed -i 's/!<str> /!!str /g' "$CFG_FILE" >/dev/null 2>&1
if [ -f "$CONFIG_FILE" ]; then
cmp -s "$BACKPACK_FILE" "$CFG_FILE"
@ -425,6 +450,13 @@ EOF
if [ "${PIPESTATUS[0]}" -eq 0 ] && [ -s "$CFG_FILE" ]; then
#prevent ruby unexpected error
sed -i -E 's/protocol-param: ([^,'"'"'"''}( *#)\n\r]+)/protocol-param: "\1"/g' "$CFG_FILE" 2>/dev/null
config_test
if [ $? -ne 0 ]; then
LOG_OUT "Error: Config File Tested Faild, Please Check The Log Infos!"
change_dns
config_error
return
fi
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "
begin
YAML.load_file('$CFG_FILE');
@ -602,7 +634,13 @@ sub_info_get()
if [ "${PIPESTATUS[0]}" -eq 0 ] && [ -s "$CFG_FILE" ]; then
#prevent ruby unexpected error
sed -i -E 's/protocol-param: ([^,'"'"'"''}( *#)\n\r]+)/protocol-param: "\1"/g' "$CFG_FILE" 2>/dev/null
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "
config_test
if [ $? -ne 0 ]; then
LOG_OUT "Error: Config File Tested Faild, Please Check The Log Infos!"
config_download_direct
return
fi
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "
begin
YAML.load_file('$CFG_FILE');
rescue Exception => e

View File

@ -47,7 +47,8 @@ check_dnsmasq() {
nft delete rule inet fw4 ${nft} handle ${handle}
done
done >/dev/null 2>&1
position=$(nft list chain inet fw4 dstnat |grep "OpenClash" |grep "DNS" |awk -F '# handle ' '{print$2}' |sort -rn |head -1 || ehco 0)
local position=$(nft -a list chain inet fw4 dstnat |grep "OpenClash" |grep "DNS" |awk -F '# handle ' '{print$2}' |sort -rn |head -1)
[ -z "$position" ] && position=0
nft add rule inet fw4 dstnat position "$position" tcp dport 53 redirect to "$DNSPORT" comment \"OpenClash DNS Hijack\" 2>/dev/null
nft add rule inet fw4 dstnat position "$position" udp dport 53 redirect to "$DNSPORT" comment \"OpenClash DNS Hijack\" 2>/dev/null
if [ "$ipv6_enable" -eq 1 ]; then
@ -66,12 +67,14 @@ check_dnsmasq() {
done
fi
done >/dev/null 2>&1
position=$(iptables -nvL PREROUTING -t nat |sed 1,2d |grep "OpenClash" |sed -n "/DNS/=" 2>/dev/null |sort -rn |head -1 || ehco 0)
local position=$(iptables -nvL PREROUTING -t nat |sed 1,2d |grep "OpenClash" |sed -n "/DNS/=" 2>/dev/null |sort -rn |head -1)
[ -z "$position" ] && position=0
[ "$position" -ne 0 ] && let position++
iptables -t nat -I PREROUTING "$position" -p udp --dport 53 -j REDIRECT --to-ports "$DNSPORT" -m comment --comment "OpenClash DNS Hijack" 2>/dev/null
iptables -t nat -I PREROUTING "$position" -p tcp --dport 53 -j REDIRECT --to-ports "$DNSPORT" -m comment --comment "OpenClash DNS Hijack" 2>/dev/null
if [ "$ipv6_enable" -eq 1 ]; then
position=$(ip6tables -nvL PREROUTING -t nat |sed 1,2d |grep "OpenClash" |sed -n "/DNS/=" 2>/dev/null |sort -rn |head -1 || ehco 0)
position=$(ip6tables -nvL PREROUTING -t nat |sed 1,2d |grep "OpenClash" |sed -n "/DNS/=" 2>/dev/null |sort -rn |head -1)
[ -z "$position" ] && position=0
[ "$position" -ne 0 ] && let position++
ip6tables -t nat -I PREROUTING "$position" -p udp --dport 53 -j REDIRECT --to-ports "$DNSPORT" -m comment --comment "OpenClash DNS Hijack" 2>/dev/null
ip6tables -t nat -I PREROUTING "$position" -p tcp --dport 53 -j REDIRECT --to-ports "$DNSPORT" -m comment --comment "OpenClash DNS Hijack" 2>/dev/null

View File

@ -2,9 +2,9 @@ rules:
- RULE-SET,Reject,AdBlock
- RULE-SET,Special,DIRECT
- RULE-SET,Netflix,Netflix
- RULE-SET,Spotify,Spotify
- RULE-SET,YouTube,YouTube
- RULE-SET,Disney Plus,Disney
- RULE-SET,YouTube,YouTube
- RULE-SET,Spotify,Spotify
- RULE-SET,Bilibili,Asian TV
- RULE-SET,IQ,Asian TV
- RULE-SET,IQIYI,Asian TV
@ -40,20 +40,21 @@ rules:
- RULE-SET,Pornhub,Global TV
- RULE-SET,Soundcloud,Global TV
- RULE-SET,ViuTV,Global TV
- RULE-SET,Telegram,Telegram
- RULE-SET,Crypto,Crypto
- RULE-SET,Discord,Discord
- RULE-SET,Steam,Steam
- RULE-SET,Speedtest,Speedtest
- RULE-SET,PayPal,PayPal
- RULE-SET,Microsoft,Microsoft
- RULE-SET,ChatGPT,ChatGPT
- RULE-SET,Apple Music,Apple TV
- RULE-SET,Apple News,Apple TV
- RULE-SET,Apple TV,Apple TV
- RULE-SET,Apple,Apple
- RULE-SET,Telegram,Telegram
- RULE-SET,ChatGPT,ChatGPT
- RULE-SET,Crypto,Crypto
- RULE-SET,Discord,Discord
- RULE-SET,Google FCM,Google FCM
- RULE-SET,Microsoft,Microsoft
- RULE-SET,PayPal,PayPal
- RULE-SET,Scholar,Scholar
- RULE-SET,Speedtest,Speedtest
- RULE-SET,Steam,Steam
- RULE-SET,miHoYo,miHoYo
- RULE-SET,PROXY,Proxy
- RULE-SET,Domestic,Domestic
- RULE-SET,Domestic IPs,Domestic
@ -66,9 +67,9 @@ script:
ruleset_action = {"Reject": "AdBlock",
"Special": "DIRECT",
"Netflix": "Netflix",
"Spotify": "Spotify",
"YouTube": "YouTube",
"Disney Plus": "Disney",
"YouTube": "YouTube",
"Spotify": "Spotify",
"Bilibili": "Asian TV",
"IQ": "Asian TV",
"IQIYI": "Asian TV",
@ -104,20 +105,21 @@ script:
"Pornhub": "Global TV",
"Soundcloud": "Global TV",
"ViuTV": "Global TV",
"Telegram": "Telegram",
"Crypto": "Crypto",
"Discord": "Discord",
"Steam": "Steam",
"Speedtest": "Speedtest",
"PayPal": "PayPal",
"Microsoft": "Microsoft",
"ChatGPT": "ChatGPT",
"Apple Music": "Apple TV",
"Apple News": "Apple TV",
"Apple TV": "Apple TV",
"Apple": "Apple",
"Telegram": "Telegram",
"ChatGPT": "ChatGPT",
"Crypto": "Crypto",
"Discord": "Discord",
"Google FCM": "Google FCM",
"Microsoft": "Microsoft",
"PayPal": "PayPal",
"Scholar": "Scholar",
"Speedtest": "Speedtest",
"Steam": "Steam",
"miHoYo": "miHoYo",
"PROXY": "Proxy",
"Domestic": "Domestic",
"Domestic IPs": "Domestic",
@ -154,354 +156,360 @@ rule-providers:
Reject:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Reject.yaml
url: https://dler.cloud/Rules/Clash/Provider/Reject.yaml
path: "./Rules/Reject"
interval: 86400
Special:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Special.yaml
url: https://dler.cloud/Rules/Clash/Provider/Special.yaml
path: "./Rules/Special"
interval: 86400
Netflix:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Netflix.yaml
path: "./Rules/Media/Netflix"
interval: 86400
Spotify:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Spotify.yaml
path: "./Rules/Media/Spotify"
interval: 86400
YouTube:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/YouTube.yaml
path: "./Rules/Media/YouTube"
interval: 86400
Bilibili:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Bilibili.yaml
path: "./Rules/Media/Bilibili"
interval: 86400
IQ:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/IQ.yaml
path: "./Rules/Media/IQI"
interval: 86400
IQIYI:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/IQIYI.yaml
path: "./Rules/Media/IQYI"
interval: 86400
Letv:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Letv.yaml
path: "./Rules/Media/Letv"
interval: 86400
Netease Music:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Netease%20Music.yaml
path: "./Rules/Media/Netease_Music"
interval: 86400
Tencent Video:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Tencent%20Video.yaml
path: "./Rules/Media/Tencent_Video"
interval: 86400
Youku:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Youku.yaml
path: "./Rules/Media/Youku"
interval: 86400
WeTV:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/WeTV.yaml
path: "./Rules/Media/WeTV"
interval: 86400
ABC:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/ABC.yaml
path: "./Rules/Media/ABC"
interval: 86400
Abema TV:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Abema%20TV.yaml
path: "./Rules/Media/Abema_TV"
interval: 86400
Amazon:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Amazon.yaml
path: "./Rules/Media/Amazon"
interval: 86400
Apple Music:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Apple%20Music.yaml
path: "./Rules/Media/Apple_Music"
interval: 86400
Apple News:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Apple%20News.yaml
path: "./Rules/Media/Apple_News"
interval: 86400
Apple TV:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Apple%20TV.yaml
path: "./Rules/Media/Apple_TV"
interval: 86400
Bahamut:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Bahamut.yaml
path: "./Rules/Media/Bahamut"
interval: 86400
BBC iPlayer:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/BBC%20iPlayer.yaml
path: "./Rules/Media/BBC_iPlayer"
interval: 86400
DAZN:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/DAZN.yaml
path: "./Rules/Media/DAZN"
interval: 86400
Discovery Plus:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Discovery%20Plus.yaml
path: "./Rules/Media/Discovery_Plus"
interval: 86400
Disney Plus:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Disney%20Plus.yaml
path: "./Rules/Media/Disney_Plus"
interval: 86400
encoreTVB:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/encoreTVB.yaml
path: "./Rules/Media/encoreTVB"
interval: 86400
F1 TV:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/F1%20TV.yaml
path: "./Rules/Media/F1_TV"
interval: 86400
Fox Now:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Fox%20Now.yaml
path: "./Rules/Media/Fox_Now"
interval: 86400
Fox+:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Fox%2B.yaml
path: "./Rules/Media/Fox+"
interval: 86400
HBO Go:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/HBO%20Go.yaml
path: "./Rules/Media/HBO_Go"
interval: 86400
HBO Max:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/HBO%20Max.yaml
path: "./Rules/Media/HBO_Max"
interval: 86400
Hulu Japan:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Hulu%20Japan.yaml
path: "./Rules/Media/Hulu_Japan"
interval: 86400
Hulu:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Hulu.yaml
path: "./Rules/Media/Hulu"
interval: 86400
Japonx:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Japonx.yaml
path: "./Rules/Media/Japonx"
interval: 86400
JOOX:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/JOOX.yaml
path: "./Rules/Media/JOOX"
interval: 86400
KKBOX:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/KKBOX.yaml
path: "./Rules/Media/KKBOX"
interval: 86400
KKTV:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/KKTV.yaml
path: "./Rules/Media/KKTV"
interval: 86400
Line TV:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Line%20TV.yaml
path: "./Rules/Media/Line_TV"
interval: 86400
myTV SUPER:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/myTV%20SUPER.yaml
path: "./Rules/Media/myTV_SUPER"
interval: 86400
Niconico:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Niconico.yaml
path: "./Rules/Media/Niconico"
interval: 86400
Pandora:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Pandora.yaml
path: "./Rules/Media/Pandora"
interval: 86400
PBS:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/PBS.yaml
path: "./Rules/Media/PBS"
interval: 86400
Pornhub:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Pornhub.yaml
path: "./Rules/Media/Pornhub"
interval: 86400
Soundcloud:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/Soundcloud.yaml
path: "./Rules/Media/Soundcloud"
interval: 86400
ViuTV:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Media/ViuTV.yaml
path: "./Rules/Media/ViuTV"
interval: 86400
Telegram:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Telegram.yaml
path: "./Rules/Telegram"
interval: 86400
Crypto:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Crypto.yaml
path: "./Rules/Crypto"
interval: 86400
Discord:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Discord.yaml
path: "./Rules/Discord"
interval: 86400
Steam:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Steam.yaml
path: "./Rules/Steam"
interval: 86400
Speedtest:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Speedtest.yaml
path: "./Rules/Speedtest"
interval: 86400
PayPal:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/PayPal.yaml
path: "./Rules/PayPal"
interval: 86400
Microsoft:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Microsoft.yaml
path: "./Rules/Microsoft"
interval: 86400
ChatGPT:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/ChatGPT.yaml
path: "./Rules/ChatGPT"
interval: 86400
PROXY:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Proxy.yaml
url: https://dler.cloud/Rules/Clash/Provider/Proxy.yaml
path: "./Rules/Proxy"
interval: 86400
Domestic:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Domestic.yaml
url: https://dler.cloud/Rules/Clash/Provider/Domestic.yaml
path: "./Rules/Domestic"
interval: 86400
Apple:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Apple.yaml
path: "./Rules/Apple"
interval: 86400
Google FCM:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Google%20FCM.yaml
path: "./Rules/Google FCM"
interval: 86400
Scholar:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Scholar.yaml
path: "./Rules/Scholar"
interval: 86400
Domestic IPs:
type: http
behavior: ipcidr
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/Domestic%20IPs.yaml
url: https://dler.cloud/Rules/Clash/Provider/Domestic%20IPs.yaml
path: "./Rules/Domestic_IPs"
interval: 86400
LAN:
type: http
behavior: classical
url: https://fastly.jsdelivr.net/gh/dler-io/Rules@main/Clash/Provider/LAN.yaml
url: https://dler.cloud/Rules/Clash/Provider/LAN.yaml
path: "./Rules/LAN"
interval: 86400
Netflix:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Netflix.yaml
path: "./Rules/Media/Netflix"
interval: 86400
Spotify:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Spotify.yaml
path: "./Rules/Media/Spotify"
interval: 86400
YouTube:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/YouTube.yaml
path: "./Rules/Media/YouTube"
interval: 86400
Bilibili:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Bilibili.yaml
path: "./Rules/Media/Bilibili"
interval: 86400
IQ:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/IQ.yaml
path: "./Rules/Media/IQI"
interval: 86400
IQIYI:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/IQIYI.yaml
path: "./Rules/Media/IQYI"
interval: 86400
Letv:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Letv.yaml
path: "./Rules/Media/Letv"
interval: 86400
Netease Music:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Netease%20Music.yaml
path: "./Rules/Media/Netease_Music"
interval: 86400
Tencent Video:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Tencent%20Video.yaml
path: "./Rules/Media/Tencent_Video"
interval: 86400
Youku:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Youku.yaml
path: "./Rules/Media/Youku"
interval: 86400
WeTV:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/WeTV.yaml
path: "./Rules/Media/WeTV"
interval: 86400
ABC:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/ABC.yaml
path: "./Rules/Media/ABC"
interval: 86400
Abema TV:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Abema%20TV.yaml
path: "./Rules/Media/Abema_TV"
interval: 86400
Amazon:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Amazon.yaml
path: "./Rules/Media/Amazon"
interval: 86400
Apple Music:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Apple%20Music.yaml
path: "./Rules/Media/Apple_Music"
interval: 86400
Apple News:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Apple%20News.yaml
path: "./Rules/Media/Apple_News"
interval: 86400
Apple TV:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Apple%20TV.yaml
path: "./Rules/Media/Apple_TV"
interval: 86400
Bahamut:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Bahamut.yaml
path: "./Rules/Media/Bahamut"
interval: 86400
BBC iPlayer:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/BBC%20iPlayer.yaml
path: "./Rules/Media/BBC_iPlayer"
interval: 86400
DAZN:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/DAZN.yaml
path: "./Rules/Media/DAZN"
interval: 86400
Discovery Plus:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Discovery%20Plus.yaml
path: "./Rules/Media/Discovery_Plus"
interval: 86400
Disney Plus:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Disney%20Plus.yaml
path: "./Rules/Media/Disney_Plus"
interval: 86400
encoreTVB:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/encoreTVB.yaml
path: "./Rules/Media/encoreTVB"
interval: 86400
F1 TV:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/F1%20TV.yaml
path: "./Rules/Media/F1_TV"
interval: 86400
Fox Now:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Fox%20Now.yaml
path: "./Rules/Media/Fox_Now"
interval: 86400
Fox+:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Fox%2B.yaml
path: "./Rules/Media/Fox+"
interval: 86400
HBO Go:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/HBO%20Go.yaml
path: "./Rules/Media/HBO_Go"
interval: 86400
HBO Max:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/HBO%20Max.yaml
path: "./Rules/Media/HBO_Max"
interval: 86400
Hulu Japan:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Hulu%20Japan.yaml
path: "./Rules/Media/Hulu_Japan"
interval: 86400
Hulu:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Hulu.yaml
path: "./Rules/Media/Hulu"
interval: 86400
Japonx:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Japonx.yaml
path: "./Rules/Media/Japonx"
interval: 86400
JOOX:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/JOOX.yaml
path: "./Rules/Media/JOOX"
interval: 86400
KKBOX:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/KKBOX.yaml
path: "./Rules/Media/KKBOX"
interval: 86400
KKTV:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/KKTV.yaml
path: "./Rules/Media/KKTV"
interval: 86400
Line TV:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Line%20TV.yaml
path: "./Rules/Media/Line_TV"
interval: 86400
myTV SUPER:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/myTV%20SUPER.yaml
path: "./Rules/Media/myTV_SUPER"
interval: 86400
Niconico:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Niconico.yaml
path: "./Rules/Media/Niconico"
interval: 86400
Pandora:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Pandora.yaml
path: "./Rules/Media/Pandora"
interval: 86400
PBS:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/PBS.yaml
path: "./Rules/Media/PBS"
interval: 86400
Pornhub:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Pornhub.yaml
path: "./Rules/Media/Pornhub"
interval: 86400
Soundcloud:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/Soundcloud.yaml
path: "./Rules/Media/Soundcloud"
interval: 86400
ViuTV:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Media/ViuTV.yaml
path: "./Rules/Media/ViuTV"
interval: 86400
Telegram:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Telegram.yaml
path: "./Rules/Telegram"
interval: 86400
Crypto:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Crypto.yaml
path: "./Rules/Crypto"
interval: 86400
Discord:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Discord.yaml
path: "./Rules/Discord"
interval: 86400
Steam:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Steam.yaml
path: "./Rules/Steam"
interval: 86400
Speedtest:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Speedtest.yaml
path: "./Rules/Speedtest"
interval: 86400
PayPal:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/PayPal.yaml
path: "./Rules/PayPal"
interval: 86400
Microsoft:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Microsoft.yaml
path: "./Rules/Microsoft"
interval: 86400
ChatGPT:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/ChatGPT.yaml
path: "./Rules/ChatGPT"
interval: 86400
Apple:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Apple.yaml
path: "./Rules/Apple"
interval: 86400
Google FCM:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Google%20FCM.yaml
path: "./Rules/Google FCM"
interval: 86400
Scholar:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/Scholar.yaml
path: "./Rules/Scholar"
interval: 86400
miHoYo:
type: http
behavior: classical
url: https://dler.cloud/Rules/Clash/Provider/miHoYo.yaml
path: "./Rules/miHoYo"
interval: 86400

View File

@ -74,7 +74,7 @@ local Value Value_1 RUBY_YAML_PARSE
if [ -z "$1" ] || [ -z "$2" ]; then
return
fi
RUBY_YAML_PARSE="Thread.new{Value = YAML.load_file('$1'); Value_1 = YAML.load_file('$4').reverse!; Value_1$5.each{|x| Value$2.insert($3,x)}; Value$2=Value$2.uniq; File.open('$1','w') {|f| YAML.dump(Value, f)}}.join"
RUBY_YAML_PARSE="Thread.new{Value = YAML.load_file('$1'); Value_1 = YAML.load_file('$4'); Value_1$5.reverse.each{|x| Value$2.insert($3,x)}; Value$2=Value$2.uniq; File.open('$1','w') {|f| YAML.dump(Value, f)}}.join"
ruby -ryaml -rYAML -I "/usr/share/openclash" -E UTF-8 -e "$RUBY_YAML_PARSE" 2>/dev/null
}

View File

@ -384,7 +384,7 @@ Thread.new{
Value['global-client-fingerprint']='${31}';
end;
end;
if not Value.key?('dns') then
if not Value.key?('dns') or Value['dns'].nil? then
Value_1={'dns'=>{'enable'=>true}};
Value['dns']=Value_1['dns'];
else
@ -490,7 +490,7 @@ Thread.new{
if Value.key?('iptables') then
Value.delete('iptables');
end;
if not Value.key?('profile') then
if not Value.key?('profile') or Value['profile'].nil? then
Value_3={'profile'=>{'store-selected'=>true}};
Value['profile']=Value_3['profile'];
else

View File

@ -44,7 +44,7 @@ cfg_groups_set()
sed -i "s/new_servers_group \'${old_name_cfg}\'/new_servers_group \'${name}\'/g" $CFG_FILE 2>/dev/null
sed -i "s/relay_groups \'${old_name_cfg}\'/relay_groups \'${name}\'/g" $CFG_FILE 2>/dev/null
#第三方规则处理
OTHER_RULE_NAMES=("GlobalTV" "AsianTV" "Proxy" "Youtube" "Bilibili" "Bahamut" "HBOGo" "HBOMax" "Pornhub" "Apple" "GoogleFCM" "Scholar" "Microsoft" "Netflix" "Disney" "Spotify" "Steam" "Speedtest" "Telegram" "PayPal" "Netease_Music" "AdBlock" "Domestic" "Others")
OTHER_RULE_NAMES=("GlobalTV" "AsianTV" "Proxy" "Youtube" "Bilibili" "Bahamut" "HBOGo" "HBOMax" "Pornhub" "Apple" "GoogleFCM" "Scholar" "Microsoft" "Netflix" "Disney" "Spotify" "Steam" "Speedtest" "Telegram" "PayPal" "Netease_Music" "AdBlock" "Domestic" "Others" "miHoYo" "ChatGPT" "AppleTV" "Crypto" "Discord")
for i in ${OTHER_RULE_NAMES[@]}; do
sed -i "s/option ${i} \'${old_name_cfg}\'/option ${i} \'${name}\'/g" $CFG_FILE 2>/dev/null
done 2>/dev/null

View File

@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/bash
. /lib/functions.sh
. /usr/share/openclash/log.sh
@ -46,7 +46,7 @@ set_groups()
return
fi
if [ "$1" = "$3" ] || [ "$1" = "all" ]; then
if [ "$1" = "all" ] || [[ "$3" =~ ${1} ]]; then
set_group=1
add_for_this=1
echo " - \"${2}\"" >>$GROUP_FILE
@ -70,7 +70,7 @@ set_relay_groups()
fi
if [ -n "$server_relay_num" ]; then
if [ "$server_group_name" = "$3" ] || [ "$server_group_name" = "all" ]; then
if [[ "$3" =~ ${server_group_name} ]] || [ "$server_group_name" = "all" ]; then
set_group=1
add_for_this=1
echo "$server_relay_num # - \"${2}\"" >>/tmp/relay_server
@ -109,14 +109,50 @@ yml_servers_add()
}
add_other_group()
{
local section="$1"
local name enabled config
config_get_bool "enabled" "$section" "enabled" "1"
config_get "config" "$section" "config" ""
config_get "name" "$section" "name" ""
if [ "$enabled" = "0" ]; then
return
fi
if [ -n "$config" ] && [ "$config" != "$CONFIG_NAME" ] && [ "$config" != "all" ]; then
return
fi
if [ -z "$name" ]; then
return
fi
if [ "$3" = "$name" ]; then
return
fi
if [ "$2" = "all" ] || [[ "$name" =~ ${2} ]]; then
set_group=1
echo " - ${name}" >>$GROUP_FILE
fi
}
#加入其它策略组
set_other_groups()
{
if [ -z "$1" ]; then
return
fi
set_group=1
echo " - ${1}" >>$GROUP_FILE
if [ "$1" = "DIRECT" ] || [ "$1" = "REJECT" ]; then
set_group=1
echo " - ${1}" >>$GROUP_FILE
return
fi
config_foreach add_other_group "groups" "$1" "$2" #比对策略组
}
#加入代理集
@ -155,7 +191,7 @@ set_provider_groups()
return
fi
if [ "$1" = "$3" ] || [ "$1" = "all" ]; then
if [[ "$3" =~ ${1} ]] || [ "$1" = "all" ]; then
set_proxy_provider=1
add_for_this=1
echo " - ${2}" >>$GROUP_FILE
@ -240,7 +276,7 @@ yml_groups_set()
set_group=0
set_proxy_provider=0
config_list_foreach "$section" "other_group" set_other_groups #加入其他策略组
config_list_foreach "$section" "other_group" set_other_groups "$name" #加入其他策略组
config_foreach yml_servers_add "servers" "$name" "$type" #加入服务器节点
if [ "$type" = "relay" ] && [ -s "/tmp/relay_server" ]; then

View File

@ -295,7 +295,8 @@ yml_servers_set()
config_get "multiplex_padding" "$section" "multiplex_padding" ""
config_get "multiplex_statistic" "$section" "multiplex_statistic" ""
config_get "multiplex_only_tcp" "$section" "multiplex_only_tcp" ""
config_get "other_parameters" "$section" "other_parameters" ""
if [ "$enabled" = "0" ]; then
return
fi
@ -1265,6 +1266,11 @@ cat >> "$SERVER_FILE" <<-EOF
routing-mark: "$routing_mark"
EOF
fi
#other_parameters
if [ -n "$other_parameters" ]; then
echo -e "$other_parameters" >> "$SERVER_FILE"
fi
}
new_servers_group_set()
@ -1731,6 +1737,20 @@ cat >> "$SERVER_FILE" <<-EOF
EOF
fi
cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null
cat >> "$SERVER_FILE" <<-EOF
- name: miHoYo
type: select
proxies:
- DIRECT
- Proxy
EOF
cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null
if [ -f "/tmp/Proxy_Provider" ]; then
cat >> "$SERVER_FILE" <<-EOF
use:
EOF
fi
cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null
cat >> "$SERVER_FILE" <<-EOF
- name: AdBlock
type: select
@ -1864,6 +1884,7 @@ ${uci_set}DAZN="DAZN"
${uci_set}Disney="Disney"
${uci_set}Spotify="Spotify"
${uci_set}Steam="Steam"
${uci_set}miHoYo="miHoYo"
${uci_set}AdBlock="AdBlock"
${uci_set}Speedtest="Speedtest"
${uci_set}Telegram="Telegram"
@ -1896,6 +1917,7 @@ ${uci_set}Others="Others"
${UCI_DEL_LIST}="Disney" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Disney" >/dev/null 2>&1
${UCI_DEL_LIST}="Spotify" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Spotify" >/dev/null 2>&1
${UCI_DEL_LIST}="Steam" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Steam" >/dev/null 2>&1
${UCI_DEL_LIST}="miHoYo" >/dev/null 2>&1 && ${UCI_ADD_LIST}="miHoYo" >/dev/null 2>&1
${UCI_DEL_LIST}="Telegram" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Telegram" >/dev/null 2>&1
${UCI_DEL_LIST}="Crypto" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Crypto" >/dev/null 2>&1
${UCI_DEL_LIST}="Discord" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Discord" >/dev/null 2>&1

View File

@ -370,7 +370,7 @@ yml_other_set()
begin
Thread.new{
if $6 == 0 and ${10} != 2 then
if $6 == 0 and ${11} != 2 and '${13}' == 'fake-ip' then
if Value.has_key?('rules') and not Value['rules'].to_a.empty? then
if Value['rules'].to_a.grep(/(?=.*SRC-IP-CIDR,'${fake_ip}')/).empty? then
Value['rules']=Value['rules'].to_a.insert(0,'SRC-IP-CIDR,${12},DIRECT');
@ -939,6 +939,7 @@ yml_other_rules_get()
config_get "DAZN" "$section" "DAZN" "$GlobalTV"
config_get "ChatGPT" "$section" "ChatGPT" "$Proxy"
config_get "AppleTV" "$section" "AppleTV" "$GlobalTV"
config_get "miHoYo" "$section" "miHoYo" "$Domestic"
}
if [ "$1" != "0" ]; then
@ -950,14 +951,14 @@ if [ "$1" != "0" ]; then
config_load "openclash"
config_foreach yml_other_rules_get "other_rules" "$5"
if [ -z "$rule_name" ]; then
yml_other_set "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" "${10}" "${11}" "${12}"
yml_other_set "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" "${10}" "${11}" "${12}" "${13}"
exit 0
#判断策略组是否存在
elif [ "$rule_name" = "ConnersHua_return" ]; then
if [ -z "$(grep -F "$Proxy" /tmp/Proxy_Group)" ]\
|| [ -z "$(grep -F "$Others" /tmp/Proxy_Group)" ];then
LOG_OUT "Warning: Because of The Different Porxy-Group's Name, Stop Setting The Other Rules!"
yml_other_set "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" "${10}" "${11}" "${12}"
yml_other_set "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" "${10}" "${11}" "${12}" "${13}"
exit 0
fi
elif [ "$rule_name" = "ConnersHua" ]; then
@ -967,7 +968,7 @@ if [ "$1" != "0" ]; then
|| [ -z "$(grep -F "$Others" /tmp/Proxy_Group)" ]\
|| [ -z "$(grep -F "$Domestic" /tmp/Proxy_Group)" ]; then
LOG_OUT "Warning: Because of The Different Porxy-Group's Name, Stop Setting The Other Rules!"
yml_other_set "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" "${10}" "${11}" "${12}"
yml_other_set "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" "${10}" "${11}" "${12}" "${13}"
exit 0
fi
elif [ "$rule_name" = "lhie1" ]; then
@ -990,6 +991,7 @@ if [ "$1" != "0" ]; then
|| [ -z "$(grep -F "$ChatGPT" /tmp/Proxy_Group)" ]\
|| [ -z "$(grep -F "$Spotify" /tmp/Proxy_Group)" ]\
|| [ -z "$(grep -F "$Steam" /tmp/Proxy_Group)" ]\
|| [ -z "$(grep -F "$miHoYo" /tmp/Proxy_Group)" ]\
|| [ -z "$(grep -F "$AdBlock" /tmp/Proxy_Group)" ]\
|| [ -z "$(grep -F "$Speedtest" /tmp/Proxy_Group)" ]\
|| [ -z "$(grep -F "$Telegram" /tmp/Proxy_Group)" ]\
@ -1001,13 +1003,13 @@ if [ "$1" != "0" ]; then
|| [ -z "$(grep -F "$GoogleFCM" /tmp/Proxy_Group)" ]\
|| [ -z "$(grep -F "$Domestic" /tmp/Proxy_Group)" ]; then
LOG_OUT "Warning: Because of The Different Porxy-Group's Name, Stop Setting The Other Rules!"
yml_other_set "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" "${10}" "${11}" "${12}"
yml_other_set "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" "${10}" "${11}" "${12}" "${13}"
exit 0
fi
fi
if [ -z "$Proxy" ]; then
LOG_OUT "Error: Missing Porxy-Group's Name, Stop Setting The Other Rules!"
yml_other_set "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" "${10}" "${11}" "${12}"
yml_other_set "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" "${10}" "${11}" "${12}" "${13}"
exit 0
else
if [ "$rule_name" = "lhie1" ]; then
@ -1050,6 +1052,7 @@ if [ "$1" != "0" ]; then
.gsub(/,Spotify$/, ',$Spotify#delete_')
.gsub(/,ChatGPT$/, ',$ChatGPT#delete_')
.gsub(/,Steam$/, ',$Steam#delete_')
.gsub(/,miHoYo$/, ',$miHoYo#delete_')
.gsub(/,AdBlock$/, ',$AdBlock#delete_')
.gsub(/,Speedtest$/, ',$Speedtest#delete_')
.gsub(/,Telegram$/, ',$Telegram#delete_')
@ -1081,6 +1084,7 @@ if [ "$1" != "0" ]; then
.gsub!(/: \"Spotify\"/,': \"$Spotify#delete_\"')
.gsub!(/: \"ChatGPT\"/,': \"$ChatGPT#delete_\"')
.gsub!(/: \"Steam\"/,': \"$Steam#delete_\"')
.gsub!(/: \"miHoYo\"/,': \"$miHoYo#delete_\"')
.gsub!(/: \"AdBlock\"/,': \"$AdBlock#delete_\"')
.gsub!(/: \"Speedtest\"/,': \"$Speedtest#delete_\"')
.gsub!(/: \"Telegram\"/,': \"$Telegram#delete_\"')
@ -1155,4 +1159,4 @@ if [ "$1" != "0" ]; then
fi
fi
yml_other_set "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" "${10}" "${11}" "${12}"
yml_other_set "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" "${10}" "${11}" "${12}" "${13}"

View File

@ -1,8 +1,8 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"PO-Revision-Date: 2022-10-23 17:26+0000\n"
"Last-Translator: Amaury <y0da@live.fr>\n"
"PO-Revision-Date: 2023-06-18 10:26+0000\n"
"Last-Translator: viking76 <liaudetgael@gmail.com>\n"
"Language-Team: French <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationswatchcat/fr/>\n"
"Language: fr\n"
@ -10,7 +10,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.14.2-dev\n"
"X-Generator: Weblate 4.18.1\n"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:104
msgid ""
@ -23,7 +23,7 @@ msgstr ""
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:60
msgid "Address family for pinging the host"
msgstr ""
msgstr "Famille d'adresses pour le ping de l'hôte"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:94
msgid ""
@ -107,7 +107,7 @@ msgstr "Énorme : 1492 octets"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:52
msgid "IP address or hostname to ping."
msgstr ""
msgstr "Adresse IP ou nom d'hôte à interroger."
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:118
msgid ""
@ -130,6 +130,17 @@ msgid ""
"li><li>5 minutes would be: <b>5m</b></li><li> 1 hour would be: <b>1h</b></"
"li><li>1 week would be: <b>7d</b></li><ul>"
msgstr ""
"En mode Redémarrage périodique, elle définit la fréquence de redémarrage. "
"<br />En mode Redémarrage par ping, elle définit la plus longue période sans "
"réponse de l'hôte à vérifier avant qu'un redémarrage ne soit engagé. <br /"
">En mode Redémarrage du réseau, elle définit la plus longue période sans "
"réponse de l'hôte à vérifier avant que l'interface ne soit redémarrée. <br /"
"><br />L'unité par défaut est la seconde, sans suffixe, mais vous pouvez "
"utiliser le suffixe <b>m</b> pour les minutes, <b>h</b> pour les heures ou "
"<b>d</b> pour les jours. <br /><br />Exemples :<ul><li>10 secondes "
"seraient : <b>10</b> ou <b>10s</b></li><li>5 minutes seraient : <b>5m</b></"
"li><li><li>1 heure serait : <b>1h</b></li><li>1 semaine serait : <b>7j</b></"
"li><ul>"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:102
msgid "Interface"
@ -176,6 +187,13 @@ msgid ""
"time. <br /> Run Script: Run a script if a ping to a specified host fails "
"for a specified duration of time. <br />"
msgstr ""
"Ping Reboot : Redémarrez ce périphérique si un ping vers un hôte spécifié "
"échoue pendant une durée spécifiée. <br /> Redémarrage périodique : "
"Redémarrez cet appareil après un intervalle de temps spécifié. <br /> "
"Redémarrer l'interface : Redémarrez une interface réseau si un ping vers un "
"hôte spécifié échoue pendant une durée spécifiée. <br /> Exécuter le "
"script : exécutez un script si un ping vers un hôte spécifié échoue pendant "
"une durée spécifiée. <br />"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:29
msgid "Restart Interface"
@ -183,17 +201,19 @@ msgstr "Redémarrer l'interface"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:30
msgid "Run Script"
msgstr ""
msgstr "Script de lancement"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:33
msgid "Script to run"
msgstr ""
msgstr "Script à exécuter"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:34
msgid ""
"Script to run when the host has not responded for the specified duration of "
"time. The script is passed the interface name as $1"
msgstr ""
"Script à exécuter lorsque l'hôte n'a pas répondu pendant la durée spécifiée. "
"Le script reçoit le nom de l'interface en tant que $1"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:81
msgid "Small: 1 byte"

View File

@ -1,8 +1,8 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"PO-Revision-Date: 2023-03-26 16:40+0000\n"
"Last-Translator: Nguyễn văn tuyên <admin@tuyen.vn>\n"
"PO-Revision-Date: 2023-06-20 13:51+0000\n"
"Last-Translator: Quy <haonguyen93056@gmail.com>\n"
"Language-Team: Vietnamese <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationswatchcat/vi/>\n"
"Language: vi\n"
@ -10,7 +10,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.17-dev\n"
"X-Generator: Weblate 4.18.1\n"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:104
msgid ""
@ -23,7 +23,7 @@ msgstr ""
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:60
msgid "Address family for pinging the host"
msgstr ""
msgstr "Address family for pinging the host"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:94
msgid ""
@ -33,6 +33,11 @@ msgid ""
"fail. Enter the number of seconds to wait for the soft reboot to fail or use "
"0 to disable the forced reboot delay."
msgstr ""
"Áp dụng cho chế độ Khởi động lại Ping và Khởi động lại định kỳ</i> <br />Khi "
"khởi động lại bộ định tuyến, dịch vụ sẽ kích hoạt khởi động lại mềm. Nhập "
"một giá trị khác không ở đây sẽ kích hoạt khởi động lại cứng bị trì hoãn nếu "
"khởi động lại mềm không thành công. Nhập số giây để chờ khởi động lại mềm "
"không thành công hoặc sử dụng 0 để vô hiệu hóa độ trễ khởi động lại bắt buộc."
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:111
msgid ""
@ -40,26 +45,29 @@ msgid ""
"ModemManager, you can have Watchcat restart your ModemManger interface by "
"specifying its name."
msgstr ""
"Áp dụng cho chế độ Khởi động lại Ping và Khởi động lại giao diện</i> <br /"
">Nếu sử dụng ModemManager, bạn có thể yêu cầu Watchcat khởi động lại giao "
"diện ModemManger của mình bằng cách chỉ định tên của nó."
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:84
msgid "Big: 248 bytes"
msgstr ""
msgstr "Big: 248 bytes"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:70
msgid "Check Interval"
msgstr ""
msgstr "Kiểm tra khoảng thời gian"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:93
msgid "Force Reboot Delay"
msgstr ""
msgstr "Force Reboot Delay"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:19
msgid "General Settings"
msgstr ""
msgstr "Các cài đặt chung"
#: applications/luci-app-watchcat/root/usr/share/rpcd/acl.d/luci-app-watchcat.json:3
msgid "Grant access to LuCI app watchcat"
msgstr ""
msgstr "Cấp quyền truy cập vào ứng dụng LuCI watchcat"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:12
msgid ""
@ -67,10 +75,13 @@ msgid ""
"host becomes unreachable. Click the <b>Add</b> button at the bottom to set "
"up more than one action."
msgstr ""
"Tại đây, bạn có thể thiết lập một số kiểm tra và hành động cần thực hiện "
"trong trường hợp máy chủ không thể truy cập được. Nhấp vào nút <b>Thêm</b> ở "
"dưới cùng để thiết lập nhiều hành động."
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:52
msgid "Host To Check"
msgstr ""
msgstr "Máy chủ để kiểm tra"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:71
msgid ""
@ -81,20 +92,28 @@ msgid ""
"b></li><li>1 hour would be: <b>1h</b></li><li>1 week would be: <b>7d</b></"
"li><ul>"
msgstr ""
"Tần suất ping máy chủ được chỉ định ở trên. <br /><br />Đơn vị mặc định là "
"giây, không có hậu tố, nhưng bạn có thể sử dụng hậu tố <b>m</b> cho phút, "
"<b>h</b> cho giờ hoặc <b>d </b> trong nhiều ngày. <br /><br /> Ví dụ:"
"<ul><li>10 giây sẽ là: <b>10</b> hoặc <b>10 giây</b></li><li>5 phút sẽ là: "
"<b>5 phút</b></li><li>1 giờ sẽ là: <b>1h</b></li><li>1 tuần sẽ là: <b>7 "
"ngày</b></ li><ul>"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:85
msgid "Huge: 1492 bytes"
msgstr ""
msgstr "Huge: 1492 bytes"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:52
msgid "IP address or hostname to ping."
msgstr ""
msgstr "Địa chỉ IP hoặc tên máy chủ để ping."
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:118
msgid ""
"If using ModemManager, then before restarting the interface, set the modem "
"to be allowed to use any band."
msgstr ""
"Nếu sử dụng ModemManager, thì trước khi khởi động lại giao diện, hãy đặt "
"modem được phép sử dụng bất kỳ băng tần nào."
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:41
msgid ""
@ -109,42 +128,53 @@ msgid ""
"li><li>5 minutes would be: <b>5m</b></li><li> 1 hour would be: <b>1h</b></"
"li><li>1 week would be: <b>7d</b></li><ul>"
msgstr ""
"Trong chế độ Khởi động lại định kỳ, nó xác định tần suất khởi động lại. <br /"
">Trong chế độ Khởi động lại Ping, nó xác định khoảng thời gian dài nhất mà "
"Máy chủ không có phản hồi để kiểm tra trước khi thực hiện khởi động lại. "
"<br />Trong chế độ Khởi động lại mạng hoặc Chạy tập lệnh, nó xác định khoảng "
"thời gian dài nhất mà Máy chủ không phản hồi để Kiểm tra trước khi giao diện "
"được khởi động lại hoặc tập lệnh được chạy. <br /><br />Đơn vị mặc định là "
"giây, không có hậu tố, nhưng bạn có thể sử dụng hậu tố <b>m</b> cho phút, "
"<b>h</b> cho giờ hoặc <b>d </b> trong nhiều ngày. <br /><br />Ví dụ:"
"<ul><li>10 giây sẽ là: <b>10</b> hoặc <b>10 giây</b></li><li>5 phút sẽ là: "
"<b>5 phút</b></li><li> 1 giờ sẽ là: <b>1h</b></li><li>1 tuần sẽ là: <b>7 "
"ngày</b></ li><ul>"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:102
msgid "Interface"
msgstr ""
msgstr "Giao diện"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:103
msgid "Interface to monitor and/or restart"
msgstr ""
msgstr "Giao diện để theo dõi và/hoặc khởi động lại"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:86
msgid "Jumbo: 9000 bytes"
msgstr ""
msgstr "Jumbo: 9000 bytes"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:22
msgid "Mode"
msgstr ""
msgstr "Chế độ"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:110
msgid "Name of ModemManager Interface"
msgstr ""
msgstr "Tên giao diện ModemManager"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:40
msgid "Period"
msgstr ""
msgstr "Giai đoạn"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:28
msgid "Periodic Reboot"
msgstr ""
msgstr "Khởi động lại định kỳ"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:80
msgid "Ping Packet Size"
msgstr ""
msgstr "Kích thước gói Ping"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:27
msgid "Ping Reboot"
msgstr ""
msgstr "Khởi động lại Ping"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:23
msgid ""
@ -155,47 +185,57 @@ msgid ""
"time. <br /> Run Script: Run a script if a ping to a specified host fails "
"for a specified duration of time. <br />"
msgstr ""
"Khởi động lại Ping: Khởi động lại thiết bị này nếu ping đến một máy chủ được "
"chỉ định không thành công trong một khoảng thời gian nhất định. <br />Khởi "
"động lại định kỳ: Khởi động lại thiết bị này sau một khoảng thời gian nhất "
"định. <br />Khởi động lại giao diện: Khởi động lại giao diện mạng nếu ping "
"đến một máy chủ cụ thể không thành công trong một khoảng thời gian cụ thể. "
"<br />Chạy tập lệnh: Chạy tập lệnh nếu lệnh ping đến một máy chủ cụ thể "
"không thành công trong một khoảng thời gian cụ thể. <br />"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:29
msgid "Restart Interface"
msgstr ""
msgstr "Khởi động lại giao thức"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:30
msgid "Run Script"
msgstr ""
msgstr "Chạy Script"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:33
msgid "Script to run"
msgstr ""
msgstr "Đoạn mã để chạy"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:34
msgid ""
"Script to run when the host has not responded for the specified duration of "
"time. The script is passed the interface name as $1"
msgstr ""
"Tập lệnh chạy khi máy chủ không phản hồi trong khoảng thời gian đã chỉ định. "
"Tập lệnh được chuyển tên giao diện là $1"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:81
msgid "Small: 1 byte"
msgstr ""
msgstr "Small: 1 byte"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:83
msgid "Standard: 56 bytes"
msgstr ""
msgstr "Standard: 56 bytes"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:15
msgid "These rules will govern how this device reacts to network events."
msgstr ""
"Các quy tắc này sẽ chi phối cách thiết bị này phản ứng với các sự kiện mạng."
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:117
msgid "Unlock Modem Bands"
msgstr ""
msgstr "Mở khóa băng tần modem"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:11
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:15
#: applications/luci-app-watchcat/root/usr/share/luci/menu.d/luci-app-watchcat.json:3
msgid "Watchcat"
msgstr ""
msgstr "Watchcat"
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:82
msgid "Windows: 32 bytes"
msgstr ""
msgstr "Windows: 32 bytes"