fix: os type and group not being set (#5357)

This commit is contained in:
Tony Murray
2017-01-09 02:16:09 -06:00
committed by Neil Lathwood
parent 5ad8fd3c0c
commit b3f6218359
5 changed files with 34 additions and 32 deletions

View File

@@ -22,16 +22,13 @@ if (device_permitted($vars['device']) || $check_device == $vars['device']) {
$device = device_by_id_cache($vars['device']); $device = device_by_id_cache($vars['device']);
$attribs = get_dev_attribs($device['device_id']); $attribs = get_dev_attribs($device['device_id']);
load_os($device);
$entity_state = get_dev_entity_state($device['device_id']); $entity_state = get_dev_entity_state($device['device_id']);
// print_r($entity_state); // print_r($entity_state);
$pagetitle[] = $device['hostname']; $pagetitle[] = $device['hostname'];
if ($config['os'][$device['os']]['group']) {
$device['os_group'] = $config['os'][$device['os']]['group'];
}
echo '<div class="panel panel-default">'; echo '<div class="panel panel-default">';
echo '<table class="device-header-table" style="margin: 0px 7px 7px 7px;" cellspacing="0" class="devicetable" width="99%">'; echo '<table class="device-header-table" style="margin: 0px 7px 7px 7px;" cellspacing="0" class="devicetable" width="99%">';
require 'includes/device-header.inc.php'; require 'includes/device-header.inc.php';

View File

@@ -1509,16 +1509,32 @@ function display($value)
} }
/** /**
* @param $os * Load the os definition for the device and set type and os_group
* @return array|mixed * $device['os'] must be set
*
* @param array $device
* @throws Exception No OS to load
*/ */
function load_os($os) function load_os(&$device)
{ {
global $config; global $config;
if (isset($os)) { if (!isset($device['os'])) {
return Symfony\Component\Yaml\Yaml::parse( throw new Exception('No OS to load');
file_get_contents($config['install_dir'] . '/includes/definitions/' . $os . '.yaml') }
);
$config['os'][$device['os']] = Symfony\Component\Yaml\Yaml::parse(
file_get_contents($config['install_dir'] . '/includes/definitions/' . $device['os'] . '.yaml')
);
// Set type to a predefined type for the OS if it's not already set
if ($device['type'] == 'unknown' || $device['type'] == '') {
if ($config['os'][$device['os']]['type']) {
$device['type'] = $config['os'][$device['os']]['type'];
}
}
if ($config['os'][$device['os']]['group']) {
$device['os_group'] = $config['os'][$device['os']]['group'];
} }
} }

View File

@@ -110,23 +110,11 @@ function discover_device($device, $options = null)
} }
} }
$config['os'][$device['os']] = load_os($device['os']); load_os($device);
if (is_array($config['os'][$device['os']]['register_mibs'])) { if (is_array($config['os'][$device['os']]['register_mibs'])) {
register_mibs($device, $config['os'][$device['os']]['register_mibs'], 'includes/discovery/os/' . $device['os'] . '.inc.php'); register_mibs($device, $config['os'][$device['os']]['register_mibs'], 'includes/discovery/os/' . $device['os'] . '.inc.php');
} }
// Set type to a predefined type for the OS if it's not already set
if ($device['type'] == 'unknown' || $device['type'] == '') {
if ($config['os'][$device['os']]['type']) {
$device['type'] = $config['os'][$device['os']]['type'];
}
}
if ($config['os'][$device['os']]['group']) {
$device['os_group'] = $config['os'][$device['os']]['group'];
echo ' (' . $device['os_group'] . ')';
}
echo "\n"; echo "\n";
// If we've specified modules, use them, else walk the modules array // If we've specified modules, use them, else walk the modules array

View File

@@ -149,7 +149,7 @@ function poll_device($device, $options)
{ {
global $config, $device, $polled_devices, $memcache; global $config, $device, $polled_devices, $memcache;
$config['os'][$device['os']] = load_os($device['os']); load_os($device);
$attribs = get_dev_attribs($device['device_id']); $attribs = get_dev_attribs($device['device_id']);
$device['snmp_max_repeaters'] = $attribs['snmp_max_repeaters']; $device['snmp_max_repeaters'] = $attribs['snmp_max_repeaters'];

View File

@@ -66,20 +66,21 @@ if ($device['type'] == 'network' || $device['type'] == 'firewall' || $device['ty
echo (($wificlients1 + 0).' clients on wireless connector, '); echo (($wificlients1 + 0).' clients on wireless connector, ');
} elseif ($device['os'] == 'unifi') { } elseif ($device['os'] == 'unifi') {
echo 'Checking Unifi Wireless clients... '; echo 'Checking Unifi Wireless clients... ';
$wificlients1 = 0;
$wificlients2 = 0;
$clients = explode("\n", snmp_walk($device, 'unifiVapNumStations', '-Oqv', 'UBNT-UniFi-MIB'));
$bands = explode("\n", snmp_walk($device, 'unifiVapRadio', '-Oqv', 'UBNT-UniFi-MIB'));
$clients = snmp_walk($device, 'unifiVapNumStations', '-Oqv', 'UBNT-UniFi-MIB');
$bands = snmp_walk($device, 'unifiVapRadio', '-Oqv', 'UBNT-UniFi-MIB');
$clients = explode("\n", $clients);
$bands = explode("\n", $bands);
foreach ($bands as $index => $band_index) { foreach ($bands as $index => $band_index) {
if ($band_index == "ng") { if ($band_index == "ng") {
$wificlients1 = $wificlients1 + $clients[$index] + 0; $wificlients1 += $clients[$index];
} else { } else {
$wificlients2 = $wificlients2 + $clients[$index] + 0; $wificlients2 += $clients[$index];
} }
} }
echo (($wificlients1 + 0).' clients on Radio0, '.($wificlients2 + 0)." clients on Radio1\n"); echo $wificlients1 . ' clients on Radio0, ' . $wificlients2 . " clients on Radio1\n";
include 'includes/polling/mib/ubnt-unifi-mib.inc.php'; include 'includes/polling/mib/ubnt-unifi-mib.inc.php';
} }