From f7cef44b065d194ae54ace40771a167fe64ecc10 Mon Sep 17 00:00:00 2001 From: Christian Zeitnitz Date: Sun, 28 Mar 2021 16:35:19 +0200 Subject: [PATCH] Add code for PPP and TUN devices --- includes/internetRoute.php | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/includes/internetRoute.php b/includes/internetRoute.php index 67913197..bbb090f7 100755 --- a/includes/internetRoute.php +++ b/includes/internetRoute.php @@ -11,10 +11,23 @@ function getRouteInfo($checkAccess) $rInfo = array(); // get all default routes exec('ip route list | sed -rn "s/default via (([0-9]{1,3}\.){3}[0-9]{1,3}).*dev (\w*).*src (([0-9]{1,3}\.){3}[0-9]{1,3}).*/\3 \4 \1/p"', $routes); - exec('ip route list | sed -rn "s/default dev (\w*) scope link/\1/p"', $devs); + $devpat = array("tun", "ppp"); // routing in case of VPN and PPP connection are different + foreach ($devpat as $pat) { + exec('ip route list | grep -oP "'.$pat.'[0-9]" | sort -u', $devs); + } if (!empty($devs)) { - foreach ($devs as $dev) - exec('ip route list | sed -rn "s/(([0-9]{1,3}\.){3}[0-9]{1,3}).*dev.*("' . $dev . '").*scope link src (([0-9]{1,3}\.){3}[0-9]{1,3}).*/\3 \4 \1/p"', $routes); + foreach ($devs as $dev) { + unset($gateway); + unset($ipadd); + exec('ip route list | sed -rn "s/^.*via (([0-9]{1,3}\.){3}[0-9]{1,3}) dev "' . $dev . '".*$/\1/p" | head -n 1', $gateway); + if (empty($gateway)) { + exec('ip route list | sed -rn "s/(([0-9]{1,3}\.){3}[0-9]{1,3}).*dev.*"' . $dev . '".*scope link src.*/\1/p"', $gateway); + } + exec('ifconfig -a | grep -i ' . $dev . ' -A 1 | grep -oP "(?<=inet )([0-9]{1,3}\.){3}[0-9]{1,3}"', $ipadd); + if (!empty($gateway) && !empty($ipadd)) { + $routes[]="$dev $ipadd[0] $gateway[0]"; + } + } } if (!empty($routes)) { foreach ($routes as $i => $route) { @@ -33,7 +46,7 @@ function getRouteInfo($checkAccess) $rInfo[$i]["access-ip"] = empty($okip) ? false : true; unset($okdns); exec('ping -W1 -c 1 -I ' . $prop[0] . ' ' . RASPI_ACCESS_CHECK_DNS . ' | sed -rn "s/.*icmp_seq=1.*time=.*/OK/p"', $okdns); - $rInfo[$i]["access-dns"] = empty($okdns) ? false : true; + $rInfo[$i]["access-dns"] = empty($okdns) ? false : true; } } } else {