diff --git a/scripts/menus/2_settings.sh b/scripts/menus/2_settings.sh index d78bbed0..c7cdb362 100644 --- a/scripts/menus/2_settings.sh +++ b/scripts/menus/2_settings.sh @@ -393,14 +393,26 @@ inputport() { line_break read -r -p "$INPUT_PORT(1~65535)> " portx . "$CRASHDIR"/menus/check_port.sh - if check_port "$portx" "$protocol"; then - setconfig "$xport" "$portx" - msg_alert "\033[32m$COMMON_SUCCESS\033[0m" - return 0 - else + + if ! check_port "$portx" "$protocol"; then msg_alert "\033[31m$COMMON_FAILED\033[0m" return 1 fi + + local ports_to_check="" + [ "$xport" != "mix_port" ] && ports_to_check="$ports_to_check|$mix_port" + [ "$xport" != "redir_port" ] && ports_to_check="$ports_to_check|$redir_port" + [ "$xport" != "dns_port" ] && ports_to_check="$ports_to_check|$dns_port" + [ "$xport" != "db_port" ] && ports_to_check="$ports_to_check|$db_port" + + if echo "$ports_to_check|" | grep -q "|$portx|"; then + msg_alert "\033[31m$CHECK_PORT_DUP_ERR\033[0m" + return 1 + fi + + setconfig "$xport" "$portx" + msg_alert "\033[32m$COMMON_SUCCESS\033[0m" + return 0 } # 端口设置 diff --git a/scripts/menus/check_port.sh b/scripts/menus/check_port.sh index e41a79f8..a7135550 100644 --- a/scripts/menus/check_port.sh +++ b/scripts/menus/check_port.sh @@ -20,19 +20,6 @@ check_port() { return 1 fi - local current_port_name="" - case "$port" in - "$mix_port") current_port_name="mix_port" ;; - "$redir_port") current_port_name="redir_port" ;; - "$dns_port") current_port_name="dns_port" ;; - "$db_port") current_port_name="db_port" ;; - esac - - if [ -z "$current_port_name" ] && echo "|$mix_port|$redir_port|$dns_port|$db_port|" | grep -q "|$port|"; then - msg_alert "\033[31m$CHECK_PORT_DUP_ERR\033[0m" - return 1 - fi - local check_cmd check_cmd=$(_get_netstat_cmd "$protocol")