'.$name.' / '.$type;
if ($port != "") {
echo ' ('.$port.')';
}
echo '';
}
function createTabContent($mac, $name, $type, $port, $activetab) {
global $pia_lang;
echo '
'.$name.' (ID: '.str_replace(":", "_", $mac).')
';
echo '
| Port |
'.$pia_lang['Network_Table_State'].' |
'.$pia_lang['Network_Table_Hostname'].' |
'.$pia_lang['Network_Table_IP'].' |
';
// Prepare Array for Devices with Port value
// If no Port is set, the Port number is set to 1
if ($port == "") {$port = 1;}
// Create Array with specific length
$network_device_portname = array();
$network_device_portmac = array();
$network_device_portip = array();
$network_device_portstate = array();
// make sql query for Network Hardware ID
global $db;
$func_sql = 'SELECT * FROM "Devices" WHERE "dev_Network_Node_MAC" = "'.$mac.'"';
$func_result = $db->query($func_sql);
while($func_res = $func_result->fetchArray(SQLITE3_ASSOC)) {
// Online / Offline state of port
if ($func_res['dev_PresentLastScan'] == 1) {
$port_state = 'Online
';
} else {
$port_state = 'Offline
';
}
// Prepare Table with Port > push values in array
if ($port > 1)
{
if (stristr($func_res['dev_Network_Node_port'], ',') == '') {
if ($network_device_portname[$func_res['dev_Network_Node_port']] != '') {
$network_device_portname[$func_res['dev_Network_Node_port']] = $network_device_portname[$func_res['dev_Network_Node_port']].','.$func_res['dev_Name'];
} else {
$network_device_portname[$func_res['dev_Network_Node_port']] = $func_res['dev_Name'];
}
if ($network_device_portmac[$func_res['dev_Network_Node_port']] != '') {
$network_device_portmac[$func_res['dev_Network_Node_port']] = $network_device_portmac[$func_res['dev_Network_Node_port']].','.$func_res['dev_MAC'];
} else {
$network_device_portmac[$func_res['dev_Network_Node_port']] = $func_res['dev_MAC'];
}
if ($network_device_portip[$func_res['dev_Network_Node_port']] != '') {
$network_device_portip[$func_res['dev_Network_Node_port']] = $network_device_portip[$func_res['dev_Network_Node_port']].','.$func_res['dev_LastIP'];
} else {
$network_device_portip[$func_res['dev_Network_Node_port']] = $func_res['dev_LastIP'];
}
if (isset($network_device_portstate[$func_res['dev_Network_Node_port']])) {
$network_device_portstate[$func_res['dev_Network_Node_port']] = $network_device_portstate[$func_res['dev_Network_Node_port']].','.$func_res['dev_PresentLastScan'];
} else {
$network_device_portstate[$func_res['dev_Network_Node_port']] = $func_res['dev_PresentLastScan'];
}
} else {
$multiport = array();
$multiport = explode(',',$func_res['dev_Network_Node_port']);
foreach($multiport as $row) {
$network_device_portname[trim($row)] = $func_res['dev_Name'];
$network_device_portmac[trim($row)] = $func_res['dev_MAC'];
$network_device_portip[trim($row)] = $func_res['dev_LastIP'];
$network_device_portstate[trim($row)] = $func_res['dev_PresentLastScan'];
}
unset($multiport);
}
} else {
// Table without Port > echo values
// Specific icon for devicetype
if ($type == "WLAN") {$dev_port_icon = 'fa-wifi';}
if ($type == "Powerline") {$dev_port_icon = 'fa-flash';}
echo ' | '.$port_state.' | '.$func_res['dev_Name'].' | '.$func_res['dev_LastIP'].' |
';
}
}
// Create table with Port
if ($port > 1)
{
for ($x=1; $x<=$port; $x++)
{
// Prepare online/offline badge for later functions
$online_badge = 'Online
';
$offline_badge = 'Offline
';
// Set online/offline badge
echo '';
echo '| '.$x.' | ';
// Set online/offline badge
// Check if multiple badges necessary
if (stristr($network_device_portstate[$x],',') == '') {
// Set single online/offline badge
if ($network_device_portstate[$x] == 1) {$port_state = $online_badge;} else {$port_state = $offline_badge;}
echo ''.$port_state.' | ';
} else {
// Set multiple online/offline badges
$multistate = array();
$multistate = explode(',',$network_device_portstate[$x]);
echo '';
foreach($multistate as $key => $value) {
if ($value == 1) {$port_state = $online_badge;} else {$port_state = $offline_badge;}
echo $port_state.' ';
}
echo ' | ';
unset($multistate);
}
// Check if multiple Hostnames are set
// print single hostname
if (stristr($network_device_portmac[$x],',') == '') {
echo ''.$network_device_portname[$x].' | ';
} else {
// print multiple hostnames with separate links
$multimac = array();
$multimac = explode(',',$network_device_portmac[$x]);
$multiname = array();
$multiname = explode(',',$network_device_portname[$x]);
echo '';
foreach($multiname as $key => $value) {
echo ''.$value.' ';
}
echo ' | ';
unset($multiname, $multimac);
}
// Check if multiple IP are set
// print single IP
if (stristr($network_device_portip[$x],',') == '') {
echo ''.$network_device_portip[$x].' | ';
} else {
// print multiple IPs
$multiip = array();
$multiip = explode(',',$network_device_portip[$x]);
echo '';
foreach($multiip as $key => $value) {
echo $value.' ';
}
echo ' | ';
unset($multiip);
}
echo '
';
}
}
echo '
';
echo '
';
}
// Create Tabs
$sql = 'select dev_MAC, dev_Name, dev_DeviceType, dev_Network_Node_port from Devices where dev_DeviceType in ("AP", "Gateway", "Powerline", "Switch", "WLAN", "PLC", "Router","USB LAN Adapter", "USB WIFI Adapter")';
$result = $db->query($sql);
// array
$tableData = array();
while ($row = $result -> fetchArray (SQLITE3_ASSOC)) {
// Push row data
$tableData[] = array('dev_MAC' => $row['dev_MAC'],
'dev_Name' => $row['dev_Name'],
'dev_DeviceType' => $row['dev_DeviceType'],
'dev_Network_Node_port' => $row['dev_Network_Node_port'] );
}
// Control no rows
if (empty($tableData)) {
$tableData = [];
}
?>
fetchArray(SQLITE3_ASSOC)){
createTabContent(
$res['dev_MAC'],
$res['dev_Name'],
$res['dev_DeviceType'],
$res['dev_Network_Node_port'],
$activetab);
$activetab = "";
}
?>