...
1#!/bin/bash
2set -e
3
4TMP_FILE="/etc/wireguard/secret/wg0.conf"
5WG_FILE="/etc/wireguard/wg0.conf"
6
7function ifup {
8 typeset output
9 output=$(ip link show "$1" up) && [[ -n $output ]]
10}
11
12until [ -f "$TMP_FILE" ]
13do
14 echo "waiting for wireguard secret to sync"
15 sleep 5
16done
17
18cp "$TMP_FILE" "$WG_FILE"
19
20if ifup wg0; then
21 echo "wg0 is online"
22else
23 echo "setting up wg0"
24 wg-quick up wg0
25fi
26
27while true; do
28 sleep 10;
29
30 if diff -q "$TMP_FILE" "$WG_FILE" > /dev/null; then
31 continue # no change to config
32 fi
33
34 echo "running wireguard sync"
35 cp "$TMP_FILE" "$WG_FILE"
36 wg-quick strip wg0 > /tmp/wg0-quick.conf && wg syncconf wg0 /tmp/wg0-quick.conf
37 rm -f /tmp/wg0-quick.conf
38 echo "wireguard sync complete"
39done
View as plain text