#!/bin/sh
# expected to be run with a required='__wireguard/ifname'

os="$(cat "${__global:?}"/explorer/os)"

case "$os" in
	alpine)
		:
		;;
	*)
		echo "This type has no implementation for $os. Aborting." >&2;
		exit 1;
esac

iface="$(cat "${__object:?}/parameter/iface")"

PKEY="$(cat "${__object:?}/parameter/public-key")"
export PKEY

ALLOWED_IPS=
if [ -f "${__object:?}/parameter/allowed-ip" ];
then
	ALLOWED_IPS="$(cat "${__object:?}/parameter/allowed-ip")"
fi
export ALLOWED_IPS

ENDPOINT=
if [ -f "${__object:?}/parameter/endpoint" ];
then
	ENDPOINT="$(cat "${__object:?}/parameter/endpoint")"
fi
export ENDPOINT

PERSISTENT_KA=
if [ -f "${__object:?}/parameter/persistent-keepalive" ];
then
	PERSISTENT_KA="$(cat "${__object:?}/parameter/persistent-keepalive")"
fi
export PERSISTENT_KA

state=present
if [ -f "${__object:?}/parameter/state" ];
then
	state="$(cat "${__object:?}/parameter/state")"
fi

presharedkey=
if [ -f "${__object:?}/parameter/preshared-key" ];
then
	presharedkey="$(cat "${__object:?}/parameter/preshared-key")"
fi


mkdir -p "${__object:?}/files"
"${__type:?}/files/wg-peer.sh" "$presharedkey" > "${__object:?}/files/wg-peer"

required="__file/etc/wireguard/$iface.conf" \
	__block "${__object_id:?}" --file "/etc/wireguard/$iface.conf" \
		--text - <"${__object:?}/files/wg-peer" \
		--state "$state"
