Merge branch 'master' into dev

# Conflicts:
#	bin/version
This commit is contained in:
juewuy 2024-02-26 10:39:22 +08:00
commit c742a58677
10 changed files with 56 additions and 46 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -4,5 +4,4 @@ clash_v=v1.7.1
meta_v=v1.18.0
singboxp_v=1.8.5-73d97226
singbox_v=1.8.5
versionsh=1.9.0pre11
GeoIP_v=20240224
versionsh=1.9.0pre12

View File

@ -4,7 +4,7 @@
102#$CRASHDIR/start.sh stop#停止clash服务
103#$CRASHDIR/start.sh restart#重启clash服务
104#$CRASHDIR/start.sh update_config#更新订阅并重启服务
105#$CRASHDIR/start.sh hotupdate#热更新订阅
105#$CRASHDIR/start.sh hotupdate#热更新订阅(不推荐)
106#$CRASHDIR/start.sh web_save#自动保存面板配置
107#$CRASHDIR/task/task.sh ntp#自动同步ntp时间

View File

@ -9,11 +9,12 @@ ruleset=国内直连流量,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/mas
ruleset=国内直连流量,[]GEOIP,CN
ruleset=普通外网流量,[]FINAL
custom_proxy_group=922南北美`select`[]🇺🇲 美国自动`[]🇺🇲 美国手动`[]🇸🇬 新加坡自动`[]🇸🇬 新加坡手动`[]🇭🇰 香港自动`[]🇭🇰 香港手动`[]所有节点手选
custom_proxy_group=922东南亚`select`[]🇸🇬 新加坡自动`[]🇸🇬 新加坡手动`[]🇨🇳 台湾自动`[]🇨🇳 台湾手动`[]🇭🇰 香港自动`[]🇭🇰 香港手动`[]所有节点手选
custom_proxy_group=922南北美`select`[]🇺🇲 美国自动`[]🇺🇲 美国均衡`[]🇺🇲 美国手动`[]🇸🇬 新加坡自动`[]🇸🇬 新加坡均衡`[]🇸🇬 新加坡手动`[]🇭🇰 香港自动`[]🇭🇰 香港均衡`[]🇭🇰 香港手动`[]所有节点手选
custom_proxy_group=922东南亚`select`[]🇸🇬 新加坡自动`[]🇸🇬 新加坡均衡`[]🇸🇬 新加坡手动`[]🇨🇳 台湾自动`[]🇨🇳 台湾均衡`[]🇨🇳 台湾手动`[]🇭🇰 香港自动`[]🇭🇰 香港均衡`[]🇭🇰 香港手动`[]所有节点手选
custom_proxy_group=IP验证专用`select`.*
custom_proxy_group=922未知地址`select`[]🇨🇳 台湾自动`[]🇨🇳 台湾手动`[]🇭🇰 香港自动`[]🇭🇰 香港手动`[]🇸🇬 新加坡自动`[]🇸🇬 新加坡手动`[]🇺🇲 美国自动`[]🇺🇲 美国手动`[]所有节点手选
custom_proxy_group=abc全球节点`select`[]🇨🇳 台湾自动`[]🇨🇳 台湾手动`[]🇭🇰 香港自动`[]🇭🇰 香港手动`[]🇸🇬 新加坡自动`[]🇸🇬 新加坡手动`[]🇺🇲 美国自动`[]🇺🇲 美国手动`[]所有节点手选
custom_proxy_group=922未知地址`select`[]🇨🇳 台湾自动`[]🇨🇳 台湾均衡`[]🇨🇳 台湾手动`[]🇭🇰 香港自动`[]🇭🇰 香港均衡`[]🇭🇰 香港手动`[]🇸🇬 新加坡自动`[]🇸🇬 新加坡均衡`[]🇸🇬 新加坡手动`[]🇺🇲 美国自动`[]🇺🇲 美国均衡`[]🇺🇲 美国手动`[]所有节点手选
custom_proxy_group=abc全球节点`select`[]🇨🇳 台湾自动`[]🇨🇳 台湾均衡`[]🇨🇳 台湾手动`[]🇭🇰 香港自动`[]🇭🇰 香港均衡`[]🇭🇰 香港手动`[]🇸🇬 新加坡自动`[]🇸🇬 新加坡均衡`[]🇸🇬 新加坡手动`[]🇺🇲 美国自动`[]🇺🇲 美国均衡`[]🇺🇲 美国手动`[]所有节点手选
custom_proxy_group=PIA全球节点`select`[]🇨🇳 台湾自动`[]🇨🇳 台湾均衡`[]🇨🇳 台湾手动`[]🇭🇰 香港自动`[]🇭🇰 香港均衡`[]🇭🇰 香港手动`[]🇸🇬 新加坡自动`[]🇸🇬 新加坡均衡`[]🇸🇬 新加坡手动`[]🇺🇲 美国自动`[]🇺🇲 美国均衡`[]🇺🇲 美国手动`[]所有节点手选
custom_proxy_group=🇭🇰 香港手动`select`(港|HK|🇭🇰|Hong Kong)
custom_proxy_group=🇺🇲 美国手动`select`(美|波特兰|达拉斯|俄勒冈|凤凰城|费利蒙|硅谷|拉斯维加斯|洛杉矶|圣何塞|圣克拉拉|西雅图|芝加哥|US|United States|🇺🇲)
@ -21,15 +22,21 @@ custom_proxy_group=🇨🇳 台湾手动`select`(台|新北|彰化|TW|Taiwan)
custom_proxy_group=🇸🇬 新加坡手动`select`(新加坡|坡|狮城|广新|SG|Singapore|🇸🇬)
custom_proxy_group=所有节点手选`select`.*
custom_proxy_group=普通外网流量`select`[]🇭🇰 香港自动`[]🇨🇳 台湾自动`[]🇸🇬 新加坡自动`[]🇺🇲 美国自动`[]所有节点自动`[]所有节点手选`[]DIRECT
custom_proxy_group=普通外网流量`select`[]🇭🇰 香港自动`[]🇨🇳 台湾自动`[]🇸🇬 新加坡自动`[]🇺🇲 美国自动`[]dler-AC`[]所有节点自动`[]所有节点手选`[]DIRECT
custom_proxy_group=国内直连流量`select`[]DIRECT`[]所有节点自动`[]所有节点手选
custom_proxy_group=🇭🇰 香港自动`url-test`(港|HK|Hong Kong)`https://www.gstatic.com/generate_204`300,,50
custom_proxy_group=🇺🇲 美国自动`url-test`(美|波特兰|达拉斯|俄勒冈|凤凰城|费利蒙|硅谷|拉斯维加斯|洛杉矶|圣何塞|圣克拉拉|西雅图|芝加哥|US|United States)`http://www.gstatic.com/generate_204`300,,150
custom_proxy_group=🇨🇳 台湾自动`url-test`(台|新北|彰化|TW|Taiwan)`https://www.gstatic.com/generate_204`300,,50
custom_proxy_group=🇸🇬 新加坡自动`url-test`(新加坡|坡|狮城|SG|Singapore)`https://www.gstatic.com/generate_204`300,,50
custom_proxy_group=dler-AC`url-test`(AC)`https://www.gstatic.com/generate_204`300,,50
custom_proxy_group=所有节点自动`url-test`.*`https://www.gstatic.com/generate_204`300,,50
custom_proxy_group=🇭🇰 香港均衡`load-balance`(香港 0)`https://www.gstatic.com/generate_204`300,,50
custom_proxy_group=🇺🇲 美国均衡`load-balance`(美国 0)`http://www.gstatic.com/generate_204`300,,150
custom_proxy_group=🇨🇳 台湾均衡`load-balance`(台湾 0)`https://www.gstatic.com/generate_204`300,,50
custom_proxy_group=🇸🇬 新加坡均衡`load-balance`(新加坡 0)`https://www.gstatic.com/generate_204`300,,50
enable_rule_generator=true
overwrite_original_rules=true

View File

@ -1406,7 +1406,7 @@ setcore(){ #内核选择菜单
echo -e "2 \033[43;30m SingBox \033[0m \033[32m支持全面占用低\033[0m"
echo -e " >>\033[32m$singbox_v \033[33m不支持providers\033[0m"
echo -e " 说明文档: \033[36;4mhttps://sing-box.sagernet.org\033[0m"
echo -e "3 \033[43;30m Mihomo \033[0m \033[32m多功能支持全面\033[0m"
echo -e "3 \033[43;30m Meta \033[0m \033[32m多功能支持全面\033[0m"
echo -e " >>\033[32m$meta_v \033[33m内存占用较高\033[0m"
echo -e " 说明文档: \033[36;4mhttps://wiki.metacubex.one\033[0m"
echo -e "4 \033[43;30m SingBoxP \033[0m \033[32m支持ssr、providers、dns并发……\033[0m"

View File

@ -1,7 +1,7 @@
#!/bin/sh
# Copyright (C) Juewuy
version=1.9.0pre11
version=1.9.0pre12
setdir(){
dir_avail(){
@ -279,6 +279,8 @@ done
#配置文件改名
mv -f ${CRASHDIR}/mark ${CRASHDIR}/configs/ShellCrash.cfg 2>/dev/null
mv -f ${CRASHDIR}/configs/ShellClash.cfg ${CRASHDIR}/configs/ShellCrash.cfg 2>/dev/null
#数据库改名
mv -f ${CRASHDIR}/geosite.dat ${CRASHDIR}/GeoSite.dat 2>/dev/null
#内核改名
mv -f ${CRASHDIR}/clash ${CRASHDIR}/CrashCore 2>/dev/null
#内核压缩

View File

@ -1133,7 +1133,7 @@ normal_set(){ #基础设置
echo -e "\033[36m已设为 $redir_mod \033[0m"
}
[ -n "$(iptables -j TPROXY 2>&1 | grep 'on-port')" ] && sup_tp=1
[ -n "$(ls /dev/net/tun)" ] || ip tuntap >/dev/null 2>&1 && sup_tun=1
[ -n "$(ls /dev/net/tun 2>/dev/null)" ] || ip tuntap >/dev/null 2>&1 && sup_tun=1
nft add table inet shellcrash 2>/dev/null && sup_nft=1 && modprobe nft_tproxy >/dev/null 2>&1 && sup_nft=2
echo -----------------------------------------------
echo -e "当前代理模式为:\033[47;30m $redir_mod \033[0mShellCrash核心为\033[47;30m $crashcore \033[0m"
@ -1227,10 +1227,13 @@ normal_set(){ #基础设置
echo -----------------------------------------------
echo -e " 1 fake-ip模式 \033[32m响应速度更快\033[0m"
echo -e " 不支持绕过CN-IP功能"
echo -e " 2 redir_host模式\033[32m兼容性更好\033[0m"
echo -e " 需搭配加密DNS使用"
echo -e " 3 mix混合模式 \033[32m内部realip外部fakeip\033[0m"
echo -e " 依赖geosite-cn.(db/srs)数据库"
if [ "$crashcore" = singbox -o "$crashcore" = singboxp ];then
echo -e " 3 mix混合模式 \033[32m内部realip外部fakeip\033[0m"
echo -e " 依赖geosite-cn.(db/srs)数据库"
else
echo -e " 2 redir_host模式\033[32m兼容性更好\033[0m"
echo -e " 需搭配加密DNS使用"
fi
echo " 0 返回上级菜单"
read -p "请输入对应数字 > " num
if [ -z "$num" ]; then
@ -1474,11 +1477,7 @@ advanced_set(){ #进阶设置
1)
setipv6
advanced_set
;;
2)
setmeta
advanced_set
;;
;;
3)
setfirewall
advanced_set

View File

@ -181,7 +181,7 @@ mark_time(){ #时间戳
getlanip(){ #获取局域网host地址
i=1
while [ "$i" -le "20" ];do
host_ipv4=$(ip a 2>&1 | grep -w 'inet' | grep 'global' | grep 'br' | grep -Ev 'iot|peer' | grep -E ' 1(92|0|72)\.' | sed 's/.*inet.//g' | sed 's/br.*$//g' | sed 's/metric.*$//g' ) #ipv4局域网网段
host_ipv4=$(ip a 2>&1 | grep -w 'inet' | grep 'global' | grep 'brd' | grep -Ev 'iot|peer' | grep -E ' 1(92|0|72)\.' | sed 's/.*inet.//g' | sed 's/br.*$//g' | sed 's/metric.*$//g' ) #ipv4局域网网段
[ "$ipv6_redir" = "已开启" ] && host_ipv6=$(ip a 2>&1 | grep -w 'inet6' | grep -E 'global' | sed 's/.*inet6.//g' | sed 's/scope.*$//g' ) #ipv6公网地址段
[ -f ${TMPDIR}/ShellCrash.log ] && break
[ -n "$host_ipv4" -a "$ipv6_redir" != "已开启" ] && break
@ -355,7 +355,7 @@ modify_yaml(){ #修饰clash配置文件
cat > ${TMPDIR}/dns.yaml <<EOF
dns:
enable: true
listen: 0.0.0.0:$dns_port
listen: :$dns_port
use-hosts: true
ipv6: $dns_v6
default-nameserver:
@ -579,18 +579,21 @@ EOF
[ -z "$dns_direct" ] && dns_direct='223.5.5.5'
[ -z "$dns_proxy" ] && dns_proxy='1.0.0.1'
[ "$ipv6_dns" = "已开启" ] && strategy='prefer_ipv4' || strategy='ipv4_only'
[ "$dns_mod" = "redir_host" ] && final_dns=dns_direct && global_dns=dns_proxy
[ "$dns_mod" = "redir_host" ] && {
global_dns=dns_proxy
direct_dns="{ \"query_type\": [ \"A\", \"AAAA\" ], \"server\": \"dns_direct\" },"
}
[ "$dns_mod" = "fake-ip" ] && {
final_dns=dns_fakeip && global_dns=dns_fakeip
global_dns=dns_fakeip
fake_ip_filter=$(cat ${CRASHDIR}/configs/fake_ip_filter ${CRASHDIR}/configs/fake_ip_filter.list 2>/dev/null | grep '\.' | awk '{printf "\"%s\", ",$1}' | sed "s/, $//" | sed 's/+/.+/g' | sed 's/*/.*/g')
[ -n "$fake_ip_filter" ] && fake_ip_filter="{ \"domain_regex\": [$fake_ip_filter], \"server\": \"local\" },"
[ -n "$fake_ip_filter" ] && fake_ip_filter="{ \"domain_regex\": [$fake_ip_filter], \"server\": \"dns_direct\" },"
}
[ "$dns_mod" = "mix" ] && {
final_dns=dns_direct && global_dns=dns_fakeip
global_dns=dns_fakeip
fake_ip_filter=$(cat ${CRASHDIR}/configs/fake_ip_filter 2>/dev/null | grep '\.' | awk '{printf "\"%s\", ",$1}' | sed "s/, $//" | sed 's/+/.+/g' | sed 's/*/.*/g')
[ -n "$fake_ip_filter" ] && fake_ip_filter="{ \"domain_regex\": [$fake_ip_filter], \"server\": \"local\" },"
[ -n "$fake_ip_filter" ] && fake_ip_filter="{ \"domain_regex\": [$fake_ip_filter], \"server\": \"dns_direct\" },"
if [ -z "$(echo "$core_v" | grep -E '^1\.7.*')" ];then
mix_dns="{ \"rule_set\": [\"geosite-cn\"], \"invert\": true, \"server\": \"dns_fakeip\", \"rewrite_ttl\": 1 },"
direct_dns="{ \"rule_set\": [\"geosite-cn\"], \"server\": \"dns_direct\" },"
#生成add_rule_set.json
[ -z "$(cat ${CRASHDIR}/jsons/*.json | grep -Ei '\"tag\" *: *\"geosite-cn\"')" ] && cat > ${TMPDIR}/jsons/add_rule_set.json <<EOF
{
@ -607,7 +610,7 @@ EOF
}
EOF
else
mix_dns="{ \"geosite\": [\"geolocation-cn\"], \"invert\": true, \"server\": \"dns_fakeip\", \"rewrite_ttl\": 1 },"
direct_dns="{ \"geosite\": \"geolocation-cn\", \"server\": \"dns_direct\" },"
fi
}
cat > ${TMPDIR}/jsons/dns.json <<EOF
@ -618,26 +621,25 @@ EOF
"tag": "dns_proxy",
"address": "$dns_proxy",
"strategy": "$strategy",
"address_resolver": "dns_resolver"
"address_resolver": "local"
}, {
"tag": "dns_direct",
"address": "$dns_direct",
"strategy": "$strategy",
"address_resolver": "dns_resolver",
"address_resolver": "local",
"detour": "DIRECT"
},
{ "tag": "dns_fakeip", "address": "fakeip" },
{ "tag": "dns_resolver", "address": "223.5.5.5", "detour": "DIRECT" },
{ "tag": "block", "address": "rcode://success" },
{ "tag": "local", "address": "local", "detour": "DIRECT" }
{ "tag": "local", "address": "local" },
{ "tag": "block", "address": "rcode://success" }
],
"rules": [
{ "outbound": ["any"], "server": "dns_resolver" },
{ "outbound": ["any"], "server": "dns_direct" },
{ "clash_mode": "Global", "server": "$global_dns", "rewrite_ttl": 1 },
{ "clash_mode": "Direct", "server": "dns_direct" },
$fake_ip_filter
$mix_dns
{ "query_type": [ "A", "AAAA" ], "server": "$final_dns" }
$direct_dns
{ "query_type": [ "A", "AAAA" ], "server": "dns_fakeip", "rewrite_ttl": 1 }
],
"final": "dns_direct",
"independent_cache": true,
@ -682,7 +684,7 @@ EOF
{
"type": "mixed",
"tag": "mixed-in",
"listen": "0.0.0.0",
"listen": "::",
"listen_port": $mix_port,
$userpass
"sniff": false
@ -755,7 +757,7 @@ EOF
}
EOF
#生成自定义规则文件
[ -s ${CRASHDIR}/yamls/rules.yaml ] && {
[ -n "$(grep -Ev ^# ${CRASHDIR}/yamls/rules.yaml 2>/dev/null)" ] && {
cat ${CRASHDIR}/yamls/rules.yaml \
| sed '/#.*/d' \
| grep -oE '\-.*,.*,.*' \
@ -773,6 +775,7 @@ EOF
| sed 's/$/" },/g' \
| sed '1i\{ "route": { "rules": [ ' \
| 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
${TMPDIR}/CrashCore format -c $core_config > ${TMPDIR}/format.json
@ -1415,7 +1418,7 @@ web_save(){ #最小化保存面板节点选择
done < ${TMPDIR}/web_proxies
rm -rf ${TMPDIR}/web_proxies
#获取面板设置
[ "$crashcore" != singbox ] && get_save http://127.0.0.1:${db_port}/configs > ${TMPDIR}/web_configs
#[ "$crashcore" != singbox ] && get_save http://127.0.0.1:${db_port}/configs > ${TMPDIR}/web_configs
#对比文件,如果有变动且不为空则写入磁盘,否则清除缓存
for file in web_save web_configs ;do
if [ -s ${TMPDIR}/${file} ];then
@ -1448,10 +1451,10 @@ web_restore(){ #还原面板选择
done
}
#还原面板设置
[ "$crashcore" != singbox ] && [ -s ${CRASHDIR}/configs/web_configs ] && {
sleep 5
put_save http://127.0.0.1:${db_port}/configs "$(cat ${CRASHDIR}/configs/web_configs)" PATCH
}
#[ "$crashcore" != singbox ] && [ -s ${CRASHDIR}/configs/web_configs ] && {
#sleep 5
#put_save http://127.0.0.1:${db_port}/configs "$(cat ${CRASHDIR}/configs/web_configs)" PATCH
#}
}
}
makehtml(){ #生成面板跳转文件
@ -1577,7 +1580,7 @@ clash_check(){ #clash启动前检查
#预下载GeoIP数据库
[ -n "$(cat ${CRASHDIR}/yamls/*.yaml | grep -oEi 'geoip')" ] && ckgeo Country.mmdb cn_mini.mmdb
#预下载GeoSite数据库
[ -n "$(cat ${CRASHDIR}/yamls/*.yaml | grep -oEi 'geosite')" ] && ckgeo GeoSite.dat GeoSite.dat
[ -n "$(cat ${CRASHDIR}/yamls/*.yaml | grep -oEi 'geosite')" ] && ckgeo GeoSite.dat geosite.dat
return 0
}
singbox_check(){ #singbox启动前检查
@ -1747,7 +1750,7 @@ start_error(){ #启动报错
${COMMAND} >${TMPDIR}/core_test.log 2>&1 &
sleep 2 ; kill $! >/dev/null 2>&1
fi
error=$(cat $TMPDIR/core_test.log | grep -Eo 'error.*=.*|.*ERROR.*|.*FATAL.*')
error=$(cat $TMPDIR/core_test.log | grep -iEo 'error.*=.*|.*ERROR.*|.*FATAL.*')
logger "服务启动失败!请查看报错信息!详细信息请查看$TMPDIR/core_test.log" 33
logger "$error" 31
exit 1