/** * Add SNMPQUERY string to XML code * *@return nothing **/ function addQuery($pxml, $task = 0) { $ptmi = new PluginFusioninventoryModelInfos(); $ptsnmpa = new PluginFusioninventorySnmpauth(); $pta = new PluginFusioninventoryAgents(); $ptap = new PluginFusioninventoryAgentsProcesses(); $ptrip = new PluginFusioninventoryRangeIP(); $ptt = new PluginFusioninventoryTask(); $agent = $pta->InfosByKey($pxml->DEVICEID); $count_range = $ptrip->Counter($agent["ID"], "query"); $count_range += $ptt->Counter($agent["ID"], "SNMPQUERY"); if ($task == "1") { $tasks = $ptt->ListTask($agent["ID"], "SNMPQUERY"); foreach ($tasks as $task_id => $taskInfos) { file_put_contents(GLPI_PLUGIN_DOC_DIR . "/fusioninventory/query.log" . rand(), $agent["ID"]); if ($tasks[$task_id]["param"] == PLUGIN_FUSIONINVENTORY_SNMP_AGENTS) { $task = "0"; } } if ($task == "1") { $agent["core_query"] = 1; $agent["threads_query"] = 1; } } // Get total number of devices to query $ranges = $ptrip->ListRange($agent["ID"], "query"); $modelslistused = array(); foreach ($ranges as $range_id => $rangeInfos) { $modelslistused = $this->addDevice($sxml_option, 'networking', $ranges[$range_id]["ifaddr_start"], $ranges[$range_id]["ifaddr_end"], $ranges[$range_id]["FK_entities"], $modelslistused, 0); $modelslistused = $this->addDevice($sxml_option, 'printer', $ranges[$range_id]["ifaddr_start"], $ranges[$range_id]["ifaddr_end"], $ranges[$range_id]["FK_entities"], $modelslistused, 0); } if ($count_range > 0 and $agent["lock"] == 0 and !empty($modelslistused) or $task == "1") { $a_input = array(); if ($_SESSION['glpi_plugin_fusioninventory_addagentprocess'] == '0') { $this->addProcessNumber($ptap->addProcess($pxml)); $_SESSION['glpi_plugin_fusioninventory_addagentprocess'] = '1'; } $a_input['query_core'] = $agent["core_query"]; $a_input['query_threads'] = $agent["threads_query"]; $ptap->updateProcess($this->sxml->PROCESSNUMBER, $a_input); $sxml_option = $this->sxml->addChild('OPTION'); $sxml_option->addChild('NAME', 'SNMPQUERY'); $sxml_param = $sxml_option->addChild('PARAM'); $sxml_param->addAttribute('CORE_QUERY', $agent["core_query"]); $sxml_param->addAttribute('THREADS_QUERY', $agent["threads_query"]); $sxml_param->addAttribute('PID', $this->sxml->PROCESSNUMBER); if ($task == "1") { foreach ($tasks as $task_id => $taskInfos) { // TODO : envoyer une plage avec juste cette ip *** switch ($tasks[$task_id]['device_type']) { case NETWORKING_TYPE: $modelslistused = $this->addDevice($sxml_option, 'networking', 0, 0, "-1", $modelslistused, 1, $tasks[$task_id]['on_device']); break; case PRINTER_TYPE: $modelslistused = $this->addDevice($sxml_option, 'printer', 0, 0, "-1", $modelslistused, 1, $tasks[$task_id]['on_device']); break; } // // // $modelslistused = $this->addDevice($sxml_option, 'networking', $ranges[$range_id]["ifaddr_start"], // $ranges[$range_id]["ifaddr_end"], $ranges[$range_id]["FK_entities"], $modelslistused); } } else { $ranges = $ptrip->ListRange($agent["ID"], "query"); $modelslistused = array(); foreach ($ranges as $range_id => $rangeInfos) { $modelslistused = $this->addDevice($sxml_option, 'networking', $ranges[$range_id]["ifaddr_start"], $ranges[$range_id]["ifaddr_end"], $ranges[$range_id]["FK_entities"], $modelslistused); $modelslistused = $this->addDevice($sxml_option, 'printer', $ranges[$range_id]["ifaddr_start"], $ranges[$range_id]["ifaddr_end"], $ranges[$range_id]["FK_entities"], $modelslistused); } } $snmpauthlist = $ptsnmpa->find(); if (count($snmpauthlist)) { foreach ($snmpauthlist as $snmpauth) { $this->addAuth($sxml_option, $snmpauth['ID']); } } $modelslist = $ptmi->find(); if (count($modelslist)) { foreach ($modelslist as $model) { if (isset($modelslistused[$model['ID']])) { $this->addModel($sxml_option, $model['ID']); } } } } }