2018-08-02 13:56:42 +00:00
|
|
|
#!/bin/sh
|
2019-01-19 19:28:05 +00:00
|
|
|
# Copyright (C) 2018-2019 Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
|
2018-08-02 13:56:42 +00:00
|
|
|
|
|
|
|
while true; do
|
|
|
|
if [ "$(uci -q get glorytun.vpn.enable)" = "1" ]; then
|
|
|
|
iface=$(uci -q get glorytun.vpn.dev)
|
2018-12-06 12:49:40 +00:00
|
|
|
addr=$(uci -q get glorytun.vpn.localip)
|
|
|
|
peer=$(uci -q get glorytun.vpn.remoteip)
|
2018-08-02 13:56:42 +00:00
|
|
|
elif [ "$(uci -q get mlvpn.general.enable)" = "1" ]; then
|
|
|
|
iface=$(uci -q get mlvpn.general.interface_name)
|
|
|
|
elif [ "$(uci -q get openvpn.omr.enabled)" = "1" ]; then
|
|
|
|
iface=$(uci -q get openvpn.omr.dev)
|
|
|
|
fi
|
2018-12-06 12:49:40 +00:00
|
|
|
[ -z "$addr" ] && addr=$(ubus call network.interface.omrvpn status | jsonfilter -q -e '@["ipv4-address"][0].address' | tr -d "\n")
|
2019-01-19 19:28:05 +00:00
|
|
|
if [ -n "$iface" ] && [ -d "/sys/class/net/$iface" ]; then
|
2018-08-21 15:44:29 +00:00
|
|
|
[ -z "$addr" ] && [ -n "$iface" ] && addr=$(ip -4 addr show dev $iface | grep inet | awk '{print $2}' | cut -d/ -f1 | tr -d "\n")
|
2019-01-17 19:42:14 +00:00
|
|
|
[ -z "$peer" ] && peer=$(ubus call network.interface.omrvpn status | jsonfilter -q -l 1 -e '@.route[@.target="0.0.0.0"].nexthop' | tr -d "\n")
|
|
|
|
[ -z "$peer" ] && peer=$(ip -4 r list dev $iface | grep kernel | awk '/proto kernel/ {print $1}' | grep -v / | tr -d "\n")
|
2018-08-21 15:44:29 +00:00
|
|
|
[ -n "$addr" ] && [ -n "$peer" ] && {
|
2019-01-13 10:10:05 +00:00
|
|
|
if [ "$addr" != "$(uci -q get network.omr6in4.ipaddr)" ] || [ "$peer" != "$(uci -q get network.omr6in4.peeraddr)" ] || [ "$(uci -q get network.omr6in4_route6_default)" = "" ]; then
|
2018-08-21 15:44:29 +00:00
|
|
|
logger -t "omr6in4" "Set network for OMR 6in4 to local $addr peer $peer"
|
|
|
|
uci -q batch <<-EOF
|
|
|
|
set network.omr6in4.ipaddr=$addr
|
|
|
|
set network.omr6in4.peeraddr=$peer
|
2019-01-19 19:28:05 +00:00
|
|
|
commit network
|
2018-08-21 15:44:29 +00:00
|
|
|
EOF
|
|
|
|
if [ -n "$(ip tunnel | grep omr6in4)" ]; then
|
2019-01-17 19:42:14 +00:00
|
|
|
ip tunnel change "6in4-omr6in4" mode sit local ${addr} remote ${peer} > /dev/null 2>&1
|
2018-08-21 15:44:29 +00:00
|
|
|
else
|
2019-01-19 16:18:01 +00:00
|
|
|
ifup omr6in4 > /dev/null 2>&1
|
2018-08-21 15:44:29 +00:00
|
|
|
fi
|
2019-01-13 10:10:05 +00:00
|
|
|
sleep 5
|
2019-01-17 19:42:14 +00:00
|
|
|
ipv6_gw=$(ubus call network.interface.6in4-omr6in4 status | jsonfilter -q -l 1 -e '@.route[@.target="::"].nexthop' | tr -d "\n")
|
2019-01-13 10:10:05 +00:00
|
|
|
[ -z "$ipv6_gw" ] && ipv6_gw='fe80::a00:1'
|
2019-01-19 16:18:01 +00:00
|
|
|
ip -6 route replace default via ${ipv6_gw} dev 6in4-omr6in4 > /dev/null 2>&1
|
2019-01-13 10:10:05 +00:00
|
|
|
uci -q batch <<-EOF
|
|
|
|
set network.omr6in4_route6_default=route6
|
|
|
|
set network.omr6in4_route6_default.interface=omr6in4
|
|
|
|
set network.omr6in4_route6_default.target='::'
|
|
|
|
set network.omr6in4_route6_default.gateway=$ipv6_gw
|
|
|
|
commit network
|
|
|
|
EOF
|
2018-08-21 15:44:29 +00:00
|
|
|
fi
|
|
|
|
}
|
2018-08-02 13:56:42 +00:00
|
|
|
fi
|
|
|
|
sleep 10
|
|
|
|
done
|