Compare commits
25 commits
340987c190
...
2bb6439bb0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2bb6439bb0 | ||
|
|
bf7031eabd | ||
|
|
831ec59024 | ||
|
|
2e8149c5dc | ||
|
|
16decd0bdb | ||
|
|
0ee16ba6b1 | ||
|
|
dc7cafaf4a | ||
|
|
5d510bc00d | ||
|
|
7455ef8729 | ||
|
|
1bd2b85c16 | ||
|
|
37a79a95a0 | ||
|
|
7176e44386 | ||
|
|
a6124be499 | ||
|
|
6644f3493c | ||
|
|
57b0a10705 | ||
|
|
7356127c85 | ||
|
|
b7d17ee3b3 | ||
|
|
e6de34a701 | ||
|
|
1c241339bf | ||
|
|
c42b927cdb | ||
|
|
e11754a4e0 | ||
|
|
ee3f5de1de | ||
|
|
32c3241de0 | ||
|
|
80821c25a3 | ||
|
|
61204c3ed4 |
1
.gitignore
vendored
|
|
@ -2,3 +2,4 @@
|
|||
src/xlxd
|
||||
ambed/ambed
|
||||
ambedtest/ambedtest
|
||||
.DS_Store
|
||||
|
|
|
|||
|
|
@ -1,169 +0,0 @@
|
|||
xlx db v2.4.1
|
||||
|
||||
you can now hide the liveircddb menu button, if you are running your db in https.
|
||||
|
||||
- "config.inc.php
|
||||
- "index.php"
|
||||
|
||||
xlx db v2.4.0
|
||||
|
||||
- "config.inc.php"
|
||||
- "index.php"
|
||||
- "js"
|
||||
- "layout.css"
|
||||
|
||||
xlx db v2.3.9
|
||||
|
||||
redesign for the callinghome.php
|
||||
|
||||
- "config.inc.php"
|
||||
- "index.php"
|
||||
- "functions.php"
|
||||
|
||||
xlx db v2.3.8
|
||||
|
||||
add support for network traffic statistics via vnstat.
|
||||
|
||||
- "config.inc.php"
|
||||
- "index.php"
|
||||
- "functions.php"
|
||||
|
||||
add traffic.php
|
||||
|
||||
xlx db v2.3.7
|
||||
|
||||
add background color change on active page.
|
||||
|
||||
- "config.inc.php"
|
||||
- "layout.css"
|
||||
- "index.php"
|
||||
|
||||
xlx db v2.3.6
|
||||
|
||||
add xlx reflector version to calling home.
|
||||
|
||||
- "config.inc.php"
|
||||
- "class.reflector.php"
|
||||
|
||||
xlx db v2.3.5
|
||||
|
||||
now the page refresh is now suspended until you leave the filte fields.
|
||||
|
||||
- "index.php"
|
||||
- "users.php"
|
||||
- "config.inc.php"
|
||||
|
||||
xlx db v2.3.4
|
||||
|
||||
add filter function to the dashboard. It can be enabled or disabled via the config.inc.php
|
||||
|
||||
- "index.php"
|
||||
- "users.php"
|
||||
- "config.inc.php" $PageOptions['UserPage']['ShowFilter'] added
|
||||
- "layout.css"
|
||||
|
||||
xlx db v2.3.3
|
||||
|
||||
now displays always the correct module for the last heard station.
|
||||
db v2.3.3 requires xlxd v1.4.1
|
||||
|
||||
- "class.station.php"
|
||||
- "class.reflector.php"
|
||||
- "users.php"
|
||||
|
||||
xlx db v2.3.2
|
||||
|
||||
add random id for nodes, to show the correct linked module for multiple nodes with
|
||||
the same call signe linked to different modules.
|
||||
|
||||
- "class.node.php"
|
||||
- "class.reflector.php"
|
||||
- "users.php"
|
||||
|
||||
xlx db v2.3.1
|
||||
|
||||
- "config.inc.php" $CallingHome['InterlinkFile'] added
|
||||
- "index.php" added support for interlink visualization
|
||||
- "class.reflector.php" callingHome redisigned for interlink visualization
|
||||
- "class.interlink.php" interlink visualization
|
||||
|
||||
xlx db v2.2.3
|
||||
|
||||
- "config.inc.php" $CallingHome['HashFile'] and $CallingHome['OverrideIPAddress'] added
|
||||
- "index.php" supports new variables from config.inc.php
|
||||
- "class.reflector.php" supports new variables from config.inc.php
|
||||
- "country.csv " prefixes update
|
||||
|
||||
xlx db v2.2.2
|
||||
|
||||
This version is a major release with voluntary self-registration feature build in.
|
||||
You need to edit the conf.inc.php to your needs.
|
||||
On the first run your personal hash to access the database is place in the server’s /tmp folder.
|
||||
Take care to make a backup of this file because this folder is cleaned up after a server reboot.
|
||||
|
||||
This version is a major release
|
||||
|
||||
xlx db v2.1.6
|
||||
|
||||
With this version of the dashboard, serveral parameters
|
||||
are free configurable.
|
||||
Changes are made in "config.inc.php"
|
||||
|
||||
- "config.inc.php"
|
||||
- "index.php"
|
||||
- "users.php"
|
||||
- "peers.php
|
||||
- "repeaters.php"
|
||||
|
||||
xlx db v2.1.5
|
||||
|
||||
- "class.node.php" added "get prefix
|
||||
- "repeaters.php" check for XRF or REF link
|
||||
- "country.csv " prefixes update + gate symbol
|
||||
- "flags" gate.png
|
||||
|
||||
xlx db v2.1.4
|
||||
|
||||
- "class.reflector.php" improved the flag search
|
||||
- "country.csv" added serveral prefixes
|
||||
- "flags" added Puerto Ricco and Åland Islands
|
||||
|
||||
xlx db v2.1.3
|
||||
|
||||
- "index.php" added support for multiradio repeaters
|
||||
- "users.php" added support for multiradio repeaters
|
||||
- "class.reflector.php" added support for multiradio repeaters
|
||||
- "repeaters.php" added suffix "D" for "dongle"
|
||||
|
||||
xlx db v2.1.2
|
||||
|
||||
- "index.php" bugfix to correct an error if XLX name is equal to XLX000
|
||||
|
||||
xlx db v2.1.1
|
||||
|
||||
- "peers.php" added hyperlink to the peers ip address
|
||||
|
||||
xlx db v2.1.0
|
||||
|
||||
- "index.php"
|
||||
button "Peers" added
|
||||
button "Repeaters/Nodes" shows now the number of connected devices
|
||||
moved XLX name, version and service uptime to improve view on mobile devices
|
||||
|
||||
- "class.peer.php" added
|
||||
|
||||
- "peers.php" added
|
||||
|
||||
- "repeaters.php" limits nodes show up to 100 nodes
|
||||
|
||||
xlx db v2.0.6
|
||||
|
||||
- "index.php" now reads out the XLX service uptime and not the server uptime
|
||||
- "country.csv" prefixes update
|
||||
- "class.reflector.php" flags showing improvements
|
||||
- "users.php" limits user show up to 40 users
|
||||
- "repeaters.php" limits nodes show up to 40 nodes
|
||||
|
||||
xlx db v2.0.5
|
||||
|
||||
- "class.reflector.php" extra callsign checking
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
<?php
|
||||
|
||||
class Interlink {
|
||||
|
||||
private $ReflectorName;
|
||||
private $ReflectorAddress;
|
||||
private $Modules;
|
||||
|
||||
public function __construct() {
|
||||
$this->ReflectorName = null;
|
||||
$this->ReflectorAddress = null;
|
||||
$this->Modules = null;
|
||||
}
|
||||
|
||||
public function SetName($RefName) { $this->ReflectorName = trim($RefName); }
|
||||
public function SetAddress($RefAdd) { $this->ReflectorAddress = trim($RefAdd); }
|
||||
public function GetName() { return $this->ReflectorName; }
|
||||
public function GetAddress() { return $this->ReflectorAddress; }
|
||||
public function GetModules() { return $this->Modules; }
|
||||
|
||||
|
||||
public function AddModule($Module) {
|
||||
$Module = trim($Module);
|
||||
if (strlen($Module) != 1) return false;
|
||||
if (strpos($this->Modules, $Module) === false) {
|
||||
$this->Modules .= $Module;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public function RemoveModule($Module) {
|
||||
$Module = trim($Module);
|
||||
if (strlen($Module) != 1) return false;
|
||||
if (strpos($this->Modules, $Module) !== false) {
|
||||
$this->Modules = substr($this->Modules, 0, strpos($this->Modules, $Module)-1).substr($this->Modules, strpos($this->Modules, $Module)+1, strlen($this->Modules));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public function HasModuleEnabled($Module) {
|
||||
if (strlen($Module) != 1) return false;
|
||||
return (strpos($this->Modules, $Module) !== false);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,55 +0,0 @@
|
|||
<?php
|
||||
|
||||
class Node {
|
||||
|
||||
private $Callsign;
|
||||
private $IP;
|
||||
private $LinkedModule;
|
||||
private $Protocol;
|
||||
private $ConnectTime;
|
||||
private $LastHeardTime;
|
||||
private $Suffix;
|
||||
private $Prefix;
|
||||
private $RandomID;
|
||||
|
||||
public function __construct($Callsign, $IP, $LinkedModule, $Protocol, $ConnectTime, $LastHeardTime, $RandomID) {
|
||||
|
||||
$this->IP = $IP;
|
||||
|
||||
$this->Protocol = $Protocol;
|
||||
$this->ConnectTime = ParseTime($ConnectTime);
|
||||
$this->LastHeardTime = ParseTime($LastHeardTime);
|
||||
|
||||
$this->FullCallsign = trim(str_replace(" ", "-", $Callsign));
|
||||
$this->FullCallsign = str_replace(" ", "-", $this->FullCallsign);
|
||||
$this->FullCallsign = str_replace(" ", "-", $this->FullCallsign);
|
||||
|
||||
if (strpos($Callsign, " ") !== false) {
|
||||
$this->Callsign = trim(substr($Callsign, 0, strpos($Callsign, " ")));
|
||||
$this->Suffix = trim(substr($Callsign, strpos($Callsign, " "), strlen($Callsign)));
|
||||
$this->Prefix = strtoupper(trim(substr($Callsign, 0, 3)));
|
||||
}
|
||||
else {
|
||||
$this->Callsign = trim($Callsign);
|
||||
$this->Suffix = "";
|
||||
$this->Prefix = "";
|
||||
}
|
||||
|
||||
$this->LinkedModule = trim($LinkedModule);
|
||||
$this->RandomID = $RandomID;
|
||||
}
|
||||
|
||||
public function GetFullCallsign() { return $this->FullCallsign; }
|
||||
public function GetCallsign() { return $this->Callsign; }
|
||||
public function GetIP() { return $this->IP; }
|
||||
public function GetLinkedModule() { return $this->LinkedModule; }
|
||||
public function GetProtocol() { return $this->Protocol; }
|
||||
public function GetConnectTime() { return $this->ConnectTime; }
|
||||
public function GetLastHeardTime() { return $this->LastHeardTime; }
|
||||
public function GetSuffix() { return $this->Suffix; }
|
||||
public function GetPrefix() { return $this->Prefix; }
|
||||
public function GetRandomID() { return $this->RandomID; }
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
<?php
|
||||
|
||||
class ParseXML {
|
||||
|
||||
public function __construct() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public function GetElement($InputString, $ElementName) {
|
||||
if (strpos($InputString, "<".$ElementName.">") === false) return false;
|
||||
if (strpos($InputString, "</".$ElementName.">") === false) return false;
|
||||
|
||||
$Element = substr($InputString, strpos($InputString, "<".$ElementName.">")+strlen($ElementName)+2, strpos($InputString, "</".$ElementName.">")-strpos($InputString, "<".$ElementName.">")-strlen($ElementName)-2);
|
||||
return $Element;
|
||||
|
||||
}
|
||||
|
||||
public function GetAllElements($InputString, $ElementName) {
|
||||
$Elements = array();
|
||||
while (strpos($InputString, $ElementName) !== false) {
|
||||
$Elements[] = $this->GetElement($InputString, $ElementName);
|
||||
$InputString = substr($InputString, strpos($InputString, "</".$ElementName.">")+strlen($ElementName)+3, strlen($InputString));
|
||||
}
|
||||
return $Elements;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
<?php
|
||||
|
||||
class Peer {
|
||||
|
||||
private $Callsign;
|
||||
private $IP;
|
||||
private $LinkedModule;
|
||||
private $Protocol;
|
||||
private $ConnectTime;
|
||||
private $LastHeardTime;
|
||||
|
||||
public function __construct($Callsign, $IP, $LinkedModule, $Protocol, $ConnectTime, $LastHeardTime) {
|
||||
|
||||
$this->IP = $IP;
|
||||
$this->Protocol = $Protocol;
|
||||
$this->ConnectTime = ParseTime($ConnectTime);
|
||||
$this->LastHeardTime = ParseTime($LastHeardTime);
|
||||
$this->Callsign = trim($Callsign);
|
||||
$this->LinkedModule = trim($LinkedModule);
|
||||
}
|
||||
|
||||
|
||||
public function GetCallsign() { return $this->Callsign; }
|
||||
public function GetIP() { return $this->IP; }
|
||||
public function GetLinkedModule() { return $this->LinkedModule; }
|
||||
public function GetProtocol() { return $this->Protocol; }
|
||||
public function GetConnectTime() { return $this->ConnectTime; }
|
||||
public function GetLastHeardTime() { return $this->LastHeardTime; }
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
<?php
|
||||
|
||||
class Station {
|
||||
|
||||
private $Callsign;
|
||||
private $Via;
|
||||
private $LastHeardTime;
|
||||
private $Suffix;
|
||||
private $CallsignOnly;
|
||||
private $Peer;
|
||||
private $OnModule;
|
||||
|
||||
public function __construct($Callsign, $Via, $Peer, $LastHeardTime, $OnModule) {
|
||||
$this->Callsign = trim($Callsign);
|
||||
$this->Via = trim($Via);
|
||||
$this->Peer = trim($Peer);
|
||||
$this->LastHeardTime = ParseTime($LastHeardTime);
|
||||
if (strpos($Callsign, " / ") !== false) {
|
||||
$this->Suffix = trim(substr($Callsign, strpos($Callsign, " / ")+3, strlen($Callsign)));
|
||||
}
|
||||
else {
|
||||
$this->Suffix = "";
|
||||
}
|
||||
|
||||
$tmp = explode(" ", $Callsign);
|
||||
$this->CallsignOnly = $tmp[0];
|
||||
$this->OnModule = $OnModule;
|
||||
}
|
||||
|
||||
public function GetCallsign() { return $this->Callsign; }
|
||||
public function GetVIA() { return $this->Via; }
|
||||
public function GetPeer() { return $this->Peer; }
|
||||
public function GetLastHeardTime() { return $this->LastHeardTime; }
|
||||
public function GetSuffix() { return $this->Suffix; }
|
||||
public function GetCallsignOnly() { return $this->CallsignOnly; }
|
||||
public function GetModule() { return $this->OnModule; }
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
260
dashboard1/changes.txt
Normal file
|
|
@ -0,0 +1,260 @@
|
|||
xlx db v2.4.3
|
||||
|
||||
SECURITY UPDATE - All files updated to fix vulnerabilities
|
||||
|
||||
This release addresses multiple security vulnerabilities including XSS (Cross-Site Scripting),
|
||||
command injection, path traversal, and SSRF (Server-Side Request Forgery) attacks.
|
||||
|
||||
Files Changed and Security Fixes:
|
||||
|
||||
- "functions.php"
|
||||
* Added sanitize_output() and sanitize_attribute() helper functions for XSS prevention
|
||||
* Added validate_callsign(), validate_module(), validate_protocol() input validation functions
|
||||
* Replaced exec() call in GetSystemUptime() with secure file reading from /proc/uptime
|
||||
* Added input validation and shell argument escaping to VNStatGetData()
|
||||
* Added array bounds checking to ParseTime() to prevent errors on malformed input
|
||||
|
||||
- "class.interlink.php"
|
||||
* Added input validation to SetName() - validates reflector name format
|
||||
* Added input validation to SetAddress() - validates IP addresses and hostnames
|
||||
* Added input validation to AddModule(), RemoveModule(), and HasModuleEnabled()
|
||||
|
||||
- "class.node.php"
|
||||
* Added input validation in constructor for all parameters
|
||||
* IP addresses validated with filter_var()
|
||||
* Protocol validated against whitelist
|
||||
* Callsign format validated with regex
|
||||
* LinkedModule validated as single A-Z letter
|
||||
|
||||
- "class.parsexml.php"
|
||||
* Added element name sanitization to prevent XML injection
|
||||
|
||||
- "class.peer.php"
|
||||
* Added input validation in constructor for all parameters
|
||||
* Same validation as class.node.php for consistency
|
||||
|
||||
- "class.reflector.php"
|
||||
* Added path traversal prevention to SetXMLFile(), SetPIDFile(), and SetFlagFile()
|
||||
* Added SSRF protection to CallHome() - blocks internal/private IP addresses
|
||||
* Added validation to ReadInterlinkFile() to prevent path traversal
|
||||
* Added XML entity encoding to PrepareInterlinkXML() and PrepareReflectorXML()
|
||||
* Added URL validation to SetCallingHome()
|
||||
* Added missing InterlinkCount(), GetInterlink(), and IsInterlinked() methods
|
||||
|
||||
- "class.station.php"
|
||||
* Added input validation in constructor for all parameters
|
||||
* Callsign format validation
|
||||
* Module validation
|
||||
|
||||
- "modules.php"
|
||||
* All output wrapped with sanitize_output() to prevent XSS
|
||||
|
||||
- "peers.php"
|
||||
* All peer data output sanitized with sanitize_output() and sanitize_attribute()
|
||||
* URL and callsign outputs properly escaped
|
||||
|
||||
- "reflectors.php"
|
||||
* All XML element data sanitized before output
|
||||
* Dashboard URLs and reflector names properly escaped
|
||||
|
||||
- "repeaters.php"
|
||||
* Added input validation for filter parameters
|
||||
* All node/repeater data sanitized before output
|
||||
* Flag images and URLs properly escaped
|
||||
* IP addresses sanitized
|
||||
|
||||
- "traffic.php"
|
||||
* Added strict whitelist validation for interface parameter
|
||||
* Interface names validated against configured list only
|
||||
|
||||
- "users.php"
|
||||
* Added input validation for filter parameters
|
||||
* All station/user data sanitized before output
|
||||
* Callsigns, suffixes, and module names properly escaped
|
||||
|
||||
- "index.php"
|
||||
* Added secure session configuration (HttpOnly, SameSite, Secure flags)
|
||||
* Added security headers (X-Content-Type-Options, X-Frame-Options, X-XSS-Protection, Referrer-Policy)
|
||||
* Added whitelist validation for 'show' parameter
|
||||
* Added validation for 'do' and 'callhome' parameters
|
||||
* All configuration values sanitized before output to HTML
|
||||
* JavaScript injection prevented in page refresh code
|
||||
* All meta tags properly escaped
|
||||
|
||||
Security Vulnerabilities Fixed:
|
||||
- XSS (Cross-Site Scripting) - All user input and XML data now properly escaped
|
||||
- Command Injection - Removed unsafe exec() calls, added shell argument escaping
|
||||
- Path Traversal - File paths validated and restricted to expected directories
|
||||
- SSRF (Server-Side Request Forgery) - CallHome validates URLs and blocks internal IPs
|
||||
- Session Hijacking - Added HttpOnly, SameSite, and Secure cookie flags
|
||||
- XML Injection - Element names sanitized, content stripped of tags
|
||||
|
||||
xlx db v2.4.1
|
||||
|
||||
you can now hide the liveircddb menu button, if you are running your db in https.
|
||||
|
||||
- "config.inc.php
|
||||
- "index.php"
|
||||
|
||||
xlx db v2.4.0
|
||||
|
||||
- "config.inc.php"
|
||||
- "index.php"
|
||||
- "js"
|
||||
- "layout.css"
|
||||
|
||||
xlx db v2.3.9
|
||||
|
||||
redesign for the callinghome.php
|
||||
|
||||
- "config.inc.php"
|
||||
- "index.php"
|
||||
- "functions.php"
|
||||
|
||||
xlx db v2.3.8
|
||||
|
||||
add support for network traffic statistics via vnstat.
|
||||
|
||||
- "config.inc.php"
|
||||
- "index.php"
|
||||
- "functions.php"
|
||||
|
||||
add traffic.php
|
||||
|
||||
xlx db v2.3.7
|
||||
|
||||
add background color change on active page.
|
||||
|
||||
- "config.inc.php"
|
||||
- "layout.css"
|
||||
- "index.php"
|
||||
|
||||
xlx db v2.3.6
|
||||
|
||||
add xlx reflector version to calling home.
|
||||
|
||||
- "config.inc.php"
|
||||
- "class.reflector.php"
|
||||
|
||||
xlx db v2.3.5
|
||||
|
||||
now the page refresh is now suspended until you leave the filte fields.
|
||||
|
||||
- "index.php"
|
||||
- "users.php"
|
||||
- "config.inc.php"
|
||||
|
||||
xlx db v2.3.4
|
||||
|
||||
add filter function to the dashboard. It can be enabled or disabled via the config.inc.php
|
||||
|
||||
- "index.php"
|
||||
- "users.php"
|
||||
- "config.inc.php" $PageOptions['UserPage']['ShowFilter'] added
|
||||
- "layout.css"
|
||||
|
||||
xlx db v2.3.3
|
||||
|
||||
now displays always the correct module for the last heard station.
|
||||
db v2.3.3 requires xlxd v1.4.1
|
||||
|
||||
- "class.station.php"
|
||||
- "class.reflector.php"
|
||||
- "users.php"
|
||||
|
||||
xlx db v2.3.2
|
||||
|
||||
add random id for nodes, to show the correct linked module for multiple nodes with
|
||||
the same call signe linked to different modules.
|
||||
|
||||
- "class.node.php"
|
||||
- "class.reflector.php"
|
||||
- "users.php"
|
||||
|
||||
xlx db v2.3.1
|
||||
|
||||
- "config.inc.php" $CallingHome['InterlinkFile'] added
|
||||
- "index.php" added support for interlink visualization
|
||||
- "class.reflector.php" callingHome redisigned for interlink visualization
|
||||
- "class.interlink.php" interlink visualization
|
||||
|
||||
xlx db v2.2.3
|
||||
|
||||
- "config.inc.php" $CallingHome['HashFile'] and $CallingHome['OverrideIPAddress'] added
|
||||
- "index.php" supports new variables from config.inc.php
|
||||
- "class.reflector.php" supports new variables from config.inc.php
|
||||
- "country.csv " prefixes update
|
||||
|
||||
xlx db v2.2.2
|
||||
|
||||
This version is a major release with voluntary self-registration feature build in.
|
||||
You need to edit the conf.inc.php to your needs.
|
||||
On the first run your personal hash to access the database is place in the server’s /tmp folder.
|
||||
Take care to make a backup of this file because this folder is cleaned up after a server reboot.
|
||||
|
||||
This version is a major release
|
||||
|
||||
xlx db v2.1.6
|
||||
|
||||
With this version of the dashboard, serveral parameters
|
||||
are free configurable.
|
||||
Changes are made in "config.inc.php"
|
||||
|
||||
- "config.inc.php"
|
||||
- "index.php"
|
||||
- "users.php"
|
||||
- "peers.php
|
||||
- "repeaters.php"
|
||||
|
||||
xlx db v2.1.5
|
||||
|
||||
- "class.node.php" added "get prefix
|
||||
- "repeaters.php" check for XRF or REF link
|
||||
- "country.csv " prefixes update + gate symbol
|
||||
- "flags" gate.png
|
||||
|
||||
xlx db v2.1.4
|
||||
|
||||
- "class.reflector.php" improved the flag search
|
||||
- "country.csv" added serveral prefixes
|
||||
- "flags" added Puerto Ricco and Åland Islands
|
||||
|
||||
xlx db v2.1.3
|
||||
|
||||
- "index.php" added support for multiradio repeaters
|
||||
- "users.php" added support for multiradio repeaters
|
||||
- "class.reflector.php" added support for multiradio repeaters
|
||||
- "repeaters.php" added suffix "D" for "dongle"
|
||||
|
||||
xlx db v2.1.2
|
||||
|
||||
- "index.php" bugfix to correct an error if XLX name is equal to XLX000
|
||||
|
||||
xlx db v2.1.1
|
||||
|
||||
- "peers.php" added hyperlink to the peers ip address
|
||||
|
||||
xlx db v2.1.0
|
||||
|
||||
- "index.php"
|
||||
button "Peers" added
|
||||
button "Repeaters/Nodes" shows now the number of connected devices
|
||||
moved XLX name, version and service uptime to improve view on mobile devices
|
||||
|
||||
- "class.peer.php" added
|
||||
|
||||
- "peers.php" added
|
||||
|
||||
- "repeaters.php" limits nodes show up to 100 nodes
|
||||
|
||||
xlx db v2.0.6
|
||||
|
||||
- "index.php" now reads out the XLX service uptime and not the server uptime
|
||||
- "country.csv" prefixes update
|
||||
- "class.reflector.php" flags showing improvements
|
||||
- "users.php" limits user show up to 40 users
|
||||
- "repeaters.php" limits nodes show up to 40 nodes
|
||||
|
||||
xlx db v2.0.5
|
||||
|
||||
- "class.reflector.php" extra callsign checking
|
||||
0
dashboard/css/layout.css → dashboard1/css/layout.css
Executable file → Normal file
0
dashboard/favicon.ico → dashboard1/favicon.ico
Executable file → Normal file
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
0
dashboard/img/down.png → dashboard1/img/down.png
Executable file → Normal file
|
Before Width: | Height: | Size: 4 KiB After Width: | Height: | Size: 4 KiB |
0
dashboard/img/dvc.jpg → dashboard1/img/dvc.jpg
Executable file → Normal file
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
0
dashboard/img/ear.png → dashboard1/img/ear.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
0
dashboard/img/easterheader.jpg → dashboard1/img/easterheader.jpg
Executable file → Normal file
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 48 KiB |
0
dashboard/img/flags/ad.png → dashboard1/img/flags/ad.png
Executable file → Normal file
|
Before Width: | Height: | Size: 449 B After Width: | Height: | Size: 449 B |
0
dashboard/img/flags/ae.png → dashboard1/img/flags/ae.png
Executable file → Normal file
|
Before Width: | Height: | Size: 131 B After Width: | Height: | Size: 131 B |
0
dashboard/img/flags/af.png → dashboard1/img/flags/af.png
Executable file → Normal file
|
Before Width: | Height: | Size: 342 B After Width: | Height: | Size: 342 B |
0
dashboard/img/flags/ag.png → dashboard1/img/flags/ag.png
Executable file → Normal file
|
Before Width: | Height: | Size: 486 B After Width: | Height: | Size: 486 B |
0
dashboard/img/flags/al.png → dashboard1/img/flags/al.png
Executable file → Normal file
|
Before Width: | Height: | Size: 357 B After Width: | Height: | Size: 357 B |
0
dashboard/img/flags/am.png → dashboard1/img/flags/am.png
Executable file → Normal file
|
Before Width: | Height: | Size: 124 B After Width: | Height: | Size: 124 B |
0
dashboard/img/flags/ao.png → dashboard1/img/flags/ao.png
Executable file → Normal file
|
Before Width: | Height: | Size: 310 B After Width: | Height: | Size: 310 B |
0
dashboard/img/flags/ar.png → dashboard1/img/flags/ar.png
Executable file → Normal file
|
Before Width: | Height: | Size: 139 B After Width: | Height: | Size: 139 B |
0
dashboard/img/flags/at.png → dashboard1/img/flags/at.png
Executable file → Normal file
|
Before Width: | Height: | Size: 101 B After Width: | Height: | Size: 101 B |
0
dashboard/img/flags/au.png → dashboard1/img/flags/au.png
Executable file → Normal file
|
Before Width: | Height: | Size: 501 B After Width: | Height: | Size: 501 B |
0
dashboard/img/flags/ax.png → dashboard1/img/flags/ax.png
Executable file → Normal file
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
0
dashboard/img/flags/az.png → dashboard1/img/flags/az.png
Executable file → Normal file
|
Before Width: | Height: | Size: 175 B After Width: | Height: | Size: 175 B |
0
dashboard/img/flags/ba.png → dashboard1/img/flags/ba.png
Executable file → Normal file
|
Before Width: | Height: | Size: 241 B After Width: | Height: | Size: 241 B |
0
dashboard/img/flags/bb.png → dashboard1/img/flags/bb.png
Executable file → Normal file
|
Before Width: | Height: | Size: 243 B After Width: | Height: | Size: 243 B |
0
dashboard/img/flags/bd.png → dashboard1/img/flags/bd.png
Executable file → Normal file
|
Before Width: | Height: | Size: 200 B After Width: | Height: | Size: 200 B |
0
dashboard/img/flags/be.png → dashboard1/img/flags/be.png
Executable file → Normal file
|
Before Width: | Height: | Size: 108 B After Width: | Height: | Size: 108 B |
0
dashboard/img/flags/bf.png → dashboard1/img/flags/bf.png
Executable file → Normal file
|
Before Width: | Height: | Size: 181 B After Width: | Height: | Size: 181 B |
0
dashboard/img/flags/bg.png → dashboard1/img/flags/bg.png
Executable file → Normal file
|
Before Width: | Height: | Size: 121 B After Width: | Height: | Size: 121 B |
0
dashboard/img/flags/bh.png → dashboard1/img/flags/bh.png
Executable file → Normal file
|
Before Width: | Height: | Size: 125 B After Width: | Height: | Size: 125 B |
0
dashboard/img/flags/bi.png → dashboard1/img/flags/bi.png
Executable file → Normal file
|
Before Width: | Height: | Size: 470 B After Width: | Height: | Size: 470 B |
0
dashboard/img/flags/bj.png → dashboard1/img/flags/bj.png
Executable file → Normal file
|
Before Width: | Height: | Size: 100 B After Width: | Height: | Size: 100 B |
0
dashboard/img/flags/bn.png → dashboard1/img/flags/bn.png
Executable file → Normal file
|
Before Width: | Height: | Size: 847 B After Width: | Height: | Size: 847 B |
0
dashboard/img/flags/bo.png → dashboard1/img/flags/bo.png
Executable file → Normal file
|
Before Width: | Height: | Size: 117 B After Width: | Height: | Size: 117 B |
0
dashboard/img/flags/br.png → dashboard1/img/flags/br.png
Executable file → Normal file
|
Before Width: | Height: | Size: 436 B After Width: | Height: | Size: 436 B |
0
dashboard/img/flags/bs.png → dashboard1/img/flags/bs.png
Executable file → Normal file
|
Before Width: | Height: | Size: 221 B After Width: | Height: | Size: 221 B |
0
dashboard/img/flags/bt.png → dashboard1/img/flags/bt.png
Executable file → Normal file
|
Before Width: | Height: | Size: 685 B After Width: | Height: | Size: 685 B |
0
dashboard/img/flags/bw.png → dashboard1/img/flags/bw.png
Executable file → Normal file
|
Before Width: | Height: | Size: 105 B After Width: | Height: | Size: 105 B |
0
dashboard/img/flags/by.png → dashboard1/img/flags/by.png
Executable file → Normal file
|
Before Width: | Height: | Size: 307 B After Width: | Height: | Size: 307 B |
0
dashboard/img/flags/bz.png → dashboard1/img/flags/bz.png
Executable file → Normal file
|
Before Width: | Height: | Size: 751 B After Width: | Height: | Size: 751 B |
0
dashboard/img/flags/ca.png → dashboard1/img/flags/ca.png
Executable file → Normal file
|
Before Width: | Height: | Size: 302 B After Width: | Height: | Size: 302 B |
0
dashboard/img/flags/cd.png → dashboard1/img/flags/cd.png
Executable file → Normal file
|
Before Width: | Height: | Size: 451 B After Width: | Height: | Size: 451 B |
0
dashboard/img/flags/cf.png → dashboard1/img/flags/cf.png
Executable file → Normal file
|
Before Width: | Height: | Size: 197 B After Width: | Height: | Size: 197 B |
0
dashboard/img/flags/cg.png → dashboard1/img/flags/cg.png
Executable file → Normal file
|
Before Width: | Height: | Size: 142 B After Width: | Height: | Size: 142 B |
0
dashboard/img/flags/ch.png → dashboard1/img/flags/ch.png
Executable file → Normal file
|
Before Width: | Height: | Size: 107 B After Width: | Height: | Size: 107 B |
0
dashboard/img/flags/ci.png → dashboard1/img/flags/ci.png
Executable file → Normal file
|
Before Width: | Height: | Size: 97 B After Width: | Height: | Size: 97 B |
0
dashboard/img/flags/cl.png → dashboard1/img/flags/cl.png
Executable file → Normal file
|
Before Width: | Height: | Size: 147 B After Width: | Height: | Size: 147 B |
0
dashboard/img/flags/cm.png → dashboard1/img/flags/cm.png
Executable file → Normal file
|
Before Width: | Height: | Size: 163 B After Width: | Height: | Size: 163 B |
0
dashboard/img/flags/cn.png → dashboard1/img/flags/cn.png
Executable file → Normal file
|
Before Width: | Height: | Size: 214 B After Width: | Height: | Size: 214 B |
0
dashboard/img/flags/co.png → dashboard1/img/flags/co.png
Executable file → Normal file
|
Before Width: | Height: | Size: 99 B After Width: | Height: | Size: 99 B |
0
dashboard/img/flags/cr.png → dashboard1/img/flags/cr.png
Executable file → Normal file
|
Before Width: | Height: | Size: 116 B After Width: | Height: | Size: 116 B |
|
Before Width: | Height: | Size: 922 B After Width: | Height: | Size: 922 B |
0
dashboard/img/flags/cu.png → dashboard1/img/flags/cu.png
Executable file → Normal file
|
Before Width: | Height: | Size: 300 B After Width: | Height: | Size: 300 B |
0
dashboard/img/flags/cv.png → dashboard1/img/flags/cv.png
Executable file → Normal file
|
Before Width: | Height: | Size: 300 B After Width: | Height: | Size: 300 B |
0
dashboard/img/flags/cy.png → dashboard1/img/flags/cy.png
Executable file → Normal file
|
Before Width: | Height: | Size: 317 B After Width: | Height: | Size: 317 B |
0
dashboard/img/flags/cz.png → dashboard1/img/flags/cz.png
Executable file → Normal file
|
Before Width: | Height: | Size: 217 B After Width: | Height: | Size: 217 B |
0
dashboard/img/flags/de.png → dashboard1/img/flags/de.png
Executable file → Normal file
|
Before Width: | Height: | Size: 99 B After Width: | Height: | Size: 99 B |
0
dashboard/img/flags/dj.png → dashboard1/img/flags/dj.png
Executable file → Normal file
|
Before Width: | Height: | Size: 373 B After Width: | Height: | Size: 373 B |
0
dashboard/img/flags/dk.png → dashboard1/img/flags/dk.png
Executable file → Normal file
|
Before Width: | Height: | Size: 125 B After Width: | Height: | Size: 125 B |
0
dashboard/img/flags/dm.png → dashboard1/img/flags/dm.png
Executable file → Normal file
|
Before Width: | Height: | Size: 403 B After Width: | Height: | Size: 403 B |
0
dashboard/img/flags/do.png → dashboard1/img/flags/do.png
Executable file → Normal file
|
Before Width: | Height: | Size: 258 B After Width: | Height: | Size: 258 B |
0
dashboard/img/flags/dz.png → dashboard1/img/flags/dz.png
Executable file → Normal file
|
Before Width: | Height: | Size: 229 B After Width: | Height: | Size: 229 B |
0
dashboard/img/flags/ec.png → dashboard1/img/flags/ec.png
Executable file → Normal file
|
Before Width: | Height: | Size: 397 B After Width: | Height: | Size: 397 B |
0
dashboard/img/flags/ee.png → dashboard1/img/flags/ee.png
Executable file → Normal file
|
Before Width: | Height: | Size: 100 B After Width: | Height: | Size: 100 B |
0
dashboard/img/flags/eg.png → dashboard1/img/flags/eg.png
Executable file → Normal file
|
Before Width: | Height: | Size: 256 B After Width: | Height: | Size: 256 B |
0
dashboard/img/flags/eh.png → dashboard1/img/flags/eh.png
Executable file → Normal file
|
Before Width: | Height: | Size: 379 B After Width: | Height: | Size: 379 B |
|
Before Width: | Height: | Size: 233 B After Width: | Height: | Size: 233 B |
0
dashboard/img/flags/er.png → dashboard1/img/flags/er.png
Executable file → Normal file
|
Before Width: | Height: | Size: 535 B After Width: | Height: | Size: 535 B |
0
dashboard/img/flags/es.png → dashboard1/img/flags/es.png
Executable file → Normal file
|
Before Width: | Height: | Size: 287 B After Width: | Height: | Size: 287 B |
0
dashboard/img/flags/et.png → dashboard1/img/flags/et.png
Executable file → Normal file
|
Before Width: | Height: | Size: 355 B After Width: | Height: | Size: 355 B |
0
dashboard/img/flags/fi.png → dashboard1/img/flags/fi.png
Executable file → Normal file
|
Before Width: | Height: | Size: 130 B After Width: | Height: | Size: 130 B |
0
dashboard/img/flags/fj.png → dashboard1/img/flags/fj.png
Executable file → Normal file
|
Before Width: | Height: | Size: 617 B After Width: | Height: | Size: 617 B |
0
dashboard/img/flags/fm.png → dashboard1/img/flags/fm.png
Executable file → Normal file
|
Before Width: | Height: | Size: 149 B After Width: | Height: | Size: 149 B |
0
dashboard/img/flags/fr.png → dashboard1/img/flags/fr.png
Executable file → Normal file
|
Before Width: | Height: | Size: 96 B After Width: | Height: | Size: 96 B |
0
dashboard/img/flags/ga.png → dashboard1/img/flags/ga.png
Executable file → Normal file
|
Before Width: | Height: | Size: 117 B After Width: | Height: | Size: 117 B |
0
dashboard/img/flags/gate.png → dashboard1/img/flags/gate.png
Executable file → Normal file
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
0
dashboard/img/flags/gb.png → dashboard1/img/flags/gb.png
Executable file → Normal file
|
Before Width: | Height: | Size: 434 B After Width: | Height: | Size: 434 B |
0
dashboard/img/flags/gd.png → dashboard1/img/flags/gd.png
Executable file → Normal file
|
Before Width: | Height: | Size: 490 B After Width: | Height: | Size: 490 B |
0
dashboard/img/flags/ge.png → dashboard1/img/flags/ge.png
Executable file → Normal file
|
Before Width: | Height: | Size: 148 B After Width: | Height: | Size: 148 B |
0
dashboard/img/flags/gh.png → dashboard1/img/flags/gh.png
Executable file → Normal file
|
Before Width: | Height: | Size: 222 B After Width: | Height: | Size: 222 B |
0
dashboard/img/flags/gm.png → dashboard1/img/flags/gm.png
Executable file → Normal file
|
Before Width: | Height: | Size: 129 B After Width: | Height: | Size: 129 B |
0
dashboard/img/flags/gn.png → dashboard1/img/flags/gn.png
Executable file → Normal file
|
Before Width: | Height: | Size: 97 B After Width: | Height: | Size: 97 B |
0
dashboard/img/flags/gq.png → dashboard1/img/flags/gq.png
Executable file → Normal file
|
Before Width: | Height: | Size: 325 B After Width: | Height: | Size: 325 B |
0
dashboard/img/flags/gr.png → dashboard1/img/flags/gr.png
Executable file → Normal file
|
Before Width: | Height: | Size: 266 B After Width: | Height: | Size: 266 B |
0
dashboard/img/flags/gt.png → dashboard1/img/flags/gt.png
Executable file → Normal file
|
Before Width: | Height: | Size: 279 B After Width: | Height: | Size: 279 B |
|
Before Width: | Height: | Size: 488 B After Width: | Height: | Size: 488 B |
0
dashboard/img/flags/gw.png → dashboard1/img/flags/gw.png
Executable file → Normal file
|
Before Width: | Height: | Size: 234 B After Width: | Height: | Size: 234 B |
0
dashboard/img/flags/gy.png → dashboard1/img/flags/gy.png
Executable file → Normal file
|
Before Width: | Height: | Size: 464 B After Width: | Height: | Size: 464 B |
0
dashboard/img/flags/hk.png → dashboard1/img/flags/hk.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
0
dashboard/img/flags/hn.png → dashboard1/img/flags/hn.png
Executable file → Normal file
|
Before Width: | Height: | Size: 216 B After Width: | Height: | Size: 216 B |
0
dashboard/img/flags/hr.png → dashboard1/img/flags/hr.png
Executable file → Normal file
|
Before Width: | Height: | Size: 517 B After Width: | Height: | Size: 517 B |
0
dashboard/img/flags/ht.png → dashboard1/img/flags/ht.png
Executable file → Normal file
|
Before Width: | Height: | Size: 227 B After Width: | Height: | Size: 227 B |
0
dashboard/img/flags/hu.png → dashboard1/img/flags/hu.png
Executable file → Normal file
|
Before Width: | Height: | Size: 113 B After Width: | Height: | Size: 113 B |
0
dashboard/img/flags/id.png → dashboard1/img/flags/id.png
Executable file → Normal file
|
Before Width: | Height: | Size: 93 B After Width: | Height: | Size: 93 B |
0
dashboard/img/flags/ie.png → dashboard1/img/flags/ie.png
Executable file → Normal file
|
Before Width: | Height: | Size: 119 B After Width: | Height: | Size: 119 B |
0
dashboard/img/flags/il.png → dashboard1/img/flags/il.png
Executable file → Normal file
|
Before Width: | Height: | Size: 181 B After Width: | Height: | Size: 181 B |
0
dashboard/img/flags/im.png → dashboard1/img/flags/im.png
Executable file → Normal file
|
Before Width: | Height: | Size: 503 B After Width: | Height: | Size: 503 B |