From 0cc03a290b9d29207d62563da9fa221517f3d43b Mon Sep 17 00:00:00 2001 From: David Schroeder Date: Sun, 22 May 2022 12:12:51 -0500 Subject: [PATCH] Update vpnmon.sh --- vpnmon.sh | 72 ++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 55 insertions(+), 17 deletions(-) diff --git a/vpnmon.sh b/vpnmon.sh index 5e381d6..9dff2b0 100755 --- a/vpnmon.sh +++ b/vpnmon.sh @@ -5,7 +5,8 @@ source /opt/idssys/defaults/colors.inc source /opt/idssys/defaults/default.inc source /opt/idssys/vpnmon/system.inc - +logfile=/opt/idssys/vpnmon/logfile +touch $logfile START(){ @@ -23,39 +24,76 @@ START(){ if [ "${ROUTE}" != "" ]; then ip route add ${ROUTE} via $(ip address show dev ppp0 | grep -Po '(?<=peer )(\b([0-9]{1,3}\.){3}[0-9]{1,3}\b)') dev ppp0 fi - + if [ "${SYSTEM}" = "unifipoller" ]; then /usr/sbin/service unifi-poller start fi + rm -f /opt/idssys/vpnmon/vpn.stop + + echo "$(date) - VPN started" >> $logfile + } STOP(){ + touch /opt/idssys/vpnmon/vpn.stop + if [ "${SYSTEM}" = "unifipoller" ]; then /usr/sbin/service unifi-poller stop fi sudo bash -c 'echo "d myVPN" > /var/run/xl2tpd/l2tp-control' /usr/sbin/ipsec down L2TP-PSK + + + + echo "$(date) - VPN stopped" >> $logfile } CHECK(){ + + if [ ! -f /opt/idssys/vpnmon/vpn.stop ]; then + + touch /opt/idssys/vpnmon/vpn.stop - checked=false - cc=0 - until [ "${checked}" = "" ]; do - OUT=$(ip link | grep "ppp0") - #OUT=`ip a show $VPN_INTERFACE up` >/dev/null 2>&1 - if [ ${#OUT} -ne 0 ]; then - checked="" - elif [ ${cc} -eq 10 ]; then - STOP - sleep 5s - START - fi - ((cc=${cc}+1)) - sleep 1s - done + checked=false + cc=0 + until [ "${checked}" = "" ]; do + OUT=$(ip link | grep "ppp0") + #OUT=`ip a show $VPN_INTERFACE up` >/dev/null 2>&1 + if [ ${#OUT} -ne 0 ]; then + checked="" + elif [ ${cc} -eq 10 ]; then + if [ -f /opt/idssys/vpnmon/vpn.fail ]; then + echo "$(date) - VPN Failure #2 - stopping for 5mins" >> $logfile + touch /opt/idssys/vpnmon/vpn.fail2 + rm -f /opt/idssys/vpnmon/vpn.fail + STOP + sleep 5m + START + exit 1 + elif [ -f /opt/idssys/vpnmon/vpn.fail2 ]; then + echo "$(date) - VPN Failure #3 - Shutting down VPN system until repaired" >> $logfile + STOP + exit 1 + else + echo "$(date) - VPN Failure #1 - stopping for 1min" >> $logfile + touch /opt/idssys/vpnmon/vpn.fail + STOP + sleep 1m + START + exit 1 + fi + fi + ((cc=${cc}+1)) + sleep 1s + done + + rm -f /opt/idssys/vpnmon/vpn.stop + + else + echo "VPN system is stopped and must be restarted manually" + fi }