#!/bin/sh os="$(cat "${__global:?}"/explorer/os)" case $os in 'alpine') : ;; *) echo "This type has no implementation for $os. Aborting." >&2 exit 1; ;; esac __package "wireguard-tools-wg" # Template configuration private_key="$(cat "${__object:?}/parameter/privkey")" WG_ADDRESS="$(cat "${__object:?}/parameter/address")" WG_IFACE="${__object_id:?}" export WG_IFACE export WG_ADDRESS WG_PORT= if [ -f "${__object:?}/parameter/port" ]; then WG_PORT="$(cat "${__object:?}/parameter/port")" fi export WG_PORT mkdir -p "${__object:?}/files/" "${__type:?}/files/wireguard.conf.sh" "$private_key" > "${__object:?}/files/wg-${__object_id:?}.conf" # Wireguard configuration. Configured using a block as it is also edited by # cdist-type__wireguard_peer(7). __directory "/etc/wireguard/" require='__directory/etc/wireguard' \ __file "/etc/wireguard/${__object_id:?}.conf" --state exists require="__file/etc/wireguard/${__object_id:?}.conf" \ __block "${__object_id:?}" --file "/etc/wireguard/${__object_id:?}.conf" \ --text - <"${__object:?}/files/wg-${__object_id:?}.conf" # Network configuration __directory '/etc/network/interfaces.d' __line source-interfaces \ --line 'source-directory /etc/network/interfaces.d/' \ --file '/etc/network/interfaces' "${__type:?}/files/interface.conf.sh" > "${__object:?}/files/iif-${__object_id:?}.conf" require="__directory/etc/network/interfaces.d __line/source-interfaces __block/${__object_id:?}" \ __file "/etc/network/interfaces.d/${__object_id:?}.conf" \ --source "${__object:?}/files/iif-${__object_id:?}.conf" \ --onchange "ifup -a"