mirror of
https://github.com/librenms/librenms.git
synced 2024-09-21 18:38:25 +00:00
webui: Ports table refresh (#7827)
* initial release * removed duplicate div tag * deleted ports reworks * more header optimizations, added status entries * more header optimizations, added status entries * added purge all, testing needed, try once again to fix overflowing filtering bar * fix purge all, another try to break option bar in two for longer inputs * fix indentation
This commit is contained in:
parent
7a0f8c02b6
commit
3f0ad0360e
@ -346,7 +346,7 @@ foreach (dbFetchRows("SELECT * FROM `ports` AS P, `devices` as D WHERE P.`delete
|
||||
<?php
|
||||
|
||||
if ($deleted_ports) {
|
||||
echo(' <li><a href="deleted-ports/"><i class="fa fa-minus-circle fa-fw fa-lg" aria-hidden="true"></i> Deleted ('.$deleted_ports.')</a></li>');
|
||||
echo(' <li><a href="ports/deleted=yes/"><i class="fa fa-minus-circle fa-fw fa-lg" aria-hidden="true"></i> Deleted ('.$deleted_ports.')</a></li>');
|
||||
}
|
||||
|
||||
?>
|
||||
|
@ -141,21 +141,47 @@ foreach (dbFetchRows($query, $param) as $port) {
|
||||
$device = device_by_id_cache($port['device_id']);
|
||||
$port = cleanPort($port, $device);
|
||||
|
||||
switch ($port['ifOperStatus']) {
|
||||
case 'up':
|
||||
$status = '<span class="alert-status label-success"> </span>';
|
||||
break;
|
||||
case 'down':
|
||||
switch ($port['ifAdminStatus']) {
|
||||
case 'up':
|
||||
$status = '<span class="alert-status label-danger"> </span>';
|
||||
break;
|
||||
case 'down':
|
||||
$status = '<span class="alert-status label-warning"> </span>';
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
// FIXME what actions should we have?
|
||||
$actions = '<div class="container-fluid"><div class="row">';
|
||||
$actions .= '<div class="col-xs-1"><a href="';
|
||||
$actions .= generate_device_url($device, array('tab' => 'alerts'));
|
||||
$actions .= '"><i class="fa fa-exclamation-circle fa-lg icon-theme" title="View alerts" aria-hidden="true"></i></a></div>';
|
||||
|
||||
if ($_SESSION['userlevel'] >= '7') {
|
||||
if ($_POST['deleted'] !== 'yes') {
|
||||
$actions .= '<div class="col-xs-1"><a href="';
|
||||
$actions .= generate_device_url($device, array('tab' => 'edit', 'section' => 'ports'));
|
||||
$actions .= '"><i class="fa fa-pencil fa-lg icon-theme" title="Edit ports" aria-hidden="true"></i></a></div>';
|
||||
$actions .= generate_device_url($device, array('tab' => 'alerts'));
|
||||
$actions .= '" title="View alerts"><i class="fa fa-exclamation-circle fa-lg icon-theme" aria-hidden="true"></i></a></div>';
|
||||
|
||||
if ($_SESSION['userlevel'] >= '7') {
|
||||
$actions .= '<div class="col-xs-1"><a href="';
|
||||
$actions .= generate_device_url($device, array('tab' => 'edit', 'section' => 'ports'));
|
||||
$actions .= '" title="Edit ports"><i class="fa fa-pencil fa-lg icon-theme" aria-hidden="true"></i></a></div>';
|
||||
}
|
||||
}
|
||||
|
||||
if ($_POST['deleted'] === 'yes') {
|
||||
if (port_permitted($port['port_id'], $device['device_id'])) {
|
||||
$actions .= '<div class="col-xs-1"><a href="ports/deleted=yes/purge=' . $port['port_id'] . '" title="Delete port"><i class="fa fa-times fa-lg icon-theme"></i></a></div>';
|
||||
}
|
||||
}
|
||||
|
||||
$actions .= '</div></div>';
|
||||
|
||||
$response[] = array(
|
||||
'status' => $status,
|
||||
'device' => generate_device_link($device),
|
||||
'port' => generate_port_link($port),
|
||||
'ifLastChange' => ceil($port['secondsIfLastChange']),
|
||||
|
@ -1,37 +0,0 @@
|
||||
<?php
|
||||
|
||||
$pagetitle[] = 'Deleted ports';
|
||||
|
||||
if ($vars['purge'] == 'all') {
|
||||
foreach (dbFetchRows("SELECT * FROM `ports` AS P, `devices` as D WHERE P.`deleted` = '1' AND D.device_id = P.device_id") as $interface) {
|
||||
$interface = cleanPort($interface);
|
||||
if (port_permitted($interface['port_id'], $interface['device_id'])) {
|
||||
delete_port($interface['port_id']);
|
||||
echo '<div class=infobox>Deleted '.generate_device_link($interface).' - '.generate_port_link($interface).'</div>';
|
||||
}
|
||||
}
|
||||
} elseif ($vars['purge']) {
|
||||
$interface = dbFetchRow('SELECT * from `ports` AS P, `devices` AS D WHERE `port_id` = ? AND D.device_id = P.device_id', array($vars['purge']));
|
||||
$interface = cleanPort($interface);
|
||||
if (port_permitted($interface['port_id'], $interface['device_id'])) {
|
||||
delete_port($interface['port_id']);
|
||||
}
|
||||
|
||||
echo '<div class=infobox>Deleted '.generate_device_link($interface).' - '.generate_port_link($interface).'</div>';
|
||||
}
|
||||
|
||||
echo '<table class="table table-hover table-condensed">';
|
||||
echo "<tr><td>Device</td><td>Port</td><td></td><td><a href='deleted-ports/purge=all/'><i class='fa fa-times'></i> Purge All</a></td></tr>";
|
||||
|
||||
foreach (dbFetchRows("SELECT * FROM `ports` AS P, `devices` as D WHERE P.`deleted` = '1' AND D.device_id = P.device_id", array()) as $interface) {
|
||||
$interface = cleanPort($interface, $interface);
|
||||
if (port_permitted($interface['port_id'], $interface['device_id'])) {
|
||||
echo '<tr class=list>';
|
||||
echo '<td width=250>'.generate_device_link($interface).'</td>';
|
||||
echo '<td width=250>'.generate_port_link($interface).'</td>';
|
||||
echo '<td></td>';
|
||||
echo "<td width=100><a href='deleted-ports/purge=".$interface['port_id']."/'><i class='fa fa-times'></i> Purge</a></td>";
|
||||
}
|
||||
}
|
||||
|
||||
echo '</table>';
|
@ -1,4 +1,17 @@
|
||||
<?php
|
||||
/*
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation, either version 3 of the License, or (at your
|
||||
* option) any later version. Please see LICENSE.txt at the top level of
|
||||
* the source code distribution for details.
|
||||
*
|
||||
* @package LibreNMS
|
||||
* @subpackage webui
|
||||
* @link http://librenms.org
|
||||
* @copyright 2017 LibreNMS
|
||||
* @author LibreNMS Contributors
|
||||
*/
|
||||
|
||||
$pagetitle[] = "Ports";
|
||||
|
||||
@ -8,31 +21,24 @@ if (!isset($vars['format'])) {
|
||||
$vars['format'] = "list_basic";
|
||||
}
|
||||
|
||||
print_optionbar_start();
|
||||
|
||||
echo('<span style="font-weight: bold;">Lists</span> » ');
|
||||
$displayLists = '';
|
||||
$displayLists .= '<span style="font-weight: bold;">Ports lists</span> » ';
|
||||
|
||||
$menu_options = array('basic' => 'Basic', 'detail' => 'Detail');
|
||||
|
||||
$sep = "";
|
||||
foreach ($menu_options as $option => $text) {
|
||||
echo($sep);
|
||||
if ($vars['format'] == "list_".$option) {
|
||||
echo("<span class='pagemenu-selected'>");
|
||||
$displayLists .= $sep;
|
||||
if ($vars['format'] == "list_" . $option) {
|
||||
$displayLists .= '<span class="pagemenu-selected">';
|
||||
}
|
||||
echo('<a href="' . generate_url($vars, array('format' => "list_".$option)) . '">' . $text . '</a>');
|
||||
if ($vars['format'] == "list_".$option) {
|
||||
echo("</span>");
|
||||
$displayLists .= '<a href="' . generate_url($vars, array('format' => "list_" . $option)) . '">' . $text . '</a>';
|
||||
if ($vars['format'] == "list_" . $option) {
|
||||
$displayLists .= '</span>';
|
||||
}
|
||||
$sep = " | ";
|
||||
}
|
||||
?>
|
||||
|
||||
|
|
||||
|
||||
<span style="font-weight: bold;">Graphs</span> »
|
||||
|
||||
<?php
|
||||
$displayLists .= ' <span style="font-weight: bold;">Graphs</span> »';
|
||||
|
||||
$menu_options = array('bits' => 'Bits',
|
||||
'upkts' => 'Unicast Packets',
|
||||
@ -41,235 +47,250 @@ $menu_options = array('bits' => 'Bits',
|
||||
|
||||
$sep = "";
|
||||
foreach ($menu_options as $option => $text) {
|
||||
echo($sep);
|
||||
if ($vars['format'] == 'graph_'.$option) {
|
||||
echo('<span class="pagemenu-selected">');
|
||||
$displayLists .= $sep;
|
||||
if ($vars['format'] == 'graph_' . $option) {
|
||||
$displayLists .= '<span class="pagemenu-selected">';
|
||||
}
|
||||
echo('<a href="' . generate_url($vars, array('format' => 'graph_'.$option)) . '">' . $text . '</a>');
|
||||
if ($vars['format'] == 'graph_'.$option) {
|
||||
echo("</span>");
|
||||
$displayLists .= '<a href="' . generate_url($vars, array('format' => 'graph_' . $option)) . '">' . $text . '</a>';
|
||||
if ($vars['format'] == 'graph_' . $option) {
|
||||
$displayLists .= '</span>';
|
||||
}
|
||||
$sep = " | ";
|
||||
}
|
||||
|
||||
echo('<div style="float: right;">');
|
||||
?>
|
||||
$displayLists .= '<div style="float: right;">';
|
||||
$displayLists .= '<a href="csv.php/report=' . generate_url($vars, array('format' => '')) . '" title="Export as CSV" target="_blank" rel="noopener">Export CSV</a> | <a href="' . generate_url($vars) . '" title="Update the browser URL to reflect the search criteria.">Update URL</a>';
|
||||
|
||||
<a href="csv.php/report=<?php echo generate_url($vars, array('format'=>'')); ?>" title="Export as CSV" target="_blank" rel="noopener">Export CSV</a> |
|
||||
<a href="<?php echo(generate_url($vars)); ?>" title="Update the browser URL to reflect the search criteria." >Update URL</a> |
|
||||
|
||||
<?php
|
||||
if (isset($vars['searchbar']) && $vars['searchbar'] == "hide") {
|
||||
echo('<a href="'. generate_url($vars, array('searchbar' => '')).'">Search</a>');
|
||||
$displayLists .= '<a href="' . generate_url($vars, array('searchbar' => '')) . '">Search</a>';
|
||||
} else {
|
||||
echo('<a href="'. generate_url($vars, array('searchbar' => 'hide')).'">Search</a>');
|
||||
$displayLists .= '<a href="' . generate_url($vars, array('searchbar' => 'hide')) . '">Search</a>';
|
||||
}
|
||||
|
||||
echo(" | ");
|
||||
$displayLists .= ' | ';
|
||||
|
||||
if (isset($vars['bare']) && $vars['bare'] == "yes") {
|
||||
echo('<a href="'. generate_url($vars, array('bare' => '')).'">Header</a>');
|
||||
$displayLists .= '<a href="' . generate_url($vars, array('bare' => '')) . '">Header</a>';
|
||||
} else {
|
||||
echo('<a href="'. generate_url($vars, array('bare' => 'yes')).'">Header</a>');
|
||||
$displayLists .= '<a href="' . generate_url($vars, array('bare' => 'yes')) . '">Header</a>';
|
||||
}
|
||||
|
||||
echo('</div>');
|
||||
$displayLists .= ' | ';
|
||||
$displayLists .= '<span style="font-weight: bold;">Bulk actions</span> »';
|
||||
|
||||
print_optionbar_end();
|
||||
print_optionbar_start();
|
||||
$displayLists .= '<a href="ports/deleted=yes/purge=all" title="Delete ports"> Purge all deleted</a>';
|
||||
|
||||
$displayLists .= '</div>';
|
||||
|
||||
if ((isset($vars['searchbar']) && $vars['searchbar'] != "hide") || !isset($vars['searchbar'])) {
|
||||
?>
|
||||
<form method='post' action='' class='form-inline' role='form'>
|
||||
<div class="form-group">
|
||||
<select name='device_id' id='device_id' class='form-control input-sm'>
|
||||
<option value=''>All Devices</option>
|
||||
<?php
|
||||
$output = "<div class='pull-left'>";
|
||||
$output .= "<form method='post' action='' class='form-inline' role='form'>";
|
||||
|
||||
if ($_SESSION['userlevel'] >= 5) {
|
||||
$results = dbFetchRows("SELECT `device_id`,`hostname`, `sysName` FROM `devices` ORDER BY `hostname`");
|
||||
} else {
|
||||
$results = dbFetchRows("SELECT `D`.`device_id`,`D`.`hostname`, `D`.`sysname` FROM `devices` AS `D`, `devices_perms` AS `P` WHERE `P`.`user_id` = ? AND `P`.`device_id` = `D`.`device_id` ORDER BY `hostname`", array($_SESSION['user_id']));
|
||||
}
|
||||
foreach ($results as $data) {
|
||||
echo(' <option value="'.$data['device_id'].'"');
|
||||
if ($data['device_id'] == $vars['device_id']) {
|
||||
echo("selected");
|
||||
$output .= "<div style='margin-bottom:4px;text-align:left;'>";
|
||||
$output .= "<div class='form-group'>";
|
||||
$output .= "<select name='device_id' id='device_id' class='form-control input-sm'>";
|
||||
$output .= "<option value=''>All Devices</option>";
|
||||
|
||||
if ($_SESSION['userlevel'] >= 5) {
|
||||
$results = dbFetchRows("SELECT `device_id`,`hostname`, `sysName` FROM `devices` ORDER BY `hostname`");
|
||||
} else {
|
||||
$results = dbFetchRows("SELECT `D`.`device_id`,`D`.`hostname`, `D`.`sysname` FROM `devices` AS `D`, `devices_perms` AS `P` WHERE `P`.`user_id` = ? AND `P`.`device_id` = `D`.`device_id` ORDER BY `hostname`", array($_SESSION['user_id']));
|
||||
}
|
||||
echo(">".format_hostname($data)."</option>");
|
||||
}
|
||||
|
||||
if ($_SESSION['userlevel'] < 5) {
|
||||
$results = dbFetchRows("SELECT `D`.`device_id`,`D`.`hostname`, `D`.`sysName` FROM `ports` AS `I` JOIN `devices` AS `D` ON `D`.`device_id`=`I`.`device_id` JOIN `ports_perms` AS `PP` ON `PP`.`port_id`=`I`.`port_id` WHERE `PP`.`user_id` = ? AND `PP`.`port_id` = `I`.`port_id` ORDER BY `hostname`", array($_SESSION['user_id']));
|
||||
} else {
|
||||
$results = array();
|
||||
}
|
||||
foreach ($results as $data) {
|
||||
echo(' <option value="'.$data['device_id'].'"');
|
||||
if ($data['device_id'] == $vars['device_id']) {
|
||||
echo("selected");
|
||||
}
|
||||
echo(">".format_hostname($data)."</option>");
|
||||
}
|
||||
|
||||
?>
|
||||
</select>
|
||||
<input type="text" name="hostname" id="hostname" title="Hostname" class="form-control input-sm"
|
||||
<?php
|
||||
if (strlen($vars['hostname'])) {
|
||||
echo('value="' . $vars['hostname'] . '"');
|
||||
}
|
||||
?> placeholder="Hostname"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<select name="state" id="state" class="form-control input-sm">
|
||||
<option value="">All States</option>
|
||||
<option value="up"
|
||||
<?php
|
||||
if ($vars['state'] == "up") {
|
||||
echo("selected");
|
||||
}
|
||||
?>>Up
|
||||
</option>
|
||||
<option value="down"
|
||||
<?php
|
||||
if ($vars['state'] == "down") {
|
||||
echo("selected");
|
||||
}
|
||||
?>>Down
|
||||
</option>
|
||||
<option value="admindown"
|
||||
<?php
|
||||
if ($vars['state'] == "admindown") {
|
||||
echo("selected");
|
||||
}
|
||||
?>>Shutdown
|
||||
</option>
|
||||
</select>
|
||||
|
||||
<select name="ifSpeed" id="ifSpeed" class="form-control input-sm">
|
||||
<option value="">All Speeds</option>
|
||||
<?php
|
||||
|
||||
if (is_admin() === true || is_read() === true) {
|
||||
$sql = "SELECT `ifSpeed` FROM `ports` GROUP BY `ifSpeed` ORDER BY `ifSpeed`";
|
||||
} else {
|
||||
$sql = "SELECT `ifSpeed` FROM `ports` AS `I`, `devices` AS `D`, `devices_perms` AS `P`, `ports_perms` AS `PP` WHERE ((`P`.`user_id` = ? AND `P`.`device_id` = `D`.`device_id`) OR (`PP`.`user_id` = ? AND `PP`.`port_id` = `I`.`port_id` AND `I`.`device_id` = `D`.`device_id`)) AND `D`.`device_id` = `I`.`device_id` GROUP BY `ifSpeed` ORDER BY `ifSpeed`";
|
||||
$param[] = array($_SESSION['user_id'],$_SESSION['user_id']);
|
||||
}
|
||||
foreach (dbFetchRows($sql, $param) as $data) {
|
||||
if ($data['ifSpeed']) {
|
||||
echo("<option value='".$data['ifSpeed']."'");
|
||||
if ($data['ifSpeed'] == $vars['ifSpeed']) {
|
||||
echo("selected");
|
||||
foreach ($results as $data) {
|
||||
if ($data['device_id'] == $vars['device_id']) {
|
||||
$deviceselected = "selected";
|
||||
} else {
|
||||
$deviceselected = "";
|
||||
}
|
||||
echo(">".humanspeed($data['ifSpeed'])."</option>");
|
||||
$ui_device = strlen(format_hostname($data)) > 15 ? substr(format_hostname($data), 0, 15) . "..." : format_hostname($data);
|
||||
$output .= "<option value='" . $data['device_id'] . "' " . $deviceselected . ">" . $ui_device . "</option>";
|
||||
}
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<select name="ifType" id="ifType" class="form-control input-sm">
|
||||
<option value="">All Media</option>
|
||||
<?php
|
||||
|
||||
if (is_admin() === true || is_read() === true) {
|
||||
$sql = "SELECT `ifType` FROM `ports` GROUP BY `ifType` ORDER BY `ifType`";
|
||||
} else {
|
||||
$sql = "SELECT `ifType` FROM `ports` AS `I`, `devices` AS `D`, `devices_perms` AS `P`, `ports_perms` AS `PP` WHERE ((`P`.`user_id` = ? AND `P`.`device_id` = `D`.`device_id`) OR (`PP`.`user_id` = ? AND `PP`.`port_id` = `I`.`port_id` AND `I`.`device_id` = `D`.`device_id`)) AND `D`.`device_id` = `I`.`device_id` GROUP BY `ifType` ORDER BY `ifType`";
|
||||
$param[] = array($_SESSION['user_id'],$_SESSION['user_id']);
|
||||
}
|
||||
foreach (dbFetchRows($sql, $param) as $data) {
|
||||
if ($data['ifType']) {
|
||||
echo(' <option value="'.$data['ifType'].'"');
|
||||
if ($data['ifType'] == $vars['ifType']) {
|
||||
echo("selected");
|
||||
if ($_SESSION['userlevel'] < 5) {
|
||||
$results = dbFetchRows("SELECT `D`.`device_id`,`D`.`hostname`, `D`.`sysName` FROM `ports` AS `I` JOIN `devices` AS `D` ON `D`.`device_id`=`I`.`device_id` JOIN `ports_perms` AS `PP` ON `PP`.`port_id`=`I`.`port_id` WHERE `PP`.`user_id` = ? AND `PP`.`port_id` = `I`.`port_id` ORDER BY `hostname`", array($_SESSION['user_id']));
|
||||
} else {
|
||||
$results = array();
|
||||
}
|
||||
|
||||
foreach ($results as $data) {
|
||||
if ($data['device_id'] == $vars['device_id']) {
|
||||
$deviceselected = "selected";
|
||||
} else {
|
||||
$deviceselected = "";
|
||||
}
|
||||
echo(">".$data['ifType']."</option>");
|
||||
$output .= "<option value='" . $data['device_id'] . "' " . $deviceselected . ">" . format_hostname($data) . "</option>";
|
||||
}
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
<select name="port_descr_type" id="port_descr_type" class="form-control input-sm">
|
||||
<option value="">All Port Types</option>
|
||||
<?php
|
||||
|
||||
if (is_admin() === true || is_read() === true) {
|
||||
$sql = "SELECT `port_descr_type` FROM `ports` GROUP BY `port_descr_type` ORDER BY `port_descr_type`";
|
||||
} else {
|
||||
$sql = "SELECT `port_descr_type` FROM `ports` AS `I`, `devices` AS `D`, `devices_perms` AS `P`, `ports_perms` AS `PP` WHERE ((`P`.`user_id` = ? AND `P`.`device_id` = `D`.`device_id`) OR (`PP`.`user_id` = ? AND `PP`.`port_id` = `I`.`port_id` AND `I`.`device_id` = `D`.`device_id`)) AND `D`.`device_id` = `I`.`device_id` GROUP BY `port_descr_type` ORDER BY `port_descr_type`";
|
||||
$param[] = array($_SESSION['user_id'],$_SESSION['user_id']);
|
||||
}
|
||||
$output .= "</select> ";
|
||||
|
||||
$ports = dbFetchRows($sql, $param);
|
||||
foreach ($ports as $data) {
|
||||
if ($data['port_descr_type']) {
|
||||
echo(' <option value="'.$data['port_descr_type'].'"');
|
||||
if ($data['port_descr_type'] == $vars['port_descr_type']) {
|
||||
echo("selected");
|
||||
if (strlen($vars['hostname'])) {
|
||||
$hasvalue = "value='" . $vars['hostname'] . "'";
|
||||
} else {
|
||||
$hasvalue = "";
|
||||
}
|
||||
|
||||
$output .= "<input type='text' name='hostname' id='hostname' title='Hostname' class='form-control input-sm' " . $hasvalue . " placeholder='Hostname'>";
|
||||
|
||||
$output .= "</div> ";
|
||||
|
||||
switch ($vars['state']) {
|
||||
case "up":
|
||||
$isup = "selected";
|
||||
$isdown = "";
|
||||
$admindown = "";
|
||||
break;
|
||||
case "down":
|
||||
$isup = "";
|
||||
$isdown = "selected";
|
||||
$admindown = "";
|
||||
break;
|
||||
case "admindown":
|
||||
$isup = "";
|
||||
$isdown = "";
|
||||
$admindown = "selected";
|
||||
break;
|
||||
}
|
||||
|
||||
$output .= "<div class='form-group'>";
|
||||
$output .= "<select name='state' id='state' class='form-control input-sm'>";
|
||||
$output .= "<option value=''>All States</option>";
|
||||
$output .= "<option value='up' " . $isup . ">Up</option>";
|
||||
$output .= "<option value='down' " . $isdown . ">Down</option>";
|
||||
$output .= "<option value='admindown' " . $admindown . ">Shutdown</option>";
|
||||
$output .= "</select> ";
|
||||
|
||||
$output .= "<select name='fSpeed' id='ifSpeed' class='form-control input-sm'>";
|
||||
$output .= "<option value=''>All Speeds</option>";
|
||||
|
||||
if (is_admin() === true || is_read() === true) {
|
||||
$sql = "SELECT `ifSpeed` FROM `ports` GROUP BY `ifSpeed` ORDER BY `ifSpeed`";
|
||||
} else {
|
||||
$sql = "SELECT `ifSpeed` FROM `ports` AS `I`, `devices` AS `D`, `devices_perms` AS `P`, `ports_perms` AS `PP` WHERE ((`P`.`user_id` = ? AND `P`.`device_id` = `D`.`device_id`) OR (`PP`.`user_id` = ? AND `PP`.`port_id` = `I`.`port_id` AND `I`.`device_id` = `D`.`device_id`)) AND `D`.`device_id` = `I`.`device_id` GROUP BY `ifSpeed` ORDER BY `ifSpeed`";
|
||||
$param[] = array($_SESSION['user_id'], $_SESSION['user_id']);
|
||||
}
|
||||
|
||||
foreach (dbFetchRows($sql, $param) as $data) {
|
||||
if ($data['ifSpeed']) {
|
||||
if ($data['ifSpeed'] == $vars['ifSpeed']) {
|
||||
$speedselected = "selected";
|
||||
} else {
|
||||
$speedselected = "";
|
||||
}
|
||||
$output .= "<option value='" . $data['ifSpeed'] . "'" . $speedselected . ">" . humanspeed($data['ifSpeed']) . "</option>";
|
||||
}
|
||||
echo(">".ucfirst(display($data['port_descr_type']))."</option>");
|
||||
}
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input title="Port Description" type="text" name="ifAlias" id="ifAlias" class="form-control input-sm"
|
||||
<?php
|
||||
if (strlen($vars['ifAlias'])) {
|
||||
echo('value="' . $vars['ifAlias'] . '"');
|
||||
}
|
||||
?> placeholder="Port Description"/>
|
||||
<select title="Location" name="location" id="location" class="form-control input-sm">
|
||||
<option value="">All Locations</option>
|
||||
<?php
|
||||
|
||||
// FIXME function?
|
||||
foreach (getlocations() as $location) {
|
||||
if ($location) {
|
||||
echo('<option value="'.$location.'"');
|
||||
if ($location == $vars['location']) {
|
||||
echo(" selected");
|
||||
$output .= "</select> ";
|
||||
$output .= "</div>";
|
||||
$output .= "<div class='form-group'>";
|
||||
$output .= "<select name='ifType' id='ifType' class='form-control input-sm'>";
|
||||
$output .= "<option value=''>All Media</option>";
|
||||
|
||||
if (is_admin() === true || is_read() === true) {
|
||||
$sql = "SELECT `ifType` FROM `ports` GROUP BY `ifType` ORDER BY `ifType`";
|
||||
} else {
|
||||
$sql = "SELECT `ifType` FROM `ports` AS `I`, `devices` AS `D`, `devices_perms` AS `P`, `ports_perms` AS `PP` WHERE ((`P`.`user_id` = ? AND `P`.`device_id` = `D`.`device_id`) OR (`PP`.`user_id` = ? AND `PP`.`port_id` = `I`.`port_id` AND `I`.`device_id` = `D`.`device_id`)) AND `D`.`device_id` = `I`.`device_id` GROUP BY `ifType` ORDER BY `ifType`";
|
||||
$param[] = array($_SESSION['user_id'], $_SESSION['user_id']);
|
||||
}
|
||||
|
||||
foreach (dbFetchRows($sql, $param) as $data) {
|
||||
if ($data['ifType']) {
|
||||
if ($data['ifType'] == $vars['ifType']) {
|
||||
$dataselected = "selected";
|
||||
} else {
|
||||
$dataselected = "";
|
||||
}
|
||||
$output .= "<option value='" . $data['ifType'] . "' " . $dataselected . ">" . $data['ifType'] . "</option>";
|
||||
}
|
||||
echo(">".$location."</option>");
|
||||
}
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="ignore">Ignored</label>
|
||||
<input type=checkbox id="ignore" name="ignore" value="1"
|
||||
<?php
|
||||
if ($vars['ignore']) {
|
||||
echo("checked");
|
||||
}
|
||||
?> >
|
||||
<label for="disabled">Disabled</label>
|
||||
<input type=checkbox id="disabled" name="disabled" value=1
|
||||
<?php
|
||||
if ($vars['disabled']) {
|
||||
echo("checked");
|
||||
}
|
||||
?> >
|
||||
<label for="deleted">Deleted</label>
|
||||
<input type=checkbox id="deleted" name="deleted" value=1
|
||||
<?php
|
||||
if ($vars['deleted']) {
|
||||
echo("checked");
|
||||
}
|
||||
?> >
|
||||
</div>
|
||||
<button type="submit" class="btn btn-default btn-sm">Search</button>
|
||||
<a class="btn btn-default btn-sm" href="<?php echo(generate_url(array('page' => 'ports', 'section' => $vars['section'], 'bare' => $vars['bare']))); ?>" title="Reset critera to default." >Reset</a>
|
||||
</form>
|
||||
|
||||
<?php
|
||||
}
|
||||
$output .= "</select> ";
|
||||
$output .= "<select name='port_descr_type' id='port_descr_type' class='form-control input-sm'>";
|
||||
$output .= "<option value=''>All Port Types</option>";
|
||||
|
||||
print_optionbar_end();
|
||||
if (is_admin() === true || is_read() === true) {
|
||||
$sql = "SELECT `port_descr_type` FROM `ports` GROUP BY `port_descr_type` ORDER BY `port_descr_type`";
|
||||
} else {
|
||||
$sql = "SELECT `port_descr_type` FROM `ports` AS `I`, `devices` AS `D`, `devices_perms` AS `P`, `ports_perms` AS `PP` WHERE ((`P`.`user_id` = ? AND `P`.`device_id` = `D`.`device_id`) OR (`PP`.`user_id` = ? AND `PP`.`port_id` = `I`.`port_id` AND `I`.`device_id` = `D`.`device_id`)) AND `D`.`device_id` = `I`.`device_id` GROUP BY `port_descr_type` ORDER BY `port_descr_type`";
|
||||
$param[] = array($_SESSION['user_id'], $_SESSION['user_id']);
|
||||
}
|
||||
$ports = dbFetchRows($sql, $param);
|
||||
|
||||
foreach ($ports as $data) {
|
||||
if ($data['port_descr_type']) {
|
||||
if ($data['port_descr_type'] == $vars['port_descr_type']) {
|
||||
$portdescrib = "selected";
|
||||
} else {
|
||||
$portdescrib = "";
|
||||
}
|
||||
$output .= "<option value='" . $data['port_descr_type'] . "' " . $portdescrib . ">" . ucfirst(display($data['port_descr_type'])) . "</option>";
|
||||
}
|
||||
}
|
||||
|
||||
$output .= "</select> ";
|
||||
$output .= "</div>";
|
||||
$output .= "<div class='form-group'>";
|
||||
|
||||
if (strlen($vars['ifAlias'])) {
|
||||
$ifaliasvalue = "value='" . $vars['ifAlias'] . "'";
|
||||
}
|
||||
|
||||
$output .= "</div>";
|
||||
|
||||
$output .= "</div>";
|
||||
$output .= "<div style='text-align:left;'>";
|
||||
|
||||
$output .= "<input title='Port Description' type='text' name='ifAlias' id='ifAlias' class='form-control input-sm' " . $ifaliasvalue . " placeholder='Port Description'> ";
|
||||
$output .= "<select title='Location' name='location' id='location' class='form-control input-sm'> ";
|
||||
$output .= "<option value=''>All Locations</option>";
|
||||
|
||||
foreach (getlocations() as $location) {
|
||||
if ($location) {
|
||||
if ($location == $vars['location']) {
|
||||
$locationselected = "selected";
|
||||
} else {
|
||||
$locationselected = "";
|
||||
}
|
||||
$ui_location = strlen($location) > 15 ? substr($location, 0, 15) . "..." : $location;
|
||||
$output .= "<option value='" . $location . "' " . $locationselected . ">" . $ui_location . "</option>";
|
||||
}
|
||||
}
|
||||
|
||||
$output .= "</select> ";
|
||||
|
||||
if ($vars['ignore']) {
|
||||
$ignorecheck = "checked";
|
||||
} else {
|
||||
$ignorecheck = "";
|
||||
}
|
||||
|
||||
if ($vars['disabled']) {
|
||||
$disabledcheck = "checked";
|
||||
} else {
|
||||
$disabledcheck = "";
|
||||
}
|
||||
|
||||
if ($vars['deleted']) {
|
||||
$deletedcheck = "checked";
|
||||
} else {
|
||||
$deletedcheck = "";
|
||||
}
|
||||
|
||||
$output .= "<label for='ignore'>Ignored</label> ";
|
||||
$output .= "<input type='checkbox' id='ignore' name='ignore' value='1' " . $ignorecheck . "> ";
|
||||
$output .= "<label for='disabled'>Disabled</label> ";
|
||||
$output .= "<input type='checkbox' id='disabled' name='disabled' value='1' " . $disabledcheck . "> ";
|
||||
$output .= "<label for='deleted'>Deleted</label> ";
|
||||
$output .= "<input type='checkbox' id='deleted' name='deleted' value='1' " . $deletedcheck . "> ";
|
||||
|
||||
$output .= "<button type='submit' class='btn btn-default btn-sm'>Search</button> ";
|
||||
$output .= "<a class='btn btn-default btn-sm' href='" . generate_url(array('page' => 'ports', 'section' => $vars['section'], 'bare' => $vars['bare'])) . "' title='Reset critera to default.'>Reset</a>";
|
||||
|
||||
$output .= "</div>";
|
||||
|
||||
$output .= "</form>";
|
||||
$output .= "</div>";
|
||||
}
|
||||
|
||||
$param = array();
|
||||
|
||||
@ -292,11 +313,11 @@ foreach ($vars as $var => $value) {
|
||||
switch ($var) {
|
||||
case 'hostname':
|
||||
$where .= " AND D.hostname LIKE ?";
|
||||
$param[] = "%".$value."%";
|
||||
$param[] = "%" . $value . "%";
|
||||
break;
|
||||
case 'location':
|
||||
$where .= " AND D.location LIKE ?";
|
||||
$param[] = "%".$value."%";
|
||||
$param[] = "%" . $value . "%";
|
||||
break;
|
||||
case 'device_id':
|
||||
$where .= " AND D.device_id = ?";
|
||||
@ -333,7 +354,7 @@ foreach ($vars as $var => $value) {
|
||||
case 'ifAlias':
|
||||
case 'port_descr_type':
|
||||
$where .= " AND I.$var LIKE ?";
|
||||
$param[] = "%".$value."%";
|
||||
$param[] = "%" . $value . "%";
|
||||
break;
|
||||
case 'errors':
|
||||
if ($value == 1) {
|
||||
@ -354,6 +375,23 @@ foreach ($vars as $var => $value) {
|
||||
$param[] = "down";
|
||||
}
|
||||
break;
|
||||
case 'purge':
|
||||
if ($vars['purge'] === 'all') {
|
||||
$interfaces = dbFetchRows('SELECT * from `ports` AS P, `devices` AS D WHERE `deleted` = 1 AND D.device_id = P.device_id');
|
||||
foreach ($interfaces as $interface) {
|
||||
$interface = cleanPort($interface);
|
||||
if (port_permitted($interface['port_id'], $interface['device_id'])) {
|
||||
delete_port($interface['port_id']);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$interface = dbFetchRow('SELECT * from `ports` AS P, `devices` AS D WHERE `port_id` = ? AND D.device_id = P.device_id', array($vars['purge']));
|
||||
$interface = cleanPort($interface);
|
||||
if (port_permitted($interface['port_id'], $interface['device_id'])) {
|
||||
delete_port($interface['port_id']);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -362,7 +400,7 @@ if ($ignore_filter == 0 && $disabled_filter == 0) {
|
||||
$where .= " AND `I`.`ignore` = 0 AND `I`.`disabled` = 0 AND `I`.`deleted` = 0";
|
||||
}
|
||||
|
||||
$query = "SELECT * FROM `ports` AS I, `devices` AS D WHERE I.device_id = D.device_id ".$where." ".$query_sort;
|
||||
$query = "SELECT * FROM `ports` AS I, `devices` AS D WHERE I.device_id = D.device_id " . $where . " " . $query_sort;
|
||||
|
||||
$row = 1;
|
||||
|
||||
@ -409,8 +447,6 @@ switch ($vars['sort']) {
|
||||
$ports = array_sort($ports, 'hostname', SORT_ASC);
|
||||
}
|
||||
|
||||
if (file_exists('pages/ports/'.$format.'.inc.php')) {
|
||||
require 'pages/ports/'.$format.'.inc.php';
|
||||
if (file_exists('pages/ports/' . $format . '.inc.php')) {
|
||||
require 'pages/ports/' . $format . '.inc.php';
|
||||
}
|
||||
|
||||
?>
|
||||
|
@ -1,4 +1,18 @@
|
||||
<?php
|
||||
/*
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation, either version 3 of the License, or (at your
|
||||
* option) any later version. Please see LICENSE.txt at the top level of
|
||||
* the source code distribution for details.
|
||||
*
|
||||
* @package LibreNMS
|
||||
* @subpackage webui
|
||||
* @link http://librenms.org
|
||||
* @copyright 2017 LibreNMS
|
||||
* @author LibreNMS Contributors
|
||||
*/
|
||||
|
||||
$details_visible = var_export($vars['format'] == 'list_detail', 1);
|
||||
$errors_visible = var_export($vars['format'] == 'list_detail' || $vars['errors'], 1);
|
||||
$no_refresh = true;
|
||||
@ -12,26 +26,44 @@ if ($vars['errors']) {
|
||||
}
|
||||
?>
|
||||
<div class="panel panel-default panel-condensed">
|
||||
<div class="panel-heading">
|
||||
<?php echo $displayLists; ?>
|
||||
</div>
|
||||
<div class="table-responsive">
|
||||
<table id="ports" class="table table-condensed table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-column-id="device">Device</th>
|
||||
<th data-column-id="port"<?php echo $sort ?>>Port</th>
|
||||
<th data-column-id="ifLastChange" data-converter="duration">Status Changed</th>
|
||||
<th data-column-id="ifConnectorPresent" data-visible="false">Connected</th>
|
||||
<th data-column-id="ifSpeed" data-converter="human-bps">Speed</th>
|
||||
<th data-column-id="ifMtu" data-visible="false">MTU</th>
|
||||
<th data-column-id="ifInOctets_rate" data-searchable="false" data-css-class="green" data-converter="human-bps">Down</th>
|
||||
<th data-column-id="ifOutOctets_rate" data-searchable="false" data-css-class="blue" data-converter="human-bps">Up</th>
|
||||
<th data-column-id="ifInUcastPkts_rate" data-searchable="false" data-visible="<?php echo $details_visible ?>" data-css-class="green" data-converter="human-pps">Packets In</th>
|
||||
<th data-column-id="ifOutUcastPkts_rate" data-searchable="false" data-visible="<?php echo $details_visible ?>" data-css-class="blue" data-converter="human-pps">Packets Out</th>
|
||||
<th data-column-id="ifInErrors" data-searchable="false" data-visible="<?php echo $errors_visible ?>" data-css-class="red"<?php echo $error_sort ?>>Errors In</th>
|
||||
<th data-column-id="ifOutErrors" data-searchable="false" data-visible="<?php echo $errors_visible ?>" data-css-class="red">Errors Out</th>
|
||||
<th data-column-id="ifType">Media</th>
|
||||
<th data-column-id="description">Description</th>
|
||||
<th data-column-id="actions" data-sortable="false" data-searchable="false">Actions</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th data-column-id="status"></th>
|
||||
<th data-column-id="device">Device</th>
|
||||
<th data-column-id="port"<?php echo $sort ?>>Port</th>
|
||||
<th data-column-id="ifLastChange" data-converter="duration">Status Changed</th>
|
||||
<th data-column-id="ifConnectorPresent" data-visible="false">Connected</th>
|
||||
<th data-column-id="ifSpeed" data-converter="human-bps">Speed</th>
|
||||
<th data-column-id="ifMtu" data-visible="false">MTU</th>
|
||||
<th data-column-id="ifInOctets_rate" data-searchable="false" data-css-class="green"
|
||||
data-converter="human-bps">Down
|
||||
</th>
|
||||
<th data-column-id="ifOutOctets_rate" data-searchable="false" data-css-class="blue"
|
||||
data-converter="human-bps">Up
|
||||
</th>
|
||||
<th data-column-id="ifInUcastPkts_rate" data-searchable="false"
|
||||
data-visible="<?php echo $details_visible ?>" data-css-class="green" data-converter="human-pps">
|
||||
Packets In
|
||||
</th>
|
||||
<th data-column-id="ifOutUcastPkts_rate" data-searchable="false"
|
||||
data-visible="<?php echo $details_visible ?>" data-css-class="blue" data-converter="human-pps">
|
||||
Packets Out
|
||||
</th>
|
||||
<th data-column-id="ifInErrors" data-searchable="false" data-visible="<?php echo $errors_visible ?>"
|
||||
data-css-class="red"<?php echo $error_sort ?>>Errors In
|
||||
</th>
|
||||
<th data-column-id="ifOutErrors" data-searchable="false" data-visible="<?php echo $errors_visible ?>"
|
||||
data-css-class="red">Errors Out
|
||||
</th>
|
||||
<th data-column-id="ifType">Media</th>
|
||||
<th data-column-id="description">Description</th>
|
||||
<th data-column-id="actions" data-sortable="false" data-searchable="false">Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
</div>
|
||||
@ -88,4 +120,6 @@ var grid = $("#ports").bootgrid({
|
||||
url: "ajax_table.php"
|
||||
});
|
||||
|
||||
$(".actionBar").append("<?php echo $output; ?>");
|
||||
|
||||
</script>
|
||||
|
Loading…
Reference in New Issue
Block a user