0)
$configs[$key] = $value;
}
}
$progname = basename($_SERVER['SCRIPT_FILENAME'],".php");
$rev="20141101";
$MYCALL=strtoupper($callsign);
// Check if the config file exists
if (file_exists('/etc/pistar-css.ini')) {
// Use the values from the file
$piStarCssFile = '/etc/pistar-css.ini';
if (fopen($piStarCssFile,'r')) { $piStarCss = parse_ini_file($piStarCssFile, true); }
// Set the Values from the config file
if (isset($piStarCss['Lookup']['Service'])) { $callsignLookupSvc = $piStarCss['Lookup']['Service']; } // Lookup Service "QRZ" or "RadioID"
else { $callsignLookupSvc = "RadioID"; } // Set the default if its missing // Set the default if its missing
} else {
// Default values
$callsignLookupSvc = "RadioID";
}
// Safety net
if (($callsignLookupSvc != "RadioID") && ($callsignLookupSvc != "QRZ")) { $callsignLookupSvc = "RadioID"; }
// Setup the URL(s)
if ($callsignLookupSvc == "RadioID") { $callsignLookupUrl = "https://database.radioid.net/database/view?callsign="; }
if ($callsignLookupSvc == "QRZ") { $callsignLookupUrl = "https://www.qrz.com/db/"; }
?>
| () |
|
|
RPT 1 |
RPT 2 |
/tmp/lastheard.log) 2>&1 &');
$ci = 0;
if ($LastHeardLog = fopen("/tmp/lastheard.log",'r')) {
while ($linkLine = fgets($LastHeardLog)) {
if(preg_match_all('/^(.{19}).*My: (.*).*Your: (.*).*Rpt1: (.*).*Rpt2: (.*).*Flags: (.*)$/',$linkLine,$linx) > 0){
$ci++;
if($ci > 1) { $ci = 0; }
$QSODate = date("d-M-Y H:i:s", strtotime(substr($linx[1][0],0,19)));
// Every value below is parsed out of /var/log/pi-star/Headers.log
// — log lines produced by RF traffic, where the
// transmitting station sets the callsign field. Without
// escaping, a hostile callsign lands in the dashboard's
// ~3 second AJAX refresh. Normalise once here so each
// echo below works on safe values.
//
// $myCallRaw — raw 8-char callsign window
// $myCallHtml — HTML-safe display form
// $myCallLink — first whitespace-delimited token (the
// callsign without the space-padded
// suffix) — used for href URLs
// $myCallLinkHtml / $myCallLinkUrl — the URL forms
// $myIdHtml — 4-char ID after the `/` (HTML-safe)
// $yourCallHtml / $rpt1Html / $rpt2Html — target +
// repeaters with ` ` substitution applied AFTER
// escaping so the literal entity isn't double-encoded.
$myCallRaw = str_replace(' ', '', substr($linx[2][0],0,8));
$myCallHtml = htmlspecialchars($myCallRaw, ENT_QUOTES, 'UTF-8');
$myCallLink = strtok(substr($linx[2][0],0,8), " ");
$myCallLinkUrl = rawurlencode((string)$myCallLink);
$myIdHtml = htmlspecialchars(str_replace(' ', '', substr($linx[2][0],9,4)), ENT_QUOTES, 'UTF-8');
$yourCallHtml = str_replace(' ', ' ',
htmlspecialchars(substr($linx[3][0],0,8), ENT_QUOTES, 'UTF-8'));
$rpt1Html = str_replace(' ', ' ',
htmlspecialchars(substr($linx[4][0],0,8), ENT_QUOTES, 'UTF-8'));
$rpt2Html = str_replace(' ', ' ',
htmlspecialchars(substr($linx[5][0],0,8), ENT_QUOTES, 'UTF-8'));
$utc_time = $QSODate;
$utc_tz = new DateTimeZone('UTC');
$local_tz = new DateTimeZone(date_default_timezone_get ());
$dt = new DateTime($utc_time, $utc_tz);
$dt->setTimeZone($local_tz);
$local_time = $dt->format('H:i:s M jS');
print "";
print "| $local_time | ";
print " | "; }
else { print " "; }
print "$yourCallHtml | ";
print "$rpt1Html | ";
print "$rpt2Html | ";
print "
\n";
}
}
fclose($LastHeardLog);
}
?>