#!/bin/bash # OpenMPTCProuter VPS service script _multipath() { # Force multipath status source /etc/shorewall/params.net for intf in `ls -1 /sys/class/net`; do if [ "$intf" = "$NET_IFACE" ]; then [ "$(multipath $intf | tr -d '\n')" != "$intf is in default mode" ] && multipath $intf on else [ "$(multipath $intf | tr -d '\n')" != "$intf is deactivated" ] && multipath $intf off fi done } _glorytun_udp() { [ -z "$(glorytun show dev gt-udp-tun0 2>/dev/null | grep tunnel)" ] && { logger -t "OMR-Service" "Restart Glorytun-UDP" systemctl -q restart 'glorytun-udp@*' } for intf in /etc/glorytun-udp/tun*; do [ "$(echo $intf | grep key)" = "" ] && /etc/glorytun-udp/post.sh ${intf} done } _glorytun_tcp() { for intf in /etc/glorytun-tcp/tun*; do [ "$(echo $intf | grep key)" = "" ] && /etc/glorytun-tcp/post.sh ${intf} done if [ "$(cat /etc/openmptcprouter-vps-admin/current-vpn)" = "glorytun_tcp" ]; then if [ "$(ping -c 5 -w 5 10.255.255.2 | grep '100%')" != "" ]; then logger -t "OMR-Service" "No answer from VPN client end, restart Glorytun-TCP" systemctl restart glorytun-tcp@tun0 fi fi } _omr_api() { [ -z "$(curl -s -k -m 30 https://127.0.0.1:65500/)" ] && { logger -t "OMR-Service" "Restart OMR-Admin" systemctl -q restart omr-admin } } _lan_route() { cat /etc/openmptcprouter-vps-admin/omr-admin-config.json | jq -c '.users[0][]' | while IFS=$"\n" read -r c; do vpnremoteip=$(echo "$c" | jq -r '.vpnremoteip') if [ -n "$vpnremoteip" ] && [ "$vpnremoteip" != "null" ]; then echo "$c" | jq -c '.lanips //empty' | while IFS=$"\n" read -r d; do network=$(ipcalc -n $d | grep Network | awk '{print $2}') [ -n "$network" ] && [ -z "$(ip r show $network via $vpnremoteip)" ] && ip r replace $network via $vpnremoteip 2>&1 >/dev/null done fi done } _gre_tunnels() { . "$(readlink -f "/etc/shorewall/params.vpn")" for intf in /etc/openmptcprouter-vps-admin/intf/*; do if [ -f "$intf" ]; then . "$(readlink -f "$intf")" iface="$(basename $intf)" if [ "$(ip tunnel show $iface 2>/dev/null | awk '{print $4}')" != "$REMOTEIP" ]; then ip tunnel del $iface 2>&1 >/dev/null ip tunnel add $iface mode gre local $INTFADDR remote $REMOTEIP ip link set $iface up ip addr add $LOCALIP dev $iface ip route add $NETWORK dev $iface 2>&1 >/dev/null fi fi done } while true; do _glorytun_udp _glorytun_tcp _multipath _omr_api _lan_route _gre_tunnels sleep 10 done