<?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($fp49);
        
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($server37);

    
//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>