#!/bin/bash set -e TMP_FILE="/etc/wireguard/secret/wg0.conf" WG_FILE="/etc/wireguard/wg0.conf" function ifup { typeset output output=$(ip link show "$1" up) && [[ -n $output ]] } until [ -f "$TMP_FILE" ] do echo "waiting for wireguard secret to sync" sleep 5 done cp "$TMP_FILE" "$WG_FILE" if ifup wg0; then echo "wg0 is online" else echo "setting up wg0" wg-quick up wg0 fi while true; do sleep 10; if diff -q "$TMP_FILE" "$WG_FILE" > /dev/null; then continue # no change to config fi echo "running wireguard sync" cp "$TMP_FILE" "$WG_FILE" wg-quick strip wg0 > /tmp/wg0-quick.conf && wg syncconf wg0 /tmp/wg0-quick.conf rm -f /tmp/wg0-quick.conf echo "wireguard sync complete" done