public function testPHPlogs() { global $CFG_GLPI, $PLUGIN_HOOKS; $_SESSION['glpi_use_mode'] = 2; $_SESSION["glpiID"] = 2; $_SESSION["glpiactiveentities_string"] = 0; $PLUGIN_HOOKS = plugin_init_monitoring(); plugin::load("monitoring"); $CFG_GLPI['root_doc'] = "http://127.0.0.1/fusion0.80/"; loadLanguage("en_GB"); $pmComponent = new PluginMonitoringComponent(); $pmComponentscatalog = new PluginMonitoringComponentscatalog(); $pmComponentscatalog_Component = new PluginMonitoringComponentscatalog_Component(); $pmComponentscatalog_rule = new PluginMonitoringComponentscatalog_rule(); $pmComponentscatalog_Host = new PluginMonitoringComponentscatalog_Host(); $pmService = new PluginMonitoringService(); $computer = new Computer(); // Add components $input = array(); $input['name'] = 'Host alive'; $input['plugin_monitoring_commands_id '] = '21'; $input['plugin_monitoring_checks_id'] = '1'; $input['calendars_id'] = '1'; $components_id = $pmComponent->add($input); // Add components catalog $input = array(); $input['name'] = 'linux servers'; $catalogs_id = $pmComponentscatalog->add($input); $input = array(); $input['plugin_monitoring_componentscalalog_id'] = $catalogs_id; $input['plugin_monitoring_components_id'] = $components_id; $pmComponentscatalog_Component->add($input); // Add Computer $input = array(); $input['name'] = 'pc1'; $input['entities_id'] = 0; $pc1 = $computer->add($input); // Check computer pc1 not added in ressources $a_hosts = $pmComponentscatalog_Host->find("`plugin_monitoring_componentscalalog_id`='" . $catalogs_id . "'"); $this->assertEquals(count($a_hosts), '0', '[f1] Computer in component cataglog and may not be'); $input = array(); $input['plugin_monitoring_componentscalalog_id'] = $catalogs_id; $input['name'] = 'all have name'; $input['itemtype'] = 'Computer'; $input['condition'] = '{"field":["1"],"searchtype":["contains"],"contains":["pc"],"itemtype":"Computer","start":"0"}'; $rules_id = $pmComponentscatalog_rule->add($input); // Check computer pc1 not added in ressources $a_hosts = $pmComponentscatalog_Host->find("`plugin_monitoring_componentscalalog_id`='" . $catalogs_id . "'"); $this->assertEquals(count($a_hosts), '1', '[f2] Computer may be in component catalog'); // Check service of this computer created $a_services = $pmService->find(); $this->assertEquals(count($a_services), '1', '[s2] One service may be created'); // Add Computer $input = array(); $input['name'] = 'pc2'; $input['entities_id'] = 0; $pc2 = $computer->add($input); // Check computer pc1 not added in ressources $a_hosts = $pmComponentscatalog_Host->find("`plugin_monitoring_componentscalalog_id`='" . $catalogs_id . "'"); $this->assertEquals(count($a_hosts), '2', '[f3] 2 computers may be in component catalog'); // Check service of this computer created $a_services = $pmService->find(); $this->assertEquals(count($a_services), '2', '[s3] 2 services may be created'); // Remove pc2 $computer->delete(array('id' => $pc2), 1); // Check computer pc1 added in ressources $a_hosts = $pmComponentscatalog_Host->find("`plugin_monitoring_componentscalalog_id`='" . $catalogs_id . "'"); $this->assertEquals(count($a_hosts), '1', '[f4] Computer may be unique in component catalog'); // Check service of this computer created $a_services = $pmService->find(); $this->assertEquals(count($a_services), '1', '[s4] One service may be created'); // Modify rule $input['id'] = $rules_id; $input['condition'] = '{"field":["1"],"searchtype":["contains"],"contains":["tc"],"itemtype":"Computer","start":"0"}'; $pmComponentscatalog_rule->update($input); // Check no computer in ressources $a_hosts = $pmComponentscatalog_Host->find("`plugin_monitoring_componentscalalog_id`='" . $catalogs_id . "'"); $this->assertEquals(count($a_hosts), '0', '[f5] Computer may be deleted on rule update'); // Check service $a_services = $pmService->find(); $this->assertEquals(count($a_services), '0', '[s5] No service may be created'); // Modify rule $input['id'] = $rules_id; $input['condition'] = '{"field":["1"],"searchtype":["contains"],"contains":["pc"],"itemtype":"Computer","start":"0"}'; $pmComponentscatalog_rule->update($input); // Check computer pc1 added in ressources $a_hosts = $pmComponentscatalog_Host->find("`plugin_monitoring_componentscalalog_id`='" . $catalogs_id . "'"); $this->assertEquals(count($a_hosts), '1', '[f6] Computer may be unique in component catalog'); // Delete rule $pmComponentscatalog_rule->delete(array('id' => $rules_id), 1); // Check not have computer in ressources $a_hosts = $pmComponentscatalog_Host->find("`plugin_monitoring_componentscalalog_id`='" . $catalogs_id . "'"); $this->assertEquals(count($a_hosts), '0', '[f7] must have no computer in component catalog'); // Check service $a_services = $pmService->find(); $this->assertEquals(count($a_services), '0', '[s7] No service may be created'); }
static function isThisItemCheckRule($parm) { global $DB; $itemtype = get_class($parm); $items_id = $parm->fields['id']; $a_find = array(); $pmComponentscatalog_rule = new PluginMonitoringComponentscatalog_rule(); $pmComponentscatalog = new PluginMonitoringComponentscatalog(); $pmSearch = new PluginMonitoringSearch(); $query = "SELECT * FROM `" . $pmComponentscatalog_rule->getTable() . "`\n WHERE `itemtype`='" . $itemtype . "'"; $result = $DB->query($query); $get_tmp = array(); if (isset($_GET)) { $get_tmp = $_GET; } while ($data = $DB->fetch_array($result)) { if (isset($_SESSION["glpisearchcount"][$data['itemtype']])) { unset($_SESSION["glpisearchcount"][$data['itemtype']]); } if (isset($_SESSION["glpisearchcount2"][$data['itemtype']])) { unset($_SESSION["glpisearchcount2"][$data['itemtype']]); } $_GET = importArrayFromDB($data['condition']); $_GET["glpisearchcount"] = count($_GET['field']); if (isset($_GET['field2'])) { $_GET["glpisearchcount2"] = count($_GET['field2']); } if (!isset($_SESSION['glpiactiveentities_string'])) { $_SESSION['glpiactiveentities_string'] = $parm->fields['entities_id']; } // Load right entity $pmComponentscatalog->getFromDB($data['plugin_monitoring_componentscalalog_id']); $default_entity = 0; if (isset($_SESSION['glpiactive_entity'])) { $default_entity = $_SESSION['glpiactive_entity']; } $entities_isrecursive = 0; if (isset($_SESSION['glpiactiveentities']) and count($_SESSION['glpiactiveentities']) > 1) { $entities_isrecursive = 1; } if (!isset($_SESSION['glpiactiveprofile']['entities'])) { $_SESSION['glpiactiveprofile']['entities'] = array($pmComponentscatalog->fields['entities_id'] => array('id' => $pmComponentscatalog->fields['entities_id'], 'name' => '', 'is_recursive' => $pmComponentscatalog->fields['is_recursive'])); } Session::changeActiveEntities($pmComponentscatalog->fields['entities_id'], $pmComponentscatalog->fields['is_recursive']); Search::manageGetValues($data['itemtype']); $resultr = $pmSearch->constructSQL($itemtype, $_GET, $items_id); if ($DB->numrows($resultr) > 0) { $a_find[$data['plugin_monitoring_componentscalalog_id']] = 1; } else { if (!isset($a_find[$data['plugin_monitoring_componentscalalog_id']])) { $a_find[$data['plugin_monitoring_componentscalalog_id']] = 0; } } // Reload current entity Session::changeActiveEntities($default_entity, $entities_isrecursive); } if (count($get_tmp) > 0) { $_GET = $get_tmp; } $pmComponentscatalog_Host = new PluginMonitoringComponentscatalog_Host(); foreach ($a_find as $componentscalalog_id => $is_present) { if ($is_present == '0') { // * Remove from dynamic if present $query = "SELECT * FROM `glpi_plugin_monitoring_componentscatalogs_hosts`\n WHERE `plugin_monitoring_componentscalalog_id`='" . $componentscalalog_id . "'\n AND `itemtype`='" . $itemtype . "'\n AND `items_id`='" . $items_id . "'\n AND`is_static`='0'"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { $pmComponentscatalog_Host->delete(array('id' => $data['id'])); } } else { // add if not present $query = "SELECT * FROM `glpi_plugin_monitoring_componentscatalogs_hosts`\n WHERE `plugin_monitoring_componentscalalog_id`='" . $componentscalalog_id . "'\n AND `itemtype`='" . $itemtype . "'\n AND `items_id`='" . $items_id . "'\n LIMIT 1"; $result = $DB->query($query); if ($DB->numrows($result) == '0') { $input = array(); $input['plugin_monitoring_componentscalalog_id'] = $componentscalalog_id; $input['is_static'] = '0'; $input['items_id'] = $items_id; $input['itemtype'] = $itemtype; $componentscatalogs_hosts_id = $pmComponentscatalog_Host->add($input); $pmComponentscatalog_Host->linkComponentsToItem($componentscalalog_id, $componentscatalogs_hosts_id); } else { $data2 = $DB->fetch_assoc($result); // modify entity of services (if entity of device is changed) $item = new $itemtype(); $item->getFromDB($items_id); $queryu = "UPDATE `glpi_plugin_monitoring_services`\n SET `entities_id`='" . $item->fields['entities_id'] . "'\n WHERE `plugin_monitoring_componentscatalogs_hosts_id`='" . $data2['id'] . "'"; $DB->query($queryu); } } } if ($itemtype == 'NetworkEquipment') { //Get networkports $pmComponentscatalog_rule->isThisItemCheckRuleNetworkport($parm); } }
------------------------------------------------------------------------ */ include ("../../../inc/includes.php"); Session::checkRight("plugin_monitoring_componentscatalog", READ); Html::header(__('Monitoring', 'monitoring'),$_SERVER["PHP_SELF"], "plugins", "monitoring", "checks"); if (isset($_POST['itemtypen'])) { $_POST['itemtype'] = $_POST['itemtypen']; } $pmComponentscatalog_rule = new PluginMonitoringComponentscatalog_rule(); $pmComponentscatalog = new PluginMonitoringComponentscatalog(); if (isset($_GET['addrule'])) { if (!isset($_GET['criteria'])) { // $_SESSION['plugin_monitoring_rules'] = $_POST; } else { $_POST = $_GET; $input = array(); $pmComponentscatalog->getFromDB($_POST['plugin_monitoring_componentscalalog_id']); $input['entities_id'] = $pmComponentscatalog->fields['entities_id']; $input['is_recursive'] = $pmComponentscatalog->fields['is_recursive']; $input['name'] = $_POST['name']; $input['itemtype'] = $_POST['itemtype']; $input['plugin_monitoring_componentscalalog_id'] = $_POST['plugin_monitoring_componentscalalog_id'];
static function removeCatalog($item) { global $DB; $pmComponentscatalog_Host = new PluginMonitoringComponentscatalog_Host(); $pmComponentscatalog_rule = new PluginMonitoringComponentscatalog_rule(); $query = "SELECT * FROM `glpi_plugin_monitoring_componentscatalogs_hosts`\n WHERE `plugin_monitoring_componentscalalog_id`='" . $item->fields["id"] . "'\n AND `is_static`='1'"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { $pmComponentscatalog_Host->delete($data); } $query = "SELECT * FROM `glpi_plugin_monitoring_componentscatalogs_rules`\n WHERE `plugin_monitoring_componentscalalog_id`='" . $item->fields["id"] . "'"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { $pmComponentscatalog_rule->delete($data); } }
function addComponentToItems($componentscatalogs_id, $components_id) { global $DB; $pmService = new PluginMonitoringService(); $pmComponentscatalog_rule = new PluginMonitoringComponentscatalog_rule(); $pmNetworkport = new PluginMonitoringNetworkport(); $pluginMonitoringNetworkport = 0; $query = "SELECT * FROM `" . $pmComponentscatalog_rule->getTable() . "`\n WHERE `itemtype`='PluginMonitoringNetworkport'\n AND `plugin_monitoring_componentscalalog_id`='" . $componentscatalogs_id . "'\n LIMIT 1"; $result = $DB->query($query); if ($DB->numrows($result) > 0) { $pluginMonitoringNetworkport = 1; } $query = "SELECT * FROM `glpi_plugin_monitoring_componentscatalogs_hosts`\n WHERE `plugin_monitoring_componentscalalog_id`='" . $componentscatalogs_id . "'"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { $itemtype = $data['itemtype']; $item = new $itemtype(); $item->getFromDB($data['items_id']); if ($pluginMonitoringNetworkport == '0') { $input = array(); $input['entities_id'] = $item->fields['entities_id']; $input['plugin_monitoring_componentscatalogs_hosts_id'] = $data['id']; $input['plugin_monitoring_components_id'] = $components_id; $input['name'] = Dropdown::getDropdownName("glpi_plugin_monitoring_components", $components_id); $input['state'] = 'WARNING'; $input['state_type'] = 'HARD'; $pmService->add($input); } else { if ($pluginMonitoringNetworkport == '1') { $a_services_created = array(); $querys = "SELECT * FROM `glpi_plugin_monitoring_services`\n WHERE `plugin_monitoring_components_id`='" . $components_id . "'\n AND `plugin_monitoring_componentscatalogs_hosts_id`='" . $data['id'] . "'"; $results = $DB->query($querys); while ($datas = $DB->fetch_array($results)) { $a_services_created[$datas['networkports_id']] = $datas['id']; } $a_ports = $pmNetworkport->find("`itemtype`='" . $data['itemtype'] . "'\n AND `items_id`='" . $data['items_id'] . "'"); foreach ($a_ports as $datap) { if (isset($a_services_created[$datap["id"]])) { unset($a_services_created[$datap["id"]]); } else { $input = array(); $input['networkports_id'] = $datap['networkports_id']; $input['entities_id'] = $item->fields['entities_id']; $input['plugin_monitoring_componentscatalogs_hosts_id'] = $data['id']; $input['plugin_monitoring_components_id'] = $components_id; $input['name'] = Dropdown::getDropdownName("glpi_plugin_monitoring_components", $components_id); $input['state'] = 'WARNING'; $input['state_type'] = 'HARD'; $pmService->add($input); } } foreach ($a_services_created as $id) { $_SESSION['plugin_monitoring_hosts'] = $data; $pmService->delete(array('id' => $id)); } } } } }
function plugin_monitoring_ReplayRulesForItem($args) { $itemtype = $args[0]; $items_id = $args[1]; $item = new $itemtype(); $item->getFromDB($items_id); PluginMonitoringComponentscatalog_rule::isThisItemCheckRule($item); }
} $pmComponentscatalog = new PluginMonitoringComponentscatalog(); if ($_POST["id"] > 0 && $pmComponentscatalog->can($_POST["id"], 'r')) { switch ($_POST['glpi_tab']) { case -1: break; case 1: $pmComponentscatalog_Component = new PluginMonitoringComponentscatalog_Component(); $pmComponentscatalog_Component->showComponents($_POST['id']); break; case 2: $pmComponentscatalog_Host = new PluginMonitoringComponentscatalog_Host(); $pmComponentscatalog_Host->showHosts($_POST['id'], 1); break; case 3: $pmComponentscatalog_rule = new PluginMonitoringComponentscatalog_rule(); $pmComponentscatalog_rule->showRules($_POST['id']); break; case 4: $pmComponentscatalog_Host = new PluginMonitoringComponentscatalog_Host(); $pmComponentscatalog_Host->showHosts($_POST['id'], 0); break; case 5: $pmContact_Item = new PluginMonitoringContact_Item(); $pmContact_Item->showContacts("PluginMonitoringComponentscatalog", $_POST['id']); break; case 6: $pmUnavaibility = new PluginMonitoringUnavaibility(); $pmUnavaibility->displayComponentscatalog($_POST['id']); break; default:
static function isThisItemCheckRule($parm) { global $DB; $itemtype = get_class($parm); $items_id = $parm->fields['id']; $session_glpisearch = array(); if (isset($_SESSION['glpisearch'])) { $session_glpisearch = $_SESSION['glpisearch']; } $session_glpisearchcount = array(); if (isset($_SESSION['glpisearchcount'])) { $session_glpisearchcount = $_SESSION['glpisearchcount']; } $session_glpisearchcount2 = array(); if (isset($_SESSION['glpisearchcount2'])) { $session_glpisearchcount2 = $_SESSION['glpisearchcount2']; } $a_find = array(); $pmComponentscatalog_rule = new PluginMonitoringComponentscatalog_rule(); $pmComponentscatalog = new PluginMonitoringComponentscatalog(); $query = "SELECT * FROM `" . $pmComponentscatalog_rule->getTable() . "`\n WHERE `itemtype`='" . $itemtype . "'"; $result = $DB->query($query); $get_tmp = array(); if (isset($_GET)) { $get_tmp = $_GET; } while ($data = $DB->fetch_array($result)) { if (!isset($_SESSION['glpiactiveentities_string'])) { $_SESSION['glpiactiveentities_string'] = $parm->fields['entities_id']; } // Load right entity $pmComponentscatalog->getFromDB($data['plugin_monitoring_componentscalalog_id']); $default_entity = 0; if (isset($_SESSION['glpiactive_entity'])) { $default_entity = $_SESSION['glpiactive_entity']; } $entities_isrecursive = 0; if (isset($_SESSION['glpiactiveentities']) and count($_SESSION['glpiactiveentities']) > 1) { $entities_isrecursive = 1; } if (!isset($_SESSION['glpiactiveprofile']['entities'])) { $_SESSION['glpiactiveprofile']['entities'] = array($pmComponentscatalog->fields['entities_id'] => array('id' => $pmComponentscatalog->fields['entities_id'], 'name' => '', 'is_recursive' => $pmComponentscatalog->fields['is_recursive'])); } Session::changeActiveEntities($pmComponentscatalog->fields['entities_id'], $pmComponentscatalog->fields['is_recursive']); $itemtype = $data['itemtype']; $condition = importArrayFromDB($data['condition']); $params = Search::manageParams($itemtype, $condition, FALSE); $datar = Search::prepareDatasForSearch($itemtype, $params); Search::constructSQL($datar); $DBread = DBConnection::getReadConnection(); $DBread->query("SET SESSION group_concat_max_len = 16384;"); $resultr = $DBread->query($datar['sql']['search']); /// Check group concat limit : if warning : increase limit if ($result2 = $DBread->query('SHOW WARNINGS')) { if ($DBread->numrows($result2) > 0) { $res = $DBread->fetch_assoc($result2); if ($res['Code'] == 1260) { $DBread->query("SET SESSION group_concat_max_len = 4194304;"); $resultr = $DBread->query($datar['sql']['search']); } } } $find = 0; while ($datar = $DB->fetch_array($resultr)) { if ($datar['id'] == $items_id) { $find = 1; break; } } if ($find == 1) { $a_find[$data['plugin_monitoring_componentscalalog_id']] = 1; } else { if (!isset($a_find[$data['plugin_monitoring_componentscalalog_id']])) { $a_find[$data['plugin_monitoring_componentscalalog_id']] = 0; } } // Reload current entity Session::changeActiveEntities($default_entity, $entities_isrecursive); } if (count($get_tmp) > 0) { $_GET = $get_tmp; } $pmComponentscatalog_Host = new PluginMonitoringComponentscatalog_Host(); foreach ($a_find as $componentscalalog_id => $is_present) { if ($is_present == '0') { // * Remove from dynamic if present $query = "SELECT * FROM `glpi_plugin_monitoring_componentscatalogs_hosts`\n WHERE `plugin_monitoring_componentscalalog_id`='" . $componentscalalog_id . "'\n AND `itemtype`='" . $itemtype . "'\n AND `items_id`='" . $items_id . "'\n AND`is_static`='0'"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { $pmComponentscatalog_Host->delete(array('id' => $data['id'])); } } else { // add if not present $query = "SELECT * FROM `glpi_plugin_monitoring_componentscatalogs_hosts`\n WHERE `plugin_monitoring_componentscalalog_id`='" . $componentscalalog_id . "'\n AND `itemtype`='" . $itemtype . "'\n AND `items_id`='" . $items_id . "'\n LIMIT 1"; $result = $DB->query($query); if ($DB->numrows($result) == '0') { $input = array(); $input['plugin_monitoring_componentscalalog_id'] = $componentscalalog_id; $input['is_static'] = '0'; $input['items_id'] = $items_id; $input['itemtype'] = $itemtype; $pmComponentscatalog_Host->add($input); } else { $data2 = $DB->fetch_assoc($result); // modify entity of services (if entity of device is changed) $item = new $itemtype(); $item->getFromDB($items_id); $queryu = "UPDATE `glpi_plugin_monitoring_services`\n SET `entities_id`='" . $item->fields['entities_id'] . "'\n WHERE `plugin_monitoring_componentscatalogs_hosts_id`='" . $data2['id'] . "'"; $DB->query($queryu); } } } if ($itemtype == 'NetworkEquipment') { //Get networkports $pmComponentscatalog_rule->isThisItemCheckRuleNetworkport($parm); } $_SESSION['glpisearch'] = $session_glpisearch; $_SESSION['glpisearchcount'] = $session_glpisearchcount; $_SESSION['glpisearchcount2'] = $session_glpisearchcount2; }