45 lines
1.6 KiB
Bash
45 lines
1.6 KiB
Bash
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
# ==============================
|
|
# Конфигурация через переменные окружения
|
|
# ==============================
|
|
TARGET_DIR="${TARGET_DIR:-/opt/appdata/pihole/etc/dnsmasq.d}"
|
|
IPSET_CONF="${IPSET_CONF:-/tmp/91-ipset-bbrkn.conf}"
|
|
RESOLVE_CONF="${RESOLVE_CONF:-/tmp/92-resolve-bbrkn.conf}"
|
|
|
|
DOCKER_CONTAINER="${DOCKER_CONTAINER:-pihole}"
|
|
|
|
echo "Deploying configuration files to $TARGET_DIR"
|
|
|
|
# Проверка существования сгенерированных файлов
|
|
if [ ! -f "$IPSET_CONF" ] || [ ! -f "$RESOLVE_CONF" ]; then
|
|
echo "Error: one or both config files not found!"
|
|
exit 1
|
|
fi
|
|
|
|
# Бэкап существующих файлов
|
|
if [ -f "$TARGET_DIR/$(basename "$IPSET_CONF")" ]; then
|
|
cp "$TARGET_DIR/$(basename "$IPSET_CONF")" "$TARGET_DIR/$(basename "$IPSET_CONF").backup.$(date +%Y%m%d-%H%M%S)"
|
|
fi
|
|
if [ -f "$TARGET_DIR/$(basename "$RESOLVE_CONF")" ]; then
|
|
cp "$TARGET_DIR/$(basename "$RESOLVE_CONF")" "$TARGET_DIR/$(basename "$RESOLVE_CONF").backup.$(date +%Y%m%d-%H%M%S)"
|
|
fi
|
|
|
|
# Копирование новых файлов
|
|
cp "$IPSET_CONF" "$TARGET_DIR/"
|
|
cp "$RESOLVE_CONF" "$TARGET_DIR/"
|
|
|
|
# Перезапуск контейнера
|
|
echo "Restarting $DOCKER_CONTAINER container..."
|
|
docker restart "$DOCKER_CONTAINER"
|
|
|
|
sleep 5
|
|
if ! docker ps | grep -q "$DOCKER_CONTAINER"; then
|
|
echo "Error: $DOCKER_CONTAINER container failed to start"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Deployment completed successfully"
|
|
DOMAIN_COUNT=$(grep -c '^ipset=' "$TARGET_DIR/$(basename "$IPSET_CONF")" || echo "0")
|
|
echo "Applied configuration for $DOMAIN_COUNT domains"
|