mirror of
https://github.com/juewuy/ShellCrash.git
synced 2026-03-12 00:11:31 +00:00
Compare commits
3 Commits
9e78370c5c
...
codex/impl
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c5da0da08a | ||
|
|
ed635b871a | ||
|
|
a32b05a391 |
@@ -48,6 +48,5 @@ rules:
|
||||
- GEOIP,private,🔒 私有网络,no-resolve
|
||||
- GEOIP,cn,🀄️ 国内 IP
|
||||
- GEOIP,telegram,📲 电报消息,no-resolve
|
||||
- GEOIP,games,🕹️ 游戏平台
|
||||
- GEOIP,media,🌍 国外媒体
|
||||
- MATCH,🐟 漏网之鱼
|
||||
@@ -44,6 +44,5 @@ rules:
|
||||
- GEOIP,private,🔒 私有网络,no-resolve
|
||||
- GEOIP,cn,🀄️ 国内 IP
|
||||
- GEOIP,telegram,📲 电报消息,no-resolve
|
||||
- GEOIP,games,🕹️ 游戏平台
|
||||
- GEOIP,media,🌍 国外媒体
|
||||
- MATCH,🐟 漏网之鱼
|
||||
@@ -178,14 +178,6 @@ rule-providers:
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/telegramip.mrs"
|
||||
interval: 86400
|
||||
|
||||
gamesip:
|
||||
type: http
|
||||
behavior: ipcidr
|
||||
format: mrs
|
||||
path: ./ruleset/gamesip.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/gamesip.mrs"
|
||||
interval: 86400
|
||||
|
||||
netflixip:
|
||||
type: http
|
||||
behavior: ipcidr
|
||||
@@ -221,7 +213,6 @@ rules:
|
||||
- RULE-SET,privateip,🔒 私有网络,no-resolve
|
||||
- RULE-SET,cnip,🀄️ 国内 IP
|
||||
- RULE-SET,telegramip,📲 电报消息,no-resolve
|
||||
- RULE-SET,gamesip,🕹️ 游戏平台
|
||||
- RULE-SET,netflixip,🎥 奈飞视频
|
||||
- RULE-SET,mediaip,🌍 国外媒体
|
||||
- MATCH,🐟 漏网之鱼
|
||||
|
||||
@@ -167,14 +167,6 @@ rule-providers:
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/telegramip.mrs"
|
||||
interval: 86400
|
||||
|
||||
gamesip:
|
||||
type: http
|
||||
behavior: ipcidr
|
||||
format: mrs
|
||||
path: ./ruleset/gamesip.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/gamesip.mrs"
|
||||
interval: 86400
|
||||
|
||||
netflixip:
|
||||
type: http
|
||||
behavior: ipcidr
|
||||
@@ -209,7 +201,6 @@ rules:
|
||||
- RULE-SET,privateip,🔒 私有网络,no-resolve
|
||||
- RULE-SET,cnip,🀄️ 国内 IP
|
||||
- RULE-SET,telegramip,📲 电报消息,no-resolve
|
||||
- RULE-SET,gamesip,🕹️ 游戏平台
|
||||
- RULE-SET,netflixip,🎥 奈飞视频
|
||||
- RULE-SET,mediaip,🌍 国外媒体
|
||||
- MATCH,🐟 漏网之鱼
|
||||
|
||||
@@ -169,13 +169,6 @@ rule-providers:
|
||||
behavior: domain
|
||||
proxy: DIRECT
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/games.mrs"
|
||||
gamesip:
|
||||
type: http
|
||||
format: mrs
|
||||
interval: 86400
|
||||
behavior: ipcidr
|
||||
proxy: DIRECT
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/gamesip.mrs"
|
||||
mediaip:
|
||||
type: http
|
||||
format: mrs
|
||||
@@ -247,7 +240,6 @@ rules:
|
||||
|
||||
- RULE-SET,proxy,🌐 国际流量
|
||||
- RULE-SET,cn,🀄️ 国内流量
|
||||
- RULE-SET,gamesip,🎮 外服游戏
|
||||
- RULE-SET,mediaip,🌍 国际媒体
|
||||
- RULE-SET,cnip,🀄️ 国内流量
|
||||
|
||||
|
||||
@@ -54,7 +54,6 @@
|
||||
|
||||
{ "action": "resolve", "server": "dns_proxy", "strategy": "prefer_ipv4", "match_only": true},
|
||||
{ "rule_set": [ "cnip" ], "outbound": "🀄️ 国内 IP" },
|
||||
{ "rule_set": [ "gamesip" ], "outbound": "🕹️ 游戏平台" },
|
||||
{ "rule_set": [ "netflixip" ], "outbound": "🎥 奈飞视频" },
|
||||
{ "rule_set": [ "mediaip" ], "outbound": "🌍 国外媒体" }
|
||||
],
|
||||
@@ -195,14 +194,6 @@
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/cnip.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "gamesip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/gamesip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/gamesip.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "netflixip",
|
||||
"type": "remote",
|
||||
|
||||
@@ -51,7 +51,6 @@
|
||||
|
||||
{ "action": "resolve", "server": "dns_proxy", "strategy": "prefer_ipv4", "match_only": true},
|
||||
{ "rule_set": [ "cnip" ], "outbound": "🀄️ 国内 IP" },
|
||||
{ "rule_set": [ "gamesip" ], "outbound": "🕹️ 游戏平台" },
|
||||
{ "rule_set": [ "netflixip" ], "outbound": "🎥 奈飞视频" },
|
||||
{ "rule_set": [ "mediaip" ], "outbound": "🌍 国外媒体" }
|
||||
],
|
||||
@@ -184,14 +183,6 @@
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/cnip.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "gamesip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/gamesip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/gamesip.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "netflixip",
|
||||
"type": "remote",
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
{ "tag": "🎬 奈飞视频", "type": "selector", "outbounds": ["🚀 节点选择", "🎬 奈飞节点", "🎯 本地直连", "♻️ 自动选择", "🛠️ 手动切换", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇺🇸 美国节点", "🇯🇵 日本节点", "🇪🇺 欧洲节点", "🇰🇷 韩国节点", "🇸🇬 狮城节点", "👑 高级节点", "📉 省流节点", {providers_tags}] },
|
||||
{ "tag": "🎬 奈飞节点", "type": "urltest", "use_all_providers": true, "include": "(?i)(NF|奈飞|解锁|Netflix|NETFLIX|Media)" },
|
||||
{ "tag": "▶️ 油管视频", "type": "selector", "outbounds": ["🚀 节点选择", "🎯 本地直连", "♻️ 自动选择", "🛠️ 手动切换", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇺🇸 美国节点", "🇯🇵 日本节点", "🇪🇺 欧洲节点", "🇰🇷 韩国节点", "🇸🇬 狮城节点", "👑 高级节点", "📉 省流节点", {providers_tags}] },
|
||||
{ "tag": "📢 谷歌推送", "type": "selector", "outbounds": ["🚀 节点选择", "🎯 本地直连", "♻️ 自动选择", "🛠️ 手动切换", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇺🇸 美国节点", "🇯🇵 日本节点", "🇪🇺 欧洲节点", "🇰🇷 韩国节点", "🇸🇬 狮城节点", "👑 高级节点", "📉 省流节点", {providers_tags}] },
|
||||
{ "tag": "📢 谷歌推送", "type": "selector", "outbounds": ["🚀 节点选择", "🎯 本地直连", "♻️ 自动选择", "🛠️ 手动切换", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇺🇸 美国节点", "🇯🇵 日本节点", "🇪🇺 欧洲节点", "🇰🇷 韩国节点", "🇸🇬 狮城节点", "👑 高级节点", "📉 省流节点", {providers_tags}] },
|
||||
{ "tag": "📲 电报消息", "type": "selector", "outbounds": ["🚀 节点选择", "🎯 本地直连", "♻️ 自动选择", "🛠️ 手动切换", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇺🇸 美国节点", "🇯🇵 日本节点", "🇪🇺 欧洲节点", "🇰🇷 韩国节点", "🇸🇬 狮城节点", "👑 高级节点", "📉 省流节点", {providers_tags}] },
|
||||
{ "tag": "🌍 国际媒体", "type": "selector", "outbounds": ["🚀 节点选择", "🎯 本地直连", "♻️ 自动选择", "🛠️ 手动切换", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇺🇸 美国节点", "🇯🇵 日本节点", "🇪🇺 欧洲节点", "🇰🇷 韩国节点", "🇸🇬 狮城节点", "👑 高级节点", "📉 省流节点", {providers_tags}] },
|
||||
{ "tag": "🌐 国际流量", "type": "selector", "outbounds": ["🚀 节点选择", "🎯 本地直连", "♻️ 自动选择", "🛠️ 手动切换", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇺🇸 美国节点", "🇯🇵 日本节点", "🇪🇺 欧洲节点", "🇰🇷 韩国节点", "🇸🇬 狮城节点", "👑 高级节点", "📉 省流节点", {providers_tags}] },
|
||||
@@ -77,7 +77,6 @@
|
||||
{ "rule_set": ["telegramip"], "outbound": "📲 电报消息" },
|
||||
|
||||
{ "action": "resolve", "server": "dns_proxy", "strategy": "prefer_ipv4" },
|
||||
{ "rule_set": ["gamesip"], "outbound": "🎮 外服游戏" },
|
||||
{ "rule_set": ["mediaip"], "outbound": "🌍 国际媒体" },
|
||||
{ "rule_set": ["cnip"], "outbound": "🀄️ 国内流量" }
|
||||
],
|
||||
@@ -242,14 +241,6 @@
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/sing-box-ruleset/telegramip.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "gamesip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/gamesip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/sing-box-ruleset/gamesip.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "mediaip",
|
||||
"type": "remote",
|
||||
|
||||
33
scripts/lang/chs/subconverter.lang
Normal file
33
scripts/lang/chs/subconverter.lang
Normal file
@@ -0,0 +1,33 @@
|
||||
SUBCONVERTER_MENU_GEN="生成包含全部节点、订阅的配置文件"
|
||||
SUBCONVERTER_MENU_EXCLUDE="设置\033[31m排除节点正则\033[0m"
|
||||
SUBCONVERTER_MENU_INCLUDE="设置\033[32m包含节点正则\033[0m"
|
||||
SUBCONVERTER_MENU_RULE="选择\033[33m在线规则模版\033[0m"
|
||||
SUBCONVERTER_MENU_SERVER="选择Subconverter服务器"
|
||||
SUBCONVERTER_MENU_UA="自定义浏览器UA"
|
||||
|
||||
SUBCONVERTER_INPUT="请输入"
|
||||
SUBCONVERTER_BACK="或输入 0 返回上级菜单"
|
||||
|
||||
SUBCONVERTER_EXCLUDE_HINT1="匹配关键字的节点会在导入时被【屏蔽】!"
|
||||
SUBCONVERTER_INCLUDE_HINT1="仅有匹配关键字的节点才会被【导入】!!!"
|
||||
SUBCONVERTER_KEYWORD_SPLIT="多个关键字可以用\033[30;47m | \033[0m号分隔"
|
||||
SUBCONVERTER_REGEX_HINT="\033[32m支持正则表达式\033[0m,空格请使用\033[30;47m + \033[0m号替代"
|
||||
SUBCONVERTER_EXCLUDE_INPUT="请直接输入节点过滤关键字"
|
||||
SUBCONVERTER_INCLUDE_INPUT="请直接输入节点匹配关键字"
|
||||
SUBCONVERTER_EXCLUDE_CLEAR="或输入 d \033[31m清空\033[0m节点过滤关键字"
|
||||
SUBCONVERTER_INCLUDE_CLEAR="或输入 d \033[31m清空\033[0m节点匹配关键字"
|
||||
|
||||
SUBCONVERTER_RULE_CURRENT="当前使用规则为:"
|
||||
SUBCONVERTER_SERVER_HINT="以下为互联网采集的第三方服务器,具体安全性请自行斟酌!"
|
||||
SUBCONVERTER_SERVER_THANKS="感谢以下作者的无私奉献!!!"
|
||||
SUBCONVERTER_SERVER_CURRENT="当前使用后端为:"
|
||||
SUBCONVERTER_SET_OK="设置成功!返回上级菜单"
|
||||
|
||||
SUBCONVERTER_UA_HINT="无法正确获取配置文件时可尝试使用"
|
||||
SUBCONVERTER_UA_CURRENT="当前UA:"
|
||||
SUBCONVERTER_UA_AUTO="使用自动UA(默认)"
|
||||
SUBCONVERTER_UA_NONE="不使用UA"
|
||||
SUBCONVERTER_UA_CUSTOM="使用自定义UA"
|
||||
SUBCONVERTER_UA_CLEAR="清空UA"
|
||||
SUBCONVERTER_UA_CUSTOM_WARN="注意:\n自定义UA不可包含空格或特殊符号!"
|
||||
SUBCONVERTER_UA_CUSTOM_INPUT="请直接输入自定义UA"
|
||||
13
scripts/lang/chs/uninstall.lang
Normal file
13
scripts/lang/chs/uninstall.lang
Normal file
@@ -0,0 +1,13 @@
|
||||
UNINSTALL_WARN="警告:该操作不可逆!"
|
||||
UNINSTALL_CONFIRM="是否确认卸载ShellCrash?"
|
||||
UNINSTALL_YES="是"
|
||||
UNINSTALL_NO="否"
|
||||
UNINSTALL_KEEP_CONFIRM="是否保留脚本配置及订阅文件?"
|
||||
UNINSTALL_ENV_ERROR="环境变量配置有误,请尝试手动移除安装目录!"
|
||||
UNINSTALL_DONE="已卸载ShellCrash相关文件!有缘再会!"
|
||||
UNINSTALL_CLOSE_HINT="请手动关闭当前窗口以重置环境变量!"
|
||||
UNINSTALL_CANCELED="操作已取消!"
|
||||
UNINSTALL_CRON_CLASH="clash服务"
|
||||
UNINSTALL_CRON_SUB="订阅链接"
|
||||
UNINSTALL_CRON_INIT="ShellCrash初始化"
|
||||
UNINSTALL_SSH_MARK="启用外网访问SSH服务"
|
||||
33
scripts/lang/en/subconverter.lang
Normal file
33
scripts/lang/en/subconverter.lang
Normal file
@@ -0,0 +1,33 @@
|
||||
SUBCONVERTER_MENU_GEN="Generate config including all nodes and subscriptions"
|
||||
SUBCONVERTER_MENU_EXCLUDE="Set \033[31mexclude node regex\033[0m"
|
||||
SUBCONVERTER_MENU_INCLUDE="Set \033[32minclude node regex\033[0m"
|
||||
SUBCONVERTER_MENU_RULE="Select \033[33monline rule template\033[0m"
|
||||
SUBCONVERTER_MENU_SERVER="Select Subconverter server"
|
||||
SUBCONVERTER_MENU_UA="Custom browser UA"
|
||||
|
||||
SUBCONVERTER_INPUT="Please enter"
|
||||
SUBCONVERTER_BACK="or enter 0 to return"
|
||||
|
||||
SUBCONVERTER_EXCLUDE_HINT1="Nodes matching keywords will be blocked during import!"
|
||||
SUBCONVERTER_INCLUDE_HINT1="Only nodes matching keywords will be imported!!!"
|
||||
SUBCONVERTER_KEYWORD_SPLIT="Use \033[30;47m | \033[0m to separate multiple keywords"
|
||||
SUBCONVERTER_REGEX_HINT="\033[32mRegex is supported\033[0m. Use \033[30;47m + \033[0m instead of spaces"
|
||||
SUBCONVERTER_EXCLUDE_INPUT="Enter exclude keyword(s) directly"
|
||||
SUBCONVERTER_INCLUDE_INPUT="Enter include keyword(s) directly"
|
||||
SUBCONVERTER_EXCLUDE_CLEAR="or enter d to \033[31mclear\033[0m exclude keywords"
|
||||
SUBCONVERTER_INCLUDE_CLEAR="or enter d to \033[31mclear\033[0m include keywords"
|
||||
|
||||
SUBCONVERTER_RULE_CURRENT="Current rule: "
|
||||
SUBCONVERTER_SERVER_HINT="The following third-party servers are collected from the internet. Please evaluate their security by yourself!"
|
||||
SUBCONVERTER_SERVER_THANKS="Thanks to the contributors below for their great work!!!"
|
||||
SUBCONVERTER_SERVER_CURRENT="Current backend: "
|
||||
SUBCONVERTER_SET_OK="Settings saved. Returning to previous menu"
|
||||
|
||||
SUBCONVERTER_UA_HINT="Try this if the config file cannot be fetched correctly"
|
||||
SUBCONVERTER_UA_CURRENT="Current UA: "
|
||||
SUBCONVERTER_UA_AUTO="Use auto UA (default)"
|
||||
SUBCONVERTER_UA_NONE="Do not use UA"
|
||||
SUBCONVERTER_UA_CUSTOM="Use custom UA"
|
||||
SUBCONVERTER_UA_CLEAR="Clear UA"
|
||||
SUBCONVERTER_UA_CUSTOM_WARN="Note:\nCustom UA cannot contain spaces or special symbols!"
|
||||
SUBCONVERTER_UA_CUSTOM_INPUT="Enter custom UA"
|
||||
13
scripts/lang/en/uninstall.lang
Normal file
13
scripts/lang/en/uninstall.lang
Normal file
@@ -0,0 +1,13 @@
|
||||
UNINSTALL_WARN="Warning: this action is irreversible!"
|
||||
UNINSTALL_CONFIRM="Are you sure you want to uninstall ShellCrash?"
|
||||
UNINSTALL_YES="Yes"
|
||||
UNINSTALL_NO="No"
|
||||
UNINSTALL_KEEP_CONFIRM="Keep script configs and subscription files?"
|
||||
UNINSTALL_ENV_ERROR="Environment variable configuration is incorrect. Please remove the installation directory manually!"
|
||||
UNINSTALL_DONE="ShellCrash related files have been removed. Goodbye!"
|
||||
UNINSTALL_CLOSE_HINT="Please close the current terminal window manually to reset environment variables!"
|
||||
UNINSTALL_CANCELED="Operation canceled!"
|
||||
UNINSTALL_CRON_CLASH="clash service"
|
||||
UNINSTALL_CRON_SUB="subscription link"
|
||||
UNINSTALL_CRON_INIT="ShellCrash initialization"
|
||||
UNINSTALL_SSH_MARK="Enable SSH access from WAN"
|
||||
@@ -7,18 +7,20 @@ __IS_MODULE_SUBCONVERTER=1
|
||||
[ -z "$rule_link" ] && rule_link=1
|
||||
[ -z "$server_link" ] && server_link=1
|
||||
|
||||
load_lang subconverter
|
||||
|
||||
# Subconverter在线订阅转换
|
||||
subconverter() {
|
||||
while true; do
|
||||
comp_box "1) \033[32m生成\033[0m包含全部节点、订阅的配置文件"\
|
||||
"2) 设置\033[31m排除节点正则\033[0m \033[47;30m$exclude\033[0m"\
|
||||
"3) 设置\033[32m包含节点正则\033[0m \033[47;30m$include\033[0m"\
|
||||
"4) 选择\033[33m在线规则模版\033[0m"\
|
||||
"5) 选择\033[0mSubconverter服务器\033[0m"\
|
||||
"6) 自定义浏览器UA \033[32m$user_agent\033[0m"\
|
||||
comp_box "1) \033[32m$SUBCONVERTER_MENU_GEN\033[0m"\
|
||||
"2) $SUBCONVERTER_MENU_EXCLUDE \033[47;30m$exclude\033[0m"\
|
||||
"3) $SUBCONVERTER_MENU_INCLUDE \033[47;30m$include\033[0m"\
|
||||
"4) $SUBCONVERTER_MENU_RULE"\
|
||||
"5) $SUBCONVERTER_MENU_SERVER"\
|
||||
"6) $SUBCONVERTER_MENU_UA \033[32m$user_agent\033[0m"\
|
||||
""\
|
||||
"0) $COMMON_BACK"
|
||||
read -r -p "请输入对应数字> " num
|
||||
read -r -p "$COMMON_INPUT> " num
|
||||
case "$num" in
|
||||
"" | 0)
|
||||
break
|
||||
@@ -57,13 +59,13 @@ subconverter() {
|
||||
|
||||
# 排除节点正则
|
||||
gen_link_flt() {
|
||||
comp_box "\033[33m匹配关键字的节点会在导入时被【屏蔽】!\033[0m" \
|
||||
"多个关键字可以用\033[30;47m | \033[0m号分隔" \
|
||||
"\033[32m支持正则表达式\033[0m,空格请使用\033[30;47m + \033[0m号替代"
|
||||
btm_box "\033[36m请直接输入节点过滤关键字\033[0m" \
|
||||
"或输入 d \033[31m清空\033[0m节点过滤关键字" \
|
||||
"或输入 0 返回上级菜单"
|
||||
read -r -p "请输入> " res
|
||||
comp_box "\033[33m$SUBCONVERTER_EXCLUDE_HINT1\033[0m" \
|
||||
"$SUBCONVERTER_KEYWORD_SPLIT" \
|
||||
"$SUBCONVERTER_REGEX_HINT"
|
||||
btm_box "\033[36m$SUBCONVERTER_EXCLUDE_INPUT\033[0m" \
|
||||
"$SUBCONVERTER_EXCLUDE_CLEAR" \
|
||||
"$SUBCONVERTER_BACK"
|
||||
read -r -p "$SUBCONVERTER_INPUT> " res
|
||||
case "$res" in
|
||||
0)
|
||||
return 0
|
||||
@@ -85,13 +87,13 @@ gen_link_flt() {
|
||||
|
||||
# 包含节点正则
|
||||
gen_link_ele() {
|
||||
comp_box "\033[33m仅有匹配关键字的节点才会被【导入】!!!\033[0m" \
|
||||
"多个关键字可以用\033[30;47m | \033[0m号分隔" \
|
||||
"\033[32m支持正则表达式\033[0m,空格请使用\033[30;47m + \033[0m号替代"
|
||||
btm_box "\033[36m请直接输入节点匹配关键字\033[0m" \
|
||||
"或输入 d \033[31m清空\033[0m节点匹配关键字" \
|
||||
"或输入 0 返回上级菜单"
|
||||
read -r -p "请输入> " res
|
||||
comp_box "\033[33m$SUBCONVERTER_INCLUDE_HINT1\033[0m" \
|
||||
"$SUBCONVERTER_KEYWORD_SPLIT" \
|
||||
"$SUBCONVERTER_REGEX_HINT"
|
||||
btm_box "\033[36m$SUBCONVERTER_INCLUDE_INPUT\033[0m" \
|
||||
"$SUBCONVERTER_INCLUDE_CLEAR" \
|
||||
"$SUBCONVERTER_BACK"
|
||||
read -r -p "$SUBCONVERTER_INPUT> " res
|
||||
case "$res" in
|
||||
0)
|
||||
return 0
|
||||
@@ -115,11 +117,11 @@ gen_link_ele() {
|
||||
gen_link_config() {
|
||||
list=$(grep -aE '^5' "$CRASHDIR"/configs/servers.list | awk '{print $2$4}')
|
||||
now=$(grep -aE '^5' "$CRASHDIR"/configs/servers.list | sed -n ""$rule_link"p" | awk '{print $2}')
|
||||
comp_box "当前使用规则为:\033[33m$now\033[0m"
|
||||
comp_box "$SUBCONVERTER_RULE_CURRENT\033[33m$now\033[0m"
|
||||
list_box "$list"
|
||||
content_line ""
|
||||
common_back
|
||||
read -r -p "请输入对应数字> " num
|
||||
read -r -p "$COMMON_INPUT> " num
|
||||
totalnum=$(grep -acE '^5' "$CRASHDIR"/configs/servers.list)
|
||||
if [ -z "$num" ] || [ "$num" -gt "$totalnum" ]; then
|
||||
errornum
|
||||
@@ -129,7 +131,7 @@ gen_link_config() {
|
||||
# 将对应标记值写入配置
|
||||
rule_link=$num
|
||||
if setconfig rule_link "$rule_link"; then
|
||||
msg_alert "\033[32m设置成功!返回上级菜单\033[0m"
|
||||
msg_alert "\033[32m$SUBCONVERTER_SET_OK\033[0m"
|
||||
else
|
||||
common_failed
|
||||
fi
|
||||
@@ -141,14 +143,14 @@ gen_link_server() {
|
||||
list=$(grep -aE '^3|^4' "$CRASHDIR"/configs/servers.list | awk '{print $3" "$2}')
|
||||
now=$(grep -aE '^3|^4' "$CRASHDIR"/configs/servers.list | sed -n ""$server_link"p" | awk '{print $3}')
|
||||
|
||||
comp_box "\033[36m以下为互联网采集的第三方服务器,具体安全性请自行斟酌!\033[0m" \
|
||||
"\033[32m感谢以下作者的无私奉献!!!\033[0m" \
|
||||
comp_box "\033[36m$SUBCONVERTER_SERVER_HINT\033[0m" \
|
||||
"\033[32m$SUBCONVERTER_SERVER_THANKS\033[0m" \
|
||||
"" \
|
||||
"当前使用后端为:\033[33m$now\033[0m"
|
||||
"$SUBCONVERTER_SERVER_CURRENT\033[33m$now\033[0m"
|
||||
list_box "$list"
|
||||
content_line ""
|
||||
common_back
|
||||
read -r -p "请输入对应数字> " num
|
||||
read -r -p "$COMMON_INPUT> " num
|
||||
totalnum=$(grep -acE '^3|^4' "$CRASHDIR"/configs/servers.list)
|
||||
if [ -z "$num" ] || [ "$num" -gt "$totalnum" ]; then
|
||||
errornum
|
||||
@@ -158,7 +160,7 @@ gen_link_server() {
|
||||
# 将对应标记值写入配置
|
||||
server_link=$num
|
||||
if setconfig server_link "$server_link"; then
|
||||
content_line "\033[32m设置成功!返回上级菜单\033[0m"
|
||||
content_line "\033[32m$SUBCONVERTER_SET_OK\033[0m"
|
||||
else
|
||||
common_failed
|
||||
fi
|
||||
@@ -167,16 +169,16 @@ gen_link_server() {
|
||||
|
||||
set_sub_ua() {
|
||||
while true; do
|
||||
comp_box "\033[36m无法正确获取配置文件时可尝试使用\033[0m" \
|
||||
comp_box "\033[36m$SUBCONVERTER_UA_HINT\033[0m" \
|
||||
"" \
|
||||
"当前UA:$user_agent"
|
||||
btm_box "1) 使用自动UA(默认)"\
|
||||
"2) 不使用UA"\
|
||||
"3) 使用自定义UA"\
|
||||
"4) 清空UA"\
|
||||
"$SUBCONVERTER_UA_CURRENT$user_agent"
|
||||
btm_box "1) $SUBCONVERTER_UA_AUTO"\
|
||||
"2) $SUBCONVERTER_UA_NONE"\
|
||||
"3) $SUBCONVERTER_UA_CUSTOM"\
|
||||
"4) $SUBCONVERTER_UA_CLEAR"\
|
||||
""\
|
||||
"0) 返回上级菜单"
|
||||
read -r -p "请输入对应数字> " num
|
||||
"0) $COMMON_BACK"
|
||||
read -r -p "$COMMON_INPUT> " num
|
||||
case "$num" in
|
||||
0)
|
||||
break
|
||||
@@ -188,10 +190,10 @@ set_sub_ua() {
|
||||
user_agent='none'
|
||||
;;
|
||||
3)
|
||||
comp_box "\033[33m注意:\n自定义UA不可包含空格或特殊符号!\033[0m"
|
||||
btm_box "\033[36m请直接输入自定义UA\033[0m" \
|
||||
"或输入 0 返回上级菜单"
|
||||
read -r -p "请输入> " text
|
||||
comp_box "\033[33m$SUBCONVERTER_UA_CUSTOM_WARN\033[0m"
|
||||
btm_box "\033[36m$SUBCONVERTER_UA_CUSTOM_INPUT\033[0m" \
|
||||
"$SUBCONVERTER_BACK"
|
||||
read -r -p "$SUBCONVERTER_INPUT> " text
|
||||
if [ "$text" = 0 ]; then
|
||||
continue
|
||||
elif [ -n "$text" ]; then
|
||||
|
||||
@@ -1,26 +1,28 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) Juewuy
|
||||
|
||||
load_lang uninstall
|
||||
|
||||
# 卸载
|
||||
uninstall() {
|
||||
comp_box "\033[31m警告:该操作不可逆!\033[0m" \
|
||||
"是否确认卸载ShellCrash?"
|
||||
btm_box "1) 是" \
|
||||
"0) 否"
|
||||
comp_box "\033[31m$UNINSTALL_WARN\033[0m" \
|
||||
"$UNINSTALL_CONFIRM"
|
||||
btm_box "1) $UNINSTALL_YES" \
|
||||
"0) $UNINSTALL_NO"
|
||||
read -r -p "$COMMON_INPUT> " res
|
||||
if [ "$res" = '1' ]; then
|
||||
# 停止服务
|
||||
"$CRASHDIR"/start.sh stop 2>/dev/null
|
||||
"$CRASHDIR"/start.sh cronset "clash服务" 2>/dev/null
|
||||
"$CRASHDIR"/start.sh cronset "订阅链接" 2>/dev/null
|
||||
"$CRASHDIR"/start.sh cronset "ShellCrash初始化" 2>/dev/null
|
||||
"$CRASHDIR"/start.sh cronset "$UNINSTALL_CRON_CLASH" 2>/dev/null
|
||||
"$CRASHDIR"/start.sh cronset "$UNINSTALL_CRON_SUB" 2>/dev/null
|
||||
"$CRASHDIR"/start.sh cronset "$UNINSTALL_CRON_INIT" 2>/dev/null
|
||||
"$CRASHDIR"/start.sh cronset "task.sh" 2>/dev/null
|
||||
|
||||
# 移除安装目录
|
||||
if [ -n "$CRASHDIR" ] && [ "$CRASHDIR" != '/' ]; then
|
||||
comp_box "是否保留脚本配置及订阅文件?"
|
||||
btm_box "1) 是" \
|
||||
"0) 否"
|
||||
comp_box "$UNINSTALL_KEEP_CONFIRM"
|
||||
btm_box "1) $UNINSTALL_YES" \
|
||||
"0) $UNINSTALL_NO"
|
||||
read -r -p "$COMMON_INPUT> " res
|
||||
if [ "$res" = '1' ]; then
|
||||
mv -f "$CRASHDIR"/configs /tmp/ShellCrash/configs_bak
|
||||
@@ -34,7 +36,7 @@ uninstall() {
|
||||
rm -rf "$CRASHDIR"
|
||||
fi
|
||||
else
|
||||
msg_alert "\033[31m环境变量配置有误,请尝试手动移除安装目录!\033[0m"
|
||||
msg_alert "\033[31m$UNINSTALL_ENV_ERROR\033[0m"
|
||||
fi
|
||||
|
||||
# 移除其他内容
|
||||
@@ -48,9 +50,9 @@ uninstall() {
|
||||
}
|
||||
sed -i '/all_proxy/'d /etc/profile 2>/dev/null
|
||||
sed -i '/ALL_PROXY/'d /etc/profile 2>/dev/null
|
||||
sed -i "/启用外网访问SSH服务/d" /etc/firewall.user 2>/dev/null
|
||||
sed -i '/ShellCrash初始化/'d /etc/storage/started_script.sh 2>/dev/null
|
||||
sed -i '/ShellCrash初始化/'d /jffs/.asusrouter 2>/dev/null
|
||||
sed -i "/$UNINSTALL_SSH_MARK/d" /etc/firewall.user 2>/dev/null
|
||||
sed -i "/$UNINSTALL_CRON_INIT/d" /etc/storage/started_script.sh 2>/dev/null
|
||||
sed -i "/$UNINSTALL_CRON_INIT/d" /jffs/.asusrouter 2>/dev/null
|
||||
[ "$BINDIR" != "$CRASHDIR" ] && rm -rf "$BINDIR"
|
||||
rm -rf /etc/init.d/shellcrash
|
||||
rm -rf /etc/systemd/system/shellcrash.service
|
||||
@@ -62,12 +64,12 @@ uninstall() {
|
||||
userdel -r shellcrash 2>/dev/null
|
||||
nvram set script_usbmount="" 2>/dev/null
|
||||
nvram commit 2>/dev/null
|
||||
comp_box "\033[36m已卸载ShellCrash相关文件!有缘再会!\033[0m" \
|
||||
"\033[33m请手动关闭当前窗口以重置环境变量!\033[0m"
|
||||
comp_box "\033[36m$UNINSTALL_DONE\033[0m" \
|
||||
"\033[33m$UNINSTALL_CLOSE_HINT\033[0m"
|
||||
line_break
|
||||
sleep 1
|
||||
exit 0
|
||||
else
|
||||
msg_alert "\033[31m操作已取消!\033[0m"
|
||||
msg_alert "\033[31m$UNINSTALL_CANCELED\033[0m"
|
||||
fi
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user