1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter-vps.git synced 2025-02-12 19:31:54 +00:00
openmptcprouter-vps/omr-service

173 lines
6.7 KiB
Text
Raw Normal View History

#!/bin/bash
# OpenMPTCProuter VPS service script
2019-01-02 08:57:31 +00:00
_multipath() {
# Force multipath status
source /etc/shorewall/params.net
for intf in `ls -1 /sys/class/net`; do
if [ "$intf" != "bonding_masters" ]; then
2022-10-14 07:01:41 +00:00
if ([ "$(ip a show dev lo | grep -v inet6 | grep global)" != "" ] && [ "$intf" = "lo" ]) || ([ "$intf" = "$NET_IFACE" ] && [ "$(ip a show dev lo | grep -v inet6 | grep global)" = "" ]); then
[ -f /proc/sys/net/mptcp/mptcp_enabled ] && [ "$(multipath $intf | tr -d '\n')" != "$intf is in default mode" ] && multipath $intf on 2>&1 >/dev/null
2022-02-11 15:54:58 +00:00
[ -f /proc/sys/net/mptcp/enabled ] && [ "$(multipath $intf | tr -d '\n')" != "$intf is in signal mode" ] && {
multipath $intf signal 2>&1 >/dev/null
2022-02-11 15:54:58 +00:00
ip mptcp limits set subflows 8 add_addr_accepted 8 2>&1 >/dev/null
}
else
[ "$(multipath $intf | tr -d '\n')" != "$intf is deactivated" ] && multipath $intf off 2>&1 >/dev/null
fi
2019-01-02 08:57:31 +00:00
fi
done
}
2020-03-12 18:38:43 +00:00
_glorytun_udp() {
2022-08-09 18:36:09 +00:00
if [ -n "$(systemctl -a | grep 'glorytun-udp')" ]; then
[ -z "$(glorytun show dev gt-udp-tun0 2>/dev/null | grep tunnel)" ] && {
logger -t "OMR-Service" "Restart Glorytun-UDP"
systemctl -q restart 'glorytun-udp@*'
sleep 10
}
for intf in /etc/glorytun-udp/tun*; do
[ "$(echo $intf | grep key)" = "" ] && /etc/glorytun-udp/post.sh ${intf}
done
#ip link set mtu 9000 dev gt-udp-tun0 2>&1 >/dev/null
2022-08-09 18:36:09 +00:00
fi
2020-04-07 14:06:54 +00:00
}
_glorytun_tcp() {
2022-08-09 18:36:09 +00:00
if [ -n "$(systemctl -a | grep 'glorytun-tcp')" ]; then
for intf in /etc/glorytun-tcp/tun*; do
[ "$(echo $intf | grep key)" = "" ] && /etc/glorytun-tcp/post.sh ${intf}
done
if [ -f /etc/openmptcprouter-vps-admin/current-vpn ] && [ "$(cat /etc/openmptcprouter-vps-admin/current-vpn)" = "glorytun_tcp" ]; then
localip="$(cat /etc/glorytun-tcp/tun0 | grep LOCALIP | cut -d '=' -f2)"
[ -z "$localip" ] && localip="10.255.255.1"
remoteip="$(echo $localip | sed 's/\.1/\.2/')"
if [ "$(ping -c 5 -w 15 $remoteip | grep '100%')" != "" ] && ([ -z "$(pgrep glorytun-tcp)" ] || [ "$(expr $(date +%s) - $(stat -c %Y /proc/$(pgrep glorytun-tcp)/exe ))" -gt "300" ]); then
2022-08-09 18:36:09 +00:00
logger -t "OMR-Service" "No answer from VPN client end, restart Glorytun-TCP"
systemctl restart glorytun-tcp@tun0
sleep 10
fi
fi
#ip link set mtu 9000 dev gt-tun0 2>&1 >/dev/null
fi
2020-03-15 22:41:24 +00:00
}
2021-04-19 19:15:43 +00:00
_dsvpn() {
[ -n "$(ip -6 r show 64:ff9b::/96 dev dsvpn0)" ] && ip -6 r del 64:ff9b::/96 dev dsvpn0 2>&1 >/dev/null
2021-08-23 13:50:00 +00:00
if [ -f /etc/openmptcprouter-vps-admin/current-vpn ] && [ "$(cat /etc/openmptcprouter-vps-admin/current-vpn)" = "dsvpn" ]; then
localip="$(cat /etc/dsvpn/dsvpn0 | grep LOCALTUNIP | cut -d '=' -f2)"
[ -z "$localip" ] && localip="10.255.251.1"
remoteip="$(echo $localip | sed 's/\.1/\.2/')"
if [ "$(ping -c 5 -w 5 $remoteip | grep '100%')" != "" ] && [ "$(expr $(date +%s) - $(stat -c %Y /proc/$(pgrep dsvpn)/exe ))" -gt "300" ]; then
logger -t "OMR-Service" "No answer from VPN client end, restart DSVPN"
systemctl restart dsvpn@dsvpn0
fi
#ip link set mtu 9000 dev dsvpn0 2>&1 >/dev/null
2021-08-23 13:50:00 +00:00
fi
2021-04-19 19:15:43 +00:00
}
2021-06-08 17:42:39 +00:00
_shadowsocks() {
2022-08-09 18:36:09 +00:00
[ -n "$(systemctl -a | grep 'shadowsocks')" ] && [ -z "$(pgrep ss-server)" ] && {
2021-06-08 17:42:39 +00:00
logger -t "OMR-Service" "ss-server not detected, restart Shadowsocks"
systemctl restart shadowsocks-libev-manager@manager
}
}
2021-05-09 08:35:55 +00:00
_wireguard() {
2022-08-09 18:36:09 +00:00
if [ -n "$(systemctl -a | grep 'wg')" ]; then
[ -z "$(ip a show dev wg0 | grep '10.255.247.1')" ] && ip a add 10.255.247.1/24 dev wg0 2>&1 >/dev/null
[ -z "$(ip a show dev client-wg0 | grep '10.255.246.1')" ] && ip a add 10.255.246.1/24 dev client-wg0 2>&1 >/dev/null
fi
2021-05-09 08:35:55 +00:00
}
2021-04-19 19:15:43 +00:00
2020-03-15 22:41:24 +00:00
_omr_api() {
2022-08-09 18:36:09 +00:00
[ -z "$(pgrep curl)" ] && [ -z "$(curl -s -k -m 30 https://127.0.0.1:65500/)" ] && {
logger -t "OMR-Service" "Can't contact API, restart OMR-Admin"
2020-03-15 22:41:24 +00:00
systemctl -q restart omr-admin
}
2020-03-12 18:38:43 +00:00
}
2020-07-20 14:01:51 +00:00
_lan_route() {
2021-11-19 21:03:15 +00:00
cat /etc/openmptcprouter-vps-admin/omr-admin-config.json | jq -c '.users[0][]?' |
2020-07-20 14:01:51 +00:00
while IFS=$"\n" read -r c; do
2021-08-23 13:50:00 +00:00
if [ -n "$c" ]; then
vpnremoteip=$(echo "$c" | jq -r '.vpnremoteip')
if [ -n "$vpnremoteip" ] && [ "$vpnremoteip" != "null" ]; then
2021-11-19 21:03:15 +00:00
echo "$c" | jq -c -r '.lanips[]? //empty' |
2021-08-23 13:50:00 +00:00
while IFS=$"\n" read -r d; do
2021-11-19 21:03:15 +00:00
if [ "$d" != "" ]; then
network=$(ipcalc -n $d | grep Network | awk '{print $2}')
[ -n "$network" ] && [ -z "$(ip r show $network via $vpnremoteip)" ] && ip r replace $network via $vpnremoteip onlink 2>&1 >/dev/null
2021-11-19 21:03:15 +00:00
fi
2021-08-23 13:50:00 +00:00
done
fi
2020-07-20 14:01:51 +00:00
fi
done
}
_gre_tunnels() {
. "$(readlink -f "/etc/shorewall/params.vpn")"
2021-06-14 05:47:42 +00:00
if [ -n "$OMR_ADDR" ]; then
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}')" != "$OMR_ADDR" ]; then
ip tunnel del $iface 2>&1 >/dev/null
ip tunnel add $iface mode gre local $INTFADDR remote $OMR_ADDR 2>&1 >/dev/null
ip link set $iface up 2>&1 >/dev/null
ip addr add $LOCALIP dev $iface 2>&1 >/dev/null
ip route add $NETWORK dev $iface onlink 2>&1 >/dev/null
2021-06-14 05:47:42 +00:00
fi
2020-07-28 13:51:00 +00:00
fi
2021-06-14 05:47:42 +00:00
done
fi
}
_openvpn_bonding() {
if [ "$(ip link show ovpnbonding1)" != "" ] && ([ "$(ip link show ovpnbonding1 | grep SLAVE)" = "" ] || [ "$(ip link show omr-bonding | grep DOWN)" != "" ] || [ "$(ip link show | grep ovpnbonding | grep -c SLAVE | tr -d '\n')" != "8" ]); then
2021-03-02 08:52:33 +00:00
echo 0 > /sys/class/net/omr-bonding/bonding/mode 2>&1 >/dev/null
2020-12-17 15:48:26 +00:00
ip link set ovpnbonding1 master omr-bonding 2>&1 >/dev/null
2021-03-02 08:52:33 +00:00
ip link set ovpnbonding1 up 2>&1 >/dev/null
2020-12-17 15:48:26 +00:00
ip link set ovpnbonding2 master omr-bonding 2>&1 >/dev/null
2021-03-02 08:52:33 +00:00
ip link set ovpnbonding2 up 2>&1 >/dev/null
2020-12-17 15:48:26 +00:00
ip link set ovpnbonding3 master omr-bonding 2>&1 >/dev/null
2021-03-02 08:52:33 +00:00
ip link set ovpnbonding3 up 2>&1 >/dev/null
2020-12-17 15:48:26 +00:00
ip link set ovpnbonding4 master omr-bonding 2>&1 >/dev/null
2021-03-02 08:52:33 +00:00
ip link set ovpnbonding4 up 2>&1 >/dev/null
2020-12-17 15:48:26 +00:00
ip link set ovpnbonding5 master omr-bonding 2>&1 >/dev/null
2021-03-02 08:52:33 +00:00
ip link set ovpnbonding5 up 2>&1 >/dev/null
2020-12-17 15:48:26 +00:00
ip link set ovpnbonding6 master omr-bonding 2>&1 >/dev/null
2021-03-02 08:52:33 +00:00
ip link set ovpnbonding6 up 2>&1 >/dev/null
2020-12-17 15:48:26 +00:00
ip link set ovpnbonding7 master omr-bonding 2>&1 >/dev/null
2021-03-02 08:52:33 +00:00
ip link set ovpnbonding7 up 2>&1 >/dev/null
2020-12-17 15:48:26 +00:00
ip link set ovpnbonding8 master omr-bonding 2>&1 >/dev/null
2021-03-02 08:52:33 +00:00
ip link set ovpnbonding8 up 2>&1 >/dev/null
2020-12-17 15:48:26 +00:00
ip link set omr-bonding up mtu 1440 2>&1 >/dev/null
ip a add 10.255.248.1 dev omr-bonding 2>&1 >/dev/null
ip r add 10.255.248.0/24 dev omr-bonding onlink 2>&1 >/dev/null
2020-12-17 15:48:26 +00:00
ip r add 10.255.248.2 dev omr-bonding src 10.255.248.1 2>&1 >/dev/null
fi
}
2021-06-08 17:42:39 +00:00
sysctl -p /etc/sysctl.d/90-shadowsocks.conf 2>&1 >/dev/null
2020-12-17 15:48:26 +00:00
modprobe bonding 2>&1 >/dev/null
ip link add omr-bonding type bond 2>&1 >/dev/null
#[ -n "$(uname -r | grep '6.1')" ] && {
# stap -g /usr/share/systemtap-mptcp/mptcp-app.stap 2>&1 &
#}
while true; do
2020-03-12 18:38:43 +00:00
_glorytun_udp
2020-04-07 14:06:54 +00:00
_glorytun_tcp
2021-06-08 17:42:39 +00:00
_shadowsocks
2021-04-19 19:15:43 +00:00
_dsvpn
2021-05-09 08:35:55 +00:00
_wireguard
2020-03-10 09:45:06 +00:00
_multipath
2020-03-15 22:41:24 +00:00
_omr_api
2020-07-20 14:01:51 +00:00
_lan_route
_gre_tunnels
_openvpn_bonding
2019-05-12 02:45:49 +00:00
sleep 10
done