function run($jobstate) { $pfAgent = new PluginFusioninventoryAgent(); $pfTaskjobstate = new PluginFusioninventoryTaskjobstate(); $pfTaskjoblog = new PluginFusioninventoryTaskjoblog(); $pfConfigSecurity = new PluginFusioninventoryConfigSecurity(); $pfToolbox = new PluginFusioninventoryToolbox(); $current = $jobstate; $pfAgent->getFromDB($current->fields['plugin_fusioninventory_agents_id']); $ip = current(PluginFusioninventoryToolbox::getIPforDevice($jobstate->fields['itemtype'], $jobstate->fields['items_id'])); if ($ip == '') { $pfTaskjobstate->changeStatusFinish($jobstate->fields['id'], $jobstate->fields['items_id'], $jobstate->fields['itemtype'], 1, "Device have no ip"); } else { $sxml_option = $this->message->addChild('OPTION'); $sxml_option->addChild('NAME', 'SNMPQUERY'); $sxml_param = $sxml_option->addChild('PARAM'); $sxml_param->addAttribute('THREADS_QUERY', $pfAgent->fields["threads_networkinventory"]); $sxml_param->addAttribute('TIMEOUT', $pfAgent->fields["timeout_networkinventory"]); $sxml_param->addAttribute('PID', $current->fields['id']); $changestate = 0; $taskjobstatedatas = $jobstate->fields; $sxml_device = $sxml_option->addChild('DEVICE'); $a_extended = array('plugin_fusioninventory_configsecurities_id' => 0); if ($jobstate->fields['itemtype'] == 'Printer') { $sxml_device->addAttribute('TYPE', 'PRINTER'); $pfPrinter = new PluginFusioninventoryPrinter(); $a_extended = current($pfPrinter->find("`printers_id`='" . $jobstate->fields['items_id'] . "'", '', 1)); } else { if ($jobstate->fields['itemtype'] == 'NetworkEquipment') { $sxml_device->addAttribute('TYPE', 'NETWORKING'); $pfNetworkEquipment = new PluginFusioninventoryNetworkEquipment(); $a_extended = current($pfNetworkEquipment->find("`networkequipments_id`='" . $jobstate->fields['items_id'] . "'", '', 1)); } } $sxml_device->addAttribute('ID', $jobstate->fields['items_id']); $sxml_device->addAttribute('IP', $ip); $sxml_device->addAttribute('AUTHSNMP_ID', $a_extended['plugin_fusioninventory_configsecurities_id']); if ($changestate == '0') { $pfTaskjobstate->changeStatus($taskjobstatedatas['id'], 1); $pfTaskjoblog->addTaskjoblog($taskjobstatedatas['id'], '0', 'PluginFusioninventoryAgent', '1', $pfAgent->fields["threads_networkinventory"] . ' threads', $pfAgent->fields["timeout_networkinventory"] . ' timeout'); $changestate = $pfTaskjobstate->fields['id']; } else { $pfTaskjobstate->changeStatusFinish($taskjobstatedatas['id'], $taskjobstatedatas['items_id'], $taskjobstatedatas['itemtype'], 0, "Merged with " . $changestate); } $snmpauthlist = $pfConfigSecurity->find(); if (count($snmpauthlist)) { foreach ($snmpauthlist as $snmpauth) { $pfToolbox->addAuth($sxml_option, $snmpauth['id']); } } } return $this->message; }
/** * @test */ public function NetworkEquipmentSnmpExtension() { global $DB; $DB->connect(); $pfNetworkEquipment = new PluginFusioninventoryNetworkEquipment(); $a_networkequipment = current($pfNetworkEquipment->find("`networkequipments_id`='1'", "", 1)); unset($a_networkequipment['last_fusioninventory_update']); $a_reference = array('id' => '1', 'networkequipments_id' => '1', 'sysdescr' => 'Cisco IOS Software, C2960 Software (C2960-LANBASEK9-M), Version 12.2(50)SE4, RELEASE SOFTWARE (fc1) Technical Support: http://www.cisco.com/techsupport Copyright (c) 1986-2010 by Cisco Systems, Inc. Compiled Fri 26-Mar-10 09:14 by prod_rel_team', 'plugin_fusioninventory_configsecurities_id' => '0', 'uptime' => '157 days, 02:14:44.00', 'cpu' => '5', 'memory' => '18', 'last_PID_update' => '0', 'serialized_inventory' => NULL); $this->assertEquals($a_reference, $a_networkequipment); }
static function convertArgument($services_id, $argument) { global $DB; $pmService = new PluginMonitoringService(); $pmComponentscatalog_Host = new PluginMonitoringComponentscatalog_Host(); $pmService->getFromDB($services_id); $pmComponentscatalog_Host->getFromDB($pmService->fields['plugin_monitoring_componentscatalogs_hosts_id']); $itemtype = $pmComponentscatalog_Host->fields['itemtype']; $item = new $itemtype(); $item->getFromDB($pmComponentscatalog_Host->fields['items_id']); $argument = str_replace("[", "", $argument); $argument = str_replace("]", "", $argument); $a_arg = explode(":", $argument); $devicetype = ''; $devicedata = array(); if ($itemtype == "NetworkPort") { $itemtype2 = $item->fields['itemtype']; $item2 = new $itemtype2(); $item2->getFromDB($item->fields['items_id']); $devicetype = $itemtype2; $devicedata = $item2->fields; } else { $devicetype = $itemtype; $devicedata = $item->fields; } if ($devicetype == "NetworkEquipment") { if (class_exists("PluginFusioninventoryNetworkEquipment")) { $pfNetworkEquipment = new PluginFusioninventoryNetworkEquipment(); $a_pfNetworkEquipment = current($pfNetworkEquipment->find("`networkequipments_id`='".$devicedata['id']."'", "", 1)); switch ($a_arg[0]) { case 'OID': // Load SNMP model and get oid.portnum $query = "SELECT `glpi_plugin_fusioninventory_mappings`.`name` AS `mapping_name`, `glpi_plugin_fusioninventory_snmpmodelmibs`.* FROM `glpi_plugin_fusioninventory_snmpmodelmibs` LEFT JOIN `glpi_plugin_fusioninventory_mappings` ON `glpi_plugin_fusioninventory_snmpmodelmibs`.`plugin_fusioninventory_mappings_id`= `glpi_plugin_fusioninventory_mappings`.`id` WHERE `plugin_fusioninventory_snmpmodels_id`='".$a_pfNetworkEquipment['plugin_fusioninventory_snmpmodels_id']."' AND `is_active`='1' AND `oid_port_counter`='0' AND `glpi_plugin_fusioninventory_mappings`.`name`='".$a_arg[1]."'"; $result=$DB->query($query); while ($data=$DB->fetch_array($result)) { return Dropdown::getDropdownName('glpi_plugin_fusioninventory_snmpmodelmiboids',$data['plugin_fusioninventory_snmpmodelmiboids_id']). ".".$item->fields['logical_number']; } return ''; break; case 'SNMP': if ($a_pfNetworkEquipment['plugin_fusioninventory_configsecurities_id'] == '0') { switch ($a_arg[1]) { case 'version': return '2c'; break; case 'authentication': return 'public'; break; } } $pfConfigSecurity = new PluginFusioninventoryConfigSecurity(); $pfConfigSecurity->getFromDB($a_pfNetworkEquipment['plugin_fusioninventory_configsecurities_id']); switch ($a_arg[1]) { case 'version': if ($pfConfigSecurity->fields['snmpversion'] == '2') { $pfConfigSecurity->fields['snmpversion'] = '2c'; } return $pfConfigSecurity->fields['snmpversion']; break; case 'authentication': return $pfConfigSecurity->fields['community']; break; } break; } } } return $argument; }
/** * Display informations about networkequipment (automatic inventory) * * @param type $networkequipments_id */ static function showInfo($item) { // Manage locks pictures PluginFusioninventoryLock::showLockIcon('NetworkEquipment'); $pfNetworkEquipment = new PluginFusioninventoryNetworkEquipment(); $a_networkequipmentextend = current($pfNetworkEquipment->find("`networkequipments_id`='" . $item->getID() . "'", "", 1)); if (empty($a_networkequipmentextend)) { return; } echo '<table class="tab_glpi" width="100%">'; echo '<tr>'; echo '<th colspan="2">' . __('FusionInventory', 'fusioninventory') . '</th>'; echo '</tr>'; echo '<tr class="tab_bg_1">'; echo '<td>'; echo __('Last inventory', 'fusioninventory'); echo '</td>'; echo '<td>'; echo Html::convDateTime($a_networkequipmentextend['last_fusioninventory_update']); echo '</td>'; echo '</tr>'; if ($a_networkequipmentextend['uptime'] != '') { echo '<tr class="tab_bg_1">'; echo '<td>' . __('Uptime', 'fusioninventory') . '</td>'; echo '<td>'; $sysUpTime = $a_networkequipmentextend['uptime']; $day = 0; $hour = 0; $minute = 0; $sec = 0; $ticks = 0; if (strstr($sysUpTime, "days")) { list($day, $hour, $minute, $sec, $ticks) = sscanf($sysUpTime, "%d days, %d:%d:%d.%d"); } else { if (strstr($sysUpTime, "hours")) { $day = 0; list($hour, $minute, $sec, $ticks) = sscanf($sysUpTime, "%d hours, %d:%d.%d"); } else { if (strstr($sysUpTime, "minutes")) { $day = 0; $hour = 0; list($minute, $sec, $ticks) = sscanf($sysUpTime, "%d minutes, %d.%d"); } else { if ($sysUpTime == "0") { $day = 0; $hour = 0; $minute = 0; $sec = 0; } else { list($hour, $minute, $sec, $ticks) = sscanf($sysUpTime, "%d:%d:%d.%d"); $day = 0; } } } } echo "<b>{$day}</b> " . __('day(s)', 'fusioninventory') . " "; echo "<b>{$hour}</b> " . __('hour(s)', 'fusioninventory') . " "; echo "<b>{$minute}</b> " . __('Minute(s)', 'fusioninventory') . " "; echo " " . __('and') . " <b>{$sec}</b> " . __('sec(s)', 'fusioninventory') . " "; echo '</td>'; echo '</tr>'; } echo '</table>'; }