...

Text file src/edge-infra.dev/cmd/sds/remoteaccess/wireguard/wg-sync.sh

Documentation: edge-infra.dev/cmd/sds/remoteaccess/wireguard

     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