mirror of
https://github.com/juewuy/ShellCrash.git
synced 2026-07-25 08:18:07 +00:00
Compare commits
7 Commits
5076a29996
...
837f99727a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
837f99727a | ||
|
|
ab29b5c036 | ||
|
|
3e2ad3da2e | ||
|
|
13aa2f20cf | ||
|
|
b1622958e0 | ||
|
|
3dad12584a | ||
|
|
91ae2c88de |
Binary file not shown.
@@ -1,4 +1,4 @@
|
|||||||
meta_v=v1.19.17
|
meta_v=v1.19.17
|
||||||
singboxr_v=1.13.0-alpha.27
|
singboxr_v=1.13.0-alpha.27
|
||||||
versionsh=1.9.5alpha11
|
versionsh=1.9.5alpha12
|
||||||
GeoIP_v=20251205
|
GeoIP_v=20251205
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
+.bing.com
|
|
||||||
+.linkedin.com
|
|
||||||
30
public/servers_en.list
Normal file
30
public/servers_en.list
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
# ID&类型 说明 地址 其他说明 (类型:100-三版全通源;200-单一源;300-基础sub;400-meta_sub;500-规则地址)
|
||||||
|
|
||||||
|
101 Jsdelivr_CDN https://cdn.jsdelivr.net/gh/juewuy/ShellCrash
|
||||||
|
102 Github https://raw.githubusercontent.com/juewuy/ShellCrash
|
||||||
|
103 ShellClash https://gh.jwsc.eu.org
|
||||||
|
104 Cloudflare https://testingcf.jsdelivr.net/gh/juewuy/ShellCrash
|
||||||
|
|
||||||
|
401 ... https://sub.jwsc.eu.org ua
|
||||||
|
402 ... https://api.v1.mk diyua
|
||||||
|
403 ... https://url.v1.mk diyua
|
||||||
|
|
||||||
|
501 Acl4SSR全能优化版 https://github.com/juewuy/ShellCrash/raw/dev/rules/ShellClash.ini (推荐)
|
||||||
|
502 Acl4SSR精简优化版 https://github.com/juewuy/ShellCrash/raw/dev/rules/ShellClash_Mini.ini (推荐)
|
||||||
|
503 Acl4SSR全能优化+去广告增强 https://github.com/juewuy/ShellCrash/raw/dev/rules/ShellClash_Block.ini
|
||||||
|
504 Acl4SSR极简版 https://github.com/juewuy/ShellCrash/raw/dev/rules/ShellClash_Nano.ini (适合自建节点)
|
||||||
|
505 Acl4SSR分流&游戏增强 https://github.com/juewuy/ShellCrash/raw/dev/rules/ShellClash_Full.ini
|
||||||
|
506 Acl4SSR分流&游戏&去广告增强 https://github.com/juewuy/ShellCrash/raw/dev/rules/ShellClash_Full_Block.ini (低性能设备慎用)
|
||||||
|
507 洞主规则精简版 https://github.com/juewuy/ShellCrash/raw/dev/rules/lhie1_clash.ini
|
||||||
|
508 洞主规则重度完整版 https://github.com/juewuy/ShellCrash/raw/dev/rules/lhie1_dler.ini
|
||||||
|
509 Acl4SSR多国精简 https://github.com/juewuy/ShellCrash/raw/dev/rules/ACL4SSR_Online_Mini_MultiCountry.ini
|
||||||
|
510 Acl4SSR回国专用 https://github.com/juewuy/ShellCrash/raw/dev/rules/ACL4SSR_BackCN.ini
|
||||||
|
511 Acl4SSR增强国外GFW https://github.com/juewuy/ShellCrash/raw/dev/rules/ACL4SSR_WithGFW.ini (适合黑名单模式使用)
|
||||||
|
512 DustinWin全分组规则 https://raw.githubusercontent.com/DustinWin/ruleset_geodata/master/rule_templates/DustinWin_Full.ini
|
||||||
|
513 DustinWin无广告全分组规则 https://raw.githubusercontent.com/DustinWin/ruleset_geodata/master/rule_templates/DustinWin_Full_NoAds.ini
|
||||||
|
514 DustinWin精简规则 https://raw.githubusercontent.com/DustinWin/ruleset_geodata/master/rule_templates/DustinWin_Lite.ini (推荐)
|
||||||
|
515 DustinWin无广告精简规则 https://raw.githubusercontent.com/DustinWin/ruleset_geodata/master/rule_templates/DustinWin_Lite_NoAds.ini
|
||||||
|
516 DustinWin黑名单模式规则 https://raw.githubusercontent.com/DustinWin/ruleset_geodata/master/rule_templates/DustinWin_Blacklist.ini
|
||||||
|
517 DustinWin无广告黑名单模式规则 https://raw.githubusercontent.com/DustinWin/ruleset_geodata/master/rule_templates/DustinWin_Blacklist_NoAds.ini
|
||||||
|
518 DustinWin轻量规则 https://raw.githubusercontent.com/DustinWin/ruleset_geodata/master/rule_templates/DustinWin_Light.ini
|
||||||
|
519 DustinWin极简规则 https://raw.githubusercontent.com/DustinWin/ruleset_geodata/master/rule_templates/DustinWin_Nano.ini
|
||||||
19
public/task_en.list
Normal file
19
public/task_en.list
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
#TaskID#TaskCommand#TaskDescription (use # as separator; # is not allowed in command or description)
|
||||||
|
|
||||||
|
101#$CRASHDIR/start.sh start#Start ShellCrash
|
||||||
|
102#$CRASHDIR/start.sh stop#Stop ShellCrash service
|
||||||
|
103#$CRASHDIR/start.sh restart#Restart ShellCrash service
|
||||||
|
104#$CRASHDIR/task/task.sh update_config#Update online subscriptions and restart service
|
||||||
|
105#$CRASHDIR/task/task.sh hotupdate#Hot update online subscriptions (without restart)
|
||||||
|
106#$CRASHDIR/task/task.sh web_save_auto#Automatically save panel configuration
|
||||||
|
107#$CRASHDIR/task/task.sh ntp#Automatically sync NTP time
|
||||||
|
|
||||||
|
111#$CRASHDIR/task/task.sh update_core#Automatically update core
|
||||||
|
112#$CRASHDIR/task/task.sh update_scripts#Automatically update scripts
|
||||||
|
113#$CRASHDIR/task/task.sh update_mmdb#Automatically update database files
|
||||||
|
|
||||||
|
121#$CRASHDIR/task/task.sh reset_firewall#Reset transparent routing firewall
|
||||||
|
122#sleep 70 && touch /etc/banner && reboot#Reboot router device – use with caution
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
[ -f "/data/etc/crontabs/root" ] && systype=mi_snapshot #小米设备
|
[ -f "/data/etc/crontabs/root" ] && systype=mi_snapshot #小米设备
|
||||||
[ -w "/var/mnt/cfg/firewall" ] && systype=ng_snapshot #NETGEAR设备
|
[ -w "/var/mnt/cfg/firewall" ] && systype=ng_snapshot #NETGEAR设备
|
||||||
#容器内环境
|
#容器内环境
|
||||||
grep -qE '/(docker|lxc|kubepods|crio|containerd)/' /proc/1/cgroup || [ -f /run/.containerenv ] || [ -f /.dockerenv ] && systype='container'
|
grep -qE '/(docker|lxc|kubepods|crio|containerd)/' /proc/1/cgroup 2>/dev/null || [ -f /run/.containerenv ] || [ -f /.dockerenv ] && systype='container'
|
||||||
#检查环境变量
|
#检查环境变量
|
||||||
[ "$systype" = 'container' ] && CRASHDIR='/etc/ShellCrash'
|
[ "$systype" = 'container' ] && CRASHDIR='/etc/ShellCrash'
|
||||||
[ -z "$CRASHDIR" ] && [ -n "$clashdir" ] && CRASHDIR="$clashdir"
|
[ -z "$CRASHDIR" ] && [ -n "$clashdir" ] && CRASHDIR="$clashdir"
|
||||||
@@ -37,11 +37,11 @@ mkdir -p "$CRASHDIR"/configs
|
|||||||
#判断系统类型写入不同的启动文件
|
#判断系统类型写入不同的启动文件
|
||||||
[ -w /usr/lib/systemd/system ] && sysdir=/usr/lib/systemd/system
|
[ -w /usr/lib/systemd/system ] && sysdir=/usr/lib/systemd/system
|
||||||
[ -w /etc/systemd/system ] && sysdir=/etc/systemd/system
|
[ -w /etc/systemd/system ] && sysdir=/etc/systemd/system
|
||||||
if [ -f /etc/rc.common -a "$(cat /proc/1/comm)" = "procd" ]; then
|
if [ -f /etc/rc.common -a "$(cat /proc/1/comm 2>/dev/null)" = "procd" ]; then
|
||||||
#设为init.d方式启动
|
#设为init.d方式启动
|
||||||
cp -f "$CRASHDIR"/starts/shellcrash.procd /etc/init.d/shellcrash
|
cp -f "$CRASHDIR"/starts/shellcrash.procd /etc/init.d/shellcrash
|
||||||
chmod 755 /etc/init.d/shellcrash
|
chmod 755 /etc/init.d/shellcrash
|
||||||
elif [ -n "$sysdir" -a "$USER" = "root" -a "$(cat /proc/1/comm)" = "systemd" ]; then
|
elif [ -n "$sysdir" -a "$USER" = "root" -a "$(cat /proc/1/comm 2>/dev/null)" = "systemd" ]; then
|
||||||
#创建shellcrash用户
|
#创建shellcrash用户
|
||||||
userdel shellcrash 2>/dev/null
|
userdel shellcrash 2>/dev/null
|
||||||
sed -i '/0:7890/d' /etc/passwd
|
sed -i '/0:7890/d' /etc/passwd
|
||||||
@@ -187,7 +187,7 @@ for file in config.yaml.bak user.yaml proxies.yaml proxy-groups.yaml rules.yaml
|
|||||||
mv -f "$CRASHDIR"/"$file" "$CRASHDIR"/yamls/"$file" 2>/dev/null
|
mv -f "$CRASHDIR"/"$file" "$CRASHDIR"/yamls/"$file" 2>/dev/null
|
||||||
done
|
done
|
||||||
[ ! -L "$CRASHDIR"/config.yaml ] && mv -f "$CRASHDIR"/config.yaml "$CRASHDIR"/yamls/config.yaml 2>/dev/null
|
[ ! -L "$CRASHDIR"/config.yaml ] && mv -f "$CRASHDIR"/config.yaml "$CRASHDIR"/yamls/config.yaml 2>/dev/null
|
||||||
for file in fake_ip_filter mac web_save servers.list fake_ip_filter.list fallback_filter.list singbox_providers.list clash_providers.list; do
|
for file in fake_ip_filter mac web_save servers_chs.list servers_en.list fake_ip_filter.list singbox_providers.list clash_providers.list; do
|
||||||
mv -f "$CRASHDIR"/"$file" "$CRASHDIR"/configs/"$file" 2>/dev/null
|
mv -f "$CRASHDIR"/"$file" "$CRASHDIR"/configs/"$file" 2>/dev/null
|
||||||
done
|
done
|
||||||
#配置文件改名
|
#配置文件改名
|
||||||
@@ -202,7 +202,7 @@ mv -f "$CRASHDIR"/*.mrs "$CRASHDIR"/ruleset/ 2>/dev/null
|
|||||||
for file in dropbear_rsa_host_key authorized_keys tun.ko ShellDDNS.sh; do
|
for file in dropbear_rsa_host_key authorized_keys tun.ko ShellDDNS.sh; do
|
||||||
mv -f "$CRASHDIR"/"$file" "$CRASHDIR"/tools/"$file" 2>/dev/null
|
mv -f "$CRASHDIR"/"$file" "$CRASHDIR"/tools/"$file" 2>/dev/null
|
||||||
done
|
done
|
||||||
for file in cron task.list; do
|
for file in cron task_chs.list task_en.list; do
|
||||||
mv -f "$CRASHDIR"/"$file" "$CRASHDIR"/task/"$file" 2>/dev/null
|
mv -f "$CRASHDIR"/"$file" "$CRASHDIR"/task/"$file" 2>/dev/null
|
||||||
done
|
done
|
||||||
mv -f "$CRASHDIR"/menus/task_cmd.sh "$CRASHDIR"/task/task.sh 2>/dev/null
|
mv -f "$CRASHDIR"/menus/task_cmd.sh "$CRASHDIR"/task/task.sh 2>/dev/null
|
||||||
|
|||||||
@@ -51,17 +51,6 @@ DNS_IPV6_NOT_SUPPORT="该选项暂不支持IPv6加密DNS!"
|
|||||||
DNS_ENCRYPT_OK="已设置加密DNS,如遇DNS解析问题,请重置DNS配置!"
|
DNS_ENCRYPT_OK="已设置加密DNS,如遇DNS解析问题,请重置DNS配置!"
|
||||||
DNS_CORE_REQUIRE="请使用Mihomo或SingBox内核"
|
DNS_CORE_REQUIRE="请使用Mihomo或SingBox内核"
|
||||||
DNS_SET_TO="设为"
|
DNS_SET_TO="设为"
|
||||||
DNS_PROTECT_NOW="当前"
|
|
||||||
DNS_HOSTS_NOW="当前"
|
|
||||||
DNS_ENABLED="已启用"
|
|
||||||
DNS_DISABLED="已禁用"
|
|
||||||
DNS_PROTECT_DISABLE_Q="DNS防泄漏,是否确认禁用?"
|
|
||||||
DNS_PROTECT_ENABLE_Q="DNS防泄漏,是否确认启用?"
|
|
||||||
DNS_HOSTS_DISABLE_Q="Hosts优化,是否确认禁用?"
|
|
||||||
DNS_HOSTS_ENABLE_Q="Hosts优化,是否确认启用?"
|
|
||||||
DNS_YES="是"
|
|
||||||
DNS_RESET_DEFAULT="重置为默认值"
|
|
||||||
DNS_NO_BACK="否,返回上级菜单"
|
|
||||||
DNS_REMOVE_OK="移除成功"
|
DNS_REMOVE_OK="移除成功"
|
||||||
DNS_REMOVE_FAIL="移除失败"
|
DNS_REMOVE_FAIL="移除失败"
|
||||||
DNS_INPUT_REDIR_PORT="请直接输入旁路由IPV4地址"
|
DNS_INPUT_REDIR_PORT="请直接输入旁路由IPV4地址"
|
||||||
|
|||||||
@@ -138,7 +138,6 @@ SET_SNIFFER_ENABLE_Q=" domain sniffer. Enable now?"
|
|||||||
SET_SNIFFER_DISABLE_Q=" domain sniffer. Disable now?"
|
SET_SNIFFER_DISABLE_Q=" domain sniffer. Disable now?"
|
||||||
SET_LANG_ZH="简体中文"
|
SET_LANG_ZH="简体中文"
|
||||||
SET_LANG_EN="English"
|
SET_LANG_EN="English"
|
||||||
SET_SWITCH_RERUN="Switched successfully! Please re-run the script!"
|
|
||||||
SET_SWITCH_OK="Switched successfully!"
|
SET_SWITCH_OK="Switched successfully!"
|
||||||
SET_MODE_SUFFIX="mode"
|
SET_MODE_SUFFIX="mode"
|
||||||
SET_SET_TO="Set to "
|
SET_SET_TO="Set to "
|
||||||
|
|||||||
@@ -53,17 +53,6 @@ DNS_IPV6_NOT_SUPPORT="This option does not support IPv6 encrypted DNS!"
|
|||||||
DNS_ENCRYPT_OK="Encrypted DNS has been configured. If DNS issues occur, please reset DNS settings."
|
DNS_ENCRYPT_OK="Encrypted DNS has been configured. If DNS issues occur, please reset DNS settings."
|
||||||
DNS_CORE_REQUIRE="Please use the Mihomo or SingBox core"
|
DNS_CORE_REQUIRE="Please use the Mihomo or SingBox core"
|
||||||
DNS_SET_TO="Set to"
|
DNS_SET_TO="Set to"
|
||||||
DNS_PROTECT_NOW="Current status: "
|
|
||||||
DNS_HOSTS_NOW="Current status: "
|
|
||||||
DNS_ENABLED="enabled"
|
|
||||||
DNS_DISABLED="disabled"
|
|
||||||
DNS_PROTECT_DISABLE_Q=" DNS leak protection. Disable now?"
|
|
||||||
DNS_PROTECT_ENABLE_Q=" DNS leak protection. Enable now?"
|
|
||||||
DNS_HOSTS_DISABLE_Q=" Hosts optimization. Disable now?"
|
|
||||||
DNS_HOSTS_ENABLE_Q=" Hosts optimization. Enable now?"
|
|
||||||
DNS_YES="Yes"
|
|
||||||
DNS_RESET_DEFAULT="Reset to defaults"
|
|
||||||
DNS_NO_BACK="No, back"
|
|
||||||
DNS_REMOVE_OK="Removed successfully"
|
DNS_REMOVE_OK="Removed successfully"
|
||||||
DNS_REMOVE_FAIL="Remove failed"
|
DNS_REMOVE_FAIL="Remove failed"
|
||||||
DNS_INPUT_REDIR_PORT="Please input bypass-router IPv4 address"
|
DNS_INPUT_REDIR_PORT="Please input bypass-router IPv4 address"
|
||||||
|
|||||||
@@ -153,7 +153,7 @@ ckstatus() {
|
|||||||
zip_type=$(echo "$file" | grep -oE 'tar.gz$|upx$|gz$')
|
zip_type=$(echo "$file" | grep -oE 'tar.gz$|upx$|gz$')
|
||||||
. "$CRASHDIR"/menus/9_upgrade.sh && setcoretype
|
. "$CRASHDIR"/menus/9_upgrade.sh && setcoretype
|
||||||
. "$CRASHDIR"/libs/core_tools.sh && core_check "/tmp/$file"
|
. "$CRASHDIR"/libs/core_tools.sh && core_check "/tmp/$file"
|
||||||
if [ "$?" = 0 ]; then
|
if [ "$?" = 0 ] && [ -n "$crashcore" ]; then
|
||||||
msg_alert "\033[32m$MENU_CORE_LOADED_OK\033[0m"
|
msg_alert "\033[32m$MENU_CORE_LOADED_OK\033[0m"
|
||||||
switch_core
|
switch_core
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -214,7 +214,7 @@ settings() {
|
|||||||
;;
|
;;
|
||||||
1)
|
1)
|
||||||
echo chs >"$CRASHDIR"/configs/i18n.cfg
|
echo chs >"$CRASHDIR"/configs/i18n.cfg
|
||||||
msg_alert "\033[32m$SET_SWITCH_RERUN\033[0m"
|
msg_alert "\033[32m切换成功,请重新执行脚本!\033[0m"
|
||||||
;;
|
;;
|
||||||
2)
|
2)
|
||||||
echo en >"$CRASHDIR"/configs/i18n.cfg
|
echo en >"$CRASHDIR"/configs/i18n.cfg
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ task_add() {
|
|||||||
while true; do
|
while true; do
|
||||||
comp_box "\033[36m$TASK5_SELECT_ADD\033[0m"
|
comp_box "\033[36m$TASK5_SELECT_ADD\033[0m"
|
||||||
# 输出任务列表
|
# 输出任务列表
|
||||||
list=$(cat "$CRASHDIR"/task/task.list "$CRASHDIR"/task/task.user 2>/dev/null | grep -Ev '^(#|$)' | awk -F '#' '{print $3}')
|
list=$(cat "$CRASHDIR"/task/task_${i18n}.list "$CRASHDIR"/task/task.user 2>/dev/null | grep -Ev '^(#|$)' | awk -F '#' '{print $3}')
|
||||||
list_box "$list"
|
list_box "$list"
|
||||||
btm_box "" \
|
btm_box "" \
|
||||||
"0) $COMMON_BACK"
|
"0) $COMMON_BACK"
|
||||||
|
|||||||
@@ -755,10 +755,10 @@ debug() {
|
|||||||
main_menu
|
main_menu
|
||||||
;;
|
;;
|
||||||
9)
|
9)
|
||||||
. "$CRASHDIR"/libs/core_webget.sh && core_find && "$TMPDIR"/CrashCore merge "$TMPDIR"/debug.json -C "$TMPDIR"/jsons && line_break
|
. "$CRASHDIR"/libs/core_tools.sh && core_find && "$TMPDIR"/CrashCore merge "$TMPDIR"/debug.json -C "$TMPDIR"/jsons && line_break
|
||||||
comp_box "\033[32m$TOOLS_MERGE_OK\033[0m"
|
comp_box "\033[32m$TOOLS_MERGE_OK\033[0m"
|
||||||
[ "$TMPDIR" = "$BINDIR" ] && rm -rf "$TMPDIR"/CrashCore
|
[ "$TMPDIR" = "$BINDIR" ] && rm -rf "$TMPDIR"/CrashCore
|
||||||
main_menu
|
debug
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
errornum
|
errornum
|
||||||
|
|||||||
@@ -1111,19 +1111,20 @@ saveserver() {
|
|||||||
setserver() {
|
setserver() {
|
||||||
while true; do
|
while true; do
|
||||||
line_break
|
line_break
|
||||||
|
LISTFILE="$CRASHDIR"/configs/servers_"$i18n".list
|
||||||
[ -z "$release_type" ] && release_name=$UPG_SOURCE_UNSET
|
[ -z "$release_type" ] && release_name=$UPG_SOURCE_UNSET
|
||||||
[ -n "$release_type" ] && release_name="$release_type$UPG_SOURCE_ROLLBACK_TAG"
|
[ -n "$release_type" ] && release_name="$release_type$UPG_SOURCE_ROLLBACK_TAG"
|
||||||
[ "$release_type" = stable ] && release_name=$UPG_SOURCE_STABLE_TEXT
|
[ "$release_type" = stable ] && release_name=$UPG_SOURCE_STABLE_TEXT
|
||||||
[ "$release_type" = master ] && release_name=$UPG_SOURCE_MASTER_TEXT
|
[ "$release_type" = master ] && release_name=$UPG_SOURCE_MASTER_TEXT
|
||||||
[ "$release_type" = dev ] && release_name=$UPG_SOURCE_DEV_TEXT
|
[ "$release_type" = dev ] && release_name=$UPG_SOURCE_DEV_TEXT
|
||||||
[ -n "$url_id" ] && url_name=$(grep "$url_id" "$CRASHDIR"/configs/servers.list 2>/dev/null | awk '{print $2}') || url_name="$update_url"
|
[ -n "$url_id" ] && url_name=$(grep "$url_id" "$LISTFILE" 2>/dev/null | awk '{print $2}') || url_name="$update_url"
|
||||||
|
|
||||||
comp_box "\033[30;47m$UPG_SOURCE_TITLE\033[0m" \
|
comp_box "\033[30;47m$UPG_SOURCE_TITLE\033[0m" \
|
||||||
"" \
|
"" \
|
||||||
"$UPG_SOURCE_CUR_VER\033[4;33m$release_name\033[0m" \
|
"$UPG_SOURCE_CUR_VER\033[4;33m$release_name\033[0m" \
|
||||||
"$UPG_SOURCE_CUR_URL\n\033[4;32m$url_name\033[0m"
|
"$UPG_SOURCE_CUR_URL\n\033[4;32m$url_name\033[0m"
|
||||||
|
|
||||||
grep -E "^1|$release_name" "$CRASHDIR"/configs/servers.list |
|
grep -E "^1|^2" "$LISTFILE" |
|
||||||
awk '{print NR") "$2}' |
|
awk '{print NR") "$2}' |
|
||||||
while IFS= read -r line; do
|
while IFS= read -r line; do
|
||||||
content_line "$line"
|
content_line "$line"
|
||||||
@@ -1145,12 +1146,12 @@ setserver() {
|
|||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
[1-99])
|
[1-99])
|
||||||
url_id_new=$(grep -E "^1|$release_name" "$CRASHDIR"/configs/servers.list | sed -n "$num"p | awk '{print $1}')
|
url_id_new=$(grep -E "^1|$release_name" "$LISTFILE" | sed -n "$num"p | awk '{print $1}')
|
||||||
if [ -z "$url_id_new" ]; then
|
if [ -z "$url_id_new" ]; then
|
||||||
errornum
|
errornum
|
||||||
continue
|
continue
|
||||||
elif [ "$url_id_new" -ge 200 ]; then
|
elif [ "$url_id_new" -ge 200 ]; then
|
||||||
update_url=$(grep -E "^1|$release_name" "$CRASHDIR"/configs/servers.list | sed -n "$num"p | awk '{print $3}')
|
update_url=$(grep -E "^1|$release_name" "$LISTFILE" | sed -n "$num"p | awk '{print $3}')
|
||||||
url_id=''
|
url_id=''
|
||||||
saveserver
|
saveserver
|
||||||
break
|
break
|
||||||
@@ -1257,7 +1258,3 @@ setserver() {
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
|
|
||||||
. "$CRASHDIR"/libs/set_cron.sh
|
. "$CRASHDIR"/libs/set_cron.sh
|
||||||
|
|
||||||
load_lang bot_tg
|
|
||||||
|
|
||||||
bot_tg_start(){
|
bot_tg_start(){
|
||||||
. "$CRASHDIR"/starts/start_legacy.sh
|
. "$CRASHDIR"/starts/start_legacy.sh
|
||||||
start_legacy "$CRASHDIR/menus/bot_tg.sh" 'bot_tg'
|
start_legacy "$CRASHDIR/menus/bot_tg.sh" 'bot_tg'
|
||||||
@@ -14,5 +12,5 @@ bot_tg_stop(){
|
|||||||
rm -f "$TMPDIR/bot_tg.pid"
|
rm -f "$TMPDIR/bot_tg.pid"
|
||||||
}
|
}
|
||||||
bot_tg_cron(){
|
bot_tg_cron(){
|
||||||
cronset "$BOT_TG_CRON_NAME" "* * * * * /bin/sh $CRASHDIR/starts/start_legacy_wd.sh bot_tg #$BOT_TG_CRON_NAME"
|
cronset 'ShellCrash-TG_BOT' "* * * * * /bin/sh $CRASHDIR/starts/start_legacy_wd.sh bot_tg #ShellCrash-TG_BOT"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,116 +48,31 @@ set_dns_mod() {
|
|||||||
msg_alert "\033[36m$DNS_SET_OK:$dns_mod\033[0m"
|
msg_alert "\033[36m$DNS_SET_OK:$dns_mod\033[0m"
|
||||||
;;
|
;;
|
||||||
4)
|
4)
|
||||||
while true; do
|
|
||||||
line_break
|
|
||||||
separator_line "="
|
|
||||||
if [ "$dns_protect" = ON ]; then
|
|
||||||
content_line "$DNS_PROTECT_NOW\033[33m$DNS_ENABLED\033[0m$DNS_PROTECT_DISABLE_Q"
|
|
||||||
else
|
|
||||||
content_line "$DNS_PROTECT_NOW\033[33m$DNS_DISABLED\033[0m$DNS_PROTECT_ENABLE_Q"
|
|
||||||
fi
|
|
||||||
separator_line "="
|
|
||||||
btm_box "1) $DNS_YES" \
|
|
||||||
"2) $DNS_RESET_DEFAULT" \
|
|
||||||
"0) $DNS_NO_BACK"
|
|
||||||
read -r -p "$COMMON_INPUT> " num
|
|
||||||
case "$num" in
|
|
||||||
0)
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
1)
|
|
||||||
if [ "$dns_protect" = ON ]; then
|
if [ "$dns_protect" = ON ]; then
|
||||||
dns_protect=OFF
|
dns_protect=OFF
|
||||||
else
|
else
|
||||||
dns_protect=ON
|
dns_protect=ON
|
||||||
fi
|
fi
|
||||||
;;
|
|
||||||
2)
|
|
||||||
dns_protect=ON
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
errornum
|
|
||||||
continue
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
setconfig dns_protect "$dns_protect"
|
setconfig dns_protect "$dns_protect"
|
||||||
common_success
|
common_success
|
||||||
done
|
|
||||||
;;
|
;;
|
||||||
5)
|
5)
|
||||||
while true; do
|
|
||||||
line_break
|
|
||||||
separator_line "="
|
|
||||||
if [ "$hosts_opt" = ON ]; then
|
|
||||||
content_line "$DNS_HOSTS_NOW\033[33m$DNS_ENABLED\033[0m$DNS_HOSTS_DISABLE_Q"
|
|
||||||
else
|
|
||||||
content_line "$DNS_HOSTS_NOW\033[33m$DNS_DISABLED\033[0m$DNS_HOSTS_ENABLE_Q"
|
|
||||||
fi
|
|
||||||
separator_line "="
|
|
||||||
btm_box "1) $DNS_YES" \
|
|
||||||
"2) $DNS_RESET_DEFAULT" \
|
|
||||||
"0) $DNS_NO_BACK"
|
|
||||||
read -r -p "$COMMON_INPUT> " num
|
|
||||||
case "$num" in
|
|
||||||
0)
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
1)
|
|
||||||
if [ "$hosts_opt" = ON ]; then
|
if [ "$hosts_opt" = ON ]; then
|
||||||
hosts_opt=OFF
|
hosts_opt=OFF
|
||||||
else
|
else
|
||||||
hosts_opt=ON
|
hosts_opt=ON
|
||||||
fi
|
fi
|
||||||
;;
|
setconfig hosts_opt "$hosts_opt"
|
||||||
2)
|
|
||||||
hosts_opt=ON
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
errornum
|
|
||||||
continue
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
setconfig dns_protect "$hosts_opt"
|
|
||||||
common_success
|
common_success
|
||||||
done
|
|
||||||
;;
|
;;
|
||||||
6)
|
6)
|
||||||
|
|
||||||
while true; do
|
|
||||||
line_break
|
|
||||||
separator_line "="
|
|
||||||
if [ "$ecs_subnet" = ON ]; then
|
|
||||||
content_line "$DNS_HOSTS_NOW\033[33m$DNS_ENABLED\033[0m$DNS_HOSTS_DISABLE_Q"
|
|
||||||
else
|
|
||||||
content_line "$DNS_HOSTS_NOW\033[33m$DNS_DISABLED\033[0m$DNS_HOSTS_ENABLE_Q"
|
|
||||||
fi
|
|
||||||
separator_line "="
|
|
||||||
btm_box "1) $DNS_YES" \
|
|
||||||
"2) $DNS_RESET_DEFAULT" \
|
|
||||||
"0) $DNS_NO_BACK"
|
|
||||||
read -r -p "$COMMON_INPUT> " num
|
|
||||||
case "$num" in
|
|
||||||
0)
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
1)
|
|
||||||
if [ "$ecs_subnet" = ON ]; then
|
if [ "$ecs_subnet" = ON ]; then
|
||||||
ecs_subnet=OFF
|
ecs_subnet=OFF
|
||||||
else
|
else
|
||||||
ecs_subnet=ON
|
ecs_subnet=ON
|
||||||
fi
|
fi
|
||||||
;;
|
setconfig ecs_subnet "$ecs_subnet"
|
||||||
2)
|
|
||||||
ecs_subnet=OFF
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
errornum
|
|
||||||
continue
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
setconfig dns_protect "$ecs_subnet"
|
|
||||||
common_success
|
common_success
|
||||||
done
|
|
||||||
;;
|
;;
|
||||||
7)
|
7)
|
||||||
while true; do
|
while true; do
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ __IS_MODULE_SUBCONVERTER=1
|
|||||||
|
|
||||||
load_lang subconverter
|
load_lang subconverter
|
||||||
|
|
||||||
|
LISTFILE="$CRASHDIR"/configs/servers_"$i18n".list
|
||||||
|
|
||||||
# Subconverter在线订阅转换
|
# Subconverter在线订阅转换
|
||||||
subconverter() {
|
subconverter() {
|
||||||
while true; do
|
while true; do
|
||||||
@@ -115,8 +117,8 @@ gen_link_ele() {
|
|||||||
|
|
||||||
# 选择在线规则模版
|
# 选择在线规则模版
|
||||||
gen_link_config() {
|
gen_link_config() {
|
||||||
list=$(grep -aE '^5' "$CRASHDIR"/configs/servers.list | awk '{print $2$4}')
|
list=$(grep -aE '^5' "$LISTFILE" | awk '{print $2$4}')
|
||||||
now=$(grep -aE '^5' "$CRASHDIR"/configs/servers.list | sed -n ""$rule_link"p" | awk '{print $2}')
|
now=$(grep -aE '^5' "$LISTFILE" | sed -n ""$rule_link"p" | awk '{print $2}')
|
||||||
comp_box "$SUBCONVERTER_RULE_CURRENT\033[33m$now\033[0m"
|
comp_box "$SUBCONVERTER_RULE_CURRENT\033[33m$now\033[0m"
|
||||||
list_box "$list"
|
list_box "$list"
|
||||||
content_line ""
|
content_line ""
|
||||||
@@ -140,8 +142,8 @@ gen_link_config() {
|
|||||||
|
|
||||||
# 选择Subconverter服务器
|
# 选择Subconverter服务器
|
||||||
gen_link_server() {
|
gen_link_server() {
|
||||||
list=$(grep -aE '^3|^4' "$CRASHDIR"/configs/servers.list | awk '{print $3" "$2}')
|
list=$(grep -aE '^3|^4' "$LISTFILE" | awk '{print $3" "$2}')
|
||||||
now=$(grep -aE '^3|^4' "$CRASHDIR"/configs/servers.list | sed -n ""$server_link"p" | awk '{print $3}')
|
now=$(grep -aE '^3|^4' "$LISTFILE" | sed -n ""$server_link"p" | awk '{print $3}')
|
||||||
|
|
||||||
comp_box "\033[36m$SUBCONVERTER_SERVER_HINT\033[0m" \
|
comp_box "\033[36m$SUBCONVERTER_SERVER_HINT\033[0m" \
|
||||||
"\033[32m$SUBCONVERTER_SERVER_THANKS\033[0m" \
|
"\033[32m$SUBCONVERTER_SERVER_THANKS\033[0m" \
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
[ -z "$CRASHDIR" ] && CRASHDIR=$( cd $(dirname $0);cd ..;pwd)
|
[ -z "$CRASHDIR" ] && CRASHDIR=$( cd $(dirname $0);cd ..;pwd)
|
||||||
. "$CRASHDIR"/libs/get_config.sh
|
. "$CRASHDIR"/libs/get_config.sh
|
||||||
[ -z "$BINDIR" -o -z "$TMPDIR" -o -z "$COMMAND" ] && . "$CRASHDIR"/init.sh >/dev/null 2>&1
|
[ -z "$BINDIR" -o -z "$TMPDIR" -o -z "$COMMAND" ] && . "$CRASHDIR"/init.sh >/dev/null 2>&1
|
||||||
[ ! -f "$TMPDIR" ] && mkdir -p "$TMPDIR"
|
[ ! -d "$TMPDIR" ] && mkdir -p "$TMPDIR"
|
||||||
|
|
||||||
#当上次启动失败时终止自启动
|
#当上次启动失败时终止自启动
|
||||||
[ -f "$CRASHDIR"/.start_error ] && exit 1
|
[ -f "$CRASHDIR"/.start_error ] && exit 1
|
||||||
|
|||||||
@@ -306,6 +306,7 @@ EOF
|
|||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
#生成experimental.json
|
#生成experimental.json
|
||||||
|
[ "$crashcore" = "singboxr" ] && urltest_unified_delay=',"urltest_unified_delay": true'
|
||||||
cat >"$TMPDIR"/jsons/experimental.json <<EOF
|
cat >"$TMPDIR"/jsons/experimental.json <<EOF
|
||||||
{
|
{
|
||||||
"experimental": {
|
"experimental": {
|
||||||
@@ -315,7 +316,7 @@ EOF
|
|||||||
"external_ui_download_url": "$external_ui_url",
|
"external_ui_download_url": "$external_ui_url",
|
||||||
"secret": "$secret",
|
"secret": "$secret",
|
||||||
"default_mode": "Rule"
|
"default_mode": "Rule"
|
||||||
}
|
}$urltest_unified_delay
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|||||||
Reference in New Issue
Block a user