<?php
include('MyFuncations.php'); // Include the fuctions that are needed to make this page work.
SendHeaders();
CheckForToDos();
$favicon = "/PeaceBow.jpg";
?><!DOCTYPE html><html lang="en"><head>
<title>Time Protocol | NetworkStuff . net</title>
<link rel="shortcut icon" href="<?php echo $favicon; ?>" type="image/x-icon">
<?php include('head-for-bootstrap_fa.php'); ?>
<style>
body { color:black; font-family:"Trebuchet MS", Arial, Helvetica; line-height: 1.0; }
i { /* color:darkorange; font-weight:600 */ }
form { margin-block-end: 0em; }
</style>
</head>
<body>
<?php include('header.php'); ?>
<div class="container">
<?php
$timestamp = time();
$datum = date("Y-m-d (D) H:i:s [U]",$timestamp);
echo "<div class=\"container\">";
echo "<h1>NTP - Port 37</h1>";
echo "<h2>(Time Protocol)</h2>";
echo "<div class='card-deck'>";
echo '<div class="card border-info mb-3" style="max-width: 18rem;">
<div class="card-header bg-transparent border-info"><b>Server</b> : <kbd>'.$httphost.'</kbd></div>
<div class="card-body text-info">
<h5 class="card-title">'.$timestamp.'</h5>
<p class="card-text">'.date("Y-m-d (D) H:i:s",$timestamp).'</p>
</div>
<div class="card-footer bg-info border-info text-center">time()</div>
</div>';
/* Query a time server (C) 1999-09-29, Ralf D. Kloth (QRQ.software) <ralf at qrq.de> */
function query_time_server ($timeserver, $socket)
{
$fp = @fsockopen($timeserver,$socket,$err,$errstr,5);
# parameters: server, socket, error code, error text, timeout
if($fp)
{
fputs($fp, "\n");
$timevalue = fread($fp, 49);
fclose($fp); # close the connection
}
else
{
$timevalue = " ";
}
$ret = array();
$ret[] = $timevalue;
$ret[] = $err; # error code
$ret[] = $errstr; # error text
return($ret);
} # function query_time_server
$server = "pool.ntp.org"; ## Does not respond to port 37;
$server = "time.apple.com"; ## Does not respond to port 37;
$server = "time-nist.symmetricom.com"; ## Does not respond to port 37;
$server = "time.windows.com"; ## Does not respond to port 37;
$server = "nisttime.carsoncity.k12.mi.us"; ## FAILS Lookup;
$server = "ntp.pads.ufrj.br"; ## (Port 37) Time Protocol WORKS;
$server = "tick.ucla.edu"; ## (Port 37) Time Protocol WORKS;
// $server = "time-c.timefreq.bldrdoc.gov"; ## (Port 37) Time Protocol WORKS;
// $server = "time.nist.gov"; ## (Port 37) Time Protocol WORKS;
$timercvd = query_time_server($server, 37);
//if no error from query_time_server
if(!$timercvd[1])
{
$timevalue = bin2hex($timercvd[0]);
$timevalue = abs(HexDec('7fffffff') - HexDec($timevalue) - HexDec('7fffffff'));
$tmestamp = $timevalue - 2208988800; # convert to UNIX epoch time stamp
$datum = date("Y-m-d (D) H:i:s",$tmestamp - date("Z",$tmestamp)); /* incl time zone offset */
$doy = (date("z",$tmestamp)+1);
echo '<div class="card border-primary mb-3" style="max-width: 18rem;">
<div class="card-header bg-transparent border-primary"><b>Server</b> : <kbd>'.$server.'</kbd></div>
<div class="card-body text-primary">
<h5 class="card-title">'.$timevalue.'</h5>
<p class="card-text">Seconds since 1900-01-01 00:00.00</p>
</div>
<div class="card-footer bg-primary border-primary text-center">Time Protocol</div>
</div>';
// echo "Time check from time server ",$server," : [<font color=\"red\">",$timevalue,"</font>]";
// echo "The current date and universal time is ",$datum," UTC. ";
// echo " It is day ",$doy," of this year.<br>\n";
// echo " The unix epoch time stamp is $tmestamp.<br>\n";
// echo date("d/m/Y H:i:s", $tmestamp);
}
else
{
echo '<div class="card border-danger mb-3" style="max-width: 18rem;">
<div class="card-header bg-transparent border-danger"><b>Server</b> : <kbd>'.$server.'</kbd></div>
<div class="card-body text-danger">
<h5 class="card-title">Connection FAILED.</h5>
<p class="card-text">'.$timercvd[1].' = '.$timercvd[2].'</p>
</div>
<div class="card-footer bg-danger border-danger text-center">Daytime Protocol</div>
</div>';
# echo "Unfortunately, the time server [$timeserver] could not be reached at this time. ";
# echo "$timercvd[1] $timercvd[2].<br>\n";
}
echo '<div class="card border-default mb-3" style="max-width: 18rem;">
<div class="card-header bg-transparent border-default"><b>Server</b> : <kbd>'.$server.'</kbd></div>
<div class="card-body text-default">
<h5 class="card-title">'.$tmestamp.'</h5>
<p class="card-text">Unix epoch time stamp:<br>'.date("Y-m-d (D) H:i:s",$tmestamp).'</p>
</div>
<div class="card-footer bg-default border-default text-center">Time Protocol</div>
</div>';
$offset = $timestamp - $tmestamp;
$sign = "";
$msg = "";
if ($offset==0) { $color="success"; $msg = " <b>Within a second</b> of time server."; }
if ($offset<0) { $color="danger"; $msg = " <b>$httphost</b> is behind time server."; }
if ($offset>0) { $color="wanring"; $sign="+"; $msg = " $httphost is ahead of time server."; }
echo '<div class="card border-'.$color.' mb-3 " style="max-width: 18rem;">
<div class="card-header bg-transparent border-'.$color.' text-center"><b>Offset</b></div>
<div class="card-body text-'.$color.'">
<h5 class="card-title">'.$sign.$offset.'</h5>
<p class="card-text">'.$msg.'</p>
</div>
<div class="text-white card-footer bg-'.$color.' border-'.$color.' text-center">Time Protocol</div>
</div>';
echo "</div>";
echo "<b>Time Protocol</b><a href=\"https://en.wikipedia.org/wiki/Time_Protocol\" target='_blank'><sup><i class=\"fas fa-external-link-alt\"></i></sup></a> on port 37.<br><br>";
echo "</div>";
include('copyright.php');
echo "</div>";
include("footer.php");
?>
</body></html>