#!/bin/sh # Copyright (C) Juewuy [ -n "$__IS_PROVIDERS_SINGBOX" ] && return __IS_PROVIDERS_SINGBOX=1 . "$CRASHDIR"/libs/web_get_bin.sh #生成singbox的providers配置文件 gen_providers(){ if [ -z "$(grep "provider_temp_${CORE_TYPE}" "$CRASHDIR"/configs/ShellCrash.cfg)" ];then provider_temp_file="$(sed -n "1 p" "$CRASHDIR"/configs/${CORE_TYPE}_providers.list | awk '{print $2}')" else provider_temp_file=$(grep "provider_temp_${CORE_TYPE}" "$CRASHDIR"/configs/ShellCrash.cfg | awk -F '=' '{print $2}') fi echo "-----------------------------------------------" if [ -s "$provider_temp_file" ];then ln -sf "$provider_temp_file" "$TMPDIR"/provider_temp_file else echo -e "\033[33m正在获取在线模版!\033[0m" get_bin "$TMPDIR"/provider_temp_file "rules/${CORE_TYPE}_providers/$provider_temp_file" [ -z "$(grep -o 'route' "$TMPDIR"/provider_temp_file)" ] && { echo -e "\033[31m下载失败,请尝试更换安装源!\033[0m" . "$CRASHDIR"/menus/9_upgrade.sh && setserver setproviders } fi #生成outbound_providers模块 mkdir -p "$TMPDIR"/providers #预创建文件并写入对应文件头 cat > "$TMPDIR"/providers/providers.json < "$TMPDIR"/providers/outbounds_add.json < "$CRASHDIR"/providers/uri_group gen_providers_txt "Uri_group" "./providers/uri_group" "3" "12" providers_tags=$(echo "$providers_tags, \"Uri_group\"" | sed 's/^, //') } fi #修复文件格式 sed -i '$s/},/}]}/' "$TMPDIR"/providers/outbounds_add.json sed -i '$s/},/}]}/' "$TMPDIR"/providers/providers.json #使用模版生成outbounds和rules模块 cat "$TMPDIR"/provider_temp_file | sed "s/{providers_tags}/$providers_tags/g" | sed "s/\"providers_tags\"/$providers_tags/g" > "$TMPDIR"/providers/outbounds.json rm -rf "$TMPDIR"/provider_temp_file #调用内核测试 . "$CRASHDIR"/starts/check_core.sh && check_core && "$TMPDIR"/CrashCore merge "$TMPDIR"/config.json -C "$TMPDIR"/providers if [ "$?" = 0 ];then echo -e "\033[32m配置文件生成成功!如果启动超时建议更新里手动安装Singbox-srs数据库常用包!\033[0m" mkdir -p "$CRASHDIR"/jsons mv -f "$TMPDIR"/config.json "$CRASHDIR"/jsons/config.json rm -rf "$TMPDIR"/providers read -p "是否立即启动/重启服务?(1/0) > " res [ "$res" = 1 ] && { start_core && . "$CRASHDIR"/libs/set_cron.sh && cronset '更新订阅' exit } else echo -e "\033[31m生成配置文件出错,请仔细检查输入!\033[0m" rm -rf "$TMPDIR"/CrashCore #rm -rf "$TMPDIR"/providers fi } gen_providers_txt(){ tag=$1 interval=${3:-3} interval2=${4:-12} ua=${5:-clash.meta} exclude=${6#\#} include=${7#\#} if [ -n "$(echo $2|grep -E '^./')" ];then cat >> "$TMPDIR"/providers/providers.json <> "$TMPDIR"/providers/providers.json <> "$TMPDIR"/providers/providers.json <> "$TMPDIR"/providers/outbounds_add.json }