фича: добавлена возможность повторного получения SSL и улучшена установка Certbot на VPS

This commit is contained in:
Petro1990 2026-03-13 15:32:02 +03:00
parent 1384292708
commit 683a62a3f5
1 changed files with 54 additions and 6 deletions

60
rproxy
View File

@ -173,7 +173,8 @@ main_menu() {
printf " ${BOLD}5)${NC} ⏹️ Остановить туннель\n" printf " ${BOLD}5)${NC} ⏹️ Остановить туннель\n"
printf " ${BOLD}6)${NC} 🔄 Перезапустить туннель\n" printf " ${BOLD}6)${NC} 🔄 Перезапустить туннель\n"
draw_separator draw_separator
printf " ${BOLD}7)${NC} ⚙️ Настройки VPS\n" printf " ${BOLD}7)${NC} 🔒 Получить/Обновить SSL (Certbot)\n"
printf " ${BOLD}8)${NC} ⚙️ Настройки VPS\n"
printf " ${BOLD}0)${NC} 🚪 Выход\n" printf " ${BOLD}0)${NC} 🚪 Выход\n"
prompt "Выберите действие: " prompt "Выберите действие: "
@ -185,7 +186,8 @@ main_menu() {
4) do_start_interactive ;; 4) do_start_interactive ;;
5) do_stop_interactive ;; 5) do_stop_interactive ;;
6) do_restart_interactive ;; 6) do_restart_interactive ;;
7) do_setup ;; 7) do_ssl_interactive ;;
8) do_setup ;;
0|q) clear_screen; exit 0 ;; 0|q) clear_screen; exit 0 ;;
*) ;; *) ;;
esac esac
@ -432,6 +434,53 @@ EOF
pause pause
} }
# ══════════════════════════════════════════════════════════════════════
# ПОЛУЧИТЬ SSL (Certbot)
# ══════════════════════════════════════════════════════════════════════
do_ssl_interactive() {
clear_screen
draw_box "Получить SSL сертификат (Certbot)"
printf "\n"
select_service "Выпуститиь SSL для" "all" || { pause; return; }
local name="$SELECTED_SERVICE"
[ "$name" = "__ALL__" ] && { warn "Выберите конкретный сервис"; pause; return; }
load_service "$name" || { pause; return; }
if [ -z "$SVC_DOMAIN" ]; then
err "Для получения SSL сервису должен быть назначен домен"
pause
return
fi
if [ -z "$CERTBOT_EMAIL" ]; then
prompt "Введите Email для регистрации в Certbot: "
CERTBOT_EMAIL="$REPLY"
sed -i "/CERTBOT_EMAIL=/d" "$CONF_FILE"
echo "CERTBOT_EMAIL=\"$CERTBOT_EMAIL\"" >> "$CONF_FILE"
fi
msg "Проверяю наличие Certbot на VPS..."
ssh_cmd "command -v certbot >/dev/null 2>&1 || (apt-get update && apt-get install -y certbot python3-certbot-nginx || yum install -y certbot python3-certbot-nginx)" || {
err "Не удалось установить Certbot на VPS"
pause
return
}
msg "Запрашиваю сертификат для $SVC_DOMAIN..."
if ssh_cmd "certbot --nginx -d $SVC_DOMAIN --non-interactive --agree-tos -m $CERTBOT_EMAIL"; then
msg "SSL сертификат успешно получен!"
# Обновляем конфиг сервиса
sed -i "s/SVC_SSL=.*/SVC_SSL=\"yes\"/" "$SERVICES_DIR/$name.conf"
sed -i "s/SVC_EXT_PORT=.*/SVC_EXT_PORT=\"443\"/" "$SERVICES_DIR/$name.conf"
else
err "Certbot не смог выпустить сертификат"
warn "Убедитесь, что домен $SVC_DOMAIN указывает на этот VPS и порт 80 открыт"
fi
pause
}
# ══════════════════════════════════════════════════════════════════════ # ══════════════════════════════════════════════════════════════════════
# УДАЛИТЬ СЕРВИС (интерактивно) # УДАЛИТЬ СЕРВИС (интерактивно)
# ══════════════════════════════════════════════════════════════════════ # ══════════════════════════════════════════════════════════════════════
@ -832,10 +881,9 @@ do_setup() {
sed -i \"/http {/a\\\\ include /etc/nginx/sites-enabled/*.conf;\" /etc/nginx/nginx.conf 2>/dev/null sed -i \"/http {/a\\\\ include /etc/nginx/sites-enabled/*.conf;\" /etc/nginx/nginx.conf 2>/dev/null
fi fi
if ! command -v certbot >/dev/null 2>&1; then if ! ssh_cmd "command -v certbot" >/dev/null 2>&1; then
echo \"Устанавливаю Certbot...\" msg "Устанавливаю Certbot на VPS (может занять пару минут)..."
apt-get install -y -qq certbot python3-certbot-nginx >/dev/null 2>&1 || \ ssh_cmd "apt-get update -qq && apt-get install -y -qq certbot python3-certbot-nginx || yum install -y certbot python3-certbot-nginx" >/dev/null 2>&1
yum install -y certbot python3-certbot-nginx >/dev/null 2>&1
fi fi
systemctl enable nginx 2>/dev/null systemctl enable nginx 2>/dev/null