# Semana 15: seguridad de redes. Firewall con estado (nftables), túnel WireGuard e IPsec.
# Se usa dentro del contenedor del curso.
#
#   make              crea las claves de WireGuard en build/keys y la carpeta de capturas
#   make test         crea las claves, levanta la topología, corre las pruebas (test_*.py) y
#                     siempre la destruye. Las pruebas del firewall se saltan mientras
#                     lab/firewall.nft tenga el TODO (vista del estudiante)
#   make up           levanta la topología de los dos sitios (sitios/sitios.clab.yml)
#   make down         destruye la topología y su red de Docker
#   make clean        lo anterior, y borra claves, capturas y estado de Containerlab

.PHONY: all test up down clean

all: build/keys captures

build/keys:
	mkdir -p build
	python3 -c "import netlab; netlab.gen_keys()"

captures:
	mkdir -p captures

test: all
	@status=0; PYTHONDONTWRITEBYTECODE=1 python3 -m unittest discover -p 'test_*.py' -v || status=$$?; \
	  $(MAKE) --no-print-directory down; exit $$status

up: all
	cd sitios && containerlab deploy -t sitios.clab.yml --reconfigure

down:
	@cd sitios && containerlab destroy -t sitios.clab.yml --cleanup >/dev/null 2>&1 || true
	@docker network rm redes-w15-sitios >/dev/null 2>&1 || true

clean: down
	rm -rf build captures __pycache__ sitios/clab-w15-sitios
