mirror of
https://github.com/juewuy/ShellCrash.git
synced 2026-03-11 07:51:45 +00:00
~适配reF1nd版本providers
This commit is contained in:
@@ -282,7 +282,7 @@ check_clash_config() { #检查clash配置文件
|
||||
}
|
||||
check_singbox_config() { #检查singbox配置文件
|
||||
#检测节点或providers
|
||||
if ! grep -qE '"(socks|http|shadowsocks(r)?|vmess|trojan|wireguard|hysteria(2)?|vless|shadowtls|tuic|ssh|tor|outbound_providers)"' "$core_config_new"; then
|
||||
if ! grep -qE '"(socks|http|shadowsocks(r)?|vmess|trojan|wireguard|hysteria(2)?|vless|shadowtls|tuic|ssh|tor|providers)"' "$core_config_new"; then
|
||||
echo -----------------------------------------------
|
||||
logger "获取到了配置文件【$core_config_new】,但似乎并不包含正确的节点信息!" 31
|
||||
echo "请尝试使用6-2或者6-3的方式生成配置文件!"
|
||||
@@ -851,14 +851,14 @@ EOF
|
||||
sed '$s/,$/ ] } }/' >"$TMPDIR"/jsons/cust_add_rules.json
|
||||
[ ! -s "$TMPDIR"/jsons/cust_add_rules.json ] && rm -rf "$TMPDIR"/jsons/cust_add_rules.json
|
||||
}
|
||||
#提取配置文件以获得outbounds.json,outbound_providers.json及route.json
|
||||
#提取配置文件以获得outbounds.json,providers.json及route.json
|
||||
"$TMPDIR"/CrashCore format -c $core_config >"$TMPDIR"/format.json
|
||||
echo '{' >"$TMPDIR"/jsons/outbounds.json
|
||||
echo '{' >"$TMPDIR"/jsons/route.json
|
||||
cat "$TMPDIR"/format.json | sed -n '/"outbounds":/,/^ "[a-z]/p' | sed '$d' >>"$TMPDIR"/jsons/outbounds.json
|
||||
[ "$crashcore" = "singboxp" ] && {
|
||||
echo '{' >"$TMPDIR"/jsons/outbound_providers.json
|
||||
cat "$TMPDIR"/format.json | sed -n '/"outbound_providers":/,/^ "[a-z]/p' | sed '$d' >>"$TMPDIR"/jsons/outbound_providers.json
|
||||
echo '{' >"$TMPDIR"/jsons/providers.json
|
||||
cat "$TMPDIR"/format.json | sed -n '/"providers":/,/^ "[a-z]/p' | sed '$d' >>"$TMPDIR"/jsons/providers.json
|
||||
}
|
||||
cat "$TMPDIR"/format.json | sed -n '/"route":/,/^\( "[a-z]\|}\)/p' | sed '$d' >>"$TMPDIR"/jsons/route.json
|
||||
#清理route.json中的process_name规则以及"auto_detect_interface"
|
||||
@@ -871,8 +871,8 @@ EOF
|
||||
else
|
||||
sed -i 's/"insecure": true/"insecure": false/' "$TMPDIR"/jsons/outbounds.json
|
||||
fi
|
||||
#判断可用并修饰outbounds&outbound_providers&route.json结尾
|
||||
for file in outbounds outbound_providers route; do
|
||||
#判断可用并修饰outbounds&providers&route.json结尾
|
||||
for file in outbounds providers route; do
|
||||
if [ -n "$(grep ${file} "$TMPDIR"/jsons/${file}.json 2>/dev/null)" ]; then
|
||||
sed -i 's/^ },$/ }/; s/^ ],$/ ]/' "$TMPDIR"/jsons/${file}.json
|
||||
echo '}' >>"$TMPDIR"/jsons/${file}.json
|
||||
@@ -888,7 +888,7 @@ EOF
|
||||
mv -f "$TMPDIR"/jsons/${char}.json "$TMPDIR"/jsons_base #如果重复则临时备份
|
||||
}
|
||||
done
|
||||
for char in others inbounds outbounds outbound_providers route rule-set; do
|
||||
for char in others inbounds outbounds providers route rule-set; do
|
||||
[ -s "$CRASHDIR"/jsons/${char}.json ] && {
|
||||
ln -sf "$CRASHDIR"/jsons/${char}.json "$TMPDIR"/jsons/cust_${char}.json
|
||||
}
|
||||
@@ -1201,14 +1201,14 @@ EOF
|
||||
sed '$s/,$/ ] } }/' >"$TMPDIR"/jsons/cust_add_rules.json
|
||||
[ ! -s "$TMPDIR"/jsons/cust_add_rules.json ] && rm -rf "$TMPDIR"/jsons/cust_add_rules.json
|
||||
}
|
||||
#提取配置文件以获得outbounds.json,outbound_providers.json及route.json
|
||||
#提取配置文件以获得outbounds.json,providers.json及route.json
|
||||
"$TMPDIR"/CrashCore format -c $core_config >"$TMPDIR"/format.json
|
||||
echo '{' >"$TMPDIR"/jsons/outbounds.json
|
||||
echo '{' >"$TMPDIR"/jsons/route.json
|
||||
cat "$TMPDIR"/format.json | sed -n '/"outbounds":/,/^ "[a-z]/p' | sed '$d' >>"$TMPDIR"/jsons/outbounds.json
|
||||
[ "$crashcore" = "singboxp" ] && {
|
||||
echo '{' >"$TMPDIR"/jsons/outbound_providers.json
|
||||
cat "$TMPDIR"/format.json | sed -n '/"outbound_providers":/,/^ "[a-z]/p' | sed '$d' >>"$TMPDIR"/jsons/outbound_providers.json
|
||||
echo '{' >"$TMPDIR"/jsons/providers.json
|
||||
cat "$TMPDIR"/format.json | sed -n '/^ "providers":/,/^ "[a-z]/p' | sed '$d' >>"$TMPDIR"/jsons/providers.json
|
||||
}
|
||||
cat "$TMPDIR"/format.json | sed -n '/"route":/,/^\( "[a-z]\|}\)/p' | sed '$d' >>"$TMPDIR"/jsons/route.json
|
||||
#清理route.json中的process_name规则以及"auto_detect_interface"
|
||||
@@ -1221,8 +1221,8 @@ EOF
|
||||
else
|
||||
sed -i 's/"insecure": true/"insecure": false/' "$TMPDIR"/jsons/outbounds.json
|
||||
fi
|
||||
#判断可用并修饰outbounds&outbound_providers&route.json结尾
|
||||
for file in outbounds outbound_providers route; do
|
||||
#判断可用并修饰outbounds&providers&route.json结尾
|
||||
for file in outbounds providers route; do
|
||||
if [ -n "$(grep ${file} "$TMPDIR"/jsons/${file}.json 2>/dev/null)" ]; then
|
||||
sed -i 's/^ },$/ }/; s/^ ],$/ ]/' "$TMPDIR"/jsons/${file}.json
|
||||
echo '}' >>"$TMPDIR"/jsons/${file}.json
|
||||
@@ -1238,7 +1238,7 @@ EOF
|
||||
mv -f "$TMPDIR"/jsons/${char}.json "$TMPDIR"/jsons_base #如果重复则临时备份
|
||||
}
|
||||
done
|
||||
for char in others inbounds outbounds outbound_providers route rule-set; do
|
||||
for char in others inbounds outbounds providers route rule-set; do
|
||||
[ -s "$CRASHDIR"/jsons/${char}.json ] && {
|
||||
ln -sf "$CRASHDIR"/jsons/${char}.json "$TMPDIR"/jsons/cust_${char}.json
|
||||
}
|
||||
@@ -2134,7 +2134,7 @@ clash_check() { #clash启动前检查
|
||||
}
|
||||
singbox_check() { #singbox启动前检查
|
||||
#检测PuerNya专属功能
|
||||
[ "$crashcore" != "singboxp" ] && [ -n "$(cat "$CRASHDIR"/jsons/*.json | grep -oE '"shadowsocksr"|"outbound_providers"')" ] && core_exchange singboxp 'PuerNya内核专属功能'
|
||||
[ "$crashcore" != "singboxp" ] && [ -n "$(cat "$CRASHDIR"/jsons/*.json | grep -oE '"shadowsocksr"|"providers"')" ] && core_exchange singboxp 'PuerNya内核专属功能'
|
||||
core_check
|
||||
#预下载geoip-cn.srs数据库
|
||||
[ -n "$(cat "$CRASHDIR"/jsons/*.json | grep -oEi '"rule_set" *: *"geoip-cn"')" ] && ckgeo geoip-cn.srs srs_geoip_cn.srs
|
||||
|
||||
@@ -441,27 +441,34 @@ gen_singbox_providers(){ #生成singbox的providers配置文件
|
||||
{
|
||||
"tag": "${1}",
|
||||
"type": "local",
|
||||
"healthcheck_url": "https://www.gstatic.com/generate_204",
|
||||
"healthcheck_interval": "10m",
|
||||
"path": "${2}"
|
||||
},
|
||||
"path": "${2}",
|
||||
EOF
|
||||
else
|
||||
cat >> ${TMPDIR}/providers/providers.json <<EOF
|
||||
{
|
||||
"tag": "${1}",
|
||||
"type": "remote",
|
||||
"healthcheck_url": "https://www.gstatic.com/generate_204",
|
||||
"healthcheck_interval": "10m",
|
||||
"download_url": "${2}",
|
||||
"url": "${2}",
|
||||
"path": "./providers/${1}.yaml",
|
||||
"download_ua": "clash.meta",
|
||||
"download_interval": "24h",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
"user_agent": "clash.meta;mihomo",
|
||||
"update_interval": "24h",
|
||||
EOF
|
||||
fi
|
||||
|
||||
#通用部分生成
|
||||
[ "$skip_cert" != "未开启" ] && override_tls='true' || override_tls='false'
|
||||
cat >> ${TMPDIR}/providers/providers.json <<EOF
|
||||
"health_check": {
|
||||
"enabled": true,
|
||||
"url": "https://www.gstatic.com/generate_204",
|
||||
"interval": "10m",
|
||||
"timeout": "3s"
|
||||
},
|
||||
"override_tls": {
|
||||
"enabled": $override_tls,
|
||||
"insecure": $override_tls
|
||||
}
|
||||
},
|
||||
EOF
|
||||
}
|
||||
if [ -z "$(grep "provider_temp_${coretype}" ${CRASHDIR}/configs/ShellCrash.cfg)" ];then
|
||||
provider_temp_file=$(sed -n "1 p" ${CRASHDIR}/configs/${coretype}_providers.list | awk '{print $2}')
|
||||
@@ -485,7 +492,7 @@ EOF
|
||||
#预创建文件并写入对应文件头
|
||||
cat > ${TMPDIR}/providers/providers.json <<EOF
|
||||
{
|
||||
"outbound_providers": [
|
||||
"providers": [
|
||||
EOF
|
||||
cat > ${TMPDIR}/providers/outbounds_add.json <<EOF
|
||||
{
|
||||
@@ -495,7 +502,7 @@ EOF
|
||||
if [ -n "$2" ];then
|
||||
gen_singbox_providers_txt $1 $2
|
||||
providers_tags=\"$1\"
|
||||
echo '{ "tag": "'${1}'", "type": "urltest", "tolerance": 100, "providers": "'${1}'", "includes": ".*" },' >> ${TMPDIR}/providers/outbounds_add.json
|
||||
echo '{ "tag": "'${1}'", "type": "urltest", "tolerance": 100, "providers": ["'${1}'"], "include": ".*" },' >> ${TMPDIR}/providers/outbounds_add.json
|
||||
else
|
||||
providers_tags=''
|
||||
while read line;do
|
||||
@@ -503,14 +510,14 @@ EOF
|
||||
url=$(echo $line | awk '{print $2}')
|
||||
providers_tags=$(echo "$providers_tags, \"$tag\"" | sed 's/^, //')
|
||||
gen_singbox_providers_txt $tag $url
|
||||
echo '{ "tag": "'${tag}'", "type": "urltest", "tolerance": 100, "providers": "'${tag}'", "includes": ".*" },' >> ${TMPDIR}/providers/outbounds_add.json
|
||||
echo '{ "tag": "'${tag}'", "type": "urltest", "tolerance": 100, "providers": ["'${tag}'"], "include": ".*" },' >> ${TMPDIR}/providers/outbounds_add.json
|
||||
done < ${CRASHDIR}/configs/providers.cfg
|
||||
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" >> ${TMPDIR}/providers/outbounds.json
|
||||
cat ${TMPDIR}/provider_temp_file | sed "s/{providers_tags}/$providers_tags/g" > ${TMPDIR}/providers/outbounds.json
|
||||
rm -rf ${TMPDIR}/provider_temp_file
|
||||
#调用内核测试
|
||||
${CRASHDIR}/start.sh core_check && ${TMPDIR}/CrashCore merge ${TMPDIR}/config.json -C ${TMPDIR}/providers
|
||||
|
||||
Reference in New Issue
Block a user