/** * @param CommonGLPI $item * @param int $tabnum * @param int $withtemplate * @return bool */ static function displayTabContentForItem(CommonGLPI $item, $tabnum = 0, $withtemplate = 0) { if ($item->getType() == __CLASS__) { $ocs = new PluginOcsinventoryngOcsServer(); $ipdisc = new PluginOcsinventoryngIpdiscoverOcslink(); $snmp = new PluginOcsinventoryngSnmpOcslink(); switch ($tabnum) { case 0: $ocs->setupMenu($_SESSION["plugin_ocsinventoryng_ocsservers_id"]); break; case 1: $ocs->importMenu($_SESSION["plugin_ocsinventoryng_ocsservers_id"]); break; case 2: $ipdisc->ipDiscoverMenu(); break; case 3: $snmp->snmpMenu($_SESSION["plugin_ocsinventoryng_ocsservers_id"]); break; } } return true; }
https://github.com/pluginsGLPI/ocsinventoryng ------------------------------------------------------------------------- LICENSE This file is part of ocsinventoryng. ocsinventoryng is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. ocsinventoryng is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with ocsinventoryng. If not, see <http://www.gnu.org/licenses/>. -------------------------------------------------------------------------- */ include '../../../inc/includes.php'; if (isset($_POST["force_ocssnmp_resynch"])) { $item = new $_POST['itemtype'](); $item->check($_POST['items_id'], UPDATE); PluginOcsinventoryngSnmpOcslink::updateSnmp($_POST["id"], $_POST["plugin_ocsinventoryng_ocsservers_id"]); Html::back(); } else { Html::displayErrorAndDie("lost"); }
/** * @param $threads_id * @param $cfg_ocs * @param $server * @param $thread_nbr * @param $threadid * @param $fields * @param $config * * @return mixed */ function importSNMPFromOcsServer($threads_id, $cfg_ocs, $server, $thread_nbr, $threadid, $fields, $config) { global $DB; echo "\tThread #" . $threadid . ": synchronize SNMP objects from server: '" . $cfg_ocs["name"] . "'\n"; $multiThread = false; if ($threadid != -1 && $thread_nbr > 1) { $multiThread = true; } $ocsServerId = $cfg_ocs['id']; $ocsClient = PluginOcsinventoryngOcsServer::getDBocs($ocsServerId); $already_linked_query = "SELECT `glpi_plugin_ocsinventoryng_snmpocslinks`.`ocs_id`,`glpi_plugin_ocsinventoryng_snmpocslinks`.`id`\n FROM `glpi_plugin_ocsinventoryng_snmpocslinks`\n WHERE `glpi_plugin_ocsinventoryng_snmpocslinks`.`plugin_ocsinventoryng_ocsservers_id`\n = '{$ocsServerId}'"; $already_linked_result = $DB->query($already_linked_query); $already_linked_ids = array(); if ($DB->numrows($already_linked_result) > 0) { while ($data = $DB->fetch_assoc($already_linked_result)) { $already_linked_ocs_ids[] = $data['ocs_id']; // $already_linked_ids [] = $data['id']; } } $ocsResult = $ocsClient->getSnmp(array('ORDER' => 'LASTDATE', 'COMPLETE' => '0', 'FILTER' => array('IDS' => $already_linked_ocs_ids))); //Unset SNMP objects not updated by OCS foreach ($ocsResult['SNMP'] as $ID => $snmpids) { $last_update = date('Y-m-d H:m:s'); //Compute lastest synchronization date $query = "SELECT `last_update`\n FROM `glpi_plugin_ocsinventoryng_snmpocslinks`\n WHERE `ocs_id` = '{$ID}'"; if ($result = $DB->query($query)) { if ($DB->numrows($result) > 0) { if ($DB->result($result, 0, 0) != '') { $last_update = $DB->result($result, 0, 0); } } } if ($snmpids['META']['LASTDATE'] < $last_update) { if (($key = array_search($ID, $already_linked_ocs_ids)) !== false) { unset($already_linked_ocs_ids[$key]); } } } $already_linked_ids = array(); //List definitive SNMP objects to update if (count($already_linked_ocs_ids) > 0) { $query = "SELECT `glpi_plugin_ocsinventoryng_snmpocslinks`.`id`\n FROM `glpi_plugin_ocsinventoryng_snmpocslinks`\n WHERE `ocs_id` IN (" . implode(",", $already_linked_ocs_ids) . ")"; $result = $DB->query($query); if ($DB->numrows($result) > 0) { while ($data = $DB->fetch_assoc($result)) { $already_linked_ids[] = $data['id']; } } } $nb = count($already_linked_ids); echo "\tThread #{$threadid}: {$nb} object(s)\n"; $fields["total_number_machines"] += $nb; // $thread = new PluginOcsinventoryngThread(); // $notimport = new PluginOcsinventoryngNotimportedcomputer(); // $i = 0; foreach ($already_linked_ids as $ID) { /* TODO create thread & update it ? * if ($i == $config->fields["thread_log_frequency"]) { $fields["status"] = PLUGIN_OCSINVENTORYNG_STATE_RUNNING; $thread->update($fields); $i = 0; } else { $i++; }*/ echo "."; $action = PluginOcsinventoryngSnmpOcslink::updateSnmp($ID, $ocsServerId); PluginOcsinventoryngOcsServer::manageImportStatistics($fields, $action['status']); /* TODO log it ? /*switch ($action['status']) { case PluginOcsinventoryngOcsServer::SNMP_FAILED_IMPORT: $notimport->logNotImported($ocsServerId, $ID, $action); break; default: $notimport->cleanNotImported($ocsServerId, $ID); //Log detail $detail = new PluginOcsinventoryngDetail(); $detail->logProcessedComputer($ID, $ocsServerId, $action, $threadid, $threads_id); break; }*/ } return $fields; }
if (!isset($_GET['start'])) { $_GET['start'] = 0; } if (isset($_SESSION["ocs_linksnmp"])) { unset($_SESSION["ocs_linksnmp"]); } $values = $_GET; if (isset($_POST["search"])) { $values = $_POST; } $values['plugin_ocsinventoryng_ocsservers_id'] = $_SESSION["plugin_ocsinventoryng_ocsservers_id"]; //$values['change_import_mode'] = $_SESSION["change_import_mode"]; //$values['glpiactiveentities'] = $_SESSION["glpiactiveentities"]; $values['tolinked'] = 1; PluginOcsinventoryngSnmpOcslink::searchForm($values); PluginOcsinventoryngSnmpOcslink::showSnmpDeviceToAdd($values); } else { if (isset($_POST['tolink_items']) && count($_POST['tolink_items']) > 0) { $_SESSION["ocs_linksnmp_count"] = 0; foreach ($_POST['tolink_items'] as $key => $val) { if ($val) { $_SESSION["ocs_linksnmp"]["id"][] = $key; $_SESSION["ocs_linksnmp"]["items"][$key] = $_POST['tolink_items'][$key]; } $_SESSION["ocs_linksnmp_count"]++; } foreach ($_POST['tolink_itemtype'] as $key => $val) { if ($val) { $_SESSION["ocs_linksnmp"]["itemtype"][$key] = $_POST['tolink_itemtype'][$key]; } }
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with ocsinventoryng. If not, see <http://www.gnu.org/licenses/>. -------------------------------------------------------------------------- */ include '../../../inc/includes.php'; Session::checkRight("plugin_ocsinventoryng", UPDATE); Html::header('OCS Inventory NG', '', "tools", "pluginocsinventoryngmenu", "syncsnmp"); $display_list = true; if (isset($_POST["delete"]) && isset($_POST["toupdate"])) { if ($count = count($_POST["toupdate"])) { foreach ($_POST['toupdate'] as $key => $val) { if ($val == "on") { $link = new PluginOcsinventoryngSnmpOcslink(); $link->delete(array('id' => $key), 1); } } Html::redirect($_SERVER['PHP_SELF']); } } if (isset($_SESSION["ocs_updatesnmp"]['id'])) { if ($count = count($_SESSION["ocs_updatesnmp"]['id'])) { $percent = min(100, round(100 * ($_SESSION["ocs_updatesnmp_count"] - $count) / $_SESSION["ocs_updatesnmp_count"], 0)); $key = array_pop($_SESSION["ocs_updatesnmp"]['id']); $action = PluginOcsinventoryngSnmpOcslink::updateSnmp($key, $_SESSION["plugin_ocsinventoryng_ocsservers_id"]); PluginOcsinventoryngOcsServer::manageImportStatistics($_SESSION["ocs_updatesnmp"]['statistics'], $action['status'], true); PluginOcsinventoryngOcsServer::showStatistics($_SESSION["ocs_updatesnmp"]['statistics'], false, true); Html::displayProgressBar(400, $percent); Html::redirect($_SERVER['PHP_SELF']);