mise à jour ansible glpi
This commit is contained in:
360
Mission4/roles/glpi/files/fusioninventory/install/install.php
Normal file
360
Mission4/roles/glpi/files/fusioninventory/install/install.php
Normal file
@@ -0,0 +1,360 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* FusionInventory
|
||||
*
|
||||
* Copyright (C) 2010-2016 by the FusionInventory Development Team.
|
||||
*
|
||||
* http://www.fusioninventory.org/
|
||||
* https://github.com/fusioninventory/fusioninventory-for-glpi
|
||||
* http://forge.fusioninventory.org/
|
||||
*
|
||||
* ------------------------------------------------------------------------
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This file is part of FusionInventory project.
|
||||
*
|
||||
* FusionInventory is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* FusionInventory 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 Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with FusionInventory. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* ------------------------------------------------------------------------
|
||||
*
|
||||
* This file is used to manage the install of the plugin.
|
||||
*
|
||||
* ------------------------------------------------------------------------
|
||||
*
|
||||
* @package FusionInventory
|
||||
* @author David Durieux
|
||||
* @copyright Copyright (c) 2010-2016 FusionInventory team
|
||||
* @license AGPL License 3.0 or (at your option) any later version
|
||||
* http://www.gnu.org/licenses/agpl-3.0-standalone.html
|
||||
* @link http://www.fusioninventory.org/
|
||||
* @link https://github.com/fusioninventory/fusioninventory-for-glpi
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This function manage the installation of the plugin.
|
||||
*
|
||||
* @global object $DB
|
||||
* @param string $version
|
||||
* @param string $migrationname class name related to Migration class of GLPI
|
||||
*/
|
||||
function pluginFusioninventoryInstall($version, $migrationname = 'Migration') {
|
||||
global $DB;
|
||||
|
||||
ini_set("memory_limit", "-1");
|
||||
ini_set("max_execution_time", "0");
|
||||
|
||||
$migration = new $migrationname($version);
|
||||
|
||||
/*
|
||||
* Load classes
|
||||
*/
|
||||
require_once(PLUGIN_FUSIONINVENTORY_DIR . '/inc/commonview.class.php');
|
||||
require_once(PLUGIN_FUSIONINVENTORY_DIR . '/inc/taskjobview.class.php');
|
||||
require_once(PLUGIN_FUSIONINVENTORY_DIR . '/inc/taskview.class.php');
|
||||
require_once(PLUGIN_FUSIONINVENTORY_DIR . '/inc/deploypackageitem.class.php');
|
||||
require_once(PLUGIN_FUSIONINVENTORY_DIR . '/inc/item.class.php');
|
||||
require_once(PLUGIN_FUSIONINVENTORY_DIR . '/inc/collectcommon.class.php');
|
||||
require_once(PLUGIN_FUSIONINVENTORY_DIR . '/inc/collectcontentcommon.class.php');
|
||||
foreach (glob(PLUGIN_FUSIONINVENTORY_DIR.'/inc/*.php') as $file) {
|
||||
require_once($file);
|
||||
}
|
||||
|
||||
$migration->displayMessage("Installation of plugin FusionInventory");
|
||||
|
||||
// Get informations of plugin
|
||||
|
||||
/*
|
||||
* Clean if Fusion / Tracker has been installed and uninstalled (not clean correctly)
|
||||
*/
|
||||
$migration->displayMessage("Clean data from old installation of the plugin");
|
||||
|
||||
$DB->delete(
|
||||
'glpi_displaypreferences', [
|
||||
'itemtype' => [
|
||||
'5150',
|
||||
'5151',
|
||||
'5152',
|
||||
'5153',
|
||||
'5156',
|
||||
'5157',
|
||||
'5158',
|
||||
'5159',
|
||||
'5161',
|
||||
'5165',
|
||||
'5166',
|
||||
'5167',
|
||||
'5168',
|
||||
]
|
||||
]
|
||||
);
|
||||
|
||||
$DB->delete(
|
||||
'glpi_displaypreferences', [
|
||||
'itemtype' => ['LIKE', 'PluginFusioninventory%']
|
||||
]
|
||||
);
|
||||
$DB->delete(
|
||||
'glpi_displaypreferences', [
|
||||
'itemtype' => ['LIKE', 'PluginFusinvinventory%']
|
||||
]
|
||||
);
|
||||
$DB->delete(
|
||||
'glpi_displaypreferences', [
|
||||
'itemtype' => ['LIKE', 'PluginFusinvsnmp%']
|
||||
]
|
||||
);
|
||||
|
||||
// Purge network ports have itemtype tp 5153
|
||||
$networkPort = new NetworkPort();
|
||||
$iterator = $DB->request([
|
||||
'FROM' => 'glpi_networkports',
|
||||
'WHERE' => ['itemtype' => '5153']
|
||||
]);
|
||||
while ($data = $iterator->next()) {
|
||||
$networkPort->delete(['id'=>$data['id']], 1);
|
||||
}
|
||||
|
||||
/*
|
||||
* Remove old rules
|
||||
*/
|
||||
$migration->displayMessage("Clean rules from old installation of the plugin");
|
||||
$Rule = new Rule();
|
||||
$a_rules = $Rule->find(['sub_type' => 'PluginFusioninventoryInventoryRuleImport']);
|
||||
foreach ($a_rules as $data) {
|
||||
$Rule->delete($data);
|
||||
}
|
||||
$a_rules = $Rule->find(['sub_type' => 'PluginFusinvinventoryRuleEntity']);
|
||||
foreach ($a_rules as $data) {
|
||||
$Rule->delete($data);
|
||||
}
|
||||
|
||||
$a_rules = $Rule->find(['sub_type' => 'PluginFusinvinventoryRuleLocation']);
|
||||
foreach ($a_rules as $data) {
|
||||
$Rule->delete($data);
|
||||
}
|
||||
|
||||
/*
|
||||
* Create DB structure
|
||||
*/
|
||||
$migration->displayMessage("Creation tables in database");
|
||||
$DB_file = PLUGIN_FUSIONINVENTORY_DIR ."/install/mysql/plugin_fusioninventory-empty.sql";
|
||||
if (!$DB->runFile($DB_file)) {
|
||||
$migration->displayMessage("Error on creation tables in database");
|
||||
}
|
||||
if (!$DB->runFile(PLUGIN_FUSIONINVENTORY_DIR ."/install/mysql/usbid.sql")) {
|
||||
$migration->displayMessage("Error on creation table usbid in database");
|
||||
}
|
||||
if (!$DB->runFile(PLUGIN_FUSIONINVENTORY_DIR ."/install/mysql/pciid.sql")) {
|
||||
$migration->displayMessage("Error on creation table pciid in database");
|
||||
}
|
||||
if (!$DB->runFile(PLUGIN_FUSIONINVENTORY_DIR ."/install/mysql/oui.sql")) {
|
||||
$migration->displayMessage("Error on creation table oui in database");
|
||||
}
|
||||
|
||||
/*
|
||||
* Creation of folders
|
||||
*/
|
||||
$migration->displayMessage("Creation of folders");
|
||||
if (!is_dir(GLPI_PLUGIN_DOC_DIR.'/fusioninventory')) {
|
||||
mkdir(GLPI_PLUGIN_DOC_DIR.'/fusioninventory');
|
||||
}
|
||||
if (!is_dir(GLPI_PLUGIN_DOC_DIR.'/fusioninventory/tmp')) {
|
||||
mkdir(GLPI_PLUGIN_DOC_DIR.'/fusioninventory/tmp');
|
||||
}
|
||||
if (!is_dir(GLPI_PLUGIN_DOC_DIR.'/fusioninventory/xml')) {
|
||||
mkdir(GLPI_PLUGIN_DOC_DIR.'/fusioninventory/xml');
|
||||
}
|
||||
if (!is_dir(GLPI_PLUGIN_DOC_DIR.'/fusioninventory/xml/computer')) {
|
||||
mkdir(GLPI_PLUGIN_DOC_DIR.'/fusioninventory/xml/computer');
|
||||
}
|
||||
if (!is_dir(GLPI_PLUGIN_DOC_DIR.'/fusioninventory/xml/printer')) {
|
||||
mkdir(GLPI_PLUGIN_DOC_DIR.'/fusioninventory/xml/printer');
|
||||
}
|
||||
if (!is_dir(GLPI_PLUGIN_DOC_DIR.'/fusioninventory/xml/networkequipment')) {
|
||||
mkdir(GLPI_PLUGIN_DOC_DIR.'/fusioninventory/xml/networkequipment');
|
||||
}
|
||||
if (!is_dir(GLPI_PLUGIN_DOC_DIR.'/fusioninventory/upload')) {
|
||||
mkdir(GLPI_PLUGIN_DOC_DIR.'/fusioninventory/upload');
|
||||
}
|
||||
|
||||
/*
|
||||
* Deploy folders
|
||||
*/
|
||||
if (!is_dir(GLPI_PLUGIN_DOC_DIR.'/fusioninventory/files')) {
|
||||
mkdir(GLPI_PLUGIN_DOC_DIR.'/fusioninventory/files');
|
||||
}
|
||||
if (!is_dir(GLPI_PLUGIN_DOC_DIR.'/fusioninventory/files/repository')) {
|
||||
mkdir(GLPI_PLUGIN_DOC_DIR.'/fusioninventory/files/repository');
|
||||
}
|
||||
if (!is_dir(GLPI_PLUGIN_DOC_DIR.'/fusioninventory/files/manifests')) {
|
||||
mkdir(GLPI_PLUGIN_DOC_DIR.'/fusioninventory/files/manifests');
|
||||
}
|
||||
if (!is_dir(GLPI_PLUGIN_DOC_DIR.'/fusioninventory/files/import')) {
|
||||
mkdir(GLPI_PLUGIN_DOC_DIR.'/fusioninventory/files/import');
|
||||
}
|
||||
if (!is_dir(GLPI_PLUGIN_DOC_DIR.'/fusioninventory/files/export')) {
|
||||
mkdir(GLPI_PLUGIN_DOC_DIR.'/fusioninventory/files/export');
|
||||
}
|
||||
|
||||
/*
|
||||
* Manage profiles
|
||||
*/
|
||||
$migration->displayMessage("Initialize profiles");
|
||||
PluginFusioninventoryProfile::initProfile();
|
||||
|
||||
/*
|
||||
* bug of purge network port when purge unmanaged devices, so we clean
|
||||
*/
|
||||
$sql = "SELECT `glpi_networkports`.`id` as nid FROM `glpi_networkports`
|
||||
LEFT JOIN `glpi_plugin_fusioninventory_unmanageds`
|
||||
ON `glpi_plugin_fusioninventory_unmanageds`.`id` = `glpi_networkports`.`items_id`
|
||||
WHERE `itemtype`='PluginFusioninventoryUnmanaged'
|
||||
AND `glpi_plugin_fusioninventory_unmanageds`.`id` IS NULL ";
|
||||
$result=$DB->query($sql);
|
||||
while ($data=$DB->fetchArray($result)) {
|
||||
$networkPort->delete(['id'=>$data['nid']], 1);
|
||||
}
|
||||
|
||||
/*
|
||||
* Add config
|
||||
*/
|
||||
$migration->displayMessage("Initialize configuration");
|
||||
$pfConfig = new PluginFusioninventoryConfig();
|
||||
$pfConfig->initConfigModule();
|
||||
|
||||
$configLogField = new PluginFusioninventoryConfigLogField();
|
||||
$configLogField->initConfig();
|
||||
|
||||
/*
|
||||
* Register Agent TASKS
|
||||
*/
|
||||
$migration->displayMessage("Initialize agent TASKS");
|
||||
$pfAgentmodule = new PluginFusioninventoryAgentmodule();
|
||||
$input = [];
|
||||
$input['modulename'] = "WAKEONLAN";
|
||||
$input['is_active'] = 0;
|
||||
$input['exceptions'] = exportArrayToDB([]);
|
||||
$pfAgentmodule->add($input);
|
||||
|
||||
$input = [];
|
||||
$input['modulename'] = "INVENTORY";
|
||||
$input['is_active'] = 1;
|
||||
$input['exceptions'] = exportArrayToDB([]);
|
||||
$pfAgentmodule->add($input);
|
||||
|
||||
$input = [];
|
||||
$input['modulename'] = "InventoryComputerESX";
|
||||
$input['is_active'] = 0;
|
||||
$input['exceptions'] = exportArrayToDB([]);
|
||||
$pfAgentmodule->add($input);
|
||||
|
||||
$input = [];
|
||||
$input['modulename'] = "NETWORKINVENTORY";
|
||||
$input['is_active'] = 0;
|
||||
$input['exceptions'] = exportArrayToDB([]);
|
||||
$pfAgentmodule->add($input);
|
||||
|
||||
$input = [];
|
||||
$input['modulename'] = "NETWORKDISCOVERY";
|
||||
$input['is_active'] = 0;
|
||||
$input['exceptions'] = exportArrayToDB([]);
|
||||
$pfAgentmodule->add($input);
|
||||
|
||||
$input = [];
|
||||
$input['modulename'] = "DEPLOY";
|
||||
$input['is_active'] = 1;
|
||||
$input['exceptions'] = exportArrayToDB([]);
|
||||
$pfAgentmodule->add($input);
|
||||
|
||||
$input = [];
|
||||
$input['modulename'] = "Collect";
|
||||
$input['is_active'] = 1;
|
||||
$input['exceptions'] = exportArrayToDB([]);
|
||||
$pfAgentmodule->add($input);
|
||||
|
||||
/*
|
||||
* Add cron task
|
||||
*/
|
||||
$migration->displayMessage("Initialize cron task");
|
||||
CronTask::Register('PluginFusioninventoryTask', 'taskscheduler', '60',
|
||||
['mode' => 2, 'allowmode' => 3, 'logs_lifetime'=> 30]);
|
||||
CronTask::Register('PluginFusioninventoryTaskjobstate', 'cleantaskjob', (3600 * 24),
|
||||
['mode' => 2, 'allowmode' => 3, 'logs_lifetime' => 30]);
|
||||
CronTask::Register('PluginFusioninventoryNetworkPortLog', 'cleannetworkportlogs', (3600 * 24),
|
||||
['mode'=>2, 'allowmode'=>3, 'logs_lifetime'=>30]);
|
||||
CronTask::Register('PluginFusioninventoryAgent', 'cleanoldagents', (3600 * 24),
|
||||
['mode' => 2, 'allowmode' => 3, 'logs_lifetime' => 30,
|
||||
'comment'=> Toolbox::addslashes_deep(__('Delete agents that have not contacted the server since "xxx" days.', 'fusioninventory'))]);
|
||||
CronTask::Register('PluginFusioninventoryAgentWakeup', 'wakeupAgents', 120,
|
||||
['mode'=>2, 'allowmode'=>3, 'logs_lifetime'=>30,
|
||||
'comment'=> Toolbox::addslashes_deep(__('Wake agents ups', 'fusioninventory'))]);
|
||||
CronTask::Register('PluginFusioninventoryTask', 'cleanondemand', 86400,
|
||||
['mode'=>2, 'allowmode'=>3, 'logs_lifetime'=>30,
|
||||
'comment' => Toolbox::addslashes_deep(__('Clean on demand deployment tasks'))]);
|
||||
|
||||
/*
|
||||
* Create rules
|
||||
*/
|
||||
$migration->displayMessage("Create rules");
|
||||
$pfSetup = new PluginFusioninventorySetup();
|
||||
$pfSetup->initRules();
|
||||
|
||||
/*
|
||||
* Add notification for configuration management
|
||||
*/
|
||||
|
||||
/*
|
||||
* Import OCS locks
|
||||
*/
|
||||
$migration->displayMessage("Import OCS locks if exists");
|
||||
$pfLock = new PluginFusioninventoryLock();
|
||||
$pfLock->importFromOcs();
|
||||
|
||||
CronTask::Register('PluginFusioninventoryTaskjobstate', 'cleantaskjob', (3600 * 24),
|
||||
['mode' => 2, 'allowmode' => 3, 'logs_lifetime' => 30]);
|
||||
|
||||
$pfNetworkporttype = new PluginFusioninventoryNetworkporttype();
|
||||
$pfNetworkporttype->init();
|
||||
|
||||
require_once(PLUGIN_FUSIONINVENTORY_DIR . "/inc/inventorycomputerstat.class.php");
|
||||
PluginFusioninventoryInventoryComputerStat::init();
|
||||
|
||||
/*
|
||||
* Define when install agent_base_url in glpi_plugin_fusioninventory_entities
|
||||
*/
|
||||
$full_url = filter_input(INPUT_SERVER, "PHP_SELF");
|
||||
$https = filter_input(INPUT_SERVER, "HTTPS");
|
||||
$http_host = filter_input(INPUT_SERVER, "HTTP_HOST");
|
||||
if (!empty($full_url) && !strstr($full_url, 'cli_install.php')) {
|
||||
if (!empty($https)) {
|
||||
$agent_base_url = 'https://'.$http_host.$full_url;
|
||||
} else {
|
||||
$agent_base_url = 'http://'.$http_host.$full_url;
|
||||
}
|
||||
$agent_base_url = str_replace('/front/plugin.form.php', '', $agent_base_url);
|
||||
$DB->update(
|
||||
'glpi_plugin_fusioninventory_entities', [
|
||||
'agent_base_url' => $agent_base_url
|
||||
], [
|
||||
'id' => 1
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
$mode_cli = (basename($_SERVER['SCRIPT_NAME']) == "cli_install.php");
|
||||
|
||||
}
|
Reference in New Issue
Block a user