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>
This commit is contained in:
Nick Hainke 2021-03-13 20:55:02 +01:00 committed by Polynomdivision
parent 17b18d825c
commit 36dc9b3f79
2 changed files with 28 additions and 0 deletions

View File

@ -4,3 +4,4 @@ config server
option base_prefix '2002::/64'
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