# ===============================
# Makefile для управления dnsmasq-конфигами
# ===============================

# --- Переменные окружения (с дефолтами для локального запуска) ---
NFTSET_CONF       ?= /tmp/90-nftset.conf
RESOLVE_CONF      ?= /tmp/92-resolve-bbrkn.conf
CHROME_SERVER     ?= http://10.77.1.2:3000
DOMAINS_FILE      ?= domains.txt
# Резолвер, которому pihole делегирует bbrkn-домены (host dnsmasq :5350).
# ВНИМАНИЕ: '#' в Makefile — начало комментария, экранируем как '\#'.
DNS_SERVER        ?= 127.0.0.1\#5350
NFTSET_TARGET_DIR ?= /etc/dnsmasq.d
CACHE_DIR         ?= .cache/api
CACHE_TTL_DAYS    ?= 15

# Экспортируем переменные, чтобы они были доступны внутри shell-скриптов
export NFTSET_CONF RESOLVE_CONF CHROME_SERVER DOMAINS_FILE DNS_SERVER NFTSET_TARGET_DIR CACHE_DIR CACHE_TTL_DAYS

# --- Основные цели ---
.PHONY: all clean cache-clean check generate deploy

all: generate deploy
	@echo "✅ Конфиги успешно сгенерированы и задеплоены"

clean:
	@echo "🧹 Очистка временных файлов"
	@rm -f $(NFTSET_CONF) $(RESOLVE_CONF)

cache-clean:
	@echo "🗑  Очистка кэша API ($(CACHE_DIR))"
	@rm -rf $(CACHE_DIR)
	@echo "✔ Кэш очищен"

check:
	@echo "🔍 Проверка файла доменов ($(DOMAINS_FILE))"
	@if [ ! -f "$(DOMAINS_FILE)" ]; then \
	  echo "Ошибка: файл $(DOMAINS_FILE) не найден"; \
	  exit 1; \
	fi
	@grep -v '^#' $(DOMAINS_FILE) | grep -v '^$$' | while read domain; do \
	  if ! echo "$$domain" | grep -qE '^[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$$'; then \
	    echo "Ошибка: Неверный формат домена: $$domain"; \
	    exit 1; \
	  fi \
	done
	@echo "✔ Файл доменов прошёл проверку"

generate:
	@echo "⚙ Генерация dnsmasq-конфигов"
	@chmod +x scripts/generate-configs.sh
	@./scripts/generate-configs.sh

deploy:
	@echo "🚀 Деплой конфигов в систему"
	@chmod +x scripts/deploy-to-gateway.sh
	@./scripts/deploy-to-gateway.sh
