mirror of https://github.com/nostar/urfd.git
Ported (go/gin) json api from gomrefdash (https://github.com/kc1awv/gomrefdash) to (php/apache) urfd dashboard. This provides consistency between mrefd and urfd reflector dashboards and is intended to accelerate integration with dvref.com for an official URFD reflector registry. Updated dashboard version to 2.5.0 to help reflector admins determine compatibility with eventual dvref.com integration (>= 2.5.0). It has been extensively tested and is currently running on https://urf847.kk7mnz.com/json/reflector dvref.com integration has been tested at https://dvref.com/mrefd/m17-847pull/3/head
parent
6aa57a784d
commit
72a0a337f6
@ -0,0 +1,6 @@
|
||||
RewriteEngine On
|
||||
RewriteBase /json/
|
||||
RewriteRule ^index\\.php$ - [L]
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteRule . /json/index.php [L]
|
||||
@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
header("Access-Control-Allow-Origin: *");
|
||||
header('Content-Type: application/json');
|
||||
|
||||
date_default_timezone_set("UTC");
|
||||
|
||||
if (file_exists($_SERVER['DOCUMENT_ROOT'] . "/pgs/functions.php")) require_once($_SERVER['DOCUMENT_ROOT'] . "/pgs/functions.php");
|
||||
if (file_exists($_SERVER['DOCUMENT_ROOT'] . "/pgs/config.inc.php")) require_once($_SERVER['DOCUMENT_ROOT'] . "/pgs/config.inc.php");
|
||||
|
||||
if (!class_exists('ParseXML')) require_once($_SERVER['DOCUMENT_ROOT'] . "/pgs/class.parsexml.php");
|
||||
if (!class_exists('Node')) require_once($_SERVER['DOCUMENT_ROOT'] . "/pgs/class.node.php");
|
||||
if (!class_exists('xReflector')) require_once($_SERVER['DOCUMENT_ROOT'] . "/pgs/class.reflector.php");
|
||||
if (!class_exists('Station')) require_once($_SERVER['DOCUMENT_ROOT'] . "/pgs/class.station.php");
|
||||
if (!class_exists('Peer')) require_once($_SERVER['DOCUMENT_ROOT'] . "/pgs/class.peer.php");
|
||||
|
||||
$Reflector = new xReflector();
|
||||
$Reflector->SetXMLFile($Service['XMLFile']);
|
||||
$Reflector->SetPIDFile($Service['PIDFile']);
|
||||
$Reflector->LoadXML();
|
||||
$Reflector->SetFlagFile($_SERVER['DOCUMENT_ROOT'] . "/pgs/country.csv");
|
||||
$Reflector->LoadFlags();
|
||||
|
||||
$Request = $_SERVER['REQUEST_URI'];
|
||||
$ViewDir = '/views/';
|
||||
|
||||
switch ($Request) {
|
||||
case '/json/links':
|
||||
require __DIR__ . $ViewDir . 'links.php';
|
||||
break;
|
||||
|
||||
case '/json/metadata':
|
||||
require __DIR__ . $ViewDir . 'metadata.php';
|
||||
break;
|
||||
|
||||
case '/json/modulesinuse':
|
||||
require __DIR__ . $ViewDir . 'modulesinuse.php';
|
||||
break;
|
||||
|
||||
case '/json/peers':
|
||||
require __DIR__ . $ViewDir . 'peers.php';
|
||||
break;
|
||||
|
||||
case '/json/reflector':
|
||||
require __DIR__ . $ViewDir . 'reflector.php';
|
||||
break;
|
||||
|
||||
case '/json/stations':
|
||||
require __DIR__ . $ViewDir . 'stations.php';
|
||||
break;
|
||||
|
||||
case '/json/status':
|
||||
require __DIR__ . $ViewDir . 'status.php';
|
||||
break;
|
||||
|
||||
default:
|
||||
header('Content-Type: text/plain');
|
||||
http_response_code(404);
|
||||
echo('404 page not found');
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
/*** Add links to payload ***/
|
||||
for ($i=0;$i<$Reflector->NodeCount();$i++) {
|
||||
|
||||
// craft payload array
|
||||
$payload[$i] = array(
|
||||
'callsign' => $Reflector->Nodes[$i]->GetCallSign() . ' ' . $Reflector->Nodes[$i]->GetSuffix(),
|
||||
'ip' => $Reflector->Nodes[$i]->GetIP(),
|
||||
'linkedmodule' => $Reflector->Nodes[$i]->GetLinkedModule(),
|
||||
'protocol' => $Reflector->Nodes[$i]->GetProtocol(),
|
||||
'connecttime' => date('Y-m-d\TH:i:sp', $Reflector->Nodes[$i]->GetConnectTime()),
|
||||
'lastheardtime' => date('Y-m-d\TH:i:sp', $Reflector->Nodes[$i]->GetLastHeardTime())
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
|
||||
// json encode payload array
|
||||
$records = json_encode($payload);
|
||||
|
||||
echo $records;
|
||||
|
||||
?>
|
||||
@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
$Url = @parse_url($CallingHome['MyDashBoardURL']);
|
||||
$Net4 = @dns_get_record($Url['host'], DNS_A);
|
||||
$Net6 = @dns_get_record($Url['host'], DNS_AAAA);
|
||||
|
||||
/*** add metadata to payload ***/
|
||||
$payload = array(
|
||||
'dashboard_version' => $PageOptions['DashboardVersion'],
|
||||
'ipV4' => @$Net4[0]['ip'],
|
||||
'ipV6' => @$Net6[0]['ipv6'],
|
||||
'reflector_callsign' => str_replace("XLX", "URF", $Reflector->GetReflectorName()),
|
||||
'reflector_version' => $Reflector->GetVersion(),
|
||||
'sysop_email' => $PageOptions['ContactEmail']
|
||||
);
|
||||
|
||||
|
||||
// json encode payload array
|
||||
$records = json_encode($payload);
|
||||
|
||||
echo $records;
|
||||
|
||||
?>
|
||||
@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
$Modules = $Reflector->GetModules();
|
||||
sort($Modules, SORT_STRING);
|
||||
|
||||
|
||||
/*** Add modules to payload ***/
|
||||
for ($i=0;$i<count($Modules);$i++) {
|
||||
|
||||
$payload[$i] = array(
|
||||
'name' => $Modules[$i]
|
||||
);
|
||||
|
||||
$Users = $Reflector->GetNodesInModulesByID($Modules[$i]);
|
||||
|
||||
for ($j=0;$j<count($Users);$j++) {
|
||||
|
||||
$payload[$i]['callsigns'][$j] = $Reflector->GetCallsignAndSuffixByID($Users[$j]);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// json encode payload array
|
||||
$records = json_encode($payload);
|
||||
|
||||
echo $records;
|
||||
|
||||
?>
|
||||
@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
/*** Add links to payload ***/
|
||||
for ($i=0;$i<$Reflector->PeerCount();$i++) {
|
||||
|
||||
$payload[$i] = array(
|
||||
'callsign' => $Reflector->Peers[$i]->GetCallSign(),
|
||||
'ip' => $Reflector->Peers[$i]->GetIP(),
|
||||
'linkedmodule' => $Reflector->Peers[$i]->GetLinkedModule(),
|
||||
'connecttime' => date('Y-m-d\TH:i:sp', $Reflector->Peers[$i]->GetConnectTime()),
|
||||
'lastheardtime' => date('Y-m-d\TH:i:sp', $Reflector->Peers[$i]->GetLastHeardTime())
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
|
||||
// json encode payload array
|
||||
$records = json_encode($payload);
|
||||
|
||||
echo $records;
|
||||
|
||||
?>
|
||||
@ -0,0 +1,70 @@
|
||||
<?php
|
||||
|
||||
$Status = (file_exists($Service['PIDFile'])) ? 'up' : 'down';
|
||||
|
||||
$payload = array(
|
||||
'lastupdatechecktime' => date('Y-m-d\TH:i:sp', time()),
|
||||
'status' => $Status,
|
||||
'uptime' => $Reflector->GetServiceUptime()
|
||||
);
|
||||
|
||||
|
||||
/*** add data to payload ***/
|
||||
$payload['data'] = array(
|
||||
'filetime' => date('Y-m-d\TH:i:sp', filemtime($Service['XMLFile'])),
|
||||
'callsign' => str_replace("XLX", "URF", $Reflector->GetReflectorName()),
|
||||
'version' => $Reflector->GetVersion()
|
||||
);
|
||||
|
||||
|
||||
/*** Add peers to payload ***/
|
||||
for ($i=0;$i<$Reflector->PeerCount();$i++) {
|
||||
|
||||
$payload['data']['peers'][] = array(
|
||||
'callsign' => $Reflector->Peers[$i]->GetCallSign(),
|
||||
'ip' => $Reflector->Peers[$i]->GetIP(),
|
||||
'linkedmodule' => $Reflector->Peers[$i]->GetLinkedModule(),
|
||||
'connecttime' => date('Y-m-d\TH:i:sp', $Reflector->Peers[$i]->GetConnectTime()),
|
||||
'lastheardtime' => date('Y-m-d\TH:i:sp', $Reflector->Peers[$i]->GetLastHeardTime())
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*** Add nodes to payload ***/
|
||||
for ($i=0;$i<$Reflector->NodeCount();$i++) {
|
||||
|
||||
// craft payload array
|
||||
$payload['data']['nodes'][] = array(
|
||||
'callsign' => $Reflector->Nodes[$i]->GetCallSign() . ' ' . $Reflector->Nodes[$i]->GetSuffix(),
|
||||
'ip' => $Reflector->Nodes[$i]->GetIP(),
|
||||
'linkedmodule' => $Reflector->Nodes[$i]->GetLinkedModule(),
|
||||
'protocol' => $Reflector->Nodes[$i]->GetProtocol(),
|
||||
'connecttime' => date('Y-m-d\TH:i:sp', $Reflector->Nodes[$i]->GetConnectTime()),
|
||||
'lastheardtime' => date('Y-m-d\TH:i:sp', $Reflector->Nodes[$i]->GetLastHeardTime())
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*** Add stations to payload ***/
|
||||
for ($i=0;$i<$Reflector->StationCount();$i++) {
|
||||
|
||||
// craft payload array
|
||||
$payload['data']['stations'][] = array(
|
||||
'callsign' => $Reflector->Stations[$i]->GetCallSign(),
|
||||
'vianode' => $Reflector->Stations[$i]->GetVia(),
|
||||
'onmodule' => $Reflector->Stations[$i]->GetModule(),
|
||||
'viapeer' => $Reflector->Stations[$i]->GetPeer(),
|
||||
'lastheardtime' => date('Y-m-d\TH:i:sp', $Reflector->Stations[$i]->GetLastHeardTime())
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
|
||||
// json encode payload array
|
||||
$records = json_encode($payload);
|
||||
|
||||
echo $records;
|
||||
|
||||
?>
|
||||
@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
/*** Add stations to payload ***/
|
||||
for ($i=0;$i<$Reflector->StationCount();$i++) {
|
||||
|
||||
$tmp = preg_split('/\s+/', $Reflector->Stations[$i]->GetCallSign(), -1, PREG_SPLIT_NO_EMPTY);
|
||||
$Callsign = $tmp[0];
|
||||
|
||||
$tmp = preg_split('/\s+/', $Reflector->Stations[$i]->GetVia(), -1, PREG_SPLIT_NO_EMPTY);
|
||||
$CallsignSuffix = $tmp[1];
|
||||
|
||||
// craft payload array
|
||||
$payload['stations'][$i] = array(
|
||||
'callsign' => $Callsign,
|
||||
'callsignsuffix' => $CallsignSuffix,
|
||||
'vianode' => $Reflector->Stations[$i]->GetVia(),
|
||||
'onmodule' => $Reflector->Stations[$i]->GetModule(),
|
||||
'lastheard' => date('Y-m-d\TH:i:sp', $Reflector->Stations[$i]->GetLastHeardTime())
|
||||
);
|
||||
|
||||
list ($CountryCode, $Country) = $Reflector->GetFlag($Reflector->Stations[$i]->GetCallSign());
|
||||
|
||||
$payload['stations'][$i]['country'] = array (
|
||||
'country' => $Country,
|
||||
'countrycode' => $CountryCode
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
|
||||
// json encode payload array
|
||||
$records = json_encode($payload);
|
||||
|
||||
echo $records;
|
||||
|
||||
?>
|
||||
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
$ReflectorStatus = (file_exists($Service['PIDFile'])) ? 'up' : 'down';
|
||||
|
||||
$payload = array(
|
||||
'lastupdate' => date('U', time()),
|
||||
'lasturfdupdate' => date('U', filemtime($Service['XMLFile'])),
|
||||
'reflectorstatus' => $ReflectorStatus,
|
||||
'reflectoruptimeseconds' => $Reflector->GetServiceUptime()
|
||||
);
|
||||
|
||||
|
||||
// json encode payload array
|
||||
$records = json_encode($payload);
|
||||
|
||||
echo $records;
|
||||
|
||||
?>
|
||||
Loading…
Reference in new issue