#!/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 # Очистка IPSET echo "Flushing ipset bbrkn..." ipset flush bbrkn echo "Deployment completed successfully" DOMAIN_COUNT=$(grep -c '^ipset=' "$TARGET_DIR/$(basename "$IPSET_CONF")" || echo "0") echo "Applied configuration for $DOMAIN_COUNT domains"