архитектура: принудительная очистка битых профилей и строгий check_conf (v1.1.1)
This commit is contained in:
parent
ee0f8ceaf3
commit
44d4650573
24
rproxy
24
rproxy
|
|
@ -3,7 +3,7 @@
|
|||
# Публикация локальных сервисов через SSH-туннели + nginx на VPS
|
||||
# http://5.104.75.50:3000/Petro1990/rProxy
|
||||
|
||||
VERSION="1.1.0"
|
||||
VERSION="1.1.1"
|
||||
CONF_DIR="/opt/etc/rproxy"
|
||||
CONF_FILE="$CONF_DIR/rproxy.conf"
|
||||
SERVICES_DIR="$CONF_DIR/services"
|
||||
|
|
@ -57,9 +57,14 @@ check_conf() {
|
|||
return 1
|
||||
fi
|
||||
. "$CONF_FILE"
|
||||
# Для работы нужно, чтобы был хотя бы один VPS профиль
|
||||
[ "$(ls -A "$VPS_DIR" 2>/dev/null)" ] || return 1
|
||||
# Строгая проверка: ищем хотя бы один файл в vps/, в котором заполнена переменная VPS_HOST
|
||||
for f in "$VPS_DIR"/*.conf; do
|
||||
[ -f "$f" ] || continue
|
||||
if grep -q "VPS_HOST=\"[0-9]" "$f"; then
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
load_service() {
|
||||
|
|
@ -94,13 +99,13 @@ load_vps() {
|
|||
migrate_config() {
|
||||
mkdir -p "$VPS_DIR" "$SERVICES_DIR" "$PID_DIR"
|
||||
|
||||
# Проверка на "битый" (пустой) конфиг после неудачной миграции (1.0.7-1.0.8)
|
||||
# Проверка на "битый" (пустой) конфиг после неудачной миграции (1.0.7-1.1.0)
|
||||
local broken=0
|
||||
[ -f "$VPS_DIR/default.conf" ] && ! grep -q "VPS_HOST=\"[0-9]" "$VPS_DIR/default.conf" && broken=1
|
||||
|
||||
if [ -f "$CONF_FILE" ] && { [ ! -f "$VPS_DIR/default.conf" ] || [ "$broken" -eq 1 ]; }; then
|
||||
# Если rproxy.conf ещё содержит данные серверов (не пустой)
|
||||
if grep -q "VPS_HOST=" "$CONF_FILE"; then
|
||||
if grep -q "VPS_HOST=\"[0-9]" "$CONF_FILE"; then
|
||||
msg "Восстановление конфигурации VPS..."
|
||||
. "$CONF_FILE"
|
||||
cat > "$VPS_DIR/default.conf" <<EOF
|
||||
|
|
@ -115,12 +120,15 @@ EOF
|
|||
CERTBOT_EMAIL="$CERTBOT_EMAIL"
|
||||
EOF
|
||||
mv "$CONF_FILE.tmp" "$CONF_FILE"
|
||||
elif [ "$broken" -eq 1 ] && [ ! "$(ls -A "$SERVICES_DIR")" ]; then
|
||||
# Если всё пусто и сломано — удаляем пустой дефолт, чтобы запустить чистый setup
|
||||
rm -f "$VPS_DIR/default.conf"
|
||||
fi
|
||||
[ -f "$VPS_DIR/default.conf" ] && chmod 600 "$VPS_DIR/default.conf"
|
||||
fi
|
||||
|
||||
# Если профиль default остался битым и восстановить нечего — удаляем его,
|
||||
# чтобы check_conf сработал и предложил настройку заново
|
||||
if [ -f "$VPS_DIR/default.conf" ] && ! grep -q "VPS_HOST=\"[0-9]" "$VPS_DIR/default.conf"; then
|
||||
rm -f "$VPS_DIR/default.conf"
|
||||
fi
|
||||
}
|
||||
|
||||
ssh_cmd() {
|
||||
|
|
|
|||
Loading…
Reference in New Issue