mirror of
https://github.com/anten-ka/gotelegram_pro.git
synced 2026-05-20 02:06:05 +00:00
Fix: subshell capture bug - interactive menus invisible in $()
- All UI output (echo, printf) in interactive functions now goes to stderr (>&2) - Only return values go to stdout for $() capture - Affected: select_quick_domain, select_port, select_category, select_template, show_template_preview - Also fixed: log_*, confirm, select_option in common.sh
This commit is contained in:
@@ -160,23 +160,23 @@ validate_telemt_config() {
|
||||
|
||||
# ── Выбор домена (интерактивный) ─────────────────────────────────────────────
|
||||
select_quick_domain() {
|
||||
echo ""
|
||||
echo -e " ${BOLD}${WHITE}🌐 Выберите домен для маскировки (Fake TLS):${NC}"
|
||||
echo -e " ${DIM}$(printf '─%.0s' {1..50})${NC}"
|
||||
echo "" >&2
|
||||
echo -e " ${BOLD}${WHITE}🌐 Выберите домен для маскировки (Fake TLS):${NC}" >&2
|
||||
echo -e " ${DIM}$(printf '─%.0s' {1..50})${NC}" >&2
|
||||
|
||||
local i=1
|
||||
local row=""
|
||||
for d in "${QUICK_DOMAINS[@]}"; do
|
||||
printf " ${CYAN}%2d)${NC} %-25s" "$i" "$d"
|
||||
printf " ${CYAN}%2d)${NC} %-25s" "$i" "$d" >&2
|
||||
if (( i % 2 == 0 )); then
|
||||
echo ""
|
||||
echo "" >&2
|
||||
fi
|
||||
((i++))
|
||||
done
|
||||
if (( (i-1) % 2 != 0 )); then echo ""; fi
|
||||
if (( (i-1) % 2 != 0 )); then echo "" >&2; fi
|
||||
|
||||
echo -e " ${DIM}$(printf '─%.0s' {1..50})${NC}"
|
||||
echo -ne " ${WHITE}Выбор (1-${#QUICK_DOMAINS[@]}):${NC} "
|
||||
echo -e " ${DIM}$(printf '─%.0s' {1..50})${NC}" >&2
|
||||
echo -ne " ${WHITE}Выбор (1-${#QUICK_DOMAINS[@]}):${NC} " >&2
|
||||
read -r choice
|
||||
|
||||
if [[ "$choice" =~ ^[0-9]+$ ]] && [ "$choice" -ge 1 ] && [ "$choice" -le ${#QUICK_DOMAINS[@]} ]; then
|
||||
@@ -190,8 +190,8 @@ select_quick_domain() {
|
||||
|
||||
# ── Выбор порта (интерактивный) ──────────────────────────────────────────────
|
||||
select_port() {
|
||||
echo ""
|
||||
echo -e " ${BOLD}${WHITE}🔌 Выберите порт:${NC}"
|
||||
echo "" >&2
|
||||
echo -e " ${BOLD}${WHITE}🔌 Выберите порт:${NC}" >&2
|
||||
|
||||
# Проверяем стандартные порты
|
||||
local busy_443 busy_8443
|
||||
@@ -203,22 +203,22 @@ select_port() {
|
||||
[ -n "$busy_443" ] && label_443="443 ⚠️ занят"
|
||||
[ -n "$busy_8443" ] && label_8443="8443 ⚠️ занят"
|
||||
|
||||
echo -e " ${CYAN}1)${NC} $label_443"
|
||||
echo -e " ${CYAN}2)${NC} $label_8443"
|
||||
echo -e " ${CYAN}3)${NC} Свой порт"
|
||||
echo -e " ${CYAN}1)${NC} $label_443" >&2
|
||||
echo -e " ${CYAN}2)${NC} $label_8443" >&2
|
||||
echo -e " ${CYAN}3)${NC} Свой порт" >&2
|
||||
|
||||
if [ -n "$busy_443" ]; then
|
||||
echo -e " ${DIM} ⚠ Порт 443 занят: $(echo "$busy_443" | head -c 60)${NC}"
|
||||
echo -e " ${DIM} ⚠ Порт 443 занят: $(echo "$busy_443" | head -c 60)${NC}" >&2
|
||||
fi
|
||||
|
||||
echo -ne " ${WHITE}Выбор:${NC} "
|
||||
echo -ne " ${WHITE}Выбор:${NC} " >&2
|
||||
read -r choice
|
||||
|
||||
case "$choice" in
|
||||
1) echo "443" ;;
|
||||
2) echo "8443" ;;
|
||||
3)
|
||||
echo -ne " Введите порт (1-65535): "
|
||||
echo -ne " Введите порт (1-65535): " >&2
|
||||
read -r custom_port
|
||||
if [[ "$custom_port" =~ ^[0-9]+$ ]] && [ "$custom_port" -ge 1 ] && [ "$custom_port" -le 65535 ]; then
|
||||
echo "$custom_port"
|
||||
|
||||
Reference in New Issue
Block a user