diff --git a/doc/Extensions/Oxidized.md b/doc/Extensions/Oxidized.md index 19ba60f153..38297dbbc0 100644 --- a/doc/Extensions/Oxidized.md +++ b/doc/Extensions/Oxidized.md @@ -40,3 +40,10 @@ You will need to configure default credentials for your devices, LibreNMS doesn' ``` If you have devices which you do not wish to appear in Oxidized then you can edit those devices in Device -> Edit -> Misc and enable "Exclude from Oxidized?" + +It's also possible to exclude certain device types and OS' from being output via the API. This is currently only possible via config.php: + +```php +$config['oxidized']['ignore_types'] = array('server'); +$config['oxidized']['ignore_os'] = array('linux'); +``` diff --git a/html/includes/api_functions.inc.php b/html/includes/api_functions.inc.php index 2e10819b91..7a903bc658 100644 --- a/html/includes/api_functions.inc.php +++ b/html/includes/api_functions.inc.php @@ -890,12 +890,14 @@ function get_inventory() { function list_oxidized() { - // return details of a single device + global $config; $app = \Slim\Slim::getInstance(); $app->response->headers->set('Content-Type', 'application/json'); $devices = array(); - foreach (dbFetchRows("SELECT hostname,os FROM `devices` LEFT JOIN devices_attribs AS `DA` ON devices.device_id = DA.device_id AND `DA`.attrib_type='override_Oxidized_disable' WHERE `status`='1' AND (DA.attrib_value = 'false' OR DA.attrib_value IS NULL)") as $device) { + $device_types = "'".implode("','", $config['oxidized']['ignore_types'])."'"; + $device_os = "'".implode("','", $config['oxidized']['ignore_os'])."'"; + foreach (dbFetchRows("SELECT hostname,os FROM `devices` LEFT JOIN devices_attribs AS `DA` ON devices.device_id = DA.device_id AND `DA`.attrib_type='override_Oxidized_disable' WHERE `status`='1' AND (DA.attrib_value = 'false' OR DA.attrib_value IS NULL) AND (`type` NOT IN ($device_types) AND `os` NOT IN ($device_os))") as $device) { $devices[] = $device; }