wg-installer: delete old interfaces

Add "wg_check_interfaces" and specify a timeout in the config file.
This allows to delete not used wireguard-interfaces automatically.

For example a cronjob can be installed that calls:
  . /usr/share/wginstaller/wg_functions.sh && wg_check_interfaces

Signed-off-by: Nick Hainke <vincent@systemli.org>
(cherry picked from commit 36dc9b3f79)
This commit is contained in:
Nick Hainke 2021-03-13 20:55:02 +01:00
parent 335ad2a4d7
commit 49f898044c
2 changed files with 28 additions and 0 deletions

View file

@ -5,3 +5,4 @@ config server
option base_v4prefix '10.0.0.1/24'
option wg_key '/root/wg.key'
option wg_pub '/root/wg.pub'
option timeout_handshake '600'

View file

@ -1,6 +1,33 @@
. /usr/share/libubox/jshn.sh
. /usr/share/wginstaller/wg.sh
wg_timeout () {
local int=$1
handshake=$(wg show $int latest-handshakes | awk '{print $2}')
timeout=$(uci get wgserver.@server[0].timeout_handshake)
if [ $handshake -ge $timeout ]; then
echo "1"
else
echo "0"
fi
}
wg_check_interface () {
local int=$1
if [ $(wg_timeout $int) -eq "1" ]; then
ip link del dev $int
fi
}
wg_check_interfaces () {
wg_interfaces=$(wg show interfaces)
for interface in $wg_interfaces; do
wg_check_interface $interface
done
}
wg_get_usage () {
num_interfaces = $(wg show interfaces | wc -w)
json_init