rewritten network tab

This commit is contained in:
jokob-sk
2022-07-31 19:48:43 +10:00
parent 21bbca62c1
commit f6490f5325
5 changed files with 324 additions and 371 deletions

View File

@@ -267,13 +267,24 @@ if ($_REQUEST['mac'] == 'Internet') { $DevDetail_Tap_temp = "Tools"; } else { $D
<div class="form-group"> <div class="form-group">
<label class="col-sm-6 control-label"><?php echo $pia_lang['DevDetail_MainInfo_Network'];?></label> <label class="col-sm-6 control-label"><?php echo $pia_lang['DevDetail_MainInfo_Network'];?></label>
<div class="col-sm-6"> <div class="col-sm-6">
<input class="form-control" id="txtInfrastructure" type="text" value="--"> <div class="input-group">
<input class="form-control" id="txtNetworkNodeMac" type="text" value="--">
<div class="input-group-btn">
<button type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown" aria-expanded="false" id="buttonNetworkNodeMac">
<span class="fa fa-caret-down"></span></button>
<ul id="dropdownNetworkNodeMac" class="dropdown-menu dropdown-menu-right">
</ul>
</div>
</div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-6 control-label"><?php echo $pia_lang['DevDetail_MainInfo_Network_Port'];?></label> <label class="col-sm-6 control-label"><?php echo $pia_lang['DevDetail_MainInfo_Network_Port'];?></label>
<div class="col-sm-6"> <div class="col-sm-6">
<input class="form-control" id="txtInfrastructurePort" type="text" value="--"> <input class="form-control" id="txtNetworkPort" type="text" value="--">
</div> </div>
</div> </div>
@@ -803,10 +814,11 @@ function initializeiCheck () {
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
function initializeCombos () { function initializeCombos () {
// Initialize combos with queries // Initialize combos with queries
initializeCombo ( $('#dropdownOwner')[0], 'getOwners', 'txtOwner'); initializeCombo ( $('#dropdownOwner')[0], 'getOwners', 'txtOwner');
initializeCombo ( $('#dropdownDeviceType')[0], 'getDeviceTypes', 'txtDeviceType'); initializeCombo ( $('#dropdownDeviceType')[0], 'getDeviceTypes', 'txtDeviceType');
initializeCombo ( $('#dropdownGroup')[0], 'getGroups', 'txtGroup'); initializeCombo ( $('#dropdownGroup')[0], 'getGroups', 'txtGroup');
initializeCombo ( $('#dropdownLocation')[0], 'getLocations', 'txtLocation'); initializeCombo ( $('#dropdownLocation')[0], 'getLocations', 'txtLocation');
initializeCombo ( $('#dropdownNetworkNodeMac')[0], 'getNetworkNodes', 'txtNetworkNodeMac');
// Initialize static combos // Initialize static combos
initializeComboSkipRepeated (); initializeComboSkipRepeated ();
@@ -827,10 +839,17 @@ function initializeCombo (HTMLelement, queryAction, txtDataField) {
order = item['order']; order = item['order'];
} }
id = item['name'];
// use explicitly specified id (value) if avaliable
if(item['id'])
{
id = item['id'];
}
// add dropdown item // add dropdown item
HTMLelement.innerHTML += HTMLelement.innerHTML +=
'<li><a href="javascript:void(0)" onclick="setTextValue(\''+ '<li><a href="javascript:void(0)" onclick="setTextValue(\''+
txtDataField +'\',\''+ item['name'] +'\')">'+ item['name'] + '</a></li>' txtDataField +'\',\''+ id +'\')">'+ item['name'] + '</a></li>'
}); });
}); });
} }
@@ -1120,8 +1139,8 @@ function getDeviceData (readAllData=false) {
$('#txtGroup').val ('--'); $('#txtGroup').val ('--');
$('#txtLocation').val ('--'); $('#txtLocation').val ('--');
$('#txtComments').val ('--'); $('#txtComments').val ('--');
$('#txtInfrastructure').val ('--'); $('#networkNodeMac').val ('--');
$('#txtInfrastructurePort').val ('--'); $('#txtNetworkPort').val ('--');
$('#txtFirstConnection').val ('--'); $('#txtFirstConnection').val ('--');
$('#txtLastConnection').val ('--'); $('#txtLastConnection').val ('--');
@@ -1209,8 +1228,8 @@ function getDeviceData (readAllData=false) {
$('#txtGroup').val (deviceData['dev_Group']); $('#txtGroup').val (deviceData['dev_Group']);
$('#txtLocation').val (deviceData['dev_Location']); $('#txtLocation').val (deviceData['dev_Location']);
$('#txtComments').val (deviceData['dev_Comments']); $('#txtComments').val (deviceData['dev_Comments']);
$('#txtInfrastructure').val (deviceData['dev_Infrastructure']); $('#txtNetworkNodeMac').val (deviceData['dev_Network_Node_MAC']);
$('#txtInfrastructurePort').val (deviceData['dev_Infrastructure_port']); $('#txtNetworkPort').val (deviceData['dev_Network_Node_port']);
$('#txtFirstConnection').val (deviceData['dev_FirstConnection']); $('#txtFirstConnection').val (deviceData['dev_FirstConnection']);
$('#txtLastConnection').val (deviceData['dev_LastConnection']); $('#txtLastConnection').val (deviceData['dev_LastConnection']);
@@ -1319,8 +1338,8 @@ function setDeviceData (refreshCallback='') {
+ '&group=' + $('#txtGroup').val() + '&group=' + $('#txtGroup').val()
+ '&location=' + $('#txtLocation').val() + '&location=' + $('#txtLocation').val()
+ '&comments=' + $('#txtComments').val() + '&comments=' + $('#txtComments').val()
+ '&infrastructure=' + $('#txtInfrastructure').val() + '&networknode=' + $('#txtNetworkNodeMac').val()
+ '&infrastructureport=' + $('#txtInfrastructurePort').val() + '&networknodeport=' + $('#txtNetworkPort').val()
+ '&staticIP=' + ($('#chkStaticIP')[0].checked * 1) + '&staticIP=' + ($('#chkStaticIP')[0].checked * 1)
+ '&scancycle=' + $('#txtScanCycle').val().split(' ')[0] + '&scancycle=' + $('#txtScanCycle').val().split(' ')[0]
+ '&alertevents=' + ($('#chkAlertEvents')[0].checked * 1) + '&alertevents=' + ($('#chkAlertEvents')[0].checked * 1)
@@ -1342,6 +1361,7 @@ function setDeviceData (refreshCallback='') {
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
function askSkipNotifications () { function askSkipNotifications () {
// Check MAC // Check MAC

View File

@@ -1,368 +1,256 @@
<?php <?php
session_start(); session_start();
if ($_SESSION["login"] != 1) if ($_SESSION["login"] != 1)
{ {
header('Location: /pialert/index.php'); header('Location: /pialert/index.php');
exit; exit;
} }
require 'php/templates/header.php'; require 'php/templates/header.php';
require 'php/server/db.php'; require 'php/server/db.php';
$DBFILE = '../db/pialert.db'; $DBFILE = '../db/pialert.db';
OpenDB(); OpenDB();
// #####################################
// ## Create Table if not exists'
// #####################################
$sql = 'CREATE TABLE IF NOT EXISTS "network_infrastructure" (
"device_id" INTEGER,
"net_device_name" TEXT NOT NULL,
"net_device_typ" TEXT NOT NULL,
"net_device_port" INTEGER,
PRIMARY KEY("device_id" AUTOINCREMENT)
)';
$result = $db->query($sql);
// #####################################
// ## Expand Devices Table
// #####################################
$sql = 'ALTER TABLE "Devices" ADD "dev_Infrastructure" INTEGER';
$result = $db->query($sql);
$sql = 'ALTER TABLE "Devices" ADD "dev_Infrastructure_port" INTEGER';
$result = $db->query($sql);
// #####################################
// Add New Network Devices
// #####################################
if ($_REQUEST['Networkinsert'] == "yes") {
if (isset($_REQUEST['NetworkDeviceName']) && isset($_REQUEST['NetworkDeviceTyp']))
{
$sql = 'INSERT INTO "network_infrastructure" ("net_device_name", "net_device_typ", "net_device_port") VALUES("'.$_REQUEST['NetworkDeviceName'].'", "'.$_REQUEST['NetworkDeviceTyp'].'", "'.$_REQUEST['NetworkDevicePort'].'")';
$result = $db->query($sql);
}
}
// #####################################
// Add New Network Devices
// #####################################
if ($_REQUEST['Networkedit'] == "yes") {
if (isset($_REQUEST['NewNetworkDeviceName']) && isset($_REQUEST['NewNetworkDeviceTyp']))
{
$sql = 'UPDATE "network_infrastructure" SET "net_device_name" = "'.$_REQUEST['NewNetworkDeviceName'].'", "net_device_typ" = "'.$_REQUEST['NewNetworkDeviceTyp'].'", "net_device_port" = "'.$_REQUEST['NewNetworkDevicePort'].'" WHERE "device_id"="'.$_REQUEST['NetworkDeviceID'].'"';
//$sql = 'INSERT INTO "network_infrastructure" ("net_device_name", "net_device_typ", "net_device_port") VALUES("'.$_REQUEST['NetworkDeviceName'].'", "'.$_REQUEST['NetworkDeviceTyp'].'", "'.$_REQUEST['NetworkDevicePort'].'")';
$result = $db->query($sql);
}
}
// #####################################
// remove Network Devices
// #####################################
if ($_REQUEST['Networkdelete'] == "yes") {
if (isset($_REQUEST['NetworkDeviceID']))
{
$sql = 'DELETE FROM "network_infrastructure" WHERE "device_id"="'.$_REQUEST['NetworkDeviceID'].'"';
$result = $db->query($sql);
}
}
// #####################################
// ## Expand Devices Table
// #####################################
$sql = 'ALTER TABLE "Devices" ADD "dev_Network_Node_MAC" INTEGER';
$result = $db->query($sql);
$sql = 'ALTER TABLE "Devices" ADD "dev_Network_Node_port" INTEGER';
$result = $db->query($sql);
?> ?>
<!-- Page ------------------------------------------------------------------ --> <!-- Page ------------------------------------------------------------------ -->
<div class="content-wrapper"> <div class="content-wrapper">
<!-- Content header--------------------------------------------------------- --> <!-- Content header--------------------------------------------------------- -->
<section class="content-header"> <section class="content-header">
<?php require 'php/templates/notification.php'; ?> <?php require 'php/templates/notification.php'; ?>
<h1 id="pageTitle"> <h1 id="pageTitle">
<?php echo $pia_lang['Network_Title'];?> <?php echo $pia_lang['Network_Title'];?>
</h1> </h1>
</section> </section>
<?php <?php
echo $_REQUEST['device_id']; echo $_REQUEST['net_MAC'];
?> ?>
<!-- Main content ---------------------------------------------------------- -->
<section class="content">
<div class="box box-default collapsed-box"> <!-- collapsed-box -->
<div class="box-header with-border" data-widget="collapse">
<h3 class="box-title"><?php echo $pia_lang['Network_ManageDevices'];?></h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-plus"></i></button>
</div>
</div>
<!-- /.box-header -->
<div class="box-body" style="">
<div class="row">
<div class="col-md-4">
<h4 class="box-title"><?php echo $pia_lang['Network_ManageAdd'];?></h4>
<form role="form" method="post" action="./network.php">
<div class="form-group">
<label for="NetworkDeviceName"><?php echo $pia_lang['Network_ManageAdd_Name'];?>:</label>
<input type="text" class="form-control" id="NetworkDeviceName" name="NetworkDeviceName" placeholder="<?php echo $pia_lang['Network_ManageAdd_Name_text'];?>">
</div>
<!-- /.form-group -->
<div class="form-group">
<label><?php echo $pia_lang['Network_ManageAdd_Type'];?>:</label>
<select class="form-control" name="NetworkDeviceTyp">
<option value=""><?php echo $pia_lang['Network_ManageAdd_Type_text'];?></option>
<option value="Router">Router</option>
<option value="Switch">Switch</option>
<option value="WLAN">WLAN</option>
<option value="Powerline">Powerline</option>
</select>
</div>
<div class="form-group">
<label for="NetworkDevicePort"><?php echo $pia_lang['Network_ManageAdd_Port'];?>:</label>
<input type="text" class="form-control" id="NetworkDevicePort" name="NetworkDevicePort" placeholder="<?php echo $pia_lang['Network_ManageAdd_Port_text'];?>">
</div>
<div class="form-group">
<button type="submit" class="btn btn-success" name="Networkinsert" value="yes"><?php echo $pia_lang['Network_ManageAdd_Submit'];?></button>
</div>
</form>
<!-- /.form-group -->
</div>
<!-- /.col -->
<div class="col-md-4">
<h4 class="box-title"><?php echo $pia_lang['Network_ManageEdit'];?></h4>
<form role="form" method="post" action="./network.php">
<div class="form-group">
<label><?php echo $pia_lang['Network_ManageEdit_ID'];?>:</label>
<select class="form-control" name="NetworkDeviceID">
<option value=""><?php echo $pia_lang['Network_ManageEdit_ID_text'];?></option>
<?php
$sql = 'SELECT "device_id", "net_device_name", "net_device_typ" FROM "network_infrastructure"';
$result = $db->query($sql);//->fetchArray(SQLITE3_ASSOC);
while($res = $result->fetchArray(SQLITE3_ASSOC)){
if(!isset($res['device_id'])) continue;
echo '<option value="'.$res['device_id'].'">'.$res['net_device_name'].' / '.$res['net_device_typ'].'</option>';
}
?>
</select>
</div>
<div class="form-group">
<label for="NetworkDeviceName"><?php echo $pia_lang['Network_ManageEdit_Name'];?>:</label>
<input type="text" class="form-control" id="NewNetworkDeviceName" name="NewNetworkDeviceName" placeholder="<?php echo $pia_lang['Network_ManageEdit_Name_text'];?>">
</div>
<div class="form-group">
<label><?php echo $pia_lang['Network_ManageEdit_Type'];?>:</label>
<select class="form-control" name="NewNetworkDeviceTyp">
<option value=""><?php echo $pia_lang['Network_ManageEdit_Type_text'];?></option>
<option value="Router">Router</option>
<option value="Switch">Switch</option>
<option value="WLAN">WLAN</option>
<option value="Powerline">Powerline</option>
</select>
</div>
<div class="form-group">
<label for="NetworkDevicePort"><?php echo $pia_lang['Network_ManageEdit_Port'];?>:</label>
<input type="text" class="form-control" id="NewNetworkDevicePort" name="NewNetworkDevicePort" placeholder="<?php echo $pia_lang['Network_ManageEdit_Port_text'];?>">
</div>
<!-- /.form-group -->
<div class="form-group">
<button type="submit" class="btn btn-primary" name="Networkedit" value="yes"><?php echo $pia_lang['Network_ManageEdit_Submit'];?></button>
</div>
</form>
<!-- /.form-group -->
</div>
<!-- /.col -->
<div class="col-md-4">
<h4 class="box-title"><?php echo $pia_lang['Network_ManageDel'];?></h4>
<form role="form" method="post" action="./network.php">
<div class="form-group">
<label><?php echo $pia_lang['Network_ManageDel_Name'];?>:</label>
<select class="form-control" name="NetworkDeviceID">
<option value=""><?php echo $pia_lang['Network_ManageDel_Name_text'];?></option>
<?php
$sql = 'SELECT "device_id", "net_device_name", "net_device_typ" FROM "network_infrastructure"';
$result = $db->query($sql);//->fetchArray(SQLITE3_ASSOC);
while($res = $result->fetchArray(SQLITE3_ASSOC)){
if(!isset($res['device_id'])) continue;
echo '<option value="'.$res['device_id'].'">'.$res['net_device_name'].' / '.$res['net_device_typ'].'</option>';
}
?>
</select>
</div>
<!-- /.form-group -->
<div class="form-group">
<button type="submit" class="btn btn-danger" name="Networkdelete" value="yes"><?php echo $pia_lang['Network_ManageDel_Submit'];?></button>
</div>
</form>
<!-- /.form-group -->
</div>
</div>
<!-- /.row -->
</div>
<!-- /.box-body -->
</div>
<?php <!-- Main content ---------------------------------------------------------- -->
// ##################################### <section class="content">
// ## Start Function Setup <?php
// #####################################
function createnetworktab($pia_func_netdevid, $pia_func_netdevname, $pia_func_netdevtyp, $pia_func_netdevport, $activetab) { function createDeviceTabs($mac, $name, $type, $port, $activetab) {
echo '<li class="'.$activetab.'"><a href="#'.$pia_func_netdevid.'" data-toggle="tab">'.$pia_func_netdevname.' / '.$pia_func_netdevtyp;
if ($pia_func_netdevport != "") {echo ' ('.$pia_func_netdevport.')';} echo '<li class="'.$activetab.'"><a href="#'.str_replace(":", "_", $mac).'" data-toggle="tab">'.$name.' / '.$type;
echo '</a></li>'; if ($port != "") {
} echo ' ('.$port.')';
function createnetworktabcontent($pia_func_netdevid, $pia_func_netdevname, $pia_func_netdevtyp, $pia_func_netdevport, $activetab) {
global $pia_lang;
echo '<div class="tab-pane '.$activetab.'" id="'.$pia_func_netdevid.'">
<h4>'.$pia_func_netdevname.' (ID: '.$pia_func_netdevid.')</h4><br>';
echo '<div class="box-body no-padding">
<table class="table table-striped">
<tbody><tr>
<th style="width: 40px">Port</th>
<th style="width: 100px">'.$pia_lang['Network_Table_State'].'</th>
<th>'.$pia_lang['Network_Table_Hostname'].'</th>
<th>'.$pia_lang['Network_Table_IP'].'</th>
</tr>';
// Prepare Array for Devices with Port value
// If no Port is set, the Port number is set to 1
if ($pia_func_netdevport == "") {$pia_func_netdevport = 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_Infrastructure" = "'.$pia_func_netdevid.'"';
$func_result = $db->query($func_sql);//->fetchArray(SQLITE3_ASSOC);
while($func_res = $func_result->fetchArray(SQLITE3_ASSOC)) {
//if(!isset($func_res['dev_Name'])) continue;
if ($func_res['dev_PresentLastScan'] == 1) {$port_state = '<div class="badge bg-green text-white" style="width: 60px;">Online</div>';} else {$port_state = '<div class="badge bg-red text-white" style="width: 60px;">Offline</div>';}
// Prepare Table with Port > push values in array
if ($pia_func_netdevport > 1)
{
if (stristr($func_res['dev_Infrastructure_port'], ',') == '') {
if ($network_device_portname[$func_res['dev_Infrastructure_port']] != '') {$network_device_portname[$func_res['dev_Infrastructure_port']] = $network_device_portname[$func_res['dev_Infrastructure_port']].','.$func_res['dev_Name'];} else {$network_device_portname[$func_res['dev_Infrastructure_port']] = $func_res['dev_Name'];}
if ($network_device_portmac[$func_res['dev_Infrastructure_port']] != '') {$network_device_portmac[$func_res['dev_Infrastructure_port']] = $network_device_portmac[$func_res['dev_Infrastructure_port']].','.$func_res['dev_MAC'];} else {$network_device_portmac[$func_res['dev_Infrastructure_port']] = $func_res['dev_MAC'];}
if ($network_device_portip[$func_res['dev_Infrastructure_port']] != '') {$network_device_portip[$func_res['dev_Infrastructure_port']] = $network_device_portip[$func_res['dev_Infrastructure_port']].','.$func_res['dev_LastIP'];} else {$network_device_portip[$func_res['dev_Infrastructure_port']] = $func_res['dev_LastIP'];}
if (isset($network_device_portstate[$func_res['dev_Infrastructure_port']])) {$network_device_portstate[$func_res['dev_Infrastructure_port']] = $network_device_portstate[$func_res['dev_Infrastructure_port']].','.$func_res['dev_PresentLastScan'];} else {$network_device_portstate[$func_res['dev_Infrastructure_port']] = $func_res['dev_PresentLastScan'];}
} else {
$multiport = array();
$multiport = explode(',',$func_res['dev_Infrastructure_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 { echo '</a></li>';
// Table without Port > echo values
// Specific icon for devicetype
if ($pia_func_netdevtyp == "WLAN") {$dev_port_icon = 'fa-wifi';}
if ($pia_func_netdevtyp == "Powerline") {$dev_port_icon = 'fa-flash';}
echo '<tr><td style="text-align: center;"><i class="fa '.$dev_port_icon.'"></i></td><td>'.$port_state.'</td><td style="padding-left: 10px;"><a href="./deviceDetails.php?mac='.$func_res['dev_MAC'].'"><b>'.$func_res['dev_Name'].'</b></a></td><td>'.$func_res['dev_LastIP'].'</td></tr>';
} }
}
// Create table with Port
if ($pia_func_netdevport > 1)
{
for ($x=1; $x<=$pia_func_netdevport; $x++)
{
// Prepare online/offline badge for later functions
$online_badge = '<div class="badge bg-green text-white" style="width: 60px;">Online</div>';
$offline_badge = '<div class="badge bg-red text-white" style="width: 60px;">Offline</div>';
// Set online/offline badge
echo '<tr>';
echo '<td style="text-align: right; padding-right:16px;">'.$x.'</td>';
// 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 '<td>'.$port_state.'</td>';
} else {
// Set multiple online/offline badges
$multistate = array();
$multistate = explode(',',$network_device_portstate[$x]);
echo '<td>';
foreach($multistate as $key => $value) {
if ($value == 1) {$port_state = $online_badge;} else {$port_state = $offline_badge;}
echo $port_state.'<br>';
}
echo '</td>';
unset($multistate);
}
// Check if multiple Hostnames are set
// print single hostname
if (stristr($network_device_portmac[$x],',') == '') {
echo '<td style="padding-left: 10px;"><a href="./deviceDetails.php?mac='.$network_device_portmac[$x].'"><b>'.$network_device_portname[$x].'</b></a></td>';
} else {
// print multiple hostnames with separate links
$multimac = array();
$multimac = explode(',',$network_device_portmac[$x]);
$multiname = array();
$multiname = explode(',',$network_device_portname[$x]);
echo '<td style="padding-left: 10px;">';
foreach($multiname as $key => $value) {
echo '<a href="./deviceDetails.php?mac='.$multimac[$key].'"><b>'.$value.'</b></a><br>';
}
echo '</td>';
unset($multiname, $multimac);
}
// Check if multiple IP are set
// print single IP
if (stristr($network_device_portip[$x],',') == '') {
echo '<td style="padding-left: 10px;">'.$network_device_portip[$x].'</td>';
} else {
// print multiple IPs
$multiip = array();
$multiip = explode(',',$network_device_portip[$x]);
echo '<td style="padding-left: 10px;">';
foreach($multiip as $key => $value) {
echo $value.'<br>';
}
echo '</td>';
unset($multiip);
}
echo '</tr>';
}
}
echo ' </tbody></table>
</div>';
echo '</div> ';
}
// #####################################
// ## End Function Setup
// #####################################
// ##################################### function createTabContent($mac, $name, $type, $port, $activetab) {
// ## Create Tabs global $pia_lang;
// ##################################### echo '<div class="tab-pane '.$activetab.'" id="'.str_replace(":", "_", $mac).'">
$sql = 'SELECT "device_id", "net_device_name", "net_device_typ", "net_device_port" FROM "network_infrastructure"'; <h4>'.$name.' (ID: '.str_replace(":", "_", $mac).')</h4><br>';
$result = $db->query($sql);//->fetchArray(SQLITE3_ASSOC); echo '<div class="box-body no-padding">
?> <table class="table table-striped">
<div class="nav-tabs-custom" style="margin-bottom: 0px;"> <tbody><tr>
<ul class="nav nav-tabs"> <th style="width: 40px">Port</th>
<?php <th style="width: 100px">'.$pia_lang['Network_Table_State'].'</th>
$i = 0; <th>'.$pia_lang['Network_Table_Hostname'].'</th>
while($res = $result->fetchArray(SQLITE3_ASSOC)){ <th>'.$pia_lang['Network_Table_IP'].'</th>
if(!isset($res['device_id'])) continue; </tr>';
if ($i == 0) {$active = 'active';} else {$active = '';} // Prepare Array for Devices with Port value
createnetworktab($res['device_id'], $res['net_device_name'], $res['net_device_typ'], $res['net_device_port'], $active); // If no Port is set, the Port number is set to 1
$i++; if ($port == "") {$port = 1;}
} // Create Array with specific length
?> $network_device_portname = array();
</ul> $network_device_portmac = array();
<div class="tab-content"> $network_device_portip = array();
<?php $network_device_portstate = array();
// ##################################### // make sql query for Network Hardware ID
// ## Ctreate Tab Content global $db;
// ##################################### $func_sql = 'SELECT * FROM "Devices" WHERE "dev_Network_Node_MAC" = "'.$mac.'"';
$i = 0; $func_result = $db->query($func_sql);
while($res = $result->fetchArray(SQLITE3_ASSOC)){ while($func_res = $func_result->fetchArray(SQLITE3_ASSOC)) {
if(!isset($res['device_id'])) continue; // Online / Offline state of port
if ($i == 0) {$active = 'active';} else {$active = '';} if ($func_res['dev_PresentLastScan'] == 1) {
createnetworktabcontent($res['device_id'], $res['net_device_name'], $res['net_device_typ'], $res['net_device_port'], $active); $port_state = '<div class="badge bg-green text-white" style="width: 60px;">Online</div>';
$i++; } else {
} $port_state = '<div class="badge bg-red text-white" style="width: 60px;">Offline</div>';
unset($i); }
?> // Prepare Table with Port > push values in array
<!-- /.tab-pane --> if ($port > 1)
</div> {
<!-- /.tab-content --> if (stristr($func_res['dev_Network_Node_port'], ',') == '') {
</div> if ($network_device_portname[$func_res['dev_Network_Node_port']] != '') {
<div style="width: 100%; height: 20px;"></div> $network_device_portname[$func_res['dev_Network_Node_port']] = $network_device_portname[$func_res['dev_Network_Node_port']].','.$func_res['dev_Name'];
</section> } 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 '<tr><td style="text-align: center;"><i class="fa '.$dev_port_icon.'"></i></td><td>'.$port_state.'</td><td style="padding-left: 10px;"><a href="./deviceDetails.php?mac='.$func_res['dev_MAC'].'"><b>'.$func_res['dev_Name'].'</b></a></td><td>'.$func_res['dev_LastIP'].'</td></tr>';
}
}
// Create table with Port
if ($port > 1)
{
for ($x=1; $x<=$port; $x++)
{
// Prepare online/offline badge for later functions
$online_badge = '<div class="badge bg-green text-white" style="width: 60px;">Online</div>';
$offline_badge = '<div class="badge bg-red text-white" style="width: 60px;">Offline</div>';
// Set online/offline badge
echo '<tr>';
echo '<td style="text-align: right; padding-right:16px;">'.$x.'</td>';
// 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 '<td>'.$port_state.'</td>';
} else {
// Set multiple online/offline badges
$multistate = array();
$multistate = explode(',',$network_device_portstate[$x]);
echo '<td>';
foreach($multistate as $key => $value) {
if ($value == 1) {$port_state = $online_badge;} else {$port_state = $offline_badge;}
echo $port_state.'<br>';
}
echo '</td>';
unset($multistate);
}
// Check if multiple Hostnames are set
// print single hostname
if (stristr($network_device_portmac[$x],',') == '') {
echo '<td style="padding-left: 10px;"><a href="./deviceDetails.php?mac='.$network_device_portmac[$x].'"><b>'.$network_device_portname[$x].'</b></a></td>';
} else {
// print multiple hostnames with separate links
$multimac = array();
$multimac = explode(',',$network_device_portmac[$x]);
$multiname = array();
$multiname = explode(',',$network_device_portname[$x]);
echo '<td style="padding-left: 10px;">';
foreach($multiname as $key => $value) {
echo '<a href="./deviceDetails.php?mac='.$multimac[$key].'"><b>'.$value.'</b></a><br>';
}
echo '</td>';
unset($multiname, $multimac);
}
// Check if multiple IP are set
// print single IP
if (stristr($network_device_portip[$x],',') == '') {
echo '<td style="padding-left: 10px;">'.$network_device_portip[$x].'</td>';
} else {
// print multiple IPs
$multiip = array();
$multiip = explode(',',$network_device_portip[$x]);
echo '<td style="padding-left: 10px;">';
foreach($multiip as $key => $value) {
echo $value.'<br>';
}
echo '</td>';
unset($multiip);
}
echo '</tr>';
}
}
echo ' </tbody>
</table>
</div>';
echo '</div> ';
}
// 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 = [];
}
?>
<div class="nav-tabs-custom" style="margin-bottom: 0px;">
<ul class="nav nav-tabs">
<?php
$activetab='active';
foreach ($tableData as $row) {
createDeviceTabs($row['dev_MAC'],
$row['dev_Name'],
$row['dev_DeviceType'],
$row['dev_Network_Node_port'],
$activetab);
$activetab = "";
}
?>
</ul>
<div class="tab-content">
<?php
// Ctreate Tab Content
$activetab='active';
while($res = $result->fetchArray(SQLITE3_ASSOC)){
createTabContent(
$res['dev_MAC'],
$res['dev_Name'],
$res['dev_DeviceType'],
$res['dev_Network_Node_port'],
$activetab);
$activetab = "";
}
?>
<!-- /.tab-pane -->
</div>
<!-- /.tab-content -->
</div>
<div style="width: 100%; height: 20px;"></div>
</section>
<!-- /.content --> <!-- /.content -->
</div> </div>

View File

@@ -41,6 +41,7 @@ if (strlen($pia_lang_selected) == 0) {$pia_lang_selected = 'en_us';}
switch ($action) { switch ($action) {
case 'getDeviceData': getDeviceData(); break; case 'getDeviceData': getDeviceData(); break;
case 'setDeviceData': setDeviceData(); break; case 'setDeviceData': setDeviceData(); break;
case 'getNetworkNodes': getNetworkNodes(); break;
case 'deleteDevice': deleteDevice(); break; case 'deleteDevice': deleteDevice(); break;
case 'deleteAllWithEmptyMACs': deleteAllWithEmptyMACs(); break; case 'deleteAllWithEmptyMACs': deleteAllWithEmptyMACs(); break;
case 'createBackupDB': createBackupDB(); break; case 'createBackupDB': createBackupDB(); break;
@@ -94,8 +95,8 @@ function getDeviceData() {
$deviceData = $row; $deviceData = $row;
$mac = $deviceData['dev_MAC']; $mac = $deviceData['dev_MAC'];
$deviceData['dev_Infrastructure'] = $row['dev_Infrastructure']; $deviceData['dev_Network_Node_MAC'] = $row['dev_Network_Node_MAC'];
$deviceData['dev_Infrastructure_port'] = $row['dev_Infrastructure_port']; $deviceData['dev_Network_Node_port'] = $row['dev_Network_Node_port'];
$deviceData['dev_FirstConnection'] = formatDate ($row['dev_FirstConnection']); // Date formated $deviceData['dev_FirstConnection'] = formatDate ($row['dev_FirstConnection']); // Date formated
$deviceData['dev_LastConnection'] = formatDate ($row['dev_LastConnection']); // Date formated $deviceData['dev_LastConnection'] = formatDate ($row['dev_LastConnection']); // Date formated
@@ -165,8 +166,8 @@ function setDeviceData() {
dev_Group = "'. quotes($_REQUEST['group']) .'", dev_Group = "'. quotes($_REQUEST['group']) .'",
dev_Location = "'. quotes($_REQUEST['location']) .'", dev_Location = "'. quotes($_REQUEST['location']) .'",
dev_Comments = "'. quotes($_REQUEST['comments']) .'", dev_Comments = "'. quotes($_REQUEST['comments']) .'",
dev_Infrastructure = "'. quotes($_REQUEST['infrastructure']).'", dev_Network_Node_MAC = "'. quotes($_REQUEST['networknode']).'",
dev_Infrastructure_port = "'. quotes($_REQUEST['infrastructureport']).'", dev_Network_Node_port = "'. quotes($_REQUEST['networknodeport']).'",
dev_StaticIP = "'. quotes($_REQUEST['staticIP']) .'", dev_StaticIP = "'. quotes($_REQUEST['staticIP']) .'",
dev_ScanCycle = "'. quotes($_REQUEST['scancycle']) .'", dev_ScanCycle = "'. quotes($_REQUEST['scancycle']) .'",
dev_AlertEvents = "'. quotes($_REQUEST['alertevents']) .'", dev_AlertEvents = "'. quotes($_REQUEST['alertevents']) .'",
@@ -599,12 +600,43 @@ function getOwners() {
} }
//------------------------------------------------------------------------------
// Query Device Data
//------------------------------------------------------------------------------
function getNetworkNodes() {
global $db;
// Device Data
$sql = 'SELECT * FROM Devices WHERE dev_DeviceType in ( "AP", "Gateway", "Powerline", "Switch", "WLAN", "PLC", "Router","USB LAN Adapter", "USB WIFI Adapter")';
$result = $db->query($sql);
// arrays of rows
$tableData = array();
while ($row = $result -> fetchArray (SQLITE3_ASSOC)) {
// Push row data
$tableData[] = array('id' => $row['dev_MAC'],
'name' => $row['dev_Name'] );
}
// Control no rows
if (empty($tableData)) {
$tableData = [];
}
// Return json
echo (json_encode ($tableData));
}
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// Query the List of types // Query the List of types
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
function getDeviceTypes() { function getDeviceTypes() {
global $db; global $db;
$networkTypes = getNetworkTypes();
// SQL // SQL
$sql = 'SELECT DISTINCT 9 as dev_Order, dev_DeviceType $sql = 'SELECT DISTINCT 9 as dev_Order, dev_DeviceType
FROM Devices FROM Devices
@@ -613,7 +645,7 @@ function getDeviceTypes() {
"Laptop", "Mini PC", "PC", "Printer", "Server", "Singleboard Computer (SBC)", "Laptop", "Mini PC", "PC", "Printer", "Server", "Singleboard Computer (SBC)",
"Game Console", "SmartTV", "TV Decoder", "Virtual Assistance", "Game Console", "SmartTV", "TV Decoder", "Virtual Assistance",
"Clock", "House Appliance", "Phone", "Radio", "Clock", "House Appliance", "Phone", "Radio",
"AP", "NAS", "PLC", "Router") "AP", "Gateway", "Powerline", "Switch", "WLAN", "PLC", "Router","USB LAN Adapter", "USB WIFI Adapter" )
UNION SELECT 1 as dev_Order, "Smartphone" UNION SELECT 1 as dev_Order, "Smartphone"
UNION SELECT 1 as dev_Order, "Tablet" UNION SELECT 1 as dev_Order, "Tablet"
@@ -624,6 +656,7 @@ function getDeviceTypes() {
UNION SELECT 2 as dev_Order, "Printer" UNION SELECT 2 as dev_Order, "Printer"
UNION SELECT 2 as dev_Order, "Server" UNION SELECT 2 as dev_Order, "Server"
UNION SELECT 2 as dev_Order, "Singleboard Computer (SBC)" UNION SELECT 2 as dev_Order, "Singleboard Computer (SBC)"
UNION SELECT 2 as dev_Order, "NAS"
UNION SELECT 3 as dev_Order, "Domotic" UNION SELECT 3 as dev_Order, "Domotic"
UNION SELECT 3 as dev_Order, "Game Console" UNION SELECT 3 as dev_Order, "Game Console"
@@ -636,8 +669,12 @@ function getDeviceTypes() {
UNION SELECT 4 as dev_Order, "Phone" UNION SELECT 4 as dev_Order, "Phone"
UNION SELECT 4 as dev_Order, "Radio" UNION SELECT 4 as dev_Order, "Radio"
-- network devices
UNION SELECT 5 as dev_Order, "AP" UNION SELECT 5 as dev_Order, "AP"
UNION SELECT 5 as dev_Order, "NAS" UNION SELECT 5 as dev_Order, "Gateway"
UNION SELECT 5 as dev_Order, "Powerline"
UNION SELECT 5 as dev_Order, "Switch"
UNION SELECT 5 as dev_Order, "WLAN"
UNION SELECT 5 as dev_Order, "PLC" UNION SELECT 5 as dev_Order, "PLC"
UNION SELECT 5 as dev_Order, "Router" UNION SELECT 5 as dev_Order, "Router"
UNION SELECT 5 as dev_Order, "USB LAN Adapter" UNION SELECT 5 as dev_Order, "USB LAN Adapter"
@@ -646,6 +683,8 @@ function getDeviceTypes() {
UNION SELECT 10 as dev_Order, "Other" UNION SELECT 10 as dev_Order, "Other"
ORDER BY 1,2'; ORDER BY 1,2';
$result = $db->query($sql); $result = $db->query($sql);
// arrays of rows // arrays of rows
@@ -658,8 +697,6 @@ function getDeviceTypes() {
// Return json // Return json
echo (json_encode ($tableData)); echo (json_encode ($tableData));
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// Query the List of groups // Query the List of groups
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------

View File

@@ -65,4 +65,12 @@ function logServerConsole ($text) {
$y = $x['__________'. $text .'__________']; $y = $x['__________'. $text .'__________'];
} }
function getNetworkTypes(){
$array = array(
"AP", "Gateway", "Powerline", "Switch", "WLAN", "PLC", "Router","USB LAN Adapter", "USB WIFI Adapter"
);
return $array;
}
?> ?>

View File

@@ -133,8 +133,8 @@ $pia_lang['DevDetail_MainInfo_Favorite'] = 'Favorite';
$pia_lang['DevDetail_MainInfo_Group'] = 'Group'; $pia_lang['DevDetail_MainInfo_Group'] = 'Group';
$pia_lang['DevDetail_MainInfo_Location'] = 'Location'; $pia_lang['DevDetail_MainInfo_Location'] = 'Location';
$pia_lang['DevDetail_MainInfo_Comments'] = 'Comments'; $pia_lang['DevDetail_MainInfo_Comments'] = 'Comments';
$pia_lang['DevDetail_MainInfo_Network'] = 'Network Hardware (ID)'; $pia_lang['DevDetail_MainInfo_Network'] = 'Network Node (MAC)';
$pia_lang['DevDetail_MainInfo_Network_Port'] = 'Network HW Port'; $pia_lang['DevDetail_MainInfo_Network_Port'] = 'Connected to Port';
$pia_lang['DevDetail_SessionInfo_Title'] = 'Session Info'; $pia_lang['DevDetail_SessionInfo_Title'] = 'Session Info';
$pia_lang['DevDetail_SessionInfo_Status'] = 'Status'; $pia_lang['DevDetail_SessionInfo_Status'] = 'Status';
$pia_lang['DevDetail_SessionInfo_FirstSession'] = 'First Session'; $pia_lang['DevDetail_SessionInfo_FirstSession'] = 'First Session';