From c56d07dc720188d8fec162eabf9394e362868a9d Mon Sep 17 00:00:00 2001 From: nagyrobi Date: Tue, 18 Feb 2014 15:19:08 +0100 Subject: Update status_ntpd.php A bit more informative NTP status page... --- usr/local/www/status_ntpd.php | 183 ++++++++++++++++++++++++++++-------------- 1 file changed, 121 insertions(+), 62 deletions(-) (limited to 'usr/local') diff --git a/usr/local/www/status_ntpd.php b/usr/local/www/status_ntpd.php index f7292c7..c2a75ae 100644 --- a/usr/local/www/status_ntpd.php +++ b/usr/local/www/status_ntpd.php @@ -4,6 +4,7 @@ status_ntpd.php part of pfSense (http://www.pfsense.com/) + Copyright (C) 2013 Dagorlad Copyright (C) 2012 Jim Pingle All rights reserved. @@ -42,72 +43,115 @@ require_once("guiconfig.inc"); -exec("/usr/local/sbin/ntpq -pn | /usr/bin/tail +3", $ntpq_output); +if(!isset($config['ntpd']['noquery'])) { -$ntpq_servers = array(); -foreach ($ntpq_output as $line) { - $server = array(); + exec("/usr/local/sbin/ntpq -pn | /usr/sbin/tail +3", $ntpq_output); - switch (substr($line, 0, 1)) { - case " ": - $server['status'] = "Unreach/Pending"; - break; - case "*": - $server['status'] = "Active Peer"; - break; - case "+": - $server['status'] = "Candidate"; - break; - case "o": - $server['status'] = "PPS Peer"; - break; - case "#": - $server['status'] = "Selected"; - break; - case ".": - $server['status'] = "Excess Peer"; - break; - case "x": - $server['status'] = "False Ticker"; - break; - case "-": - $server['status'] = "Outlier"; - break; + $ntpq_servers = array(); + foreach ($ntpq_output as $line) { + $server = array(); + + switch (substr($line, 0, 1)) { + case " ": + $server['status'] = "Unreach/Pending"; + break; + case "*": + $server['status'] = "Active Peer"; + break; + case "+": + $server['status'] = "Candidate"; + break; + case "o": + $server['status'] = "PPS Peer"; + break; + case "#": + $server['status'] = "Selected"; + break; + case ".": + $server['status'] = "Excess Peer"; + break; + case "x": + $server['status'] = "False Ticker"; + break; + case "-": + $server['status'] = "Outlier"; + break; + } + + $line = substr($line, 1); + $peerinfo = preg_split("/[\s\t]+/", $line); + + $server['server'] = $peerinfo[0]; + $server['refid'] = $peerinfo[1]; + $server['stratum'] = $peerinfo[2]; + $server['type'] = $peerinfo[3]; + $server['when'] = $peerinfo[4]; + $server['poll'] = $peerinfo[5]; + $server['reach'] = $peerinfo[6]; + $server['delay'] = $peerinfo[7]; + $server['offset'] = $peerinfo[8]; + $server['jitter'] = $peerinfo[9]; + + $ntpq_servers[] = $server; + } + + exec("/usr/local/sbin/ntpq -c clockvar", $ntpq_clockvar_output); + foreach ($ntpq_clockvar_output as $line) { + if (substr($line, 0, 9) == "timecode=") { + $tmp = explode('"', $line); + $tmp = $tmp[1]; + if (substr($tmp, 0, 6) == '$GPRMC') { + $gps_vars = explode(",", $tmp); + $gps_ok = ($gps_vars[2] == "A"); + $gps_lat_deg = substr($gps_vars[3], 0, 2); + $gps_lat_min = substr($gps_vars[3], 2) / 60.0; + $gps_lon_deg = substr($gps_vars[5], 0, 3); + $gps_lon_min = substr($gps_vars[5], 3) / 60.0; + $gps_lat = $gps_lat_deg + $gps_lat_min; + $gps_lat = $gps_lat * (($gps_vars[4] == "N") ? 1 : -1); + $gps_lon = $gps_lon_deg + $gps_lon_min; + $gps_lon = $gps_lon * (($gps_vars[6] == "E") ? 1 : -1); + }elseif (substr($tmp, 0, 6) == '$GPGGA') { + $gps_vars = explode(",", $tmp); + $gps_ok = $gps_vars[6]; + $gps_lat_deg = substr($gps_vars[2], 0, 2); + $gps_lat_min = substr($gps_vars[2], 2) / 60.0; + $gps_lon_deg = substr($gps_vars[4], 0, 3); + $gps_lon_min = substr($gps_vars[4], 3) / 60.0; + $gps_lat = $gps_lat_deg + $gps_lat_min; + $gps_lat = $gps_lat * (($gps_vars[3] == "N") ? 1 : -1); + $gps_lon = $gps_lon_deg + $gps_lon_min; + $gps_lon = $gps_lon * (($gps_vars[5] == "E") ? 1 : -1); + $gps_alt = $gps_vars[9]; + $gps_alt_unit = $gps_vars[10]; + $gps_sat = $gps_vars[7]; + }elseif (substr($tmp, 0, 6) == '$GPGLL') { + $gps_vars = explode(",", $tmp); + $gps_ok = ($gps_vars[6] == "A"); + $gps_lat_deg = substr($gps_vars[1], 0, 2); + $gps_lat_min = substr($gps_vars[1], 2) / 60.0; + $gps_lon_deg = substr($gps_vars[3], 0, 3); + $gps_lon_min = substr($gps_vars[3], 3) / 60.0; + $gps_lat = $gps_lat_deg + $gps_lat_min; + $gps_lat = $gps_lat * (($gps_vars[2] == "N") ? 1 : -1); + $gps_lon = $gps_lon_deg + $gps_lon_min; + $gps_lon = $gps_lon * (($gps_vars[4] == "E") ? 1 : -1); + } + } } - $line = substr($line, 1); - $peerinfo = preg_split("/[\s\t]+/", $line); - - $server['server'] = $peerinfo[0]; - $server['refid'] = $peerinfo[1]; - $server['stratum'] = $peerinfo[2]; - $server['type'] = $peerinfo[3]; - $server['when'] = $peerinfo[4]; - $server['poll'] = $peerinfo[5]; - $server['reach'] = $peerinfo[6]; - $server['delay'] = $peerinfo[7]; - $server['offset'] = $peerinfo[8]; - $server['jitter'] = $peerinfo[9]; - - $ntpq_servers[] = $server; } -exec("/usr/local/sbin/ntpq -c clockvar", $ntpq_clockvar_output); -foreach ($ntpq_clockvar_output as $line) { - if (substr($line, 0, 9) == "timecode=") { - $tmp = explode('"', $line); - $tmp = $tmp[1]; - if (substr($tmp, 0, 6) == '$GPRMC') { - $gps_vars = explode(",", $tmp); - $gps_ok = ($gps_vars[2] == "A"); - $gps_lat_deg = substr($gps_vars[3], 0, 2); - $gps_lat_min = substr($gps_vars[3], 2) / 60.0; - $gps_lon_deg = substr($gps_vars[5], 0, 3); - $gps_lon_min = substr($gps_vars[5], 3) / 60.0; - $gps_lat = $gps_lat_deg + $gps_lat_min; - $gps_lat = $gps_lat * (($gps_vars[4] == "N") ? 1 : -1); - $gps_lon = $gps_lon_deg + $gps_lon_min; - $gps_lon = $gps_lon * (($gps_vars[6] == "E") ? 1 : -1); +if (isset($config['ntpd']['gps']['type']) && ($config['ntpd']['gps']['type'] == 'SureGPS') && (isset($gps_ok))) { + //GSV message is only enabled by init commands in services_ntpd_gps.php for SureGPS board + $gpsport = fopen("/dev/gps0", "r+"); + while($gpsport){ + $buffer = fgets($gpsport); + if(substr($buffer, 0, 6)=='$GPGSV'){ + //echo $buffer."\n"; + $gpgsv = explode(',',$buffer); + $gps_satview = $gpgsv[3]; + break; } } } @@ -140,7 +184,11 @@ include("head.inc"); - + + + Statistics unavailable because ntpq and ntpdc queries are disabled in the NTP service settings. + + No peers found, is the ntp service running?. @@ -185,20 +233,31 @@ include("head.inc"); + + '.gettext("Clock Altitude").''; $gps_goo_lnk++;}?> + '.gettext("Satellites").''; $gps_goo_lnk++;}?> + '.$gps_alt.' '.$gps_alt_unit.'';}?> + - +
(° ) (° ) + +
Google Maps LinkGoogle Maps Link
-- cgit v1.1