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);
    }
Ejemplo n.º 3
0
   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>';
 }