/** * Import discovered device (add / update data in GLPI DB) * * @param object $item */ function importDevice($item) { PluginFusioninventoryLogger::logIfExtradebugAndDebugMode('fusioninventorycommunication', 'Function PluginFusinvsnmpCommunicationNetDiscovery->importDevice().'); $arrayinventory = $_SESSION['SOURCE_XMLDEVICE']; $input = array(); $input['id'] = $item->getID(); $a_lockable = PluginFusioninventoryLock::getLockFields(getTableForItemType($item->getType()), $item->getID()); if (!in_array('name', $a_lockable)) { if (isset($arrayinventory['SNMPHOSTNAME']) && !empty($arrayinventory['SNMPHOSTNAME'])) { $input['name'] = $arrayinventory['SNMPHOSTNAME']; } else { if (isset($arrayinventory['NETBIOSNAME']) && !empty($arrayinventory['NETBIOSNAME'])) { $input['name'] = $arrayinventory['NETBIOSNAME']; } else { if (isset($arrayinventory['DNSHOSTNAME']) && !empty($arrayinventory['DNSHOSTNAME'])) { $input['name'] = $arrayinventory['DNSHOSTNAME']; } } } } if (!in_array('serial', $a_lockable)) { if (isset($arrayinventory['SERIAL'])) { if (trim($arrayinventory['SERIAL']) != '') { $input['serial'] = trim($arrayinventory['SERIAL']); } } } if (isset($input['name']) && $input['name'] == '') { unset($input['name']); } if (isset($input['serial']) && $input['serial'] == '') { unset($input['serial']); } if (isset($arrayinventory['ENTITY']) and !empty($arrayinventory['ENTITY'])) { $input['entities_id'] = $arrayinventory['ENTITY']; if (!isset($_SESSION['glpiactiveentities_string'])) { $_SESSION['glpiactiveentities_string'] = "'" . $arrayinventory['ENTITY'] . "'"; } } if (!isset($_SESSION['glpiactiveentities_string'])) { $_SESSION['glpiactiveentities_string'] = "'" . $item->fields['entities_id'] . "'"; } switch ($item->getType()) { case 'Computer': // don't update this computer, if it is already handled by // its own agent if (Dropdown::getDropdownName("glpi_autoupdatesystems", $item->fields['autoupdatesystems_id']) == 'FusionInventory') { return; } if (isset($arrayinventory['WORKGROUP'])) { $domain = new Domain(); if (!in_array('domains_id', $a_lockable)) { $input['domains_id'] = $domain->import(array('name' => $arrayinventory['WORKGROUP'])); } } $item->update($input); $this->_updateNetworkInfo($arrayinventory, 'Computer', $item->getID(), 'NetworkPortEthernet', 1); break; case 'PluginFusioninventoryUnmanaged': // Write XML file if (isset($_SESSION['SOURCE_XMLDEVICE'])) { PluginFusioninventoryToolbox::writeXML($input['id'], serialize($_SESSION['SOURCE_XMLDEVICE']), 'PluginFusioninventoryUnmanaged'); } if (!in_array('contact', $a_lockable) && isset($arrayinventory['USERSESSION'])) { $input['contact'] = $arrayinventory['USERSESSION']; } if (!in_array('domain', $a_lockable)) { if (isset($arrayinventory['WORKGROUP']) && !empty($arrayinventory['WORKGROUP'])) { $input['domain'] = Dropdown::importExternal("Domain", $arrayinventory['WORKGROUP'], $arrayinventory['ENTITY']); } } if (!empty($arrayinventory['TYPE'])) { switch ($arrayinventory['TYPE']) { case '1': case 'COMPUTER': $input['item_type'] = 'Computer'; break; case '2': case 'NETWORKING': $input['item_type'] = 'NetworkEquipment'; break; case '3': case 'PRINTER': $input['item_type'] = 'Printer'; break; } } $input['plugin_fusioninventory_agents_id'] = $_SESSION['glpi_plugin_fusioninventory_agentid']; $this->_updateSNMPInfo($arrayinventory, $input, $item); $this->_updateNetworkInfo($arrayinventory, 'PluginFusioninventoryUnmanaged', $item->getID(), 'NetworkPortEthernet', 1); break; case 'NetworkEquipment': // Write XML file if (isset($_SESSION['SOURCE_XMLDEVICE'])) { PluginFusioninventoryToolbox::writeXML($input['id'], serialize($_SESSION['SOURCE_XMLDEVICE']), 'NetworkEquipment'); } $item->update($input); $this->_updateNetworkInfo($arrayinventory, 'NetworkEquipment', $item->getID(), 'NetworkPortAggregate', 0); $pfNetworkEquipment = new PluginFusioninventoryNetworkEquipment(); $input = $this->_initSpecificInfo('networkequipments_id', $item->getID(), $pfNetworkEquipment); $this->_updateSNMPInfo($arrayinventory, $input, $pfNetworkEquipment); break; case 'Printer': // Write XML file if (isset($_SESSION['SOURCE_XMLDEVICE'])) { PluginFusioninventoryToolbox::writeXML($input['id'], serialize($_SESSION['SOURCE_XMLDEVICE']), 'Printer'); } $input['have_ethernet'] = '1'; $item->update($input); $this->_updateNetworkInfo($arrayinventory, 'Printer', $item->getID(), 'NetworkPortEthernet', 1); $pfPrinter = new PluginFusioninventoryPrinter(); $input = $this->_initSpecificInfo('printers_id', $item->getID(), $pfPrinter); $this->_updateSNMPInfo($arrayinventory, $input, $pfPrinter); break; } }
/** * After rules import device * * @param integer $items_id id of the device in GLPI DB (0 = created, other = merge) * @param varchar $itemtype itemtype of the device * * @return type */ function rulepassed($items_id, $itemtype) { PluginFusioninventoryLogger::logIfExtradebug("pluginFusioninventory-rules", "Rule passed : " . $items_id . ", " . $itemtype . "\n"); PluginFusioninventoryLogger::logIfExtradebugAndDebugMode('fusioninventorycommunication', 'Function PluginFusinvsnmpCommunicationSNMPQuery->rulepassed().'); $_SESSION["plugin_fusioninventory_entity"] = 0; PluginFusioninventoryConfig::logIfExtradebug("pluginFusioninventory-rules", "Rule passed : " . $items_id . ", " . $itemtype . "\n"); PluginFusioninventoryCommunication::addLog('Function PluginFusioninventoryCommunicationNetworkInventory->rulepassed().'); $a_inventory = $_SESSION['SOURCE_XMLDEVICE']; $errors = ''; $class = new $itemtype(); if ($items_id == "0") { $input = array(); $input['date_mod'] = date("Y-m-d H:i:s"); if ($class->getFromDB($a_inventory[$a_inventory['itemtype']]['id'])) { $input['entities_id'] = $class->fields['entities_id']; } else { $input['entities_id'] = 0; } if (!isset($_SESSION['glpiactiveentities_string'])) { $_SESSION['glpiactiveentities_string'] = "'" . $input['entities_id'] . "'"; } $_SESSION["plugin_fusioninventory_entity"] = $input['entities_id']; $items_id = $class->add($input); if (isset($_SESSION['plugin_fusioninventory_rules_id'])) { $pfRulematchedlog = new PluginFusioninventoryRulematchedlog(); $inputrulelog = array(); $inputrulelog['date'] = date('Y-m-d H:i:s'); $inputrulelog['rules_id'] = $_SESSION['plugin_fusioninventory_rules_id']; if (isset($_SESSION['plugin_fusioninventory_agents_id'])) { $inputrulelog['plugin_fusioninventory_agents_id'] = $_SESSION['plugin_fusioninventory_agents_id']; } $inputrulelog['items_id'] = $items_id; $inputrulelog['itemtype'] = $itemtype; $inputrulelog['method'] = 'snmpinventory'; $pfRulematchedlog->add($inputrulelog); $pfRulematchedlog->cleanOlddata($items_id, $itemtype); unset($_SESSION['plugin_fusioninventory_rules_id']); } } if ($itemtype == "PluginFusioninventoryUnmanaged") { $class->getFromDB($items_id); $input = array(); $input['id'] = $class->fields['id']; if (!empty($a_inventory[$a_inventory['itemtype']]['name'])) { $input['name'] = $a_inventory[$a_inventory['itemtype']]['name']; } if (!empty($a_inventory[$a_inventory['itemtype']]['serial'])) { $input['serial'] = $a_inventory[$a_inventory['itemtype']]['serial']; } if (!empty($a_inventory['itemtype'])) { $input['itemtype'] = $a_inventory['itemtype']; } // TODO : add import ports PluginFusioninventoryToolbox::writeXML($items_id, serialize($_SESSION['SOURCE_XMLDEVICE']), 'PluginFusioninventoryUnmanaged'); $class->update($input); $_SESSION['plugin_fusinvsnmp_taskjoblog']['comment'] = '[==detail==] ==updatetheitem== Update ' . PluginFusioninventoryUnmanaged::getTypeName() . ' [[PluginFusioninventoryUnmanaged::' . $items_id . ']]'; $this->addtaskjoblog(); } else { $_SESSION['plugin_fusinvsnmp_taskjoblog']['comment'] = '[==detail==] Update ' . $class->getTypeName() . ' [[' . $itemtype . '::' . $items_id . ']]'; $this->addtaskjoblog(); $errors .= $this->importDevice($itemtype, $items_id, $a_inventory); } return $errors; }