From 4ff44c2b2188e26a0f51365355a95b8f4bed54bc Mon Sep 17 00:00:00 2001 From: Tim Wilkinson Date: Fri, 23 Feb 2024 23:02:45 -0800 Subject: [PATCH] Run the wireguard watchdog script every 5 minutes (#1102) This fixes up wireguard connections to dynamically changing IP addresses --- .../usr/local/bin/mgr/wireguard_watchdog.lua | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100755 files/usr/local/bin/mgr/wireguard_watchdog.lua diff --git a/files/usr/local/bin/mgr/wireguard_watchdog.lua b/files/usr/local/bin/mgr/wireguard_watchdog.lua new file mode 100755 index 00000000..a862d834 --- /dev/null +++ b/files/usr/local/bin/mgr/wireguard_watchdog.lua @@ -0,0 +1,52 @@ + +--[[ + + Part of AREDN -- Used for creating Amateur Radio Emergency Data Networks + Copyright (C) 2024 Tim Wilkinson + See Contributors file for additional contributors + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation version 3 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + + Additional Terms: + + Additional use restrictions exist on the AREDN(TM) trademark and logo. + See AREDNLicense.txt for more info. + + Attributions to the AREDN Project must be retained in the source code. + If importing this code into a new or existing project attribution + to the AREDN project must be added to the source code. + + You must not misrepresent the origin of the material contained within. + + Modified versions must be modified to attribute to the original source + and be marked in reasonable ways as differentiate it from the original + version + +--]] + +local wireguard_watchdog_sh = "/usr/bin/wireguard_watchdog" + +function wireguard_watchdog() + while true + do + wait_for_ticks(300) -- every 5 minutes + + -- Only run the script if we have wireguard connections + local c = uci.cursor() + if c:get("network", "wgs0") or c:get("network", "wgc0") then + os.execute(wireguard_watchdog_sh) + end + end +end + +return wireguard_watchdog