File: //var/lib/dpkg/info/ispmanager-pkg-wireguard.postinst
#!/bin/bash
# postinst script for coremanager
#
# see: dh_installdeb(1)
#set -e
# summary of how this script can be called:
# * <postinst> `configure' <most-recently-configured-version>
# * <old-postinst> `abort-upgrade' <new version>
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
# <new-version>
# * <postinst> `abort-remove'
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
# <failed-install-package> <version> `removing'
# <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
COREDIR=/usr/local/mgr5
. ${COREDIR}/lib/pkgsh/ispmgr_pkg_funcs.sh
WIREGUARD_CONF=/etc/wireguard/wg0.conf
SCRIPTS_FOLDER=/etc/wireguard/scripts
POST_UP_SCRIPT=${SCRIPTS_FOLDER}/add-nat-routing.sh
POST_DOWN_SCRIPT=${SCRIPTS_FOLDER}/remove-nat-routing.sh
POST_UP_TEMPLATE=${COREDIR}/etc/templates/default/wireguard-add-routing.template
POST_DOWN_TEMPLATE=${COREDIR}/etc/templates/default/wireguard-remove-routing.template
POST_UP_V4_TEMPLATE=${COREDIR}/etc/templates/default/wireguard-add-routing-ipv4.template
POST_DOWN_V4_TEMPLATE=${COREDIR}/etc/templates/default/wireguard-remove-routing-ipv4.template
POST_UP_V6_TEMPLATE=${COREDIR}/etc/templates/default/wireguard-add-routing-ipv6.template
POST_DOWN_V6_TEMPLATE=${COREDIR}/etc/templates/default/wireguard-remove-routing-ipv6.template
WIREGUARD_DEFAULT_NAME="wg0"
WIREGUARD_DEFAULT_PORT="51830"
WIREGUARD_DEFAULT_ADDR="10.100.10.1/24"
WIREGUARD_DEFAULT_ADDR_V6="fd42:42:42:42::/112"
case $1 in
configure)
if ! grep "net.ipv4.ip_forward=1" /etc/sysctl.conf; then
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
else
if ! grep "net.ipv4.ip_forward=1" /etc/sysctl.conf | grep -v "^#"; then
sed '/net.ipv4.ip_forward=1/s/^#//' -i /etc/sysctl.conf
fi
fi
if ! grep "net.ipv6.conf.all.forwarding=1" /etc/sysctl.conf; then
echo "net.ipv6.conf.all.forwarding=1" >> /etc/sysctl.conf
else
if ! grep "net.ipv6.conf.all.forwarding=1" /etc/sysctl.conf | grep -v "^#"; then
sed '/net.ipv6.conf.all.forwarding=1/s/^#//' -i /etc/sysctl.conf
fi
fi
sysctl -p
DEV=$(ip route | awk '$1=="default" {print $5}')
IP=$(ip addr show dev ${DEV} | awk '$1=="inet" {print $2}'| cut -d/ -f1 | awk '{print $1}')
if [[ $IP =~ .*:.* ]]; then
ADDR=${WIREGUARD_DEFAULT_ADDR_V6}
else
ADDR=${WIREGUARD_DEFAULT_ADDR}
fi
if [ ! -d ${SCRIPTS_FOLDER} ]; then
mkdir ${SCRIPTS_FOLDER}
cp ${POST_UP_TEMPLATE} ${POST_UP_SCRIPT}
cp ${POST_DOWN_TEMPLATE} ${POST_DOWN_SCRIPT}
sed -i "s|__WG_NAME__|${WIREGUARD_DEFAULT_NAME}|g" ${POST_UP_SCRIPT}
sed -i "s|__WG_NAME__|${WIREGUARD_DEFAULT_NAME}|g" ${POST_DOWN_SCRIPT}
sed -i "s|__PORT__|${WIREGUARD_DEFAULT_PORT}|g" ${POST_UP_SCRIPT}
sed -i "s|__PORT__|${WIREGUARD_DEFAULT_PORT}|g" ${POST_DOWN_SCRIPT}
if [[ $IP =~ .*:.* ]]; then
cat ${POST_UP_V6_TEMPLATE} >> ${POST_UP_SCRIPT}
cat ${POST_DOWN_V6_TEMPLATE} >> ${POST_DOWN_SCRIPT}
sed -i "s|__INTERFACE_V6__|${DEV}|g" ${POST_UP_SCRIPT}
sed -i "s|__INTERFACE_V6__|${DEV}|g" ${POST_DOWN_SCRIPT}
sed -i "s|__ADDR_V6__|${ADDR}|g" ${POST_UP_SCRIPT}
sed -i "s|__ADDR_V6__|${ADDR}|g" ${POST_DOWN_SCRIPT}
else
cat ${POST_UP_V4_TEMPLATE} >> ${POST_UP_SCRIPT}
cat ${POST_DOWN_V4_TEMPLATE} >> ${POST_DOWN_SCRIPT}
sed -i "s|__INTERFACE__|${DEV}|g" ${POST_UP_SCRIPT}
sed -i "s|__INTERFACE__|${DEV}|g" ${POST_DOWN_SCRIPT}
sed -i "s|__ADDR__|${ADDR}|g" ${POST_UP_SCRIPT}
sed -i "s|__ADDR__|${ADDR}|g" ${POST_DOWN_SCRIPT}
fi
chmod u+x ${POST_UP_SCRIPT}
chmod u+x ${POST_DOWN_SCRIPT}
fi
if [ ! -f ${WIREGUARD_CONF} ]; then
WG_KEY=$(wg genkey)
cat > ${WIREGUARD_CONF} << EOF
[Interface]
PrivateKey = ${WG_KEY}
Address = ${ADDR}
ListenPort = ${WIREGUARD_DEFAULT_PORT}
PostUp = ${POST_UP_SCRIPT}
PostDown = ${POST_DOWN_SCRIPT}
EOF
fi
MakeConfigLink wireguard wireguard
systemctl enable wg-quick@wg0.service
systemctl start wg-quick@wg0.service
ReloadMgr ${ISPMGR}
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
exit 0