57 lines
1.6 KiB
Text
57 lines
1.6 KiB
Text
|
#!/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"
|