mirror of
https://github.com/juewuy/ShellCrash.git
synced 2026-03-11 07:51:45 +00:00
Merge branch 'dev' of https://github.com/juewuy/ShellCrash into dev
This commit is contained in:
@@ -105,80 +105,82 @@ set_fw_filter() {
|
||||
}
|
||||
|
||||
set_common_ports() {
|
||||
[ -z "$multiport" ] && multiport='22,80,443,8080,8443'
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[31m注意:\033[0mMIX模式下,所有fake-ip来源的非常用端口流量不会被过滤"
|
||||
[ -n "$common_ports" ] &&
|
||||
echo -e "当前放行端口:\033[36m$multiport\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 1 启用/关闭端口过滤: \033[36m$common_ports\033[0m"
|
||||
echo -e " 2 添加放行端口"
|
||||
echo -e " 3 移除指定放行端口"
|
||||
echo -e " 4 重置默认放行端口"
|
||||
echo -e " 5 重置为旧版放行端口"
|
||||
echo -e " 0 返回上级菜单"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "请输入对应数字 > " num
|
||||
case $num in
|
||||
1)
|
||||
if [ "$common_ports" = ON ];then
|
||||
common_ports=OFF
|
||||
else
|
||||
common_ports=ON
|
||||
fi
|
||||
setconfig common_ports "$common_ports"
|
||||
set_common_ports
|
||||
;;
|
||||
2)
|
||||
port_count=$(echo "$multiport" | awk -F',' '{print NF}' )
|
||||
if [ "$port_count" -ge 15 ];then
|
||||
echo -e "\033[31m最多支持设置放行15个端口,请先减少一些!\033[0m"
|
||||
else
|
||||
read -p "请输入要放行的端口号 > " port
|
||||
if echo ",$multiport," | grep -q ",$port,";then
|
||||
echo -e "\033[31m输入错误!请勿重复添加!\033[0m"
|
||||
elif [ "$port" -lt 1 ] || [ "$port" -gt 65535 ]; then
|
||||
echo -e "\033[31m输入错误!请输入正确的数值(1-65535)!\033[0m"
|
||||
else
|
||||
multiport=$(echo "$multiport,$port" | sed "s/^,//")
|
||||
setconfig multiport "$multiport"
|
||||
fi
|
||||
fi
|
||||
sleep 1
|
||||
set_common_ports
|
||||
;;
|
||||
3)
|
||||
read -p "请输入要移除的端口号 > " port
|
||||
if echo ",$multiport," | grep -q ",$port,";then
|
||||
if [ "$port" -lt 1 ] || [ "$port" -gt 65535 ]; then
|
||||
echo -e "\033[31m输入错误!请输入正确的数值(1-65535)!\033[0m"
|
||||
else
|
||||
multiport=$(echo ",$multiport," | sed "s/,$port//; s/^,//; s/,$//")
|
||||
setconfig multiport "$multiport"
|
||||
fi
|
||||
else
|
||||
echo -e "\033[31m输入错误!请输入已添加过的端口!\033[0m"
|
||||
fi
|
||||
sleep 1
|
||||
set_common_ports
|
||||
;;
|
||||
4)
|
||||
multiport=''
|
||||
setconfig multiport
|
||||
sleep 1
|
||||
set_common_ports
|
||||
;;
|
||||
5)
|
||||
multiport='22,80,143,194,443,465,587,853,993,995,5222,8080,8443'
|
||||
setconfig multiport "$multiport"
|
||||
sleep 1
|
||||
set_common_ports
|
||||
;;
|
||||
*)
|
||||
errornum
|
||||
;;
|
||||
esac
|
||||
while true; do
|
||||
[ -z "$multiport" ] && multiport='22,80,443,8080,8443'
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[31m注意:\033[0mMIX模式下,所有fake-ip来源的非常用端口流量不会被过滤"
|
||||
[ -n "$common_ports" ] &&
|
||||
echo -e "当前放行端口:\033[36m$multiport\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 1 启用/关闭端口过滤: \033[36m$common_ports\033[0m"
|
||||
echo -e " 2 添加放行端口"
|
||||
echo -e " 3 移除指定放行端口"
|
||||
echo -e " 4 重置默认放行端口"
|
||||
echo -e " 5 重置为旧版放行端口"
|
||||
echo -e " 0 返回上级菜单"
|
||||
echo "-----------------------------------------------"
|
||||
read -r -p "请输入对应数字 > " num
|
||||
case "$num" in
|
||||
"" | 0)
|
||||
break
|
||||
;;
|
||||
1)
|
||||
if [ "$common_ports" = ON ]; then
|
||||
common_ports=OFF
|
||||
else
|
||||
common_ports=ON
|
||||
fi
|
||||
setconfig common_ports "$common_ports"
|
||||
;;
|
||||
2)
|
||||
port_count=$(echo "$multiport" | awk -F',' '{print NF}')
|
||||
if [ "$port_count" -ge 15 ]; then
|
||||
echo -e "\033[31m最多支持设置放行15个端口,请先减少一些!\033[0m"
|
||||
else
|
||||
read -r -p "请输入要放行的端口号 > " port
|
||||
if echo ",$multiport," | grep -q ",$port,"; then
|
||||
echo -e "\033[31m输入错误!请勿重复添加!\033[0m"
|
||||
elif [ "$port" -lt 1 ] || [ "$port" -gt 65535 ]; then
|
||||
echo -e "\033[31m输入错误!请输入正确的数值(1-65535)!\033[0m"
|
||||
else
|
||||
multiport=$(echo "$multiport,$port" | sed "s/^,//")
|
||||
setconfig multiport "$multiport"
|
||||
fi
|
||||
fi
|
||||
sleep 1
|
||||
;;
|
||||
3)
|
||||
read -r -p "请输入要移除的端口号 > " port
|
||||
if echo ",$multiport," | grep -q ",$port,"; then
|
||||
if [ "$port" -lt 1 ] || [ "$port" -gt 65535 ]; then
|
||||
echo -e "\033[31m输入错误!请输入正确的数值(1-65535)!\033[0m"
|
||||
else
|
||||
multiport=$(echo ",$multiport," | sed "s/,$port//; s/^,//; s/,$//")
|
||||
setconfig multiport "$multiport"
|
||||
fi
|
||||
else
|
||||
echo -e "\033[31m输入错误!请输入已添加过的端口!\033[0m"
|
||||
fi
|
||||
sleep 1
|
||||
;;
|
||||
4)
|
||||
multiport=''
|
||||
setconfig multiport
|
||||
sleep 1
|
||||
;;
|
||||
5)
|
||||
multiport='22,80,143,194,443,465,587,853,993,995,5222,8080,8443'
|
||||
setconfig multiport "$multiport"
|
||||
sleep 1
|
||||
;;
|
||||
*)
|
||||
errornum
|
||||
sleep 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
set_cust_host_ipv4() { #自定义ipv4透明路由网段
|
||||
[ -z "$replace_default_host_ipv4" ] && replace_default_host_ipv4="OFF"
|
||||
. "$CRASHDIR"/starts/fw_getlanip.sh && getlanip
|
||||
|
||||
@@ -14,10 +14,35 @@ FULL_EQ="=======================================================================
|
||||
FULL_DASH="- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "
|
||||
|
||||
# function to print content lines
|
||||
# (using cursor jump)
|
||||
# (using cursor jump with auto-wrapping and color handling)
|
||||
content_line() {
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user