mirror of
https://github.com/netbirdio/plugins.git
synced 2026-05-22 18:44:07 -07:00
os-wireguard: add script to enable cron renewal of DNS for stale connections (#2956)
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
PLUGIN_NAME= wireguard
|
||||
PLUGIN_VERSION= 1.10
|
||||
PLUGIN_VERSION= 1.11
|
||||
PLUGIN_COMMENT= WireGuard VPN service
|
||||
PLUGIN_DEPENDS= wireguard-go wireguard-tools
|
||||
PLUGIN_MAINTAINER= m.muenz@gmail.com
|
||||
|
||||
@@ -16,6 +16,10 @@ WWW: https://www.wireguard.com/
|
||||
Changelog
|
||||
---------
|
||||
|
||||
1.11
|
||||
|
||||
* Add script for renewal of Wireguard DNS-based entries for stale connections
|
||||
|
||||
1.10
|
||||
|
||||
* Remove instance limit
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
#!/usr/local/bin/bash
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
#
|
||||
# Copyright (C) 2015-2020 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
|
||||
|
||||
set -e
|
||||
shopt -s nocasematch
|
||||
shopt -s extglob
|
||||
export LC_ALL=C
|
||||
|
||||
for CONFIG_FILE in /usr/local/etc/wireguard/*.conf
|
||||
do
|
||||
|
||||
[[ $CONFIG_FILE =~ /?([a-zA-Z0-9_=+.-]{1,15})\.conf$ ]]
|
||||
INTERFACE="${BASH_REMATCH[1]}"
|
||||
|
||||
process_peer() {
|
||||
[[ $PEER_SECTION -ne 1 || -z $PUBLIC_KEY || -z $ENDPOINT ]] && return 0
|
||||
[[ $(wg show "$INTERFACE" latest-handshakes) =~ ${PUBLIC_KEY//+/\\+}\ ([0-9]+) ]
|
||||
] || return 0
|
||||
(( ($EPOCHSECONDS - ${BASH_REMATCH[1]}) > 135 )) || return 0
|
||||
wg set "$INTERFACE" peer "$PUBLIC_KEY" endpoint "$ENDPOINT"
|
||||
reset_peer_section
|
||||
}
|
||||
|
||||
reset_peer_section() {
|
||||
PEER_SECTION=0
|
||||
PUBLIC_KEY=""
|
||||
ENDPOINT=""
|
||||
}
|
||||
|
||||
reset_peer_section
|
||||
while read -r line || [[ -n $line ]]; do
|
||||
stripped="${line%%\#*}"
|
||||
key="${stripped%%=*}"; key="${key##*([[:space:]])}"; key="${key%%*([[:space:]])}"
|
||||
value="${stripped#*=}"; value="${value##*([[:space:]])}"; value="${value%%*([[:spa
|
||||
ce:]])}"
|
||||
[[ $key == "["* ]] && { process_peer; reset_peer_section; }
|
||||
[[ $key == "[Peer]" ]] && PEER_SECTION=1
|
||||
if [[ $PEER_SECTION -eq 1 ]]; then
|
||||
case "$key" in
|
||||
PublicKey) PUBLIC_KEY="$value"; continue ;;
|
||||
Endpoint) ENDPOINT="$value"; continue ;;
|
||||
esac
|
||||
fi
|
||||
done < "$CONFIG_FILE"
|
||||
process_peer
|
||||
|
||||
done
|
||||
@@ -23,6 +23,13 @@ type:script
|
||||
message:Restarting WireGuard
|
||||
description: Restart WireGuard
|
||||
|
||||
[renew]
|
||||
command:/usr/local/opnsense/scripts/OPNsense/Wireguard/resolve-dns.sh
|
||||
parameters:
|
||||
type:script
|
||||
message:Renew DNS for Wireguard
|
||||
description:Renew DNS for Wireguard on stale connections
|
||||
|
||||
[genkey]
|
||||
command:/usr/local/opnsense/scripts/OPNsense/Wireguard/genkey.sh
|
||||
parameters: %s
|
||||
|
||||
Reference in New Issue
Block a user