public function install($path, $replace = false, $mib_name = 'optional') { global $config; include_once $config['library_path'] . '/mib_parser.php'; $mp = new MibParser(); $mp->add_mib($path, $mib_name); $mp->generate(); if (isset($mp->mib) && isset($mp->oids) && $mp->mib) { /* check if this mib has already been installed */ $existing = db_fetch_cell("SELECT 1 FROM snmpagent_mibs WHERE `name` = '" . $mp->mib . "'"); if ($existing) { if ($replace == false) { unset($mp->oids); unset($mp->mib); return false; } else { $this->uninstall(); } } db_execute("INSERT INTO snmpagent_mibs SET `id` = 0, `name` = '" . $mp->mib . "', `file` = '" . $path . "'"); foreach ($mp->oids as $object_name => $object_params) { if ($object_params["otype"] != "TEXTUAL-CONVENTION") { db_execute_prepared("INSERT INTO `snmpagent_cache` (`oid`, `name`, `mib`, `type`, `otype`, `kind`, `max-access`, `description`) VALUES ('" . $object_params["oid"] . "','" . $object_name . "','" . $object_params["mib"] . "','" . $object_params["syntax"] . "','" . $object_params["otype"] . "','" . $object_params["kind"] . "','" . $object_params["max-access"] . "','" . nl2br($object_params["description"]) . "')"); if ($object_params["otype"] == "NOTIFICATION-TYPE") { foreach ($object_params["objects"] as $notication_object_index => $notication_object) { db_execute("INSERT INTO `snmpagent_cache_notifications` (`name`, `mib`, `attribute`, `sequence_id`) VALUES ('" . $object_name . "','" . $object_params["mib"] . "','" . $notication_object . "','" . $notication_object_index . "')"); } } } else { db_execute_prepared("INSERT INTO `snmpagent_cache_textual_conventions` (`name`, `mib`, `type`, `description`) VALUES ('" . $object_name . "','" . $object_params["mib"] . "','" . $object_params["syntax"] . "','" . nl2br($object_params["description"]) . "')"); } } unset($mp->oids); unset($mp->mib); } else { return false; } }