mirror of
https://github.com/juewuy/ShellCrash.git
synced 2026-03-12 00:11:31 +00:00
222 lines
5.9 KiB
Bash
222 lines
5.9 KiB
Bash
#!/bin/sh
|
|
# Copyright (C) Juewuy
|
|
|
|
[ -n "$__IS_MODULE_SUBCONVERTER" ] && return
|
|
__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$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 "$COMMON_INPUT> " num
|
|
case "$num" in
|
|
"" | 0)
|
|
break
|
|
;;
|
|
1)
|
|
providers_link=$(grep -v '\./providers/' "$CRASHDIR"/configs/providers.cfg 2>/dev/null | awk '{print $2}' | tr '\n' '|')
|
|
uri_link=$(grep -v '^#' "$CRASHDIR"/configs/providers_uri.cfg 2>/dev/null | awk '{ print ($1=="vmess" ? $2 : $2 "#" $1) }' | tr '\n' '|')
|
|
Url=$(echo "$providers_link|$uri_link" | sed 's/||*/|/g; s/^|//; s/|$//')
|
|
setconfig Url "'$Url'"
|
|
Https=''
|
|
setconfig Https
|
|
# 获取在线文件
|
|
jump_core_config
|
|
;;
|
|
2)
|
|
gen_link_flt
|
|
;;
|
|
3)
|
|
gen_link_ele
|
|
;;
|
|
4)
|
|
gen_link_config
|
|
;;
|
|
5)
|
|
gen_link_server
|
|
;;
|
|
6)
|
|
set_sub_ua
|
|
;;
|
|
*)
|
|
errornum
|
|
;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
# 排除节点正则
|
|
gen_link_flt() {
|
|
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
|
|
;;
|
|
d)
|
|
exclude=''
|
|
;;
|
|
*)
|
|
exclude="$res"
|
|
;;
|
|
esac
|
|
|
|
if setconfig exclude "'$exclude'"; then
|
|
common_success
|
|
else
|
|
common_failed
|
|
fi
|
|
}
|
|
|
|
# 包含节点正则
|
|
gen_link_ele() {
|
|
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
|
|
;;
|
|
d)
|
|
include=""
|
|
;;
|
|
*)
|
|
include="$res"
|
|
;;
|
|
esac
|
|
|
|
if setconfig include "'$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}')
|
|
comp_box "$SUBCONVERTER_RULE_CURRENT\033[33m$now\033[0m"
|
|
list_box "$list"
|
|
content_line ""
|
|
common_back
|
|
read -r -p "$COMMON_INPUT> " 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$SUBCONVERTER_SET_OK\033[0m"
|
|
else
|
|
common_failed
|
|
fi
|
|
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$SUBCONVERTER_SERVER_HINT\033[0m" \
|
|
"\033[32m$SUBCONVERTER_SERVER_THANKS\033[0m" \
|
|
"" \
|
|
"$SUBCONVERTER_SERVER_CURRENT\033[33m$now\033[0m"
|
|
list_box "$list"
|
|
content_line ""
|
|
common_back
|
|
read -r -p "$COMMON_INPUT> " 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$SUBCONVERTER_SET_OK\033[0m"
|
|
else
|
|
common_failed
|
|
fi
|
|
fi
|
|
}
|
|
|
|
set_sub_ua() {
|
|
while true; do
|
|
comp_box "\033[36m$SUBCONVERTER_UA_HINT\033[0m" \
|
|
"" \
|
|
"$SUBCONVERTER_UA_CURRENT$user_agent"
|
|
btm_box "1) $SUBCONVERTER_UA_AUTO"\
|
|
"2) $SUBCONVERTER_UA_NONE"\
|
|
"3) $SUBCONVERTER_UA_CUSTOM"\
|
|
"4) $SUBCONVERTER_UA_CLEAR"\
|
|
""\
|
|
"0) $COMMON_BACK"
|
|
read -r -p "$COMMON_INPUT> " num
|
|
case "$num" in
|
|
0)
|
|
break
|
|
;;
|
|
1)
|
|
user_agent='auto'
|
|
;;
|
|
2)
|
|
user_agent='none'
|
|
;;
|
|
3)
|
|
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
|
|
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
|
|
}
|