mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
accesspoint support (probably) from ethan sommer (#50)
git-svn-id: http://www.observium.org/svn/observer/trunk@3223 61d68cd4-352d-0410-923a-c4978735b2b8
This commit is contained in:
@@ -294,6 +294,7 @@ function print_graph_tag($args)
|
|||||||
|
|
||||||
function generate_graph_tag($args)
|
function generate_graph_tag($args)
|
||||||
{
|
{
|
||||||
|
|
||||||
foreach ($args as $key => $arg)
|
foreach ($args as $key => $arg)
|
||||||
{
|
{
|
||||||
$urlargs[] = $key."=".$arg;
|
$urlargs[] = $key."=".$arg;
|
||||||
@@ -538,4 +539,49 @@ function foldersize($path)
|
|||||||
return array($total_size, $total_files);
|
return array($total_size, $total_files);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function generate_ap_link($args, $text = NULL, $type = NULL)
|
||||||
|
{
|
||||||
|
global $config;
|
||||||
|
|
||||||
|
$args = ifNameDescr($args);
|
||||||
|
if (!$text) { $text = fixIfName($args['label']); }
|
||||||
|
if ($type) { $args['graph_type'] = $type; }
|
||||||
|
if (!isset($args['graph_type'])) { $args['graph_type'] = 'port_bits'; }
|
||||||
|
|
||||||
|
if (!isset($args['hostname'])) { $args = array_merge($args, device_by_id_cache($args['device_id'])); }
|
||||||
|
|
||||||
|
$content = "<div class=list-large>".$args['text']." - " . fixifName($args['label']) . "</div>";
|
||||||
|
if ($args['ifAlias']) { $content .= $args['ifAlias']."<br />"; }
|
||||||
|
$content .= "<div style=\'width: 850px\'>";
|
||||||
|
$graph_array['type'] = $args['graph_type'];
|
||||||
|
$graph_array['legend'] = "yes";
|
||||||
|
$graph_array['height'] = "100";
|
||||||
|
$graph_array['width'] = "340";
|
||||||
|
$graph_array['to'] = $config['time']['now'];
|
||||||
|
$graph_array['from'] = $config['time']['day'];
|
||||||
|
$graph_array['id'] = $args['accesspoint_id'];
|
||||||
|
$content .= generate_graph_tag($graph_array);
|
||||||
|
$graph_array['from'] = $config['time']['week'];
|
||||||
|
$content .= generate_graph_tag($graph_array);
|
||||||
|
$graph_array['from'] = $config['time']['month'];
|
||||||
|
$content .= generate_graph_tag($graph_array);
|
||||||
|
$graph_array['from'] = $config['time']['year'];
|
||||||
|
$content .= generate_graph_tag($graph_array);
|
||||||
|
$content .= "</div>";
|
||||||
|
|
||||||
|
|
||||||
|
$url = generate_ap_url($args);
|
||||||
|
if (port_permitted($args['interface_id'], $args['device_id'])) {
|
||||||
|
return overlib_link($url, $text, $content, $class);
|
||||||
|
} else {
|
||||||
|
return fixifName($text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function generate_ap_url($ap, $vars=array())
|
||||||
|
{
|
||||||
|
return generate_url(array('page' => 'device', 'device' => $ap['device_id'], 'tab' => 'accesspoint', 'ap' => $ap['accesspoint_id']), $vars);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
17
html/includes/graphs/accesspoints/auth.inc.php
Normal file
17
html/includes/graphs/accesspoints/auth.inc.php
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
if (is_numeric($vars['id']))
|
||||||
|
{
|
||||||
|
$ap = accesspoint_by_id($id);
|
||||||
|
|
||||||
|
if (is_numeric($ap['device_id']) && ($auth || device_permitted($ap['device_id'])))
|
||||||
|
{
|
||||||
|
$device = device_by_id_cache($ap['device_id']);
|
||||||
|
|
||||||
|
$title = generate_device_link($device);
|
||||||
|
$title .= " :: AP :: " . htmlentities($ap['name']);
|
||||||
|
$auth = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
24
html/includes/graphs/accesspoints/channel.inc.php
Normal file
24
html/includes/graphs/accesspoints/channel.inc.php
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
$rrd_filename = $config['rrd_dir'] . "/" . $device['hostname'] ."/". safename("arubaap-$ap[name].$ap[radio_number].rrd");
|
||||||
|
|
||||||
|
$rrd_list[0]['filename'] = $rrd_filename;
|
||||||
|
$rrd_list[0]['descr'] = "Channel";
|
||||||
|
$rrd_list[0]['ds'] = "channel";
|
||||||
|
|
||||||
|
$unit_text = "Channel";
|
||||||
|
|
||||||
|
$units='';
|
||||||
|
$total_units='';
|
||||||
|
$colours='mixed';
|
||||||
|
|
||||||
|
$scale_min = "0";
|
||||||
|
|
||||||
|
$nototal = 1;
|
||||||
|
|
||||||
|
if ($rrd_list)
|
||||||
|
{
|
||||||
|
include("includes/graphs/generic_multi_line.inc.php");
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
27
html/includes/graphs/accesspoints/interference.inc.php
Normal file
27
html/includes/graphs/accesspoints/interference.inc.php
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
<?php
|
||||||
|
$ap=accesspoint_by_id($id);
|
||||||
|
$device = device_by_id_cache($ap['device_id']);
|
||||||
|
|
||||||
|
$rrd_filename = $config['rrd_dir'] . "/" . $device['hostname'] ."/".
|
||||||
|
safename("arubaap-$ap[name].$ap[radio_number].rrd");
|
||||||
|
|
||||||
|
$rrd_list[0]['filename'] = $rrd_filename;
|
||||||
|
$rrd_list[0]['descr'] = "Interference";
|
||||||
|
$rrd_list[0]['ds'] = "interference";
|
||||||
|
|
||||||
|
$unit_text = "Int";
|
||||||
|
|
||||||
|
$units='';
|
||||||
|
$total_units='';
|
||||||
|
$colours='mixed';
|
||||||
|
|
||||||
|
$scale_min = "0";
|
||||||
|
|
||||||
|
$nototal = 1;
|
||||||
|
|
||||||
|
if ($rrd_list)
|
||||||
|
{
|
||||||
|
include("includes/graphs/generic_multi_line.inc.php");
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
28
html/includes/graphs/accesspoints/numasoclients.inc.php
Normal file
28
html/includes/graphs/accesspoints/numasoclients.inc.php
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
$ap=accesspoint_by_id($id);
|
||||||
|
$device = device_by_id_cache($ap['device_id']);
|
||||||
|
|
||||||
|
$rrd_filename = $config['rrd_dir'] . "/" . $device['hostname'] ."/".
|
||||||
|
safename("arubaap-$ap[name].$ap[radio_number].rrd");
|
||||||
|
|
||||||
|
$rrd_list[0]['filename'] = $rrd_filename;
|
||||||
|
$rrd_list[0]['descr'] = "Num Clients";
|
||||||
|
$rrd_list[0]['ds'] = "numasoclients";
|
||||||
|
|
||||||
|
$unit_text = "Clients";
|
||||||
|
|
||||||
|
$units='';
|
||||||
|
$total_units='';
|
||||||
|
$colours='mixed';
|
||||||
|
|
||||||
|
$scale_min = "0";
|
||||||
|
|
||||||
|
$nototal = 1;
|
||||||
|
|
||||||
|
if ($rrd_list)
|
||||||
|
{
|
||||||
|
include("includes/graphs/generic_multi_line.inc.php");
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
29
html/includes/graphs/accesspoints/nummonbssid.inc.php
Normal file
29
html/includes/graphs/accesspoints/nummonbssid.inc.php
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
$ap=accesspoint_by_id($id);
|
||||||
|
$device = device_by_id_cache($ap['device_id']);
|
||||||
|
|
||||||
|
$rrd_filename = $config['rrd_dir'] . "/" . $device['hostname'] ."/".
|
||||||
|
safename("arubaap-$ap[name].$ap[radio_number].rrd");
|
||||||
|
|
||||||
|
$rrd_list[0]['filename'] = $rrd_filename;
|
||||||
|
$rrd_list[0]['descr'] = "MonBSSIDs";
|
||||||
|
$rrd_list[0]['ds'] = "nummonbssid";
|
||||||
|
|
||||||
|
$unit_text = "BSSIDs";
|
||||||
|
|
||||||
|
$units='';
|
||||||
|
$total_units='';
|
||||||
|
$colours='mixed';
|
||||||
|
|
||||||
|
$scale_min = "0";
|
||||||
|
|
||||||
|
$nototal = 1;
|
||||||
|
|
||||||
|
if ($rrd_list)
|
||||||
|
{
|
||||||
|
include("includes/graphs/generic_multi_line.inc.php");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
28
html/includes/graphs/accesspoints/nummonclients.inc.php
Normal file
28
html/includes/graphs/accesspoints/nummonclients.inc.php
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
$ap=accesspoint_by_id($id);
|
||||||
|
$device = device_by_id_cache($ap['device_id']);
|
||||||
|
|
||||||
|
$rrd_filename = $config['rrd_dir'] . "/" . $device['hostname'] ."/".
|
||||||
|
safename("arubaap-$ap[name].$ap[radio_number].rrd");
|
||||||
|
|
||||||
|
$rrd_list[0]['filename'] = $rrd_filename;
|
||||||
|
$rrd_list[0]['descr'] = "Mon Clients";
|
||||||
|
$rrd_list[0]['ds'] = "nummonclients";
|
||||||
|
|
||||||
|
$unit_text = "Clients";
|
||||||
|
|
||||||
|
$units='';
|
||||||
|
$total_units='';
|
||||||
|
$colours='mixed';
|
||||||
|
|
||||||
|
$scale_min = "0";
|
||||||
|
|
||||||
|
$nototal = 1;
|
||||||
|
|
||||||
|
if ($rrd_list)
|
||||||
|
{
|
||||||
|
include("includes/graphs/generic_multi_line.inc.php");
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
30
html/includes/graphs/accesspoints/radioutil.inc.php
Normal file
30
html/includes/graphs/accesspoints/radioutil.inc.php
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$ap=accesspoint_by_id($id);
|
||||||
|
$device = device_by_id_cache($ap['device_id']);
|
||||||
|
|
||||||
|
$rrd_filename = $config['rrd_dir'] . "/" . $device['hostname'] ."/".
|
||||||
|
safename("arubaap-$ap[name].$ap[radio_number].rrd");
|
||||||
|
|
||||||
|
$rrd_list[0]['filename'] = $rrd_filename;
|
||||||
|
$rrd_list[0]['descr'] = "radioutil";
|
||||||
|
$rrd_list[0]['ds'] = "radioutil";
|
||||||
|
|
||||||
|
$unit_text = "Percent";
|
||||||
|
|
||||||
|
$units='';
|
||||||
|
$total_units='';
|
||||||
|
$colours='mixed';
|
||||||
|
|
||||||
|
$scale_min = "0";
|
||||||
|
|
||||||
|
$nototal = 1;
|
||||||
|
|
||||||
|
if ($rrd_list)
|
||||||
|
{
|
||||||
|
include("includes/graphs/generic_multi_line.inc.php");
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
31
html/includes/graphs/accesspoints/txpow.inc.php
Normal file
31
html/includes/graphs/accesspoints/txpow.inc.php
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$ap=accesspoint_by_id($id);
|
||||||
|
$device = device_by_id_cache($ap['device_id']);
|
||||||
|
|
||||||
|
$rrd_filename = $config['rrd_dir'] . "/" . $device['hostname'] ."/".
|
||||||
|
safename("arubaap-$ap[name].$ap[radio_number].rrd");
|
||||||
|
|
||||||
|
$rrd_list[0]['filename'] = $rrd_filename;
|
||||||
|
$rrd_list[0]['descr'] = "txpow";
|
||||||
|
$rrd_list[0]['ds'] = "txpow";
|
||||||
|
|
||||||
|
$unit_text = "dBm";
|
||||||
|
|
||||||
|
$units='';
|
||||||
|
$total_units='';
|
||||||
|
$colours='mixed';
|
||||||
|
|
||||||
|
$scale_min = "0";
|
||||||
|
|
||||||
|
$nototal = 1;
|
||||||
|
|
||||||
|
if ($rrd_list)
|
||||||
|
{
|
||||||
|
include("includes/graphs/generic_multi_line.inc.php");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
@@ -65,10 +65,11 @@ if (is_file($config['install_dir'] . "/html/includes/graphs/$type/$subtype.inc.p
|
|||||||
{
|
{
|
||||||
include($config['install_dir'] . "/html/includes/graphs/$type/$subtype.inc.php");
|
include($config['install_dir'] . "/html/includes/graphs/$type/$subtype.inc.php");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
graph_error("Graph Template Missing");
|
graph_error("$type*$subtype ");//Graph Template Missing");
|
||||||
}
|
}
|
||||||
|
|
||||||
function graph_error($string)
|
function graph_error($string)
|
||||||
@@ -106,6 +107,7 @@ function graph_error($string)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if ($error_msg) {
|
if ($error_msg) {
|
||||||
/// We have an error :(
|
/// We have an error :(
|
||||||
|
|
||||||
@@ -141,6 +143,7 @@ if ($error_msg) {
|
|||||||
unlink($graphfile);
|
unlink($graphfile);
|
||||||
echo("</div>");
|
echo("</div>");
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
if ($rrd_options)
|
if ($rrd_options)
|
||||||
{
|
{
|
||||||
rrdtool_graph($graphfile, $rrd_options);
|
rrdtool_graph($graphfile, $rrd_options);
|
||||||
|
13
html/includes/print-accesspoint-graphs.inc.php
Normal file
13
html/includes/print-accesspoint-graphs.inc.php
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
global $config;
|
||||||
|
|
||||||
|
$graph_array['height'] = "100";
|
||||||
|
$graph_array['width'] = "215";
|
||||||
|
$graph_array['to'] = $config['time']['now'];
|
||||||
|
$graph_array['id'] = $ap['accesspoint_id'];
|
||||||
|
$graph_array['type'] = $graph_type;
|
||||||
|
|
||||||
|
include("includes/print-quadgraphs.inc.php");
|
||||||
|
|
||||||
|
?>
|
92
html/includes/print-accesspoint.inc.php
Normal file
92
html/includes/print-accesspoint.inc.php
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
if($int_colour)
|
||||||
|
{
|
||||||
|
$row_colour = $int_colour;
|
||||||
|
} else {
|
||||||
|
if (!is_integer($i/2)) { $row_colour = $list_colour_a; } else { $row_colour = $list_colour_b; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$text=$ap['name'] ." ".$ap['type'];
|
||||||
|
$ap['text']=$text;
|
||||||
|
|
||||||
|
echo("<tr style=\"background-color: $row_colour;\" valign=top onmouseover=\"this.style.backgroundColor='$list_highlight';\" onmouseout=\"this.style.backgroundColor='$row_colour';\" onclick=\"location.href='" . generate_ap_url($ap) . "/'\" style='cursor: pointer;'>
|
||||||
|
<td valign=top width=350>");
|
||||||
|
echo(" <span class=list-large> " . generate_ap_link($ap, " $text </span><br />"));
|
||||||
|
echo("<span class=interface-desc>");
|
||||||
|
echo("$break".$ap['mac_addr']."<br>".$ap['type']. " - channel ".$ap['channel']);
|
||||||
|
echo("<br />txpow $ap[txpow]");
|
||||||
|
echo("</span>");
|
||||||
|
echo("</td><td width=100>");
|
||||||
|
|
||||||
|
|
||||||
|
echo("</td><td width=150>");
|
||||||
|
$ap['graph_type'] = "accesspoints_numasoclients";
|
||||||
|
echo(generate_ap_link($ap, "<img src='graph.php?type=$ap[graph_type]&id=".$ap['accesspoint_id']."&from=".$config['time']['day']."&to=".$config['time']['now']."&width=100&height=20&legend=no&bg=".str_replace("#","", $row_colour)."'>"));
|
||||||
|
echo("<br>\n");
|
||||||
|
$ap['graph_type'] = "accesspoints_radioutil";
|
||||||
|
echo(generate_ap_link($ap, "<img src='graph.php?type=$ap[graph_type]&id=".$ap['accesspoint_id']."&from=".$config['time']['day']."&to=".$config['time']['now']."&width=100&height=20&legend=no&bg=".str_replace("#","", $row_colour)."'>"));
|
||||||
|
echo("<br>\n");
|
||||||
|
$ap['graph_type'] = "accesspoints_interference";
|
||||||
|
echo(generate_ap_link($ap, "<img src='graph.php?type=$ap[graph_type]&id=".$ap['accesspoint_id']."&from=".$config['time']['day']."&to=".$config['time']['now']."&width=100&height=20&legend=no&bg=".str_replace("#","", $row_colour)."'>"));
|
||||||
|
echo("<br>\n");
|
||||||
|
|
||||||
|
echo("</td><td width=120>");
|
||||||
|
|
||||||
|
echo("<img src='images/icons/wireless.png' style='height:20px; width:20px;' align=absmiddle /> ".format_bi($ap[numasoclients])." Clients<br />");
|
||||||
|
echo("<img src='images/icons/wireless.png' style='height:20px; width:20px;' align=absmiddle /> ".format_bi($ap[radioutil])." % busy<br />");
|
||||||
|
echo("<img src='images/icons/wireless.png' style='height:20px; width:20px;' align=absmiddle /> ".format_bi($ap[interference])." interference index<br />");
|
||||||
|
|
||||||
|
echo("</td></tr>");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if ($vars['tab'] == "accesspoint") {
|
||||||
|
|
||||||
|
|
||||||
|
$graph_type='accesspoints_numasoclients';
|
||||||
|
echo("<tr style='background-color: $row_colour; padding: 0px;'><td colspan=7>");
|
||||||
|
echo("<div class='graphhead'>Associated Clients</div>");
|
||||||
|
include("includes/print-accesspoint-graphs.inc.php");
|
||||||
|
echo("</td></tr>");
|
||||||
|
|
||||||
|
$graph_type='accesspoints_interference';
|
||||||
|
echo("<tr style='background-color: $row_colour; padding: 0px;'><td colspan=7>");
|
||||||
|
echo("<div class='graphhead'>Interference</div>");
|
||||||
|
include("includes/print-accesspoint-graphs.inc.php");
|
||||||
|
echo("</td></tr>");
|
||||||
|
|
||||||
|
$graph_type='accesspoints_channel';
|
||||||
|
echo("<tr style='background-color: $row_colour; padding: 0px;'><td colspan=7>");
|
||||||
|
echo("<div class='graphhead'>Channel</div>");
|
||||||
|
include("includes/print-accesspoint-graphs.inc.php");
|
||||||
|
echo("</td></tr>");
|
||||||
|
|
||||||
|
$graph_type='accesspoints_txpow';
|
||||||
|
echo("<tr style='background-color: $row_colour; padding: 0px;'><td colspan=7>");
|
||||||
|
echo("<div class='graphhead'>Transmit Power</div>");
|
||||||
|
include("includes/print-accesspoint-graphs.inc.php");
|
||||||
|
echo("</td></tr>");
|
||||||
|
|
||||||
|
$graph_type='accesspoints_radioutil';
|
||||||
|
echo("<tr style='background-color: $row_colour; padding: 0px;'><td colspan=7>");
|
||||||
|
echo("<div class='graphhead'>Radio Utilization</div>");
|
||||||
|
include("includes/print-accesspoint-graphs.inc.php");
|
||||||
|
echo("</td></tr>");
|
||||||
|
|
||||||
|
$graph_type='accesspoints_nummonclients';
|
||||||
|
echo("<tr style='background-color: $row_colour; padding: 0px;'><td colspan=7>");
|
||||||
|
echo("<div class='graphhead'>Monitored Clients</div>");
|
||||||
|
include("includes/print-accesspoint-graphs.inc.php");
|
||||||
|
echo("</td></tr>");
|
||||||
|
|
||||||
|
$graph_type='accesspoints_nummonbssid';
|
||||||
|
echo("<tr style='background-color: $row_colour; padding: 0px;'><td colspan=7>");
|
||||||
|
echo("<div class='graphhead'>Number of monitored BSSIDs</div>");
|
||||||
|
include("includes/print-accesspoint-graphs.inc.php");
|
||||||
|
echo("</td></tr>");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
@@ -6,6 +6,7 @@ if ($vars['tab'] == "port" && is_numeric($vars['device']) && port_permitted($var
|
|||||||
$permit_ports = 1;
|
$permit_ports = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (device_permitted($vars['device']) || $check_device == $vars['device'])
|
if (device_permitted($vars['device']) || $check_device == $vars['device'])
|
||||||
{
|
{
|
||||||
$selected['iface'] = "selected";
|
$selected['iface'] = "selected";
|
||||||
@@ -118,6 +119,15 @@ if (device_permitted($vars['device']) || $check_device == $vars['device'])
|
|||||||
</li>');
|
</li>');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (@dbFetchCell("SELECT COUNT(accesspoint_id) FROM accesspoint WHERE device_id = '" . $device['device_id'] . "'") > '0')
|
||||||
|
{
|
||||||
|
echo('<li class="' . $select['accesspoints'] . '">
|
||||||
|
<a href="'.generate_device_url($device, array('tab' => 'accesspoints')). '">
|
||||||
|
<img src="images/icons/wireless.png" align="absmiddle" border="0" /> Access Points
|
||||||
|
</a>
|
||||||
|
</li>');
|
||||||
|
}
|
||||||
|
|
||||||
if (isset($config['smokeping']['dir']))
|
if (isset($config['smokeping']['dir']))
|
||||||
{
|
{
|
||||||
$smokeping_files = array();
|
$smokeping_files = array();
|
||||||
|
@@ -8,4 +8,4 @@ if (is_file($config['rrd_dir'] . "/" . $device['hostname'] ."/wificlients-radio1
|
|||||||
include("includes/print-device-graph.php");
|
include("includes/print-device-graph.php");
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
@@ -279,6 +279,16 @@ function device_by_name($name, $refresh = 0)
|
|||||||
return device_by_id_cache(getidbyname($name), $refresh);
|
return device_by_id_cache(getidbyname($name), $refresh);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function accesspoint_by_id($ap_id, $refresh = '0') {
|
||||||
|
|
||||||
|
$ap = dbFetchRow("SELECT * FROM `accesspoint` WHERE `accesspoint_id` = ?", array($ap_id));
|
||||||
|
|
||||||
|
return $ap;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function device_by_id_cache($device_id, $refresh = '0')
|
function device_by_id_cache($device_id, $refresh = '0')
|
||||||
{
|
{
|
||||||
global $cache;
|
global $cache;
|
||||||
|
@@ -65,6 +65,20 @@ $config['memcached']['port'] = 11211;
|
|||||||
|
|
||||||
$config['slow_statistics'] = TRUE; ### THIS WILL CHANGE TO FALSE IN FUTURE
|
$config['slow_statistics'] = TRUE; ### THIS WILL CHANGE TO FALSE IN FUTURE
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### RRD Format Settings
|
||||||
|
### These should not normally be changed
|
||||||
|
### Though one could conceivably increase or decrease the size of each RRA if one had performance problems
|
||||||
|
### Or if one had a very fast I/O subsystem with no performance worries.
|
||||||
|
|
||||||
|
$config['rrd_rra'] = " RRA:AVERAGE:0.5:1:2016 RRA:AVERAGE:0.5:6:1440 RRA:AVERAGE:0.5:24:1440 RRA:AVERAGE:0.5:288:1440 ";
|
||||||
|
$config['rrd_rra'] .= " RRA:MAX:0.5:1:720 RRA:MIN:0.5:6:1440 RRA:MIN:0.5:24:775 RRA:MIN:0.5:288:797 ";
|
||||||
|
$config['rrd_rra'] .= " RRA:MAX:0.5:1:720 RRA:MAX:0.5:6:1440 RRA:MAX:0.5:24:775 RRA:MAX:0.5:288:797 ";
|
||||||
|
$config['rrd_rra'] .= " RRA:LAST:0.5:1:1440 ";
|
||||||
|
|
||||||
|
|
||||||
### RRDCacheD - Make sure it can write to your RRD dir!
|
### RRDCacheD - Make sure it can write to your RRD dir!
|
||||||
|
|
||||||
#$config['rrdcached'] = "unix:/var/run/rrdcached.sock";
|
#$config['rrdcached'] = "unix:/var/run/rrdcached.sock";
|
||||||
|
@@ -896,6 +896,10 @@ $os = "arubaos";
|
|||||||
$config['os'][$os]['text'] = "ArubaOS";
|
$config['os'][$os]['text'] = "ArubaOS";
|
||||||
$config['os'][$os]['type'] = "wireless";
|
$config['os'][$os]['type'] = "wireless";
|
||||||
$config['os'][$os]['icon'] = "arubaos";
|
$config['os'][$os]['icon'] = "arubaos";
|
||||||
|
$config['os'][$os]['over'][0]['graph'] = "device_arubacontroller_numaps";
|
||||||
|
$config['os'][$os]['over'][0]['text'] = "Number of APs";
|
||||||
|
$config['os'][$os]['over'][1]['graph'] = "device_arubacontroller_numclients";
|
||||||
|
$config['os'][$os]['over'][1]['text'] = "Number of Clients";
|
||||||
|
|
||||||
$os = "dsm";
|
$os = "dsm";
|
||||||
$config['os'][$os]['text'] = "Synology DSM";
|
$config['os'][$os]['text'] = "Synology DSM";
|
||||||
|
146
includes/polling/aruba-controller.inc.php
Normal file
146
includes/polling/aruba-controller.inc.php
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
<?php
|
||||||
|
if ($device['type'] == 'wireless' && $device['os'] == 'arubaos')
|
||||||
|
{
|
||||||
|
global $config;
|
||||||
|
|
||||||
|
echo("Aruba Controller: ");
|
||||||
|
$polled = time();
|
||||||
|
|
||||||
|
//// Build SNMP Cache Array
|
||||||
|
|
||||||
|
//stuff about the controller
|
||||||
|
$switch_info_oids = array('wlsxSwitchRole','wlsxSwitchMasterIp');
|
||||||
|
$switch_counter_oids = array('wlsxSwitchTotalNumAccessPoints.0','wlsxSwitchTotalNumStationsAssociated.0');
|
||||||
|
|
||||||
|
|
||||||
|
$switch_apinfo_oids = array('wlsxWlanRadioEntry','wlanAPChInterferenceIndex');
|
||||||
|
$switch_apname_oids = array('wlsxWlanRadioEntry.16');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$aruba_oids=array_merge($switch_info_oids,$switch_counter_oids);
|
||||||
|
echo("Caching Oids: ");
|
||||||
|
foreach ($aruba_oids as $oid) { echo("$oid "); $aruba_stats = snmpwalk_cache_oid($device, $oid, $aruba_stats, "WLSX-SWITCH-MIB"); }
|
||||||
|
foreach ($switch_apinfo_oids as $oid) { echo("$oid "); $aruba_apstats = snmpwalk_cache_oid_num($device, $oid, $aruba_apstats, "WLSX-WLAN-MIB"); }
|
||||||
|
foreach ($switch_apname_oids as $oid) { echo("$oid "); $aruba_apnames = snmpwalk_cache_oid_num($device, $oid, $aruba_apnames, "WLSX-WLAN-MIB"); }
|
||||||
|
|
||||||
|
|
||||||
|
echo("\n");
|
||||||
|
|
||||||
|
$rrdfile = $host_rrd . "/aruba-controller".safename(".rrd");
|
||||||
|
if (!is_file($rrdfile))
|
||||||
|
{
|
||||||
|
rrdtool_create($rrdfile," --step 300 DS:NUMAPS:GAUGE:600:0:12500000000 DS:NUMCLIENTS:GAUGE:600:0:12500000000 ".$config['rrd_rra']);
|
||||||
|
}
|
||||||
|
|
||||||
|
$cont_rrd_update="$polled:".$aruba_stats[0]['wlsxSwitchTotalNumAccessPoints'].":".$aruba_stats[0]['wlsxSwitchTotalNumStationsAssociated'];
|
||||||
|
$ret = rrdtool_update($rrdfile,$cont_rrd_update);
|
||||||
|
|
||||||
|
// also save the info about how many clients in the same place as the wireless module
|
||||||
|
$wificlientsrrd = $config['rrd_dir'] . "/" . $device['hostname'] . "/" . safename("wificlients-radio1.rrd");
|
||||||
|
|
||||||
|
if (!is_file($wificlientsrrd))
|
||||||
|
{
|
||||||
|
rrdtool_create($wificlientsrrd,"--step 300 DS:wificlients:GAUGE:600:-273:10000 ".$config['rrd_rra']);
|
||||||
|
}
|
||||||
|
|
||||||
|
rrdtool_update($wificlientsrrd,"N:".$aruba_stats[0]['wlsxSwitchTotalNumStationsAssociated']);
|
||||||
|
|
||||||
|
$graphs['wifi_clients'] = TRUE;
|
||||||
|
|
||||||
|
|
||||||
|
$ap_db = dbFetchRows("SELECT * FROM `accesspoint` WHERE `device_id` = ?", array($device['device_id']));
|
||||||
|
|
||||||
|
|
||||||
|
foreach ($aruba_apnames as $key => $value) {
|
||||||
|
$radioid=str_replace("1.3.6.1.4.1.14823.2.2.1.5.2.1.5.1.16.","",$key);
|
||||||
|
$name=$value[''];
|
||||||
|
$type =$aruba_apstats["1.3.6.1.4.1.14823.2.2.1.5.2.1.5.1.2.$radioid"][''];
|
||||||
|
$channel =$aruba_apstats["1.3.6.1.4.1.14823.2.2.1.5.2.1.5.1.3.$radioid"]['']+0;
|
||||||
|
$txpow =$aruba_apstats["1.3.6.1.4.1.14823.2.2.1.5.2.1.5.1.4.$radioid"]['']+0;
|
||||||
|
$radioutil =$aruba_apstats["1.3.6.1.4.1.14823.2.2.1.5.2.1.5.1.6.$radioid"]['']+0;
|
||||||
|
$numasoclients=$aruba_apstats["1.3.6.1.4.1.14823.2.2.1.5.2.1.5.1.7.$radioid"]['']+0;
|
||||||
|
$nummonclients=$aruba_apstats["1.3.6.1.4.1.14823.2.2.1.5.2.1.5.1.8.$radioid"]['']+0;
|
||||||
|
$numactbssid =$aruba_apstats["1.3.6.1.4.1.14823.2.2.1.5.2.1.5.1.9.$radioid"]['']+0;
|
||||||
|
$nummonbssid =$aruba_apstats["1.3.6.1.4.1.14823.2.2.1.5.2.1.5.1.10.$radioid"]['']+0;
|
||||||
|
$interference =$aruba_apstats["1.3.6.1.4.1.14823.2.2.1.5.3.1.6.1.11.$radioid"]['']+0;
|
||||||
|
|
||||||
|
$radionum=substr($radioid,strlen($radioid)-1,1);
|
||||||
|
|
||||||
|
if ($debug)
|
||||||
|
{
|
||||||
|
echo("* radioid: $radioid\n");
|
||||||
|
echo(" radionum: $radionum\n");
|
||||||
|
echo(" name: $name\n");
|
||||||
|
echo(" type: $type\n");
|
||||||
|
echo(" channel: $channel\n");
|
||||||
|
echo(" txpow: $txpow\n");
|
||||||
|
echo(" radioutil: $radioutil\n");
|
||||||
|
echo(" numasoclients: $numasoclients\n");
|
||||||
|
echo(" interference: $interference\n");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// if there is a numeric channel, assume the rest of the data is valid, I guess
|
||||||
|
if (is_numeric($channel))
|
||||||
|
{
|
||||||
|
$rrd_file = $config['rrd_dir'] . "/" . $device['hostname'] ."/" .safename("arubaap-$name.$radionum.rrd");
|
||||||
|
if (!is_file($rrd_file))
|
||||||
|
{
|
||||||
|
$dslist="DS:channel:GAUGE:600:0:200 ";
|
||||||
|
$dslist.="DS:txpow:GAUGE:600:0:200 ";
|
||||||
|
$dslist.="DS:radioutil:GAUGE:600:0:100 ";
|
||||||
|
$dslist.="DS:nummonclients:GAUGE:600:0:500 ";
|
||||||
|
$dslist.="DS:nummonbssid:GAUGE:600:0:200 ";
|
||||||
|
$dslist.="DS:numasoclients:GAUGE:600:0:500 ";
|
||||||
|
$dslist.="DS:interference:GAUGE:600:0:2000 ";
|
||||||
|
rrdtool_create($rrd_file, "--step 300 $dslist ".$config['rrd_rra']);
|
||||||
|
}
|
||||||
|
|
||||||
|
rrdtool_update($rrd_file, "$polled:".$channel.":".$txpow.":".$radioutil.":".$nummonclients.":".$nummonbssid.":".$numasoclients.":".$interference);
|
||||||
|
}
|
||||||
|
|
||||||
|
//generate the mac address
|
||||||
|
$macparts=explode(".",$radioid,-1);
|
||||||
|
$mac="";
|
||||||
|
foreach ($macparts as $part) {
|
||||||
|
$mac.=sprintf("%02x",$part).":";
|
||||||
|
}
|
||||||
|
$mac=rtrim($mac,":");
|
||||||
|
|
||||||
|
|
||||||
|
$foundid=0;
|
||||||
|
|
||||||
|
for ($z=0;$z<sizeof($ap_db);$z++) {
|
||||||
|
if ($ap_db[$z]['name']==$name && $ap_db[$z]['radio_number']==$radionum) {
|
||||||
|
$foundid=$ap_db[$z]['accesspoint_id'];
|
||||||
|
$ap_db[$z]['seen']=1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if ($foundid==0) {
|
||||||
|
$ap_id = dbInsert(array('device_id' => $device['device_id'], 'name' => $name,'radio_number'=>$radionum, 'type'=>$type,'mac_addr'=>$mac,'channel'=>$channel,'txpow'=>$txpow,'radioutil'=>$radioutil,'numasoclients'=>$numasoclients,'nummonclients'=>$nummonclients,'numactbssid'=>$numactbssid,'nummonbssid'=>$nummonbssid,'interference'=>$interference), 'accesspoint');
|
||||||
|
} else {
|
||||||
|
dbUpdate(array('mac_addr' => $mac,'deleted'=>0,'channel'=>$channel,'txpow'=>$txpow,'radioutil'=>$radioutil,'numasoclients'=>$numasoclients,'nummonclients'=>$nummonclients,'numactbssid'=>$numactbssid,'nummonbssid'=>$nummonbssid,'interference'=>$interference), 'accesspoint', '`accesspoint_id` = ?', Array($foundid));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//mark APs which are not on this controller anymore as deleted
|
||||||
|
for ($z=0;$z<sizeof($ap_db);$z++) {
|
||||||
|
if (!isset($ap_db[$z]['seen']) && $ap_db[$z]['deleted']==0) {
|
||||||
|
dbUpdate(array('deleted'=>1), 'accesspoint', '`accesspoint_id` = ?', Array($ap_db[$z]['accesspoint_id']));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
@@ -4,4 +4,19 @@
|
|||||||
$badchars = array("(", ")", ",");
|
$badchars = array("(", ")", ",");
|
||||||
list(,,$hardware,,$version,) = str_replace($badchars, "", explode (" ", $poll_device['sysDescr']));
|
list(,,$hardware,,$version,) = str_replace($badchars, "", explode (" ", $poll_device['sysDescr']));
|
||||||
|
|
||||||
|
//// Build SNMP Cache Array
|
||||||
|
|
||||||
|
//stuff about the controller
|
||||||
|
$switch_info_oids = array('wlsxSwitchRole','wlsxSwitchMasterIp');
|
||||||
|
echo("Caching Oids: ");
|
||||||
|
foreach ($switch_info_oids as $oid) { echo("$oid "); $aruba_info = snmpwalk_cache_oid($device, $oid, $aruba_info, "WLSX-SWITCH-MIB"); }
|
||||||
|
|
||||||
|
echo("\n");
|
||||||
|
|
||||||
|
if ($aruba_info[0]['wlsxSwitchRole']=='master') {
|
||||||
|
$features="Master Controller";
|
||||||
|
} else {
|
||||||
|
$features="Local Controller for ".$aruba_info[0]['wlsxSwitchMasterIp'];
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
@@ -121,6 +121,9 @@ function snmp_get($device, $oid, $options = NULL, $mib = NULL, $mibdir = NULL)
|
|||||||
else { return false; }
|
else { return false; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function snmp_walk($device, $oid, $options = NULL, $mib = NULL, $mibdir = NULL)
|
function snmp_walk($device, $oid, $options = NULL, $mib = NULL, $mibdir = NULL)
|
||||||
{
|
{
|
||||||
global $debug,$config,$runtime_stats;
|
global $debug,$config,$runtime_stats;
|
||||||
@@ -331,6 +334,29 @@ function snmpwalk_cache_oid($device, $oid, $array, $mib = NULL, $mibdir = NULL)
|
|||||||
return $array;
|
return $array;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// just like snmpwalk_cache_oid except that it returns the numerical oid as the index
|
||||||
|
// this is useful when the oid is indexed by the mac address and snmpwalk would
|
||||||
|
// return periods (.) for non-printable numbers, thus making many different indexes appear
|
||||||
|
// to be the same.
|
||||||
|
function snmpwalk_cache_oid_num($device, $oid, $array, $mib = NULL, $mibdir = NULL)
|
||||||
|
{
|
||||||
|
$data = snmp_walk($device, $oid, "-OQUn", $mib, $mibdir);
|
||||||
|
|
||||||
|
foreach (explode("\n", $data) as $entry)
|
||||||
|
{
|
||||||
|
list($oid,$value) = explode("=", $entry);
|
||||||
|
$oid = trim($oid); $value = trim($value);
|
||||||
|
list($oid, $index) = explode(".", $oid, 2);
|
||||||
|
if (!strstr($value, "at this OID") && isset($oid) && isset($index))
|
||||||
|
{
|
||||||
|
$array[$index][$oid] = $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $array;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function snmpwalk_cache_multi_oid($device, $oid, $array, $mib = NULL, $mibdir = NULL)
|
function snmpwalk_cache_multi_oid($device, $oid, $array, $mib = NULL, $mibdir = NULL)
|
||||||
{
|
{
|
||||||
global $cache;
|
global $cache;
|
||||||
|
1
sql-schema/026.sql
Normal file
1
sql-schema/026.sql
Normal file
@@ -0,0 +1 @@
|
|||||||
|
CREATE TABLE IF NOT EXISTS `access_points` ( `accesspoint_id` int(11) NOT NULL AUTO_INCREMENT, `device_id` int(11) NOT NULL, `name` varchar(255) NOT NULL, `radio_number` tinyint(4) DEFAULT NULL, `type` varchar(16) NOT NULL, `mac_addr` varchar(24) NOT NULL, `deleted` tinyint(1) NOT NULL DEFAULT '0', `channel` tinyint(4) unsigned NOT NULL DEFAULT '0', `txpow` tinyint(4) NOT NULL DEFAULT '0', `radioutil` tinyint(4) NOT NULL DEFAULT '0', `numasoclients` smallint(6) NOT NULL DEFAULT '0', `nummonclients` smallint(6) NOT NULL DEFAULT '0', `numactbssid` tinyint(4) NOT NULL DEFAULT '0', `nummonbssid` tinyint(4) NOT NULL DEFAULT '0', `interference` tinyint(3) unsigned NOT NULL, PRIMARY KEY (`accesspoint_id`), KEY `deleted` (`deleted`), KEY `name` (`name`,`radio_number`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Access Points';
|
Reference in New Issue
Block a user