export PATH := /sloptrap-tools/bin:$(PATH)
export PACKER_CONFIG_DIR := /sloptrap-tools/packer-config
export TF_PLUGIN_CACHE_DIR := /sloptrap-tools/terraform-plugin-cache
export CLOUDSDK_CONFIG := /sloptrap-tools/gcloud-config

OPACK_TARGET=			skz-void-server-test
OPACK_SYS_VERSION=		snapshots
OPACK_SYS_RELEASE=		79
OPACK_SYS_CPU=			2
OPACK_SYS_MEMORY=		1024
OPACK_SYS_DISK_SIZE=		10000
OPACK_SYS_SETS=			+* -x* +xbase* -game* -comp* +bsd.rd
OPACK_SYS_HOSTNAME=		test.void.sk4.nz
OPACK_SYS_USER=			sk4nz
OPACK_SYS_SSH_PRIVATE_KEY=	id_ed25519
OPACK_GCE_MACHINE=		e2-micro
OPACK_AUTODISKLABEL_FILE=	$(shell realpath ./autodisklabel)
OPACK_PROVISION_FILE=		$(shell realpath void-provision.sh)
OPACK_GCE_PROJECT=		skz-void
OPACK_GCE_JSON_KEY=		../server/skz-void-bbb88f038188.json
OPACK_COMMIT=			$(shell git -C .. log --oneline -n 1 --abbrev-commit --date=short --pretty=format:"%h %ad %s" 2>/dev/null || echo latest)
OPACK_SHORT_REV=		latest
OPACK_DEBUG=y

include ../skz-opack/src/opack.mk

$(OPACK_PACKER_HTTP_DIR)/install-cloud.conf: $(OPACK_SYS_SSH_PRIVATE_KEY)

SSH_OPTS=	-i $(OPACK_SYS_SSH_PRIVATE_KEY) -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null
FW_TF=		$(OPACK_TERRAFORM_DIR)/opack-module/firewall.tf

IN_TCP=		ssh
VPN_TCP=	ssh domain http https 1024:65535
VPN_UDP=	domain ntp 1024:65535

VOID_CLIENTS=	psychopomp skzphone miri
WG_SRC=		../skz-wg

.DEFAULT_GOAL := all

all: void

$(FW_TF): | opack-cloud
	cp firewall.tf $@
	cd $(OPACK_TERRAFORM_DIR) && terraform apply \
		-target=module.opack-module.google_compute_firewall.icmp_test \
		-target=module.opack-module.google_compute_firewall.wireguard_test \
		-target=module.opack-module.google_compute_firewall.ssh_test \
		-auto-approve > /dev/null
	echo GCP Firewall configured

void: | $(FW_TF)
	ssh $(SSH_OPTS) root@$(shell cat opack-cloud) \
		"uname -a; sysctl kern.version;" 2> /dev/null
	scp -q -r $(SSH_OPTS) \
		$(WG_SRC) root@$(shell cat opack-cloud):/root/skz-wg
	ssh $(SSH_OPTS) root@$(shell cat opack-cloud) \
		"sh -c 'IN_TCP=\"$(IN_TCP)\" VPN_TCP=\"$(VPN_TCP)\" VPN_UDP=\"$(VPN_UDP)\" CLIENTS=\"$(VOID_CLIENTS)\" make -C /root/skz-wg'" 2> /dev/null

clean: opack-clean
