113 lines
2.8 KiB
Bash
Executable File
113 lines
2.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# powerwall - CLI commands to control VM guest power
|
|
|
|
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(){
|
|
|
|
sudo mkdir -p /var/run/xl2tpd
|
|
sudo touch /var/run/xl2tpd/l2tp-control
|
|
[ "$(systemctl list-units --full -all | grep "strongswan.service")" != "" ] && sudo service strongswan restart
|
|
[ "$(systemctl list-units --full -all | grep "strongswan-starter.service")" != "" ] && sudo service strongswan-starter restart
|
|
sudo service xl2tpd restart
|
|
sudo service ipsec restart
|
|
sleep 8s
|
|
sudo /usr/sbin/ipsec up ${VPN_NAME}
|
|
sleep 8s
|
|
sudo bash -c 'echo "c ${VPN_NAME}" > /var/run/xl2tpd/l2tp-control'
|
|
sleep 8s
|
|
|
|
[ "${ROUTE_SUBNET1}" != "" ] && ip route add ${ROUTE_SUBNET1} via $(ip address show dev ppp0 | grep -Po '(?<=peer )(\b([0-9]{1,3}\.){3}[0-9]{1,3}\b)') dev ppp0
|
|
[ "${ROUTE_SUBNET2}" != "" ] && ip route add ${ROUTE_SUBNET2} via $(ip address show dev ppp0 | grep -Po '(?<=peer )(\b([0-9]{1,3}\.){3}[0-9]{1,3}\b)') dev ppp0
|
|
|
|
# if [ "${SYSTEM}" = "unifipoller" ]; then
|
|
# /usr/sbin/service unifi-poller start &
|
|
# elif [ "${SYSTEM}" = "rpicam" ]; then
|
|
# /usr/sbin/service rpisurv restart
|
|
# 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 ${VPN_NAME}" > /var/run/xl2tpd/l2tp-control'
|
|
/usr/sbin/ipsec down ${VPN_NAME}
|
|
|
|
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
|
|
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
|
|
|
|
if [ -f /opt/idssys/vpnmon/vpn.fail* ]; then
|
|
echo "$(date) - VPN Fixed" >> $logfile
|
|
rm -f /opt/idssys/vpnmon/vpn.fail*
|
|
fi
|
|
|
|
|
|
else
|
|
echo "VPN system is stopped and must be restarted manually"
|
|
fi
|
|
|
|
}
|
|
|
|
case ${1} in
|
|
start) START;;
|
|
stop) STOP;;
|
|
check) CHECK;;
|
|
esac
|
|
|
|
exit 0
|