/dev/null",$ns); $eth = $_POST['port'] ?? ''; $vlan = $_POST['vlan'] ?? ''; $wlan0 = $eth == 'wlan0'; $port = isPort($eth).($vlan ? ".$vlan" : ""); $v6on = trim(file_get_contents("/proc/sys/net/ipv6/conf/$port/disable_ipv6"))==='0'; $none = _('None'); $error = ""._('Missing').""; $note = in_array($eth,['eth0','wlan0']) && !$vlan ? $error : $none; $ipv4 = array_filter(explode(' ',exec("ip -4 -br addr show ".escapeshellarg($port)." scope global 2>/dev/null | awk '{\$1=\$2=\"\";print;exit}' | sed -r 's/ metric [0-9]+//g; s/\/[0-9]+//g'"))); $gw4 = exec("ip -4 route show default dev ".escapeshellarg($port)." 2>/dev/null | awk '{print \$3;exit}'") ?: $note; $dns4 = array_filter($ns,function($ns){return strpos($ns,':') === false;}); if ($v6on) { $ipv6 = array_filter(explode(' ',exec("ip -6 -br addr show ".escapeshellarg($port)." scope global -temporary 2>/dev/null | awk '{\$1=\$2=\"\";print;exit}' | sed -r 's/ metric [0-9]+//g; s/\/[0-9]+//g'"))); $gw6 = exec("ip -6 route show default dev ".escapeshellarg($port)." 2>/dev/null | awk '{print \$3;exit}'") ?: $note; $dns6 = array_filter($ns,function($ns){return strpos($ns,':') !== false;}); } echo ""; echo ""; if ($wlan0) { exec("iw wlan0 link | awk '/^\s+(SSID|freq|signal|[rt]x bitrate): /{print \$1,\$2,\$3,\$4}'", $speed); if (count($speed) == 5) { $network = explode(': ', $speed[0])[1]; $freq = explode(': ', $speed[1])[1]; $signal = explode(': ', $speed[2])[1]; $rxrate = explode(': ', $speed[3])[1]; $txrate = explode(': ', $speed[4])[1]; $rxrate = normalizeBitrate($rxrate); $txrate = normalizeBitrate($txrate); $tmp = '/var/tmp/attr'; $band = []; $attr = is_readable($tmp) ? (array)parse_ini_file($tmp,true) : []; $freq = explode(' ', $attr[$network]['ATTR4'] ?: $freq); foreach ($freq as $number) { $number = intval($number); switch (true) { case ($number >= 2400 && $number < 2500): $id = '2.4G'; break; case ($number >= 5000 && $number < 6000): $id = '5G'; break; case ($number >= 6000 && $number < 7000): $id = '6G'; break; } if (!in_array($id, $band)) $band[] = $id; } sort($band); $band = '('.implode(', ', $band).')'; } else { $network = $signal = $rxrate = $txrate = _('Unknown'); $band = ''; } echo ""; echo ""; echo ""; echo ""; } else { $link = _(ucfirst(exec("ethtool ".escapeshellarg($eth)." 2>/dev/null | awk '$1==\"Link\" {print $3;exit}'")) ?: 'Unknown')." ("._(exec("ethtool ".escapeshellarg($eth)." 2>/dev/null | grep -Pom1 '^\s+Port: \K.*'") ?: 'not present').")"; $speed = _(preg_replace(['/^(\d+)/','/!/'],['$1 ',''],exec("ethtool ".escapeshellarg($eth)." 2>/dev/null | awk '$1==\"Speed:\" {print $2;exit}'")) ?: 'Unknown'); echo ""; echo ""; } if (count($ipv4)) foreach ($ipv4 as $ip) { echo ""; } else { echo ""; } echo ""; if (count($dns4)) foreach ($dns4 as $dns) { echo ""; } else { echo ""; } if ($v6on) { if (count($ipv6)) foreach ($ipv6 as $ip) { echo ""; } else { echo ""; } echo ""; if (count($dns6)) foreach ($dns6 as $dns) { echo ""; } else { echo ""; } } echo "
  
"._('Network name').":$network $band
"._('Signal level').":$signal
"._('Receive bitrate').":$rxrate
"._('Transmit bitrate').":$txrate
"._('Interface link').":$link
"._('Interface speed').":$speed
"._('IPv4 address').":$ip
"._('IPv4 address').":$note
"._('IPv4 default gateway').":$gw4
"._('IPv4 DNS server').":$dns
"._('IPv4 DNS server').":$error
"._('IPv6 address').":$ip
"._('IPv6 address').":$note
"._('IPv6 default gateway').":$gw6
"._('IPv6 DNS server').":$dns
"._('IPv6 DNS server').":$error
"; ?>