-
Notifications
You must be signed in to change notification settings - Fork 0
/
nodemanager.php
139 lines (126 loc) · 5.22 KB
/
nodemanager.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<?php if (!defined('__IN_SITE__')) { echo "Zugriff verweigert!"; die(); }
/**
* Klasse zur Verwaltung der Nodes
*
* Noch macht sie nicht viel, kann aber nach belieben ausgebaut werden
*
* @author Timo Jeske <[email protected]>
*/
class NodeManager {
/**
* Array, welches alle Nodes beinhaltet
*/
private $allNodes = array();
/**
* Zeitpunkt des Datenbestandes (Von wann die Daten sind)
*/
private $timestamp;
/**
* Daten aus der JSON-Datei zu den Nodes
*/
private $jsonData;
public function __construct() {
$this->getNodesFromServer();
$this->createNewNodes();
$this->createTimestamp();
}
/**
* Erstellt den Zeitstempel der JSON-Datei im deutschen Datumsformat
*/
private function createTimestamp() {
// Zeigt an, von wann die Daten, die angezeigt werden, sind.
// Zählt normalerweise eine Stunde drauf, da die Zeit sonst nicht stimmt
$this->timestamp = date("d.m.Y H:i", strtotime($this->jsonData["timestamp"])+(60*60*1));
}
/**
* Holt alle Nodes vom Server entsprechend des JSON-Pfads, der in der
* Config angegeben wurde.
*/
private function getNodesFromServer() {
// Holen der JSON-Datei + "Decodieren" zum assoziativem Array
$seite = file_get_contents(__JSON_NODES_PATH__);
$this->jsonData = json_decode($seite, true);
}
/**
* Erzeugt Node-Objekte und speichert diese in $allNodes
*
* TODO: Noch anpassen, weil auf $node gar nicht zugegriffen wird.
*/
private function createNewNodes() {
$nodes = array();
$nodes2 = array();
$zaehler = 0;
foreach($this->jsonData["nodes"] as $node) {
// Erhalt aller Informationen eines Nodes
$nodes[]= current(array_slice($this->jsonData["nodes"], $zaehler, 1));
// Erstellen eines neuen Node-Objektes und füllen dieses
$nodeObject = new Node();
if(isset($nodes[$zaehler]["nodeinfo"]["node_id"])) {
$nodeObject->setNodeID($nodes[$zaehler]["nodeinfo"]["node_id"]);
}
if(isset($nodes[$zaehler]["nodeinfo"]["network"]["mac"])) {
$nodeObject->setMac($nodes[$zaehler]["nodeinfo"]["network"]["mac"]);
}
if(isset($nodes[$zaehler]["nodeinfo"]["network"]["addresses"])) {
$nodeObject->setAddresses($nodes[$zaehler]["nodeinfo"]["network"]["addresses"]);
}
if(isset($nodes[$zaehler]["nodeinfo"]["hostname"])) {
$nodeObject->setHostname($nodes[$zaehler]["nodeinfo"]["hostname"]);
}
if(isset($nodes[$zaehler]["nodeinfo"]["hardware"]["model"])) {
$nodeObject->setModel($nodes[$zaehler]["nodeinfo"]["hardware"]["model"]);
}
if(isset($nodes[$zaehler]["nodeinfo"]["software"]["firmware"])) {
$nodeObject->setFirmware($nodes[$zaehler]["nodeinfo"]["software"]["firmware"]);
}
if(isset($nodes[$zaehler]["statistics"]["uptime"])) {
$nodeObject->setUptime($nodes[$zaehler]["statistics"]["uptime"]);
}
if(isset($nodes[$zaehler]["statistics"]["memory_usage"])) {
$nodeObject->setMemoryUsage($nodes[$zaehler]["statistics"]["memory_usage"]);
}
if(isset($nodes[$zaehler]["statistics"]["clients"])) {
$nodeObject->setClients($nodes[$zaehler]["statistics"]["clients"]);
}
if(isset($nodes[$zaehler]["statistics"]["loadavg"])) {
$nodeObject->setLoadavg($nodes[$zaehler]["statistics"]["loadavg"]);
}
if(isset($nodes[$zaehler]["statistics"]["traffic"])) {
$nodeObject->setTraffic($nodes[$zaehler]["statistics"]["traffic"]);
}
if(isset($nodes[$zaehler]["lastseen"])) {
$nodeObject->setLastSeen(date("d.m.Y H:i", strtotime($nodes[$zaehler]["lastseen"])+(60*60*2)));
}
if(isset($nodes[$zaehler]["firstseen"])) {
$nodeObject->setFirstSeen(date("d.m.Y H:i", strtotime($nodes[$zaehler]["firstseen"])+(60*60*2)));
}
if(isset($nodes[$zaehler]["flags"]["online"])) {
if($nodes[$zaehler]["flags"]["online"] == "true") {
$nodeObject->setOnline(true);
} else {
$nodeObject->setOnline(false);
}
}
if(isset($nodes[$zaehler]["nodeinfo"]["software"]["autoupdater"]["enabled"])) {
if($nodes[$zaehler]["nodeinfo"]["software"]["autoupdater"]["enabled"] == "true") {
$nodeObject->setAutoUpdate(true);
} else {
$nodeObject->setAutoUpdate(false);
}
}
// Node zum Array aller Nodes hinzufügen
$nodes2[] = $nodeObject;
$zaehler++;
}
$this->setAllNodes($nodes2);
}
public function getAllNodes() {
return $this->allNodes;
}
public function setAllNodes($allNodes) {
$this->allNodes = $allNodes;
}
public function getTimestamp() {
return $this->timestamp;
}
}