mirror of
https://github.com/juewuy/ShellCrash.git
synced 2026-03-10 23:41:22 +00:00
~Add tui_lite.sh
~Add tui switch menu ~chang double_line_break() > line_break()
This commit is contained in:
@@ -11,6 +11,7 @@ SET_MENU_ADV_PORT="自定义端口及密钥"
|
||||
SET_MENU_IPV6="IPv6设置: "
|
||||
SET_MENU_RESET="重置/备份/还原脚本设置"
|
||||
SET_MENU_LANG="多语言切换"
|
||||
SET_MENU_UI="UI切换"
|
||||
|
||||
# =================================================
|
||||
# Main menu messages
|
||||
|
||||
@@ -11,6 +11,7 @@ SET_MENU_ADV_PORT="Custom Ports and Secrets"
|
||||
SET_MENU_IPV6="IPv6 Settings:"
|
||||
SET_MENU_RESET="Reset / Backup / Restore Script Settings"
|
||||
SET_MENU_LANG="Language"
|
||||
SET_MENU_UI="UI Switch"
|
||||
|
||||
# =================================================
|
||||
# Main menu messages
|
||||
|
||||
@@ -19,14 +19,17 @@ CFG_PATH="$CRASHDIR"/configs/ShellCrash.cfg
|
||||
. "$CRASHDIR"/libs/i18n.sh
|
||||
. "$CRASHDIR"/menus/1_start.sh
|
||||
. "$CRASHDIR"/menus/running_status.sh
|
||||
. "$CRASHDIR"/menus/tui_layout.sh
|
||||
|
||||
# 加载Tui界面
|
||||
[ -z "$tui_type" ] && tui_type='tui_layout'
|
||||
. "$CRASHDIR"/menus/"$tui_type".sh
|
||||
|
||||
# 加载语言
|
||||
load_lang common
|
||||
load_lang menu
|
||||
|
||||
errornum() {
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m$MENU_ERR_INPUT\033[0m"
|
||||
separator_line "="
|
||||
|
||||
@@ -29,6 +29,7 @@ settings() {
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " a \033[31m$SET_MENU_RESET\033[0m"
|
||||
echo -e " b \033[36m$SET_MENU_LANG\033[0m"
|
||||
echo -e " c \033[33m$SET_MENU_UI\033[0m"
|
||||
echo -e " 0 $COMMON_BACK"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "$COMMON_INPUT > " num
|
||||
@@ -144,6 +145,24 @@ settings() {
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
c)
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 1 TUI-layout by Sofia-Riese"
|
||||
echo -e " 2 TUI-lite"
|
||||
echo -e " 0 $COMMON_BACK"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "$COMMON_INPUT > " num
|
||||
case "$num" in
|
||||
1)
|
||||
setconfig tui_type 'tui_layout'
|
||||
. "$CRASHDIR"/menus/tui_layout.sh
|
||||
;;
|
||||
2)
|
||||
setconfig tui_type 'tui_lite'
|
||||
. "$CRASHDIR"/menus/tui_lite.sh
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*) errornum ;;
|
||||
esac
|
||||
sleep 1
|
||||
|
||||
@@ -16,7 +16,7 @@ ssh_tools() {
|
||||
while true; do
|
||||
[ -n "$(cat /etc/firewall.user 2>&1 | grep '启用外网访问SSH服务')" ] && ssh_ol=禁止 || ssh_ol=开启
|
||||
[ -z "$ssh_port" ] && ssh_port=10022
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[33m此功能仅针对使用Openwrt系统的设备生效,且不依赖服务\033[0m"
|
||||
content_line "\033[31m本功能不支持红米AX6S等镜像化系统设备,请勿尝试!\033[0m"
|
||||
@@ -33,17 +33,17 @@ ssh_tools() {
|
||||
break
|
||||
;;
|
||||
1)
|
||||
double_line_break
|
||||
line_break
|
||||
read -r -p "请输入端口号(1000-65535)> " num
|
||||
if [ -z "$num" ]; then
|
||||
errornum
|
||||
elif [ "$num" -gt 65535 ] || [ "$num" -le 999 ]; then
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m输入错误!请输入正确的数值(1000-65535)!\033[0m"
|
||||
separator_line "="
|
||||
elif [ -n "$(netstat -ntul | grep :$num)" ]; then
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m当前端口已被其他进程占用,请重新输入!\033[0m"
|
||||
separator_line "="
|
||||
@@ -53,7 +53,7 @@ ssh_tools() {
|
||||
sed -i "/启用外网访问SSH服务/d" /etc/firewall.user
|
||||
stop_iptables
|
||||
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[32m设置成功,请重新开启外网访问SSH功能!"
|
||||
separator_line "="
|
||||
@@ -65,7 +65,7 @@ ssh_tools() {
|
||||
sleep 1
|
||||
;;
|
||||
3)
|
||||
double_line_break
|
||||
line_break
|
||||
if [ "$ssh_ol" = "开启" ]; then
|
||||
iptables -w -t nat -A PREROUTING -p tcp -m multiport --dports "$ssh_port" -j REDIRECT --to-ports 22
|
||||
[ -n "$(ckcmd ip6tables)" ] && ip6tables -w -t nat -A PREROUTING -p tcp -m multiport --dports "$ssh_port" -j REDIRECT --to-ports 22
|
||||
@@ -101,7 +101,7 @@ tools() {
|
||||
[ "$mi_mi_autoSSH" = "已配置" ] && mi_mi_autoSSH_type=32m已配置 || mi_mi_autoSSH_type=31m未配置
|
||||
[ -f "$CRASHDIR"/tools/tun.ko ] && mi_tunfix=32mON || mi_tunfix=31mOFF
|
||||
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[30;47m工具与优化\033[0m"
|
||||
separator_line "-"
|
||||
@@ -149,7 +149,7 @@ tools() {
|
||||
sed -i "/^\s*#.*otapredownload/ s/^\s*#//" /etc/crontabs/root ||
|
||||
echo "15 3,4,5 * * * /usr/sbin/otapredownload >/dev/null 2>&1" >>/etc/crontabs/root
|
||||
fi
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "已\033[33m$mi_update\033[0m小米路由器的自动更新,如未生效,请在官方APP中同步设置!"
|
||||
separator_line "="
|
||||
@@ -160,14 +160,14 @@ tools() {
|
||||
if [ "$systype" = "mi_snapshot" ]; then
|
||||
mi_autoSSH
|
||||
else
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "不支持的设备!"
|
||||
separator_line "="
|
||||
fi
|
||||
;;
|
||||
7)
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
if [ ! -f "$CRASHDIR"/tools/ShellDDNS.sh ]; then
|
||||
content_line "正在获取在线脚本......"
|
||||
@@ -185,7 +185,7 @@ tools() {
|
||||
sleep 1
|
||||
;;
|
||||
8)
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
if [ -f "$CRASHDIR"/tools/tun.ko ]; then
|
||||
content_line "是否禁用此功能并移除相关补丁:"
|
||||
@@ -196,7 +196,7 @@ tools() {
|
||||
read -r -p "请输入对应标号> " res
|
||||
[ "$res" = 1 ] && {
|
||||
rm -rf "$CRASHDIR"/tools/tun.ko
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[33m补丁文件已移除,请立即重启设备以防止出错!\033[0m"
|
||||
separator_line "="
|
||||
@@ -210,7 +210,7 @@ tools() {
|
||||
eparator_line "="
|
||||
read -r -p "请输入对应标号> " res
|
||||
if [ "$res" = 1 ]; then
|
||||
double_line_break
|
||||
line_break
|
||||
eparator_line "="
|
||||
content_line "正在连接服务器获取Tun模块补丁文件......"
|
||||
get_bin "$TMPDIR"/tun.ko bin/fix/tun.ko
|
||||
@@ -240,7 +240,7 @@ tools() {
|
||||
}
|
||||
|
||||
mi_autoSSH() {
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[33m本功能使用软件命令进行固化不保证100%成功!\033[0m"
|
||||
content_line "\033[33m如有问题请加群反馈:\033[36;4mhttps://t.me/ShellClash\033[0m"
|
||||
@@ -259,7 +259,7 @@ mi_autoSSH() {
|
||||
nvram set boot_wait=on
|
||||
nvram commit
|
||||
}
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[32m设置成功!\033[0m"
|
||||
separator_line "="
|
||||
@@ -280,7 +280,7 @@ log_pusher() {
|
||||
[ -n "$push_Gotify" ] && stat_Gotify=32mON || stat_Gotify=33mOFF
|
||||
[ "$task_push" = 1 ] && stat_task=32mON || stat_task=33mOFF
|
||||
[ -n "$device_name" ] && device_s=32m$device_name || device_s=33m未设置
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "1) Telegram推送 ——\033[$stat_TG\033[0m"
|
||||
content_line "2) PushDeer推送 ——\033[$stat_Deer\033[0m"
|
||||
@@ -303,7 +303,7 @@ log_pusher() {
|
||||
break
|
||||
;;
|
||||
1)
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
if [ -n "$push_TG" ]; then
|
||||
content_line "是否确认关闭TG日志推送:"
|
||||
@@ -350,7 +350,7 @@ log_pusher() {
|
||||
fi
|
||||
;;
|
||||
2)
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
if [ -n "$push_Deer" ]; then
|
||||
content_line "是否确认关闭PushDeer日志推送:"
|
||||
@@ -383,7 +383,7 @@ log_pusher() {
|
||||
setconfig push_Deer "$url"
|
||||
logger "已完成PushDeer日志推送设置!" 32
|
||||
else
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m输入错误,请重新输入!\033[0m"
|
||||
separator_line "="
|
||||
@@ -392,7 +392,7 @@ log_pusher() {
|
||||
fi
|
||||
;;
|
||||
3)
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
if [ -n "$push_bark" ]; then
|
||||
content_line "是否确认关闭Bark日志推送:"
|
||||
@@ -426,7 +426,7 @@ log_pusher() {
|
||||
setconfig push_bark "$url"
|
||||
logger "已完成Bark日志推送设置!" 32
|
||||
else
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m输入错误,请重新输入!\033[0m"
|
||||
separator_line "="
|
||||
@@ -435,7 +435,7 @@ log_pusher() {
|
||||
fi
|
||||
;;
|
||||
4)
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
if [ -n "$push_Po" ]; then
|
||||
content_line "是否确认关闭Pushover日志推送:"
|
||||
@@ -464,13 +464,13 @@ log_pusher() {
|
||||
if [ "$key" = 0 ]; then
|
||||
continue
|
||||
elif [ -n "$key" ]; then
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[33m请检查注册邮箱,完成账户验证\033[0m"
|
||||
read -r -p "我已经验证完成(1/0)> "
|
||||
separator_line "="
|
||||
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "请通过 \033[32;4mhttps://pushover.net/apps/build\033[0m 生成\033[36mAPI Token\033[0m"
|
||||
separator_line "="
|
||||
@@ -482,13 +482,13 @@ log_pusher() {
|
||||
setconfig push_Po_key "$key"
|
||||
logger "已完成Passover日志推送设置!" 32
|
||||
else
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m输入错误,请重新输入!\033[0m"
|
||||
separator_line "="
|
||||
fi
|
||||
else
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m输入错误,请重新输入!\033[0m"
|
||||
separator_line "="
|
||||
@@ -497,7 +497,7 @@ log_pusher() {
|
||||
fi
|
||||
;;
|
||||
5)
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
if [ -n "$push_PP" ]; then
|
||||
content_line "是否确认关闭PushPlus日志推送:"
|
||||
@@ -527,7 +527,7 @@ log_pusher() {
|
||||
setconfig push_PP "$Token"
|
||||
logger "已完成PushPlus日志推送设置!" 32
|
||||
else
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m输入错误,请重新输入!\033[0m"
|
||||
separator_line "="
|
||||
@@ -536,7 +536,7 @@ log_pusher() {
|
||||
fi
|
||||
;;
|
||||
6)
|
||||
double_line_break
|
||||
line_break
|
||||
if [ -n "$push_SynoChat" ]; then
|
||||
separator_line "="
|
||||
content_line "是否确认关闭SynoChat日志推送:"
|
||||
@@ -553,11 +553,11 @@ log_pusher() {
|
||||
fi
|
||||
else
|
||||
read -r -p "请输入你的Synology DSM主页地址> " URL
|
||||
double_line_break
|
||||
line_break
|
||||
|
||||
read -r -p "请输入你的Synology Chat Token> " TOKEN
|
||||
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line '请通过"你的群晖地址/webapi/entry.cgi?api=SYNO.Chat.External&method=user_list&version=2&token=你的TOKEN"获取user_id'
|
||||
separator_line "="
|
||||
@@ -576,7 +576,7 @@ log_pusher() {
|
||||
push_SynoChat=
|
||||
setconfig push_SynoChat
|
||||
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m输入错误,请重新输入!\033[0m"
|
||||
separator_line "="
|
||||
@@ -586,7 +586,7 @@ log_pusher() {
|
||||
;;
|
||||
# 在menu.sh的case $num in代码块中添加
|
||||
7)
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
if [ -n "$push_Gotify" ]; then
|
||||
content_line "是否确认关闭Gotify日志推送:"
|
||||
@@ -616,7 +616,7 @@ log_pusher() {
|
||||
setconfig push_Gotify "$url"
|
||||
logger "已完成Gotify日志推送设置!" 32
|
||||
else
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m输入错误,请重新输入!\033[0m"
|
||||
separator_line "="
|
||||
@@ -625,7 +625,7 @@ log_pusher() {
|
||||
fi
|
||||
;;
|
||||
a)
|
||||
double_line_break
|
||||
line_break
|
||||
if [ -s "$TMPDIR"/ShellCrash.log ]; then
|
||||
cat "$TMPDIR"/ShellCrash.log
|
||||
else
|
||||
@@ -641,7 +641,7 @@ log_pusher() {
|
||||
sleep 1
|
||||
;;
|
||||
c)
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "请直接输入本设备自定义推送名称"
|
||||
content_line "或直接回车确认返回上级菜单"
|
||||
@@ -653,7 +653,7 @@ log_pusher() {
|
||||
;;
|
||||
d)
|
||||
rm -rf "$TMPDIR"/ShellCrash.log
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[33m运行日志及任务日志均已清空!\033[0m"
|
||||
separator_line "="
|
||||
@@ -670,7 +670,7 @@ log_pusher() {
|
||||
# 测试菜单
|
||||
testcommand() {
|
||||
while true; do
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[30;47m这里是测试命令菜单\033[0m"
|
||||
content_line "\033[33m如遇问题尽量运行相应命令后截图提交issue或TG讨论组\033[0m"
|
||||
@@ -694,20 +694,20 @@ testcommand() {
|
||||
testcommand
|
||||
;;
|
||||
2)
|
||||
double_line_break
|
||||
line_break
|
||||
netstat -ntulp | grep 53
|
||||
separator_line "="
|
||||
content_line "可以使用\033[44m netstat -ntulp |grep xxx \033[0m来查询任意(xxx)端口"
|
||||
separator_line "="
|
||||
double_line_break
|
||||
line_break
|
||||
;;
|
||||
3)
|
||||
double_line_break
|
||||
line_break
|
||||
openssl speed -multi 4 -evp aes-128-gcm
|
||||
double_line_break
|
||||
line_break
|
||||
;;
|
||||
4)
|
||||
double_line_break
|
||||
line_break
|
||||
if [ "$firewall_mod" = "nftables" ]; then
|
||||
nft list table inet shellcrash | sed '/set cn_ip {/,/}/d;/set cn_ip6 {/,/}/d;/^[[:space:]]*}/d'
|
||||
else
|
||||
@@ -756,16 +756,16 @@ testcommand() {
|
||||
echo "----------------本机防火墙---------------------"
|
||||
iptables -L INPUT --line-numbers
|
||||
fi
|
||||
double_line_break
|
||||
line_break
|
||||
;;
|
||||
5)
|
||||
echo "$crashcore" | grep -q 'singbox' && config_path="$CRASHDIR"/jsons/config.json || config_path="$CRASHDIR"/yamls/config.yaml
|
||||
double_line_break
|
||||
line_break
|
||||
sed -n '1,40p' "$config_path"
|
||||
double_line_break
|
||||
line_break
|
||||
;;
|
||||
6)
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[33m注意:依赖curl(不支持wget),且测试结果不保证一定准确!\033[0m"
|
||||
separator_line "="
|
||||
@@ -777,7 +777,7 @@ testcommand() {
|
||||
}
|
||||
) >/dev/null 2>&1
|
||||
delay=$(echo | awk "{print $delay*1000}") >/dev/null 2>&1
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
if [ $(echo ${#delay}) -gt 1 ]; then
|
||||
content_line "\033[32m连接成功!响应时间为:"$delay" ms\033[0m"
|
||||
@@ -795,7 +795,7 @@ testcommand() {
|
||||
|
||||
debug() {
|
||||
echo "$crashcore" | grep -q 'singbox' && config_tmp="$TMPDIR"/jsons || config_tmp="$TMPDIR"/config.yaml
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[36m注意:Debug运行均会停止原本的内核服务\033[0m"
|
||||
content_line "后台运行日志地址:\033[32m$TMPDIR/debug.log\033[0m"
|
||||
@@ -831,7 +831,7 @@ debug() {
|
||||
"$TMPDIR"/CrashCore -t -d "$BINDIR" -f "$TMPDIR"/config.yaml
|
||||
fi
|
||||
rm -rf "$TMPDIR"/CrashCore
|
||||
double_line_break
|
||||
line_break
|
||||
exit
|
||||
;;
|
||||
2)
|
||||
@@ -839,7 +839,7 @@ debug() {
|
||||
"$CRASHDIR"/start.sh bfstart
|
||||
$COMMAND
|
||||
rm -rf "$TMPDIR"/CrashCore
|
||||
double_line_break
|
||||
line_break
|
||||
exit
|
||||
;;
|
||||
3)
|
||||
@@ -855,7 +855,7 @@ debug() {
|
||||
main_menu
|
||||
;;
|
||||
6)
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "频繁写入闪存会导致闪存寿命降低,如非遇到会导致设备死机或重启的bug,请勿使用此功能!"
|
||||
separator_line "-"
|
||||
@@ -875,7 +875,7 @@ debug() {
|
||||
main_menu
|
||||
;;
|
||||
9)
|
||||
. "$CRASHDIR"/libs/core_webget.sh && core_find && "$TMPDIR"/CrashCore merge "$TMPDIR"/debug.json -C "$TMPDIR"/jsons && double_line_break
|
||||
. "$CRASHDIR"/libs/core_webget.sh && core_find && "$TMPDIR"/CrashCore merge "$TMPDIR"/debug.json -C "$TMPDIR"/jsons && line_break
|
||||
separator_line "="
|
||||
content_line"\033[32m合并成功!\033[0m"
|
||||
separator_line "="
|
||||
|
||||
@@ -21,9 +21,9 @@ upgrade() {
|
||||
|
||||
if [ -z "$version_new" ]; then
|
||||
checkupdate
|
||||
double_line_break
|
||||
line_break
|
||||
else
|
||||
double_line_break
|
||||
line_break
|
||||
fi
|
||||
[ -z "$core_v" ] && core_v=$crashcore
|
||||
core_v_new=$(eval echo \$"$crashcore"_v)
|
||||
@@ -71,7 +71,7 @@ upgrade() {
|
||||
setcrt
|
||||
;;
|
||||
6)
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "PAC配置链接为:\033[30;47m http://$host:$db_port/ui/pac \033[0m"
|
||||
content_line "PAC的使用教程请参考:\033[4;32mhttps://juewuy.github.io/ehRUeewcv\033[0m"
|
||||
@@ -88,7 +88,7 @@ upgrade() {
|
||||
. "$CRASHDIR"/menus/uninstall.sh && uninstall
|
||||
;;
|
||||
a)
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "感谢以下项目和作者!"
|
||||
separator_line "-"
|
||||
@@ -143,7 +143,7 @@ upgrade() {
|
||||
|
||||
# 检查更新
|
||||
checkupdate() {
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[32m正在检查更新......\033[0m"
|
||||
get_bin "$TMPDIR"/version_new version echooff
|
||||
@@ -168,7 +168,7 @@ checkupdate() {
|
||||
|
||||
# 更新脚本
|
||||
getscripts() {
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
get_bin "$TMPDIR"/ShellCrash.tar.gz ShellCrash.tar.gz
|
||||
|
||||
@@ -196,7 +196,7 @@ getscripts() {
|
||||
|
||||
setscripts() {
|
||||
while true; do
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[33m注意:更新时会停止服务!\033[0m"
|
||||
content_line "当前脚本版本为:\033[36m$versionsh_l\033[0m"
|
||||
@@ -214,7 +214,7 @@ setscripts() {
|
||||
# 下载更新
|
||||
getscripts
|
||||
# 提示
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[32m管理脚本更新成功!\033[0m"
|
||||
separator_line "="
|
||||
@@ -232,7 +232,7 @@ setscripts() {
|
||||
# 手动设置内核架构
|
||||
setcpucore() {
|
||||
cpucore_list="armv5 armv7 arm64 386 amd64 mipsle-softfloat mipsle-hardfloat mips-softfloat"
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m仅适合脚本无法正确识别核心或核心无法正常运行时使用!\033[0m"
|
||||
content_line "不知道如何获取核心版本?\033[0m"
|
||||
@@ -251,7 +251,7 @@ setcpucore() {
|
||||
read -r -p "请输入对应标号> " num
|
||||
[ -n "$num" ] && setcpucore=$(echo "$cpucore_list" | awk '{print $"'"$num"'"}')
|
||||
if [ -z "$setcpucore" ]; then
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m请输入正确的处理器架构!\033[0m"
|
||||
separator_line "="
|
||||
@@ -266,7 +266,7 @@ setcpucore() {
|
||||
# 手动指定内核类型
|
||||
setcoretype() {
|
||||
while true; do
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
echo "$crashcore" | grep -q 'singbox' && core_old=singbox || core_old=clash
|
||||
content_line "\033[33m请确认该自定义内核的类型:\033[0m"
|
||||
@@ -313,7 +313,7 @@ switch_core() {
|
||||
[ "$core_new" != "$core_old" ] && {
|
||||
[ "$dns_mod" = "redir_host" ] && [ "$core_old" = "clash" ] && setconfig dns_mod mix #singbox自动切换dns
|
||||
[ "$dns_mod" = "mix" ] && [ "$crashcore" = 'clash' -o "$crashcore" = 'clashpre' ] && setconfig dns_mod redir_host #singbox自动切换dns
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[33m已从$core_old内核切换至$core_new内核\033[0m"
|
||||
content_line "\033[33m二者Geo数据库及yaml/json配置文件不通用\033[0m"
|
||||
@@ -356,7 +356,7 @@ getcore() {
|
||||
core_new=clash
|
||||
fi
|
||||
# 获取在线内核文件
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "正在在线获取$crashcore核心文件......"
|
||||
core_webget
|
||||
@@ -387,7 +387,7 @@ getcore() {
|
||||
checkcustcore() {
|
||||
[ "$api_tag" = "latest" ] && api_url=latest || api_url="tags/$api_tag"
|
||||
# 通过githubapi获取内核信息
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[32m正在获取内核文件链接......\033[0m"
|
||||
webget "$TMPDIR"/github_api https://api.github.com/repos/"${project}"/releases/"${api_url}"
|
||||
@@ -402,7 +402,7 @@ checkcustcore() {
|
||||
if [ -s "$TMPDIR"/core.list ]; then
|
||||
separator_line "="
|
||||
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "内核版本:\033[36m$release_tag\033[0m"
|
||||
content_line "发布时间:\033[33m$release_date\033[0m"
|
||||
@@ -456,7 +456,7 @@ checkcustcore() {
|
||||
setcustcore() {
|
||||
while true; do
|
||||
[ -z "$cpucore" ] && check_cpucore
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[36m此处内核通常源自互联网采集,此处致谢各位开发者!\033[0m"
|
||||
content_line "\033[33m自定义内核未经过完整适配,使用出现问题请自行解决!\033[0m"
|
||||
@@ -506,7 +506,7 @@ setcustcore() {
|
||||
checkcustcore
|
||||
;;
|
||||
9)
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "请输入自定义内核的链接地址"
|
||||
content_line "(必须是以.tar.gz或.gz结尾的压缩文件)"
|
||||
@@ -531,7 +531,7 @@ setcustcore() {
|
||||
}
|
||||
|
||||
setziptype() {
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "请选择内核内核分支及压缩方式:\033[0m"
|
||||
separator_line "-"
|
||||
@@ -572,7 +572,7 @@ setcore() {
|
||||
echo "$crashcore" | grep -q 'singbox' && core_old=singbox || core_old=clash
|
||||
[ -n "$custcorelink" ] && custcore="$(echo "$custcorelink" | sed 's#.*github.com##; s#/releases/download/#@#; s#-linux.*$##')"
|
||||
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
[ -z "$cpucore" ] && check_cpucore
|
||||
|
||||
@@ -611,7 +611,7 @@ setcore() {
|
||||
;;
|
||||
1)
|
||||
[ -d "/jffs" ] && {
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31mMeta内核使用的GeoSite.dat数据库在华硕设备存在被系统误删的问题,可能无法使用!\033[0m"
|
||||
separator_line "="
|
||||
@@ -666,7 +666,7 @@ setcore() {
|
||||
# 下载Geo文件
|
||||
getgeo() {
|
||||
# 生成链接
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "正在从服务器获取数据库文件......"
|
||||
get_bin "$TMPDIR"/"${geoname}" bin/geodata/"$geotype"
|
||||
@@ -684,7 +684,7 @@ getgeo() {
|
||||
content_line "文件解压失败!"
|
||||
separator_line "="
|
||||
sleep 1
|
||||
double_line_break
|
||||
line_break
|
||||
rm -rf "$TMPDIR"/${geoname}
|
||||
exit 1
|
||||
fi
|
||||
@@ -700,7 +700,7 @@ getgeo() {
|
||||
}
|
||||
|
||||
getcustgeo() {
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "正在获取数据库文件......"
|
||||
webget "$TMPDIR"/"$geoname" "$custgeolink"
|
||||
@@ -723,7 +723,7 @@ checkcustgeo() {
|
||||
while true; do
|
||||
[ "$api_tag" = "latest" ] && api_url=latest || api_url="tags/$api_tag"
|
||||
[ ! -s "$TMPDIR"/geo.list ] && {
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[32m正在查找可更新的数据库文件......\033[0m"
|
||||
separator_line "="
|
||||
@@ -734,7 +734,7 @@ checkcustgeo() {
|
||||
}
|
||||
if [ -s "$TMPDIR"/geo.list ]; then
|
||||
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "请选择需要更新的数据库文件:"
|
||||
separator_line "-"
|
||||
@@ -769,7 +769,7 @@ checkcustgeo() {
|
||||
;;
|
||||
esac
|
||||
else
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m查找失败,请尽量在服务启动后再使用本功能!\033[0m"
|
||||
separator_line "="
|
||||
@@ -782,7 +782,7 @@ checkcustgeo() {
|
||||
setcustgeo() {
|
||||
while true; do
|
||||
rm -rf "$TMPDIR"/geo.list
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[36m此处数据库均源自互联网采集,此处致谢各位开发者!\033[0m"
|
||||
content_line "\033[32m请点击或复制链接前往项目页面查看具体说明!\033[0m"
|
||||
@@ -840,7 +840,7 @@ setcustgeo() {
|
||||
checkcustgeo
|
||||
;;
|
||||
9)
|
||||
double_line_break
|
||||
line_break
|
||||
read -r -p "请输入自定义数据库的链接地址 > " link
|
||||
[ -n "$link" ] && custgeolink="$link"
|
||||
getgeo
|
||||
@@ -855,7 +855,7 @@ setcustgeo() {
|
||||
|
||||
setgeo() {
|
||||
while true; do
|
||||
double_line_break
|
||||
line_break
|
||||
. $CFG_PATH >/dev/null
|
||||
[ -n "$cn_mini_v" ] && geo_type_des=精简版 || geo_type_des=全球版
|
||||
separator_line "="
|
||||
@@ -918,7 +918,7 @@ setgeo() {
|
||||
;;
|
||||
9)
|
||||
while true; do
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[33m这将清理$CRASHDIR目录及/ruleset目录下所有数据库文件!\033[0m"
|
||||
content_line "清理后启动服务即可自动下载所需文件"
|
||||
@@ -939,7 +939,7 @@ setgeo() {
|
||||
setconfig $var
|
||||
done
|
||||
rm -rf "$CRASHDIR"/ruleset/*
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[33m所有数据库文件均已清理!\033[0m"
|
||||
separator_line "="
|
||||
@@ -964,7 +964,7 @@ setgeo() {
|
||||
# Dashboard
|
||||
getdb() {
|
||||
dblink="${update_url}/"
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "正在连接服务器获取安装文件......"
|
||||
get_bin "$TMPDIR"/clashdb.tar.gz bin/dashboard/${db_type}.tar.gz
|
||||
@@ -979,7 +979,7 @@ getdb() {
|
||||
if [ $? -ne 0 ]; then
|
||||
content_line "文件解压失败!"
|
||||
separator_line "="
|
||||
double_line_break
|
||||
line_break
|
||||
sleep 1
|
||||
rm -rf "$TMPDIR"/clashfm.tar.gz
|
||||
exit 1
|
||||
@@ -1006,7 +1006,7 @@ getdb() {
|
||||
}
|
||||
|
||||
dbdir() {
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
if [ -f /www/clash/CNAME ] || [ -f "$CRASHDIR"/ui/CNAME ]; then
|
||||
content_line "\033[33m检测到已经安装过本地面板\033[0m"
|
||||
@@ -1023,7 +1023,7 @@ dbdir() {
|
||||
[ -f "$CRASHDIR"/ui/CNAME ] && rm -rf "$CRASHDIR"/ui && dbdir="$CRASHDIR"/ui
|
||||
getdb
|
||||
else
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
separator_line "\033[33m安装已取消\033[0m"
|
||||
separator_line "="
|
||||
@@ -1068,7 +1068,7 @@ dbdir() {
|
||||
|
||||
setdb() {
|
||||
while true; do
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[36m安装 dashboard 管理面板到本地\033[0m"
|
||||
content_line "\033[32m打开管理面板的速度更快且更稳定\033[0m"
|
||||
@@ -1123,7 +1123,7 @@ setdb() {
|
||||
;;
|
||||
9)
|
||||
while true; do
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "是否卸载本地面板:"
|
||||
separator_line "-"
|
||||
@@ -1140,7 +1140,7 @@ setdb() {
|
||||
rm -rf "$CRASHDIR"/ui
|
||||
rm -rf "$BINDIR"/ui
|
||||
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m面板已经卸载!\033[0m"
|
||||
separator_line "="
|
||||
@@ -1164,7 +1164,7 @@ setdb() {
|
||||
|
||||
# 根证书
|
||||
getcrt() {
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "正在连接服务器获取安装文件......"
|
||||
get_bin "$TMPDIR"/ca-certificates.crt bin/fix/ca-certificates.crt echooff
|
||||
@@ -1197,7 +1197,7 @@ setcrt() {
|
||||
fi
|
||||
|
||||
if [ -n "$openssldir" ]; then
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "安装/更新本地根证书文件(ca-certificates.crt)"
|
||||
content_line "\033[33m用于解决证书校验错误,x509报错等问题\033[0m"
|
||||
@@ -1233,7 +1233,7 @@ setcrt() {
|
||||
esac
|
||||
|
||||
else
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[33m设备可能尚未安装openssl,无法安装证书文件!\033[0m"
|
||||
separator_line "="
|
||||
@@ -1250,7 +1250,7 @@ saveserver() {
|
||||
setconfig url_id "$url_id"
|
||||
setconfig release_type "$release_type"
|
||||
version_new=''
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[32m源地址切换成功!\033[0m"
|
||||
separator_line "="
|
||||
@@ -1259,7 +1259,7 @@ saveserver() {
|
||||
# 安装源
|
||||
setserver() {
|
||||
while true; do
|
||||
double_line_break
|
||||
line_break
|
||||
[ -z "$release_type" ] && release_name=未指定
|
||||
[ -n "$release_type" ] && release_name="$release_type(回退)"
|
||||
[ "$release_type" = stable ] && release_name=稳定版
|
||||
@@ -1327,7 +1327,7 @@ setserver() {
|
||||
;;
|
||||
c)
|
||||
while true; do
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[33m开发版未经过妥善测试,可能依然存在大量bug!!!\033[0m"
|
||||
content_line "\033[33m如果你没有足够的耐心或者测试经验,切勿使用此版本!\033[0m"
|
||||
@@ -1357,7 +1357,7 @@ setserver() {
|
||||
done
|
||||
;;
|
||||
d)
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "请直接输入个人源路径"
|
||||
content_line ""
|
||||
@@ -1373,7 +1373,7 @@ setserver() {
|
||||
fi
|
||||
;;
|
||||
e)
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
if [ -n "$url_id" ] && [ "$url_id" -lt 200 ]; then
|
||||
content_line "\033[32m正在获取版本信息......\033[0m"
|
||||
@@ -1382,7 +1382,7 @@ setserver() {
|
||||
content_line "\033[32m获取版本信息成功\033[0m"
|
||||
separator_line "="
|
||||
|
||||
double_line_break
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m请选择想要回退至的稳定版版本:\033[0m"
|
||||
|
||||
|
||||
@@ -139,6 +139,6 @@ separator_line() {
|
||||
|
||||
# increase the spacing between the front
|
||||
# and back forms to improve readability
|
||||
double_line_break() {
|
||||
line_break() {
|
||||
printf "\n\n"
|
||||
}
|
||||
|
||||
16
scripts/menus/tui_lite.sh
Normal file
16
scripts/menus/tui_lite.sh
Normal file
@@ -0,0 +1,16 @@
|
||||
|
||||
content_line() {
|
||||
printf '%b' "$1\n"
|
||||
}
|
||||
|
||||
sub_content_line() {
|
||||
content_line " $1"
|
||||
}
|
||||
|
||||
separator_line() {
|
||||
echo "-----------------------------------------------"
|
||||
}
|
||||
|
||||
line_break() {
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user