wireguard-ui/restart-wg.sh
Arminas 09abbdfcf0
Created restart-wg.sh file
Created wireguard restart script, which compares wg0.conf part between [Interface] and first peer with previous version for changes, and, if there is any - restarts whole wireguard, if the only changes are done to peers, it calls "wg syncconf", eliminating client disconnection after pressing apply config problem.
2023-02-10 15:23:15 +02:00

28 lines
919 B
Bash

#!/bin/bash
config="/etc/wireguard/wg0.conf"
old_config="/etc/wireguard/wg0.conf.old"
if [ ! -f $old_config ]; then
awk '/Interface/,/# ID:/' $config | head -n -1 | tail -n +2 > $old_config
echo "No old config found, restarting wireguard (wg-quick)"
wg-quick down wg0
systemctl restart wg-quick@wg0.service
exit 0
fi
difference=$(diff <(awk '/Interface/,/# ID:/' $config | head -n -1 | tail -n +2) <(cat $old_config))
if [ -n "$difference" ]; then
awk '/Interface/,/# ID:/' $config | head -n -1 | tail -n +2 > $old_config
echo "Changes to interface detected, restarting wireguard (wg-quick)"
wg-quick down wg0
systemctl restart wg-quick@wg0.service
exit 0
else
awk '/Interface/,/# ID:/' $config | head -n -1 | tail -n +2 > $old_config
echo "No changes to interface detected, restarting wireguard (wg syncconf)"
wg syncconf wg0 <(wg-quick strip wg0)
exit 0
fi