%PDF- %PDF-
| Direktori : /proc/thread-self/root/backups/router/usr/local/www/ |
| Current File : //proc/thread-self/root/backups/router/usr/local/www/status_ntpd.php |
<?php
/*
* Copyright (C) 2014-2016 Deciso B.V.
* Copyright (C) 2013 Dagorlad
* Copyright (C) 2012 Jim Pingle <jimp@pfsense.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
* OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
require_once("guiconfig.inc");
require_once("interfaces.inc");
exec("/usr/local/sbin/ntpq -pnw | /usr/bin/tail +3", $ntpq_output);
$ntpq_servers = array();
$server = array();
foreach ($ntpq_output as $line) {
$status = gettext('Unknown');
switch (substr($line, 0, 1)) {
case ' ':
$status = gettext('Unreach/Pending');
break;
case '*':
$status = gettext('Active Peer');
break;
case '+':
$status = gettext('Candidate');
break;
case 'o':
$status = gettext('PPS Peer');
break;
case '#':
$status = gettext('Selected');
break;
case '.':
$status = gettext('Excess Peer');
break;
case 'x':
$status = gettext('False Ticker');
break;
case '-':
$status = gettext('Outlier');
break;
}
if (empty($server['status'])) {
$server['status'] = $status;
}
$line = substr($line, 1);
$peerinfo = preg_split('/\s+/', $line);
if (empty($server['server'])) {
$server['server'] = $peerinfo[0];
}
if (empty($peerinfo[1])) {
continue;
}
$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;
$server = array();
}
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];
$gps_vars = explode(',', $tmp);
if (substr($tmp, 0, 6) == '$GPRMC') {
if (is_numeric($gps_vars[3]) && is_numeric($gps_vars[5])) {
list ($gps_lat_deg, $gps_lat_min) = explode('.', $gps_vars[3]);
$gps_lat_min = substr($gps_lat_deg, -2) .".". $gps_lat_min;
$gps_lat_deg = substr($gps_lat_deg, 0, strlen($gps_lat_deg) - 2);
$gps_lat_min /= 60.0;
$gps_lat = $gps_lat_deg + $gps_lat_min;
$gps_lat_dir = $gps_vars[4];
$gps_lat = $gps_lat * ($gps_lat_dir == 'N' ? 1 : -1);
list ($gps_lon_deg, $gps_lon_min) = explode('.', $gps_vars[5]);
$gps_lon_min = substr($gps_lon_deg, -2) .".". $gps_lon_min;
$gps_lon_deg = substr($gps_lon_deg, 0, strlen($gps_lon_deg) - 2);
$gps_lon_min /= 60.0;
$gps_lon = $gps_lon_deg + $gps_lon_min;
$gps_lon_dir = $gps_vars[6];
$gps_lon = $gps_lon * ($gps_lon_dir == 'E' ? 1 : -1);
}
$gps_ok = $gps_vars[2] == 'A';
} elseif (substr($tmp, 0, 6) == '$GPGGA') {
if (is_numeric($gps_vars[2]) && is_numeric($gps_vars[4])) {
list ($gps_lat_deg, $gps_lat_min) = explode('.', $gps_vars[2]);
$gps_lat_min = substr($gps_lat_deg, -2) .".". $gps_lat_min;
$gps_lat_deg = substr($gps_lat_deg, 0, strlen($gps_lat_deg) - 2);
$gps_lat_min /= 60.0;
$gps_lat = $gps_lat_deg + $gps_lat_min;
$gps_lat_dir = $gps_vars[3];
$gps_lat = $gps_lat * ($gps_lat_dir == 'N' ? 1 : -1);
list ($gps_lon_deg, $gps_lon_min) = explode('.', $gps_vars[4]);
$gps_lon_min = substr($gps_lon_deg, -2) .".". $gps_lon_min;
$gps_lon_deg = substr($gps_lon_deg, 0, strlen($gps_lon_deg) - 2);
$gps_lon_min /= 60.0;
$gps_lon = $gps_lon_deg + $gps_lon_min;
$gps_lon_dir = $gps_vars[5];
$gps_lon = $gps_lon * ($gps_lon_dir == 'E' ? 1 : -1);
}
$gps_ok = $gps_vars[6];
$gps_alt = $gps_vars[9];
$gps_alt_unit = $gps_vars[10];
$gps_sat = $gps_vars[7];
} elseif (substr($tmp, 0, 6) == '$GPGLL') {
if (is_numeric($gps_vars[1]) && is_numeric($gps_vars[3])) {
list ($gps_lat_deg, $gps_lat_min) = explode('.', $gps_vars[1]);
$gps_lat_min = substr($gps_lat_deg, -2) .".". $gps_lat_min;
$gps_lat_deg = substr($gps_lat_deg, 0, strlen($gps_lat_deg) - 2);
$gps_lat_min /= 60.0;
$gps_lat = $gps_lat_deg + $gps_lat_min;
$gps_lat_dir = $gps_vars[2];
$gps_lat = $gps_lat * ($gps_lat_dir == 'N' ? 1 : -1);
list ($gps_lon_deg, $gps_lon_min) = explode('.', $gps_vars[3]);
$gps_lon_min = substr($gps_lon_deg, -2) .".". $gps_lon_min;
$gps_lon_deg = substr($gps_lon_deg, 0, strlen($gps_lon_deg) - 2);
$gps_lon_min /= 60.0;
$gps_lon = $gps_lon_deg + $gps_lon_min;
$gps_lon_dir = $gps_vars[4];
$gps_lon = $gps_lon * ($gps_lon_dir == 'E' ? 1 : -1);
}
$gps_ok = $gps_vars[6] == 'A';
}
}
}
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') {
$gpgsv = explode(',',$buffer);
$gps_satview = $gpgsv[3];
break;
}
}
}
$service_hook = 'ntpd';
include("head.inc");
?>
<body>
<?php include("fbegin.inc"); ?>
<section class="page-content-main">
<div class="container-fluid">
<div class="row">
<section class="col-xs-12">
<div class="content-box">
<header class="content-box-head container-fluid">
<h3><?=gettext("Network Time Protocol Status");?></h3>
</header>
<div class="table-responsive">
<table class="table table-striped">
<thead>
<tr>
<th><?=gettext("Status"); ?></th>
<th><?=gettext("Server"); ?></th>
<th><?=gettext("Ref ID"); ?></th>
<th><?=gettext("Stratum"); ?></th>
<th><?=gettext("Type"); ?></th>
<th><?=gettext("When"); ?></th>
<th><?=gettext("Poll"); ?></th>
<th><?=gettext("Reach"); ?></th>
<th><?=gettext("Delay"); ?></th>
<th><?=gettext("Offset"); ?></th>
<th><?=gettext("Jitter"); ?></th>
</tr>
</thead>
<tbody>
<?php
if (count($ntpq_servers) == 0): ?>
<tr>
<td colspan="11">
<?= gettext('No peers found.') ?>
</td>
</tr>
<?php
else:
$i = 0;
foreach ($ntpq_servers as $server): ?>
<tr>
<td><?=$server['status'];?></td>
<td><?=$server['server'];?></td>
<td><?=$server['refid'];?></td>
<td><?=$server['stratum'];?></td>
<td><?=$server['type'];?></td>
<td><?=$server['when'];?></td>
<td><?=$server['poll'];?></td>
<td><?=$server['reach'];?></td>
<td><?=$server['delay'];?></td>
<td><?=$server['offset'];?></td>
<td><?=$server['jitter'];?></td>
</tr>
<?php
$i++;
endforeach;
endif; ?>
</tbody>
</table>
<?php
if (isset($gps_ok)):
$gps_goo_lnk = 2; ?>
<table class="table table-striped">
<thead>
<tr>
<th><?=gettext("Clock Latitude"); ?></th>
<th><?=gettext("Clock Longitude"); ?></th>
<?php if (isset($gps_alt)) { echo '<th>' . gettext("Clock Altitude") . '</th>'; $gps_goo_lnk++;}?>
<?php if (isset($gps_sat) || isset($gps_satview)) { echo '<th>' . gettext("Satellites") . '</th>'; $gps_goo_lnk++;}?>
</tr>
</thead>
<tbody>
<tr>
<?php if (isset($gps_lat)): ?>
<td><?= sprintf("%.5f", $gps_lat); ?> (<?= sprintf("%d", $gps_lat_deg); ?>° <?= sprintf("%.5f", $gps_lat_min*60); ?><?= $gps_lat_dir ?>)</td>
<?php else: ?>
<td><?= gettext('N/A') ?></td>
<?php endif ?>
<?php if (isset($gps_lon)): ?>
<td><?= sprintf("%.5f", $gps_lon); ?> (<?= sprintf("%d", $gps_lon_deg); ?>° <?= sprintf("%.5f", $gps_lon_min*60); ?><?= $gps_lon_dir ?>)</td>
<?php else: ?>
<td><?= gettext('N/A') ?></td>
<?php endif ?>
<?php if (isset($gps_alt)) { echo '<td>' . $gps_alt . ' ' . $gps_alt_unit . '</td>';}?>
<td>
<?php
if (isset($gps_satview)) {echo 'in view ' . intval($gps_satview);}
if (isset($gps_sat) && isset($gps_satview)) {echo ', ';}
if (isset($gps_sat)) {echo 'in use ' . $gps_sat;}
?>
</td>
</tr>
<?php if (isset($gps_lon) && isset($gps_lat)): ?>
<tr>
<td colspan="<?= html_safe($gps_goo_lnk) ?>"><a target="_gmaps" href="https://maps.google.com/?q=<?= html_safe($gps_lat) ?>,<?= html_safe($gps_lon) ?>">Google Maps Link</a></td>
</tr>
<?php endif ?>
</tbody>
</table>
<?php
endif; ?>
</div>
</div>
</section>
</div>
</div>
</section>
<?php include("foot.inc"); ?>