Пример #1
0
function plugin_init_fusioninventory()
{
    global $PLUGIN_HOOKS, $CFG_GLPI;
    $PLUGIN_HOOKS['csrf_compliant']['fusioninventory'] = TRUE;
    $Plugin = new Plugin();
    $moduleId = 0;
    if (isset($_SESSION['glpi_use_mode'])) {
        $debug_mode = $_SESSION['glpi_use_mode'] == Session::DEBUG_MODE;
    } else {
        $debug_mode = false;
    }
    if ($Plugin->isActivated('fusioninventory')) {
        // check if plugin is active
        // Register classes into GLPI plugin factory
        Plugin::registerClass('PluginFusioninventoryAgent', array('addtabon' => array('Computer', 'Printer', 'NetworkEquipment', 'PluginFusioninventoryCredentialIp')));
        Plugin::registerClass('PluginFusioninventoryAgentmodule');
        Plugin::registerClass('PluginFusioninventoryConfig');
        Plugin::registerClass('PluginFusioninventoryTask', array('addtabon' => array('Computer', 'Printer', 'NetworkEquipment', 'PluginFusioninventoryCredentialIp')));
        Plugin::registerClass('PluginFusioninventoryTaskjob', array('addtabon' => array('PluginFusioninventoryTask')));
        Plugin::registerClass('PluginFusioninventoryTaskjobstate', array('addtabon' => array('PluginFusioninventoryTask')));
        Plugin::registerClass('PluginFusioninventoryUnmanaged');
        Plugin::registerClass('PluginFusioninventoryModule');
        Plugin::registerClass('PluginFusioninventoryProfile', array('addtabon' => array('Profile')));
        Plugin::registerClass('PluginFusioninventoryEntity', array('addtabon' => array('Entity')));
        Plugin::registerClass('PluginFusioninventorySetup');
        Plugin::registerClass('PluginFusioninventoryIPRange');
        Plugin::registerClass('PluginFusioninventoryIPRange_ConfigSecurity', array('addtabon' => 'PluginFusioninventoryIPRange'));
        Plugin::registerClass('PluginFusioninventoryCredential');
        Plugin::registerClass('PluginFusioninventoryTimeslot');
        Plugin::registerClass('PluginFusioninventoryLock', array('addtabon' => array('Computer', 'Printer', 'NetworkEquipment')));
        Plugin::registerClass('PluginFusioninventoryInventoryComputerAntivirus', array('addtabon' => array('Computer')));
        Plugin::registerClass('PluginFusioninventoryInventoryComputerComputer', array('addtabon' => array('Computer')));
        Plugin::registerClass('PluginFusioninventoryInventoryComputerInventory');
        Plugin::registerClass('PluginFusioninventoryInventoryComputerStorage', array('addtabon' => array('Computer')));
        Plugin::registerClass('PluginFusioninventoryCollect');
        Plugin::registerClass('PluginFusioninventoryCollect_Registry', array('addtabon' => array('PluginFusioninventoryCollect')));
        Plugin::registerClass('PluginFusioninventoryCollect_Registry_Content', array('addtabon' => array('PluginFusioninventoryCollect', 'Computer')));
        Plugin::registerClass('PluginFusioninventoryCollect_Wmi', array('addtabon' => array('PluginFusioninventoryCollect')));
        Plugin::registerClass('PluginFusioninventoryCollect_Wmi_Content', array('addtabon' => array('PluginFusioninventoryCollect', 'Computer')));
        Plugin::registerClass('PluginFusioninventoryCollect_File', array('addtabon' => array('PluginFusioninventoryCollect')));
        Plugin::registerClass('PluginFusioninventoryCollect_File_Content', array('addtabon' => array('PluginFusioninventoryCollect', 'Computer')));
        Plugin::registerClass('PluginFusioninventoryComputerLicenseInfo', array('addtabon' => array('Computer')));
        //Classes for rulesengine
        Plugin::registerClass('PluginFusioninventoryInventoryRuleLocation');
        Plugin::registerClass('PluginFusioninventoryInventoryRuleLocationCollection', array('rulecollections_types' => TRUE));
        Plugin::registerClass('PluginFusioninventoryInventoryRuleEntity');
        Plugin::registerClass('PluginFusioninventoryInventoryRuleEntityCollection', array('rulecollections_types' => TRUE));
        Plugin::registerClass('PluginFusioninventoryRulematchedlog', array('addtabon' => array('Computer', 'PluginFusioninventoryAgent', 'PluginFusioninventoryUnmanaged', 'Printer', 'NetworkEquipment')));
        //Classes for rulesengine
        Plugin::registerClass('PluginFusioninventoryInventoryRuleImport');
        Plugin::registerClass('PluginFusioninventoryInventoryRuleImportCollection', array('rulecollections_types' => TRUE));
        Plugin::registerClass('PluginFusioninventoryConstructDevice');
        //Computer arch dictionnary
        Plugin::registerClass('PluginFusioninventoryRuleDictionnaryComputerArch');
        Plugin::registerClass('PluginFusioninventoryRuleDictionnaryComputerArchCollection', array('rulecollections_types' => TRUE));
        array_push($CFG_GLPI["dictionnary_types"], 'PluginFusioninventoryRuleDictionnaryComputerArchCollection');
        // Networkinventory and networkdiscovery
        Plugin::registerClass('PluginFusioninventorySnmpmodel');
        Plugin::registerClass('PluginFusioninventoryNetworkEquipment', array('addtabon' => array('NetworkEquipment')));
        Plugin::registerClass('PluginFusioninventoryPrinter', array('addtabon' => array('Printer')));
        Plugin::registerClass('PluginFusioninventoryPrinterCartridge');
        Plugin::registerClass('PluginFusioninventoryConfigSecurity');
        Plugin::registerClass('PluginFusioninventoryNetworkPortLog', array('addtabon' => array('NetworkPort')));
        Plugin::registerClass('PluginFusinvsnmpAgentconfig');
        Plugin::registerClass('PluginFusioninventoryNetworkPort', array('classname' => 'glpi_networkports'));
        Plugin::registerClass('PluginFusioninventoryStateDiscovery');
        Plugin::registerClass('PluginFusioninventoryPrinterLogReport');
        Plugin::registerClass('PluginFusioninventorySnmpmodelConstructdevice_User', array('addtabon' => array('User')));
        Plugin::registerClass('PluginFusioninventoryDeployGroup');
        Plugin::registerClass('PluginFusioninventoryDeployGroup_Staticdata', array('addtabon' => array('PluginFusioninventoryDeployGroup')));
        Plugin::registerClass('PluginFusioninventoryDeployGroup_Dynamicdata', array('addtabon' => array('PluginFusioninventoryDeployGroup')));
        $CFG_GLPI['glpitablesitemtype']["PluginFusioninventoryPrinterLogReport"] = "glpi_plugin_fusioninventory_printers";
        $CFG_GLPI['glpitablesitemtype']["PluginFusioninventoryComputer"] = "glpi_computers";
        // ##### 3. get informations of the plugin #####
        $Plugin->getFromDBbyDir('fusioninventory');
        $moduleId = $Plugin->fields['id'];
        // Load config
        PluginFusioninventoryConfig::loadCache();
        // ##### 5. Set in session XMLtags of methods #####
        $_SESSION['glpi_plugin_fusioninventory']['xmltags']['WAKEONLAN'] = '';
        $_SESSION['glpi_plugin_fusioninventory']['xmltags']['INVENTORY'] = 'PluginFusioninventoryInventoryComputerInventory';
        $_SESSION['glpi_plugin_fusioninventory']['xmltags']['NETWORKDISCOVERY'] = 'PluginFusioninventoryCommunicationNetworkDiscovery';
        $_SESSION['glpi_plugin_fusioninventory']['xmltags']['NETWORKINVENTORY'] = 'PluginFusioninventoryCommunicationNetworkInventory';
        $PLUGIN_HOOKS['import_item']['fusioninventory'] = array('Computer' => array('Plugin'));
        $CFG_GLPI["specif_entities_tables"][] = 'glpi_plugin_fusioninventory_ipranges';
        $CFG_GLPI["networkport_types"][] = 'PluginFusioninventoryUnmanaged';
        /**
         * Load the relevant javascript/css files only on pages that need them.
         */
        $PLUGIN_HOOKS['add_javascript']['fusioninventory'] = array();
        $PLUGIN_HOOKS['add_css']['fusioninventory'] = array();
        if (strpos($_SERVER['SCRIPT_FILENAME'], "plugins/fusioninventory") != false) {
            $PLUGIN_HOOKS['add_css']['fusioninventory'][] = "css/views.css";
            $PLUGIN_HOOKS['add_css']['fusioninventory'][] = "css/deploy.css";
            array_push($PLUGIN_HOOKS['add_javascript']['fusioninventory'], "lib/d3-3.4.3/d3" . ($debug_mode ? "" : ".min") . ".js", "lib/nvd3/nv.d3" . ($debug_mode ? "" : ".min") . ".js", "lib/expanding/expanding" . ($debug_mode ? "" : ".min") . ".js");
        }
        if (script_endswith("timeslot.form.php")) {
            $PLUGIN_HOOKS['add_javascript']['fusioninventory'][] = "lib/timeslot" . ($debug_mode ? "" : ".min") . ".js";
        }
        if (script_endswith("deploypackage.form.php")) {
            $PLUGIN_HOOKS['add_css']['fusioninventory'][] = "lib/extjs/resources/css/ext-all.css";
            array_push($PLUGIN_HOOKS['add_javascript']['fusioninventory'], "lib/extjs/adapter/ext/ext-base" . ($debug_mode ? "-debug" : "") . ".js", "lib/extjs/ext-all" . ($debug_mode ? "-debug" : "") . ".js", "lib/REDIPS_drag/redips-drag" . ($debug_mode ? "-source" : "-min") . ".js", "lib/REDIPS_drag/drag_table_rows.js", "lib/plusbutton" . ($debug_mode ? "" : ".min") . ".js", "lib/deploy_editsubtype" . ($debug_mode ? "" : ".min") . ".js");
        }
        if (script_endswith("task.form.php") || script_endswith("taskjob.php") || script_endswith("iprange.form.php")) {
            array_push($PLUGIN_HOOKS['add_javascript']['fusioninventory'], "lib/lazy.js-0.4.0/lazy" . ($debug_mode ? "" : ".min") . ".js", "lib/mustache.js-2.0.0/mustache" . ($debug_mode ? "" : ".min") . ".js", "js/taskjobs" . ($debug_mode ? "" : ".min") . ".js");
        }
        if (script_endswith("menu.php")) {
            $PLUGIN_HOOKS['add_javascript']['fusioninventory'][] = "js/stats" . ($debug_mode ? "" : ".min") . ".js";
        }
        if (Session::haveRight('plugin_fusioninventory_configuration', READ) || Session::haveRight('profile', UPDATE)) {
            // Config page
            $PLUGIN_HOOKS['config_page']['fusioninventory'] = 'front/config.form.php' . '?itemtype=pluginfusioninventoryconfig&glpi_tab=1';
        }
        $PLUGIN_HOOKS['autoinventory_information']['fusioninventory'] = array('Computer' => array('PluginFusioninventoryInventoryComputerComputer', 'showInfo'), 'NetworkEquipment' => array('PluginFusioninventoryNetworkEquipment', 'showInfo'), 'Printer' => array('PluginFusioninventoryPrinter', 'showInfo'));
        $PLUGIN_HOOKS['use_massive_action']['fusioninventory'] = 1;
        $PLUGIN_HOOKS['item_add']['fusioninventory'] = array('NetworkPort_NetworkPort' => 'plugin_item_add_fusioninventory', 'NetworkPort' => 'plugin_item_add_fusioninventory');
        $PLUGIN_HOOKS['pre_item_update']['fusioninventory'] = array('Plugin' => 'plugin_pre_item_update_fusioninventory');
        $PLUGIN_HOOKS['item_update']['fusioninventory'] = array('Computer' => 'plugin_item_update_fusioninventory', 'NetworkEquipment' => 'plugin_item_update_fusioninventory', 'Printer' => 'plugin_item_update_fusioninventory', 'Monitor' => 'plugin_item_update_fusioninventory', 'Peripheral' => 'plugin_item_update_fusioninventory', 'Phone' => 'plugin_item_update_fusioninventory', 'NetworkPort' => 'plugin_item_update_fusioninventory', 'PluginFusioninventoryInventoryComputerAntivirus' => array('PluginFusioninventoryInventoryComputerAntivirus', 'addhistory'), 'PluginFusioninventoryLock' => array('PluginFusioninventoryLock', 'deleteLock'));
        $PLUGIN_HOOKS['pre_item_purge']['fusioninventory'] = array('Computer' => 'plugin_pre_item_purge_fusioninventory', 'NetworkPort_NetworkPort' => 'plugin_pre_item_purge_fusioninventory', 'PluginFusioninventoryLock' => array('PluginFusioninventoryLock', 'deleteLock'));
        $p = array('NetworkPort_NetworkPort' => 'plugin_item_purge_fusioninventory', 'PluginFusioninventoryTask' => array('PluginFusioninventoryTask', 'purgeTask'), 'PluginFusioninventoryTaskjob' => array('PluginFusioninventoryTaskjob', 'purgeTaskjob'), 'PluginFusioninventoryUnmanaged' => array('PluginFusioninventoryUnmanaged', 'purgeUnmanaged'), 'NetworkEquipment' => 'plugin_item_purge_fusinvsnmp', 'Printer' => 'plugin_item_purge_fusinvsnmp', 'PluginFusioninventoryUnmanaged' => 'plugin_item_purge_fusinvsnmp');
        $PLUGIN_HOOKS['item_purge']['fusioninventory'] = $p;
        $PLUGIN_HOOKS['item_transfer']['fusioninventory'] = 'plugin_item_transfer_fusioninventory';
        if (Session::haveRight('plugin_fusioninventory_unmanaged', READ)) {
            $PLUGIN_HOOKS["menu_toadd"]['fusioninventory']['assets'] = 'PluginFusioninventoryUnmanaged';
        }
        if (Session::haveRight('plugin_fusioninventory_menu', READ)) {
            $PLUGIN_HOOKS["menu_toadd"]['fusioninventory']['plugins'] = 'PluginFusioninventoryMenu';
        }
        if (isset($_SESSION["glpiname"])) {
            $report_list = array();
            if (Session::haveRight('plugin_fusioninventory_reportprinter', READ)) {
                $report_list["front/printerlogreport.php"] = __('Printed page counter', 'fusioninventory');
            }
            if (Session::haveRight('plugin_fusioninventory_reportnetworkequipment', READ)) {
                $report_list["report/switch_ports.history.php"] = __('Switchs ports history', 'fusioninventory');
                $report_list["report/ports_date_connections.php"] = __('Unused switchs ports', 'fusioninventory');
                $report_list["report/not_queried_recently.php"] = __('Number of days since last inventory', 'fusioninventory');
            }
            if (Session::haveRight('computer', READ)) {
                $report_list["report/computer_last_inventory.php"] = __('Computers not inventoried since xx days', 'fusioninventory');
            }
            $PLUGIN_HOOKS['reports']['fusioninventory'] = $report_list;
            /*
             * Deploy submenu entries
             */
            if (Session::haveRight('plugin_fusioninventory_configuration', READ)) {
                // Config page
                $PLUGIN_HOOKS['submenu_entry']['fusioninventory']['config'] = 'front/config.form.php';
            }
            $PLUGIN_HOOKS['webservices']['fusioninventory'] = 'plugin_fusioninventory_registerMethods';
            // Hack for NetworkEquipment display ports
            if (strstr($_SERVER['PHP_SELF'], '/ajax/common.tabs.php')) {
                if (isset($_GET['_target']) && strstr($_GET['_target'], '/front/networkequipment.form.php') && $_GET['_itemtype'] == 'NetworkEquipment') {
                    if ($_GET['_glpi_tab'] == 'NetworkPort$1') {
                        $_GET['_glpi_tab'] = 'PluginFusioninventoryNetworkEquipment$1';
                    } else {
                        if ($_GET['_glpi_tab'] == 'PluginFusioninventoryNetworkEquipment$1') {
                            $_GET['displaysnmpinfo'] = 1;
                        }
                    }
                }
            }
            // Load nvd3 for printerpage counter graph
            if (strstr($_SERVER['PHP_SELF'], '/front/printer.form.php') || strstr($_SERVER['PHP_SELF'], 'fusioninventory/front/menu.php')) {
                // Add graph javascript
                $PLUGIN_HOOKS['add_javascript']['fusioninventory'] = array_merge($PLUGIN_HOOKS['add_javascript']['fusioninventory'], array("lib/nvd3/lib/d3.v2.min.js", "lib/nvd3/nv.d3.min.js", "lib/nvd3/src/tooltip.js", "lib/nvd3/src/utils.js", "lib/nvd3/src/models/legend.js", "lib/nvd3/src/models/axis.js", "lib/nvd3/src/models/scatter.js", "lib/nvd3/src/models/line.js", "lib/nvd3/src/models/multiBar.js", "lib/nvd3/src/models/multiBarChart.js", "lib/nvd3/src/models/lineChart.js"));
                // Add graph css
                $PLUGIN_HOOKS['add_css']['fusioninventory'] = array_merge($PLUGIN_HOOKS['add_css']['fusioninventory'], array("lib/nvd3/src/nv.d3.css"));
            }
        }
    } else {
        // plugin not active, need $moduleId for uninstall check
        include_once GLPI_ROOT . '/plugins/fusioninventory/inc/module.class.php';
        $moduleId = PluginFusioninventoryModule::getModuleId('fusioninventory');
    }
    // Check for uninstall
    if (isset($_GET['id']) && $_GET['id'] == $moduleId && (isset($_GET['action']) && $_GET['action'] == 'uninstall') && strstr($_SERVER['HTTP_REFERER'], "front/plugin.php")) {
        if (PluginFusioninventoryModule::getAll(TRUE)) {
            Session::addMessageAfterRedirect(__('Other FusionInventory plugins (fusinv...) must be uninstalled before removing the FusionInventory plugin'));
            Html::redirect($CFG_GLPI["root_doc"] . "/front/plugin.php");
            exit;
        }
    }
    // Add unmanaged devices in list of devices with networport
    $CFG_GLPI["netport_types"][] = "PluginFusioninventoryUnmanaged";
}
Пример #2
0
function plugin_pre_item_update_fusioninventory($parm)
{
    if ($parm->fields['directory'] == 'fusioninventory') {
        $plugin = new Plugin();
        $a_plugins = PluginFusioninventoryModule::getAll();
        foreach ($a_plugins as $datas) {
            $plugin->unactivate($datas['id']);
        }
    }
}
 static function getForItemtype($itemtype)
 {
     $itemtypes = array();
     foreach (PluginFusioninventoryModule::getAll() as $data) {
         $class = PluginFusioninventoryStaticmisc::getStaticmiscClass($data['directory']);
         if (is_callable(array($class, 'credential_types'))) {
             foreach (call_user_func(array($class, 'credential_types')) as $credential) {
                 if (in_array($itemtype, $credential['targets'])) {
                     $itemtypes[$credential['itemtype']] = $credential['name'];
                 }
             }
         }
     }
     return $itemtypes;
 }
 /**
  * Get all methods of this plugin
  *
  * @return array ('module'=>'value', 'method'=>'value')
  *   module value name of plugin
  *   method value name of method
  *
  **/
 static function getmethods()
 {
     $a_methods = call_user_func(array('PluginFusioninventoryStaticmisc', 'task_methods'));
     $a_modules = PluginFusioninventoryModule::getAll();
     foreach ($a_modules as $data) {
         $class = $class = PluginFusioninventoryStaticmisc::getStaticmiscClass($data['directory']);
         if (is_callable(array($class, 'task_methods'))) {
             $a_methods = array_merge($a_methods, call_user_func(array($class, 'task_methods')));
         }
     }
     return $a_methods;
 }