feat: improve UI/UX

This commit is contained in:
sofia-riese
2026-01-31 13:40:16 +08:00
parent 01174fa6d4
commit 07920b35ce
5 changed files with 441 additions and 373 deletions

View File

@@ -7,171 +7,222 @@ __IS_MODULE_SUBCONVERTER=1
[ -z "$rule_link" ] && rule_link=1
[ -z "$server_link" ] && server_link=1
#Subconverter在线订阅转换
subconverter() {
while true; do
separator_line "-"
content_line "1) \033[32m生成\033[0m包含全部节点/订阅的配置文件"
content_line "2) 设置\033[31m排除节点正则\033[0m \033[47;30m$exclude\033[0m"
content_line "3) 设置\033[32m包含节点正则\033[0m \033[47;30m$include\033[0m"
content_line "4) 选择\033[33m在线规则模版\033[0m"
content_line "5) 选择\033[0mSubconverter服务器\033[0m"
content_line "6) 自定义浏览器UA \033[32m$user_agent\033[0m"
common_back
read -r -p "请输入对应数字 > " num
case "$num" in
"" | 0)
break
;;
1)
providers_link=$(grep -v '\./providers/' "$CRASHDIR"/configs/providers.cfg 2>/dev/null |awk '{print $2}' |paste -sd '|')
uri_link=$(grep -v '^#' "$CRASHDIR"/configs/providers_uri.cfg 2>/dev/null |awk '{ print ($1=="vmess" ? $2 : $2 "#" $1) }' |paste -sd '|')
Url=$(echo "$providers_link|$uri_link" |sed 's/^|// ; s/|$//')
setconfig Url "'$Url'"
Https=''
setconfig Https
# 获取在线文件
jump_core_config
# Subconverter在线订阅转换
subconverter() {
while true; do
[ -z "$exclude" ] && exclude="未设置"
[ -z "$include" ] && include="未设置"
line_break
separator_line "="
content_line "1) \033[32m生成\033[0m包含全部节点订阅的配置文件"
content_line "2) 设置\033[31m排除节点正则\033[0m \033[47;30m$exclude\033[0m"
content_line "3) 设置\033[32m包含节点正则\033[0m \033[47;30m$include\033[0m"
content_line "4) 选择\033[33m在线规则模版\033[0m"
content_line "5) 选择\033[0mSubconverter服务器\033[0m"
content_line "6) 自定义浏览器UA \033[32m$user_agent\033[0m"
content_line ""
common_back
read -r -p "请输入对应数字> " num
case "$num" in
"" | 0)
break
;;
1)
providers_link=$(grep -v '\./providers/' "$CRASHDIR"/configs/providers.cfg 2>/dev/null | awk '{print $2}' | paste -sd '|')
uri_link=$(grep -v '^#' "$CRASHDIR"/configs/providers_uri.cfg 2>/dev/null | awk '{ print ($1=="vmess" ? $2 : $2 "#" $1) }' | paste -sd '|')
Url=$(echo "$providers_link|$uri_link" | sed 's/^|// ; s/|$//')
setconfig Url "'$Url'"
Https=''
setconfig Https
# 获取在线文件
jump_core_config
;;
2)
gen_link_flt
;;
gen_link_flt
;;
3)
gen_link_ele
;;
gen_link_ele
;;
4)
gen_link_config
;;
gen_link_config
;;
5)
gen_link_server
;;
gen_link_server
;;
6)
set_sub_ua
;;
*)
errornum
break
;;
esac
done
set_sub_ua
;;
*)
errornum
;;
esac
done
}
gen_link_flt() { # 排除节点正则
[ -z "$exclude" ] && exclude="未设置"
separator_line "-"
content_line "\033[33m当前过滤关键字\033[47;30m$exclude\033[0m"
separator_line "-"
content_line "\033[33m匹配关键字的节点会在导入时被【屏蔽】\033[0m"
content_line "多个关键字可以用\033[30;47m | \033[0m号分隔"
content_line "\033[32m支持正则表达式\033[0m空格请使用\033[30;47m + \033[0m号替代"
separator_line "-"
content_line " 000 \033[31m删除\033[0m关键字"
content_line " 回车 取消输入并返回上级菜单"
separator_line "-"
read -r -p "请输入关键字 > " exclude
if [ "$exclude" = '000' ]; then
separator_line "-"
exclude=''
content_line "\033[31m 已删除节点过滤关键字!!!\033[0m"
fi
setconfig exclude "'$exclude'"
# 排除节点正则
gen_link_flt() {
comp_box "\033[33m当前过滤关键字\033[47;30m$exclude\033[0m" \
"" \
"\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
case "$res" in
0)
return 0
;;
d)
exclude=''
;;
*)
exclude="$res"
;;
esac
if setconfig exclude "'$exclude'"; then
common_success
else
common_failed
fi
}
gen_link_ele() { # 包含节点正则
[ -z "$include" ] && include="未设置"
separator_line "-"
content_line "\033[33m当前筛选关键字\033[47;30m$include\033[0m"
separator_line "-"
content_line "\033[33m仅有匹配关键字的节点才会被【导入】\033[0m"
content_line "多个关键字可以用\033[30;47m | \033[0m号分隔"
content_line "\033[32m支持正则表达式\033[0m空格请使用\033[30;47m + \033[0m号替代"
separator_line "-"
content_line " 000 \033[31m删除\033[0m关键字"
content_line " 回车 取消输入并返回上级菜单"
separator_line "-"
read -r -p "请输入关键字 > " include
if [ "$include" = '000' ]; then
separator_line "-"
include=''
content_line "\033[31m 已删除节点匹配关键字!!!\033[0m"
fi
setconfig include "'$include'"
# 包含节点正则
gen_link_ele() {
comp_box "\033[33m当前筛选关键字\033[47;30m$include\033[0m" \
"" \
"\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
case "$res" in
0)
return 0
;;
d)
include=""
;;
*)
include="$res"
;;
esac
if setconfig exclude "'$include'"; then
common_success
else
common_failed
fi
}
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}')
separator_line "-"
content_line "当前使用规则为:\033[33m$now\033[0m"
separator_line "-"
list_box "$list"
separator_line "-"
common_back
read -r -p "请输入对应数字 > " num
totalnum=$(grep -acE '^5' "$CRASHDIR"/configs/servers.list )
if [ -z "$num" ] || [ "$num" -gt "$totalnum" ];then
errornum
elif [ "$num" = 0 ];then
echo
elif [ "$num" -le "$totalnum" ];then
#将对应标记值写入配置
rule_link=$num
setconfig rule_link $rule_link
separator_line "-"
content_line "\033[32m设置成功返回上级菜单\033[0m"
fi
# 选择在线规则模版
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"
list_box "$list"
content_line ""
common_back
read -r -p "请输入对应数字> " num
totalnum=$(grep -acE '^5' "$CRASHDIR"/configs/servers.list)
if [ -z "$num" ] || [ "$num" -gt "$totalnum" ]; then
errornum
elif [ "$num" = 0 ]; then
echo
elif [ "$num" -le "$totalnum" ]; then
# 将对应标记值写入配置
rule_link=$num
if setconfig rule_link "$rule_link"; then
msg_alert "\033[32m设置成功返回上级菜单\033[0m"
else
common_failed
fi
fi
}
gen_link_server() { #选择Subconverter服务器
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}')
separator_line "-"
content_line "\033[36m以下为互联网采集的第三方服务器具体安全性请自行斟酌\033[0m"
content_line "\033[32m感谢以下作者的无私奉献\033[0m"
content_line "当前使用后端为:\033[33m$now\033[0m"
separator_line "-"
list_box "$list"
common_back
read -r -p "请输入对应数字 > " num
totalnum=$(grep -acE '^3|^4' "$CRASHDIR"/configs/servers.list )
if [ -z "$num" ] || [ "$num" -gt "$totalnum" ];then
errornum
elif [ "$num" = 0 ];then
echo
elif [ "$num" -le "$totalnum" ];then
#将对应标记值写入配置
server_link=$num
setconfig server_link $server_link
separator_line "-"
content_line "\033[32m设置成功返回上级菜单\033[0m"
fi
# 选择Subconverter服务器
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" \
"" \
"当前使用后端为:\033[33m$now\033[0m"
list_box "$list"
content_line ""
common_back
read -r -p "请输入对应数字> " num
totalnum=$(grep -acE '^3|^4' "$CRASHDIR"/configs/servers.list)
if [ -z "$num" ] || [ "$num" -gt "$totalnum" ]; then
errornum
elif [ "$num" = 0 ]; then
echo
elif [ "$num" -le "$totalnum" ]; then
# 将对应标记值写入配置
server_link=$num
if setconfig server_link "$server_link"; then
content_line "\033[32m设置成功返回上级菜单\033[0m"
else
common_failed
fi
fi
}
set_sub_ua() {
separator_line "-"
content_line "\033[36m无法正确获取配置文件时可尝试使用\033[0m"
content_line " 1 使用自动UA(默认)"
content_line " 2 不使用UA"
content_line " 3 使用自定义UA\033[32m$user_agent\033[0m"
separator_line "-"
read -r -p "请输入对应数字 > " num
case "$num" in
0)
user_agent=''
;;
1)
user_agent='auto'
;;
2)
user_agent='none'
;;
3)
read -r -p "请输入自定义UA(不要包含空格和特殊符号!) > " text
[ -n "$text" ] && user_agent="$text"
;;
*)
errornum
;;
esac
[ "$num" -le 3 ] && setconfig user_agent "$user_agent"
while true; do
comp_box "\033[36m无法正确获取配置文件时可尝试使用\033[0m" \
"" \
"当前UA$user_agent"
content_line "1) 使用自动UA默认"
content_line "2) 不使用UA"
content_line "3) 使用自定义UA"
content_line "4) 清空UA"
content_line ""
content_line "0) 返回上级菜单"
separator_line "="
read -r -p "请输入对应数字> " num
case "$num" in
0)
break
;;
1)
user_agent='auto'
;;
2)
user_agent='none'
;;
3)
comp_box "\033[33m注意\n自定义UA不可包含空格或特殊符号\033[0m"
btm_box "\033[36m请直接输入自定义UA\033[0m" \
"或输入 0 返回上级菜单"
read -r -p "请输入> " text
if [ "$text" = 0 ]; then
continue
elif [ -n "$text" ]; then
user_agent="$text"
fi
;;
4)
user_agent=''
;;
*)
errornum
continue
;;
esac
if [ "$num" -ge 1 ] && [ "$num" -le 4 ]; then
if setconfig user_agent "$user_agent"; then
common_success
else
common_failed
fi
fi
break
done
}