diff --git a/cascad.sh b/cascad.sh index f776763..f9c4385 100755 --- a/cascad.sh +++ b/cascad.sh @@ -317,42 +317,47 @@ parse_active_rules() { # ── Интерактивные функции ─────────────────────────────────────────────────────── +REPLY_VALUE="" + input_ip() { + REPLY_VALUE="" local ip while true; do - echo -ne " IP адрес назначения: " - read -r ip + echo -ne " IP адрес назначения: " >/dev/tty + read -r ip /dev/tty done } input_port() { + REPLY_VALUE="" local label="$1" port while true; do - echo -ne " $label: " - read -r port + echo -ne " $label: " >/dev/tty + read -r port /dev/tty done } input_port_or_range() { + REPLY_VALUE="" local label="$1" val while true; do - echo -ne " $label (число или диапазон N:M): " - read -r val + echo -ne " $label (число или диапазон N:M): " >/dev/tty + read -r val /dev/tty done } @@ -363,11 +368,11 @@ menu_standard_rule() { echo -e "\n${CYAN}── Настройка $label ($proto) ──${NC}\n" - local target_ip - target_ip=$(input_ip) + input_ip + local target_ip="$REPLY_VALUE" - local port - port=$(input_port "Порт (одинаковый вход/выход)") + input_port "Порт (одинаковый вход/выход)" + local port="$REPLY_VALUE" echo "" apply_rules "$proto" "$port" "$port" "$target_ip" "$label" @@ -385,12 +390,14 @@ menu_custom_rule() { msg_err "Введите tcp или udp." done - local target_ip - target_ip=$(input_ip) + input_ip + local target_ip="$REPLY_VALUE" - local in_port out_port - in_port=$(input_port "Входящий порт (на этом сервере)") - out_port=$(input_port "Исходящий порт (на целевом сервере)") + input_port "Входящий порт (на этом сервере)" + local in_port="$REPLY_VALUE" + + input_port "Исходящий порт (на целевом сервере)" + local out_port="$REPLY_VALUE" echo "" apply_rules "$proto" "$in_port" "$out_port" "$target_ip" "Custom" @@ -408,11 +415,11 @@ menu_batch_rule() { msg_err "Введите tcp или udp." done - local target_ip - target_ip=$(input_ip) + input_ip + local target_ip="$REPLY_VALUE" - local port_range - port_range=$(input_port_or_range "Диапазон портов") + input_port_or_range "Диапазон портов" + local port_range="$REPLY_VALUE" echo "" if [[ "$port_range" =~ ^([0-9]+):([0-9]+)$ ]]; then @@ -791,9 +798,9 @@ show_menu() { while true; do clear echo "" - echo -e "${CYAN} ┌──────────────────────────────────────────────┐${NC}" - echo -e "${CYAN} │${NC} ${WHITE}CASCAD${NC} ${DIM}v${VERSION}${NC} — каскадное NAT-перенаправление ${CYAN}│${NC}" - echo -e "${CYAN} └──────────────────────────────────────────────┘${NC}" + echo -e "${CYAN} ──────────────────────────────────────────${NC}" + echo -e " ${WHITE}CASCAD${NC} ${DIM}v${VERSION}${NC} — каскадное NAT-перенаправление" + echo -e "${CYAN} ──────────────────────────────────────────${NC}" echo "" echo -e " ${WHITE}Настройка правил:${NC}" echo -e " ${GREEN}1${NC}) AmneziaWG / WireGuard ${DIM}(UDP)${NC}"