mirror of
https://github.com/juewuy/ShellCrash.git
synced 2026-03-12 00:11:31 +00:00
~bug fix
This commit is contained in:
@@ -13,10 +13,7 @@ routing_mark=$((fwmark + 2))
|
|||||||
|
|
||||||
[ -z "$dns_nameserver" ] && {
|
[ -z "$dns_nameserver" ] && {
|
||||||
dns_nameserver='223.5.5.5, 1.2.4.8'
|
dns_nameserver='223.5.5.5, 1.2.4.8'
|
||||||
cat /proc/net/udp | grep -q '0035' && dns_nameserver='localhost'
|
cat /proc/net/udp | grep -q '0035' && dns_nameserver='127.0.0.1'
|
||||||
}
|
}
|
||||||
[ -z "$dns_fallback" ] && dns_fallback="1.1.1.1, 8.8.8.8"
|
[ -z "$dns_fallback" ] && dns_fallback="1.1.1.1, 8.8.8.8"
|
||||||
[ -z "$dns_resolver" ] && {
|
[ -z "$dns_resolver" ] && dns_resolver="223.5.5.5, 2400:3200::1"
|
||||||
dns_resolver="223.5.5.5, 2400:3200::1"
|
|
||||||
cat /proc/net/udp | grep -q '0035' && dns_resolver='127.0.0.1'
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ webget(){
|
|||||||
wget -Y off $progress -O "$1" "$2"
|
wget -Y off $progress -O "$1" "$2"
|
||||||
return $?
|
return $?
|
||||||
else
|
else
|
||||||
echo "找不到可用下载工具!!!请安装Curl或Wget!!!"
|
echo "No Curl or Wget!!!"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -551,7 +551,7 @@ EOF
|
|||||||
sed -i '$s/},/}]}/' "$TMPDIR"/providers/outbounds_add.json
|
sed -i '$s/},/}]}/' "$TMPDIR"/providers/outbounds_add.json
|
||||||
sed -i '$s/},/}]}/' "$TMPDIR"/providers/providers.json
|
sed -i '$s/},/}]}/' "$TMPDIR"/providers/providers.json
|
||||||
#使用模版生成outbounds和rules模块
|
#使用模版生成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" | sed "s/\"providers_tags\"/$providers_tags/g" > "$TMPDIR"/providers/outbounds.json
|
||||||
rm -rf "$TMPDIR"/provider_temp_file
|
rm -rf "$TMPDIR"/provider_temp_file
|
||||||
#调用内核测试
|
#调用内核测试
|
||||||
. "$CRASHDIR"/starts/check_core.sh && check_core && "$TMPDIR"/CrashCore merge "$TMPDIR"/config.json -C "$TMPDIR"/providers
|
. "$CRASHDIR"/starts/check_core.sh && check_core && "$TMPDIR"/CrashCore merge "$TMPDIR"/config.json -C "$TMPDIR"/providers
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ set_fw_filter() {
|
|||||||
echo -e " 1 过滤非常用端口: \033[36m$common_ports\033[0m ————用于过滤P2P流量"
|
echo -e " 1 过滤非常用端口: \033[36m$common_ports\033[0m ————用于过滤P2P流量"
|
||||||
echo -e " 2 过滤局域网设备: \033[36m$mac_return\033[0m ————使用黑/白名单进行过滤"
|
echo -e " 2 过滤局域网设备: \033[36m$mac_return\033[0m ————使用黑/白名单进行过滤"
|
||||||
echo -e " 3 过滤QUIC协议: \033[36m$quic_rj\033[0m ————优化视频性能"
|
echo -e " 3 过滤QUIC协议: \033[36m$quic_rj\033[0m ————优化视频性能"
|
||||||
echo -e " 4 过滤CN_IP(6)列表: \033[36m$cn_ip_route\033[0m ————优化性能,不兼容Fake-ip"
|
echo -e " 4 过滤CN_IP(4/6)列表: \033[36m$cn_ip_route\033[0m ————优化性能"
|
||||||
echo -e " 5 自定义透明路由ipv4网段: 适合vlan等复杂网络环境"
|
echo -e " 5 自定义透明路由ipv4网段: 适合vlan等复杂网络环境"
|
||||||
echo -e " 6 自定义保留地址ipv4网段: 需要以保留地址为访问目标的环境"
|
echo -e " 6 自定义保留地址ipv4网段: 需要以保留地址为访问目标的环境"
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
@@ -105,80 +105,82 @@ set_fw_filter() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
set_common_ports() {
|
set_common_ports() {
|
||||||
[ -z "$multiport" ] && multiport='22,80,443,8080,8443'
|
while true; do
|
||||||
echo "-----------------------------------------------"
|
[ -z "$multiport" ] && multiport='22,80,443,8080,8443'
|
||||||
echo -e "\033[31m注意:\033[0mMIX模式下,所有fake-ip来源的非常用端口流量不会被过滤"
|
echo "-----------------------------------------------"
|
||||||
[ -n "$common_ports" ] &&
|
echo -e "\033[31m注意:\033[0mMIX模式下,所有fake-ip来源的非常用端口流量不会被过滤"
|
||||||
echo -e "当前放行端口:\033[36m$multiport\033[0m"
|
[ -n "$common_ports" ] &&
|
||||||
echo "-----------------------------------------------"
|
echo -e "当前放行端口:\033[36m$multiport\033[0m"
|
||||||
echo -e " 1 启用/关闭端口过滤: \033[36m$common_ports\033[0m"
|
echo "-----------------------------------------------"
|
||||||
echo -e " 2 添加放行端口"
|
echo -e " 1 启用/关闭端口过滤: \033[36m$common_ports\033[0m"
|
||||||
echo -e " 3 移除指定放行端口"
|
echo -e " 2 添加放行端口"
|
||||||
echo -e " 4 重置默认放行端口"
|
echo -e " 3 移除指定放行端口"
|
||||||
echo -e " 5 重置为旧版放行端口"
|
echo -e " 4 重置默认放行端口"
|
||||||
echo -e " 0 返回上级菜单"
|
echo -e " 5 重置为旧版放行端口"
|
||||||
echo "-----------------------------------------------"
|
echo -e " 0 返回上级菜单"
|
||||||
read -p "请输入对应数字 > " num
|
echo "-----------------------------------------------"
|
||||||
case $num in
|
read -r -p "请输入对应数字 > " num
|
||||||
1)
|
case "$num" in
|
||||||
if [ "$common_ports" = ON ];then
|
"" | 0)
|
||||||
common_ports=OFF
|
break
|
||||||
else
|
;;
|
||||||
common_ports=ON
|
1)
|
||||||
fi
|
if [ "$common_ports" = ON ]; then
|
||||||
setconfig common_ports "$common_ports"
|
common_ports=OFF
|
||||||
set_common_ports
|
else
|
||||||
;;
|
common_ports=ON
|
||||||
2)
|
fi
|
||||||
port_count=$(echo "$multiport" | awk -F',' '{print NF}' )
|
setconfig common_ports "$common_ports"
|
||||||
if [ "$port_count" -ge 15 ];then
|
;;
|
||||||
echo -e "\033[31m最多支持设置放行15个端口,请先减少一些!\033[0m"
|
2)
|
||||||
else
|
port_count=$(echo "$multiport" | awk -F',' '{print NF}')
|
||||||
read -p "请输入要放行的端口号 > " port
|
if [ "$port_count" -ge 15 ]; then
|
||||||
if echo ",$multiport," | grep -q ",$port,";then
|
echo -e "\033[31m最多支持设置放行15个端口,请先减少一些!\033[0m"
|
||||||
echo -e "\033[31m输入错误!请勿重复添加!\033[0m"
|
else
|
||||||
elif [ "$port" -lt 1 ] || [ "$port" -gt 65535 ]; then
|
read -r -p "请输入要放行的端口号 > " port
|
||||||
echo -e "\033[31m输入错误!请输入正确的数值(1-65535)!\033[0m"
|
if echo ",$multiport," | grep -q ",$port,"; then
|
||||||
else
|
echo -e "\033[31m输入错误!请勿重复添加!\033[0m"
|
||||||
multiport=$(echo "$multiport,$port" | sed "s/^,//")
|
elif [ "$port" -lt 1 ] || [ "$port" -gt 65535 ]; then
|
||||||
setconfig multiport "$multiport"
|
echo -e "\033[31m输入错误!请输入正确的数值(1-65535)!\033[0m"
|
||||||
fi
|
else
|
||||||
fi
|
multiport=$(echo "$multiport,$port" | sed "s/^,//")
|
||||||
sleep 1
|
setconfig multiport "$multiport"
|
||||||
set_common_ports
|
fi
|
||||||
;;
|
fi
|
||||||
3)
|
sleep 1
|
||||||
read -p "请输入要移除的端口号 > " port
|
;;
|
||||||
if echo ",$multiport," | grep -q ",$port,";then
|
3)
|
||||||
if [ "$port" -lt 1 ] || [ "$port" -gt 65535 ]; then
|
read -r -p "请输入要移除的端口号 > " port
|
||||||
echo -e "\033[31m输入错误!请输入正确的数值(1-65535)!\033[0m"
|
if echo ",$multiport," | grep -q ",$port,"; then
|
||||||
else
|
if [ "$port" -lt 1 ] || [ "$port" -gt 65535 ]; then
|
||||||
multiport=$(echo ",$multiport," | sed "s/,$port//; s/^,//; s/,$//")
|
echo -e "\033[31m输入错误!请输入正确的数值(1-65535)!\033[0m"
|
||||||
setconfig multiport "$multiport"
|
else
|
||||||
fi
|
multiport=$(echo ",$multiport," | sed "s/,$port//; s/^,//; s/,$//")
|
||||||
else
|
setconfig multiport "$multiport"
|
||||||
echo -e "\033[31m输入错误!请输入已添加过的端口!\033[0m"
|
fi
|
||||||
fi
|
else
|
||||||
sleep 1
|
echo -e "\033[31m输入错误!请输入已添加过的端口!\033[0m"
|
||||||
set_common_ports
|
fi
|
||||||
;;
|
sleep 1
|
||||||
4)
|
;;
|
||||||
multiport=''
|
4)
|
||||||
setconfig multiport
|
multiport=''
|
||||||
sleep 1
|
setconfig multiport
|
||||||
set_common_ports
|
sleep 1
|
||||||
;;
|
;;
|
||||||
5)
|
5)
|
||||||
multiport='22,80,143,194,443,465,587,853,993,995,5222,8080,8443'
|
multiport='22,80,143,194,443,465,587,853,993,995,5222,8080,8443'
|
||||||
setconfig multiport "$multiport"
|
setconfig multiport "$multiport"
|
||||||
sleep 1
|
sleep 1
|
||||||
set_common_ports
|
;;
|
||||||
;;
|
*)
|
||||||
*)
|
errornum
|
||||||
errornum
|
sleep 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
set_cust_host_ipv4() { #自定义ipv4透明路由网段
|
set_cust_host_ipv4() { #自定义ipv4透明路由网段
|
||||||
[ -z "$replace_default_host_ipv4" ] && replace_default_host_ipv4="OFF"
|
[ -z "$replace_default_host_ipv4" ] && replace_default_host_ipv4="OFF"
|
||||||
. "$CRASHDIR"/starts/fw_getlanip.sh && getlanip
|
. "$CRASHDIR"/starts/fw_getlanip.sh && getlanip
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ running_status(){
|
|||||||
if [ -n "$start_time" ]; then
|
if [ -n "$start_time" ]; then
|
||||||
time=$(($(date +%s) - start_time))
|
time=$(($(date +%s) - start_time))
|
||||||
day=$((time / 86400))
|
day=$((time / 86400))
|
||||||
[ "$day" = "0" ] && day='' || day="$day天"
|
[ "$day" = "0" ] && day='' || day="$dayD"
|
||||||
time=$(date -u -d @${time} +%H小时%M分%S秒)
|
time=$(date -u -d @${time} +%H:%M:%S)
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,35 +14,10 @@ FULL_EQ="=======================================================================
|
|||||||
FULL_DASH="- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "
|
FULL_DASH="- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "
|
||||||
|
|
||||||
# function to print content lines
|
# function to print content lines
|
||||||
# (using cursor jump with auto-wrapping and color handling)
|
# (using cursor jump)
|
||||||
content_line() {
|
content_line() {
|
||||||
local param="${1:-}"
|
local param="${1:-}"
|
||||||
|
echo -e " ${param}\033[${TABLE_WIDTH}G||"
|
||||||
# Calculate Available Text Width
|
|
||||||
local text_width=$((TABLE_WIDTH - 3))
|
|
||||||
|
|
||||||
# 1. Extract color codes (if present)
|
|
||||||
# Use sed to capture the leading ANSI Escape Code (\x1b is the hexadecimal representation of ESC)
|
|
||||||
# This line extracts \033[33m... from \033[33m and stores it in color_code
|
|
||||||
local color_code
|
|
||||||
color_code=$(echo -e "$param" | sed -n 's/^\(\x1b\[[0-9;]*m\).*/\1/p')
|
|
||||||
|
|
||||||
# 2. Generate Clean Text
|
|
||||||
# Use sed to remove all ANSI color codes, retaining only plain text content
|
|
||||||
# This allows fold to accurately count characters without premature line breaks
|
|
||||||
local clean_text
|
|
||||||
clean_text=$(echo -e "$param" | sed 's/\x1b\[[0-9;]*m//g')
|
|
||||||
|
|
||||||
if [ -z "$clean_text" ]; then
|
|
||||||
echo -e " \033[${TABLE_WIDTH}G||"
|
|
||||||
else
|
|
||||||
# 3. Insert line breaks in plain text
|
|
||||||
echo "$clean_text" | fold -s -w "$text_width" | while IFS= read -r line; do
|
|
||||||
# 4. Output Restructuring
|
|
||||||
# Force the addition of color_code to each line and append \033[0m to reset at the end
|
|
||||||
echo -e " ${color_code}${line}\033[0m\033[${TABLE_WIDTH}G||"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# function to print sub content lines
|
# function to print sub content lines
|
||||||
|
|||||||
@@ -200,7 +200,7 @@ EOF
|
|||||||
EOF
|
EOF
|
||||||
#生成add_route.json
|
#生成add_route.json
|
||||||
#域名嗅探配置
|
#域名嗅探配置
|
||||||
[ "$sniffer" = ON ] && ! grep -Eq '"action" *:[[:space:]]*"sniff"' "$CRASHDIR"/jsons/*.json && sniffer_set='{ "action": "sniff", "timeout": "500ms" },'
|
[ "$sniffer" = ON ] && sniffer_set='{ "action": "sniff", "timeout": "500ms" },'
|
||||||
[ "$ts_service" = ON ] && tailscale_set='{ "inbound": [ "ts-ep" ], "port": 53, "action": "hijack-dns" },'
|
[ "$ts_service" = ON ] && tailscale_set='{ "inbound": [ "ts-ep" ], "port": 53, "action": "hijack-dns" },'
|
||||||
cat >"$TMPDIR"/jsons/add_route.json <<EOF
|
cat >"$TMPDIR"/jsons/add_route.json <<EOF
|
||||||
{
|
{
|
||||||
@@ -211,8 +211,8 @@ EOF
|
|||||||
{ "inbound": [ "dns-in" ], "action": "hijack-dns" },
|
{ "inbound": [ "dns-in" ], "action": "hijack-dns" },
|
||||||
$tailscale_set
|
$tailscale_set
|
||||||
$sniffer_set
|
$sniffer_set
|
||||||
{ "clash_mode": [ "Direct" ] , "outbound": "DIRECT" },
|
{ "clash_mode": "Direct" , "outbound": "DIRECT" },
|
||||||
{ "clash_mode": [ "Global" ], "outbound": "GLOBAL" }
|
{ "clash_mode": "Global" , "outbound": "GLOBAL" }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user