#!/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 }