mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-28 08:14:38 +02:00
Merge branch 'develop' into ent-13061-limitar-el-aviso-de-lts-versions-del-warp-offline
This commit is contained in:
commit
7aaab5f39c
@ -1,5 +1,5 @@
|
||||
package: pandorafms-agent-unix
|
||||
Version: 7.0NG.776-240318
|
||||
Version: 7.0NG.776-240325
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
@ -14,7 +14,7 @@
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.776-240318"
|
||||
pandora_version="7.0NG.776-240325"
|
||||
|
||||
echo "Test if you has the tools for to make the packages."
|
||||
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
|
||||
|
@ -1039,7 +1039,7 @@ my $Sem = undef;
|
||||
my $ThreadSem = undef;
|
||||
|
||||
use constant AGENT_VERSION => '7.0NG.776';
|
||||
use constant AGENT_BUILD => '240318';
|
||||
use constant AGENT_BUILD => '240325';
|
||||
|
||||
# Agent log default file size maximum and instances
|
||||
use constant DEFAULT_MAX_LOG_SIZE => 600000;
|
||||
|
@ -4,7 +4,7 @@
|
||||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux
|
||||
%define version 7.0NG.776
|
||||
%define release 240318
|
||||
%define release 240325
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
@ -5,7 +5,7 @@
|
||||
%define name pandorafms_agent_linux_bin
|
||||
%define source_name pandorafms_agent_linux
|
||||
%define version 7.0NG.776
|
||||
%define release 240318
|
||||
%define release 240325
|
||||
%define debug_package %{nil}
|
||||
|
||||
Summary: Pandora FMS Linux agent, binary version
|
||||
|
@ -5,7 +5,7 @@
|
||||
%define name pandorafms_agent_linux_bin
|
||||
%define source_name pandorafms_agent_linux
|
||||
%define version 7.0NG.776
|
||||
%define release 240318
|
||||
%define release 240325
|
||||
%define debug_package %{nil}
|
||||
|
||||
Summary: Pandora FMS Linux agent, binary version
|
||||
|
@ -5,7 +5,7 @@
|
||||
%define name pandorafms_agent_linux_bin
|
||||
%define source_name pandorafms_agent_linux
|
||||
%define version 7.0NG.776
|
||||
%define release 240318
|
||||
%define release 240325
|
||||
|
||||
Summary: Pandora FMS Linux agent, binary version
|
||||
Name: %{name}
|
||||
|
@ -4,7 +4,7 @@
|
||||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux
|
||||
%define version 7.0NG.776
|
||||
%define release 240318
|
||||
%define release 240325
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
@ -10,7 +10,7 @@
|
||||
# **********************************************************************
|
||||
|
||||
PI_VERSION="7.0NG.776"
|
||||
PI_BUILD="240318"
|
||||
PI_BUILD="240325"
|
||||
OS_NAME=`uname -s`
|
||||
|
||||
FORCE=0
|
||||
|
@ -186,7 +186,7 @@ UpgradeApplicationID
|
||||
{}
|
||||
|
||||
Version
|
||||
{240318}
|
||||
{240325}
|
||||
|
||||
ViewReadme
|
||||
{Yes}
|
||||
|
@ -30,7 +30,7 @@ using namespace Pandora;
|
||||
using namespace Pandora_Strutils;
|
||||
|
||||
#define PATH_SIZE _MAX_PATH+1
|
||||
#define PANDORA_VERSION ("7.0NG.776 Build 240318")
|
||||
#define PANDORA_VERSION ("7.0NG.776 Build 240325")
|
||||
|
||||
string pandora_path;
|
||||
string pandora_dir;
|
||||
|
@ -11,7 +11,7 @@ BEGIN
|
||||
VALUE "LegalCopyright", "Pandora FMS"
|
||||
VALUE "OriginalFilename", "PandoraAgent.exe"
|
||||
VALUE "ProductName", "Pandora FMS Windows Agent"
|
||||
VALUE "ProductVersion", "(7.0NG.776(Build 240318))"
|
||||
VALUE "ProductVersion", "(7.0NG.776(Build 240325))"
|
||||
VALUE "FileVersion", "1.0.0.0"
|
||||
END
|
||||
END
|
||||
|
@ -1,5 +1,5 @@
|
||||
package: pandorafms-console
|
||||
Version: 7.0NG.776-240318
|
||||
Version: 7.0NG.776-240325
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
@ -14,7 +14,7 @@
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.776-240318"
|
||||
pandora_version="7.0NG.776-240325"
|
||||
|
||||
package_pear=0
|
||||
package_pandora=1
|
||||
|
@ -299,7 +299,7 @@ function agents_modules_load_js()
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function mainAgentsModules()
|
||||
function mainAgentsModules($params=[], $post_data=[])
|
||||
{
|
||||
global $config;
|
||||
|
||||
@ -352,29 +352,39 @@ function mainAgentsModules()
|
||||
|
||||
$updated_time = $updated_info;
|
||||
|
||||
$modulegroup = get_parameter('modulegroup', 0);
|
||||
$refr = (int) get_parameter('refresh', 0);
|
||||
// By default 30 seconds.
|
||||
$recursion = get_parameter('recursion', 0);
|
||||
if ($post_data === []) {
|
||||
$show_type = (int) get_parameter('show_type', 0);
|
||||
$group_id = (int) get_parameter('group_id', 0);
|
||||
$offset = (int) get_parameter('offset', 0);
|
||||
$hor_offset = (int) get_parameter('hor_offset', 0);
|
||||
$block = $config['block_size'];
|
||||
if (intval($block) > 15) {
|
||||
$block = '15';
|
||||
}
|
||||
|
||||
$recursion = get_parameter('recursion', 0);
|
||||
$modulegroup = get_parameter('modulegroup', 0);
|
||||
if (get_parameter('modulegroup') != null) {
|
||||
$agents_id = (array) get_parameter('id_agents2', null);
|
||||
}
|
||||
|
||||
$selection_a_m = (int) get_parameter('selection_agent_module');
|
||||
$modules_selected = (array) get_parameter('module', 0);
|
||||
} else {
|
||||
$show_type = (int) ($post_data['show_type'] ?? 0);
|
||||
$group_id = (int) ($post_data['group_id'] ?? 0);
|
||||
$recursion = ($post_data['recursion'] ?? 0);
|
||||
$modulegroup = ($post_data['modulegroup'] ?? 0);
|
||||
if ($modulegroup !== 0) {
|
||||
$agents_id = (array) ($post_data['id_agents2'] ?? []);
|
||||
}
|
||||
|
||||
$selection_a_m = ($post_data['selection_agent_module'] ?? '');
|
||||
$modules_selected = ($post_data['module'] ?? []);
|
||||
}
|
||||
|
||||
$refr = (int) get_parameter('refresh', 0);
|
||||
// By default 30 seconds.
|
||||
$offset = (int) get_parameter('offset', 0);
|
||||
$hor_offset = (int) get_parameter('hor_offset', 0);
|
||||
$block = (string) ($params['block_size'] ?? $hor_offset);
|
||||
$update_item = (string) get_parameter('edit_item', '');
|
||||
$save_serialize = (int) get_parameter('save_serialize', 0);
|
||||
$full_modules_selected = explode(';', get_parameter('full_modules_selected', 0));
|
||||
$full_agents_id = explode(';', get_parameter('full_agents_id', 0));
|
||||
$show_type = (int) get_parameter('show_type', 0);
|
||||
|
||||
// In full screen there is no pagination neither filters.
|
||||
if (( ($config['pure'] == 0 && $save_serialize) && $update_item == '' ) || ( ($config['pure'] == 1 && $save_serialize == 0) && $update_item == '' )) {
|
||||
@ -572,6 +582,7 @@ function mainAgentsModules()
|
||||
*/
|
||||
|
||||
if ($config['pure'] == 0) {
|
||||
include_once 'include/class/HTML.class.php';
|
||||
// Header.
|
||||
ui_print_standard_header(
|
||||
__('Agents/Modules'),
|
||||
@ -895,7 +906,9 @@ function mainAgentsModules()
|
||||
return;
|
||||
}
|
||||
|
||||
echo '<table cellpadding="4" cellspacing="4" border="0" class="info_table mrgn_btn_20px" id="agents_modules_table">';
|
||||
echo '<div id="div-agents-modules-table">';
|
||||
echo '<div id="agents-modules-spinner" class="spinner-fixed"><span></span><span></span><span></span><span></span></div>';
|
||||
echo '<table cellpadding="4" cellspacing="4" border="0" class="info_table mrgn_btn_20px invisible" id="agents_modules_table">';
|
||||
|
||||
echo '<tr>';
|
||||
|
||||
@ -1084,6 +1097,7 @@ function mainAgentsModules()
|
||||
}
|
||||
|
||||
echo '</table>';
|
||||
echo '</div>';
|
||||
|
||||
if ($show_type === 0) {
|
||||
$show_legend = "<div class='legend_white'>";
|
||||
@ -1114,4 +1128,66 @@ function mainAgentsModules()
|
||||
|
||||
|
||||
extensions_add_operation_menu_option(__('Agents/Modules view'), 'estado', 'agents_modules/icon_menu.png', 'v1r1', 'view');
|
||||
extensions_add_main_function('mainAgentsModules');
|
||||
|
||||
$pure = (int) get_parameter('pure', 0);
|
||||
$hor_offset = (int) get_parameter('hor_offset', 0);
|
||||
$offset = (int) get_parameter('offset', 0);
|
||||
|
||||
$sec2 = get_parameter('sec2');
|
||||
|
||||
if ($pure !== 0) {
|
||||
extensions_add_main_function('mainAgentsModules');
|
||||
if ($sec2 === 'extensions/agents_modules') {
|
||||
echo '<script>
|
||||
$(document).ready(function () {
|
||||
$("#agents-modules-spinner").hide();
|
||||
$("#agents_modules_table").show();
|
||||
});
|
||||
</script>';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ($pure === 0) {
|
||||
if (is_ajax()) {
|
||||
$params = [];
|
||||
$post_data = get_parameter('post_data', []);
|
||||
$items_offset = get_parameter('items_offset', 15);
|
||||
$params['block_size'] = $items_offset;
|
||||
$params['offset'] = $offset;
|
||||
$params['hor_offset'] = $hor_offset;
|
||||
mainAgentsModules($params, $post_data);
|
||||
return;
|
||||
}
|
||||
|
||||
if ($sec2 === 'extensions/agents_modules') {
|
||||
echo '<script>
|
||||
$(document).ready(function () {
|
||||
// Calc items per page.
|
||||
const mainWidth = $("#page #main").width();
|
||||
const itemsOffset = Math.floor((mainWidth - 240) / 46);
|
||||
|
||||
$.ajax({
|
||||
url: "ajax.php",
|
||||
data: {
|
||||
page: "extensions/agents_modules",
|
||||
post_data: '.json_encode($_POST).',
|
||||
items_offset: itemsOffset,
|
||||
offset: '.$offset.',
|
||||
hor_offset: '.$hor_offset.',
|
||||
},
|
||||
dataType: "html",
|
||||
success: function (data) {
|
||||
$("#page > #main").html(data);
|
||||
$("#agents-modules-spinner").hide();
|
||||
$("#agents_modules_table").show();
|
||||
menuActionButtonResizing();
|
||||
},
|
||||
error: function (error) {
|
||||
console.error(error);
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>';
|
||||
}
|
||||
}
|
@ -1738,3 +1738,12 @@ extensions/files_repo/sql/files_repo.sql
|
||||
extensions/files_repo
|
||||
extensions/resource_exportation.php
|
||||
extensions/resource_registration.php
|
||||
enterprise/include/class/Aws.cloud.php
|
||||
enterprise/include/class/Azure.cloud.php
|
||||
enterprise/include/class/DB2.app.php
|
||||
enterprise/include/class/Google.cloud.php
|
||||
enterprise/include/class/MicrosoftSQLServer.app.php
|
||||
enterprise/include/class/MySQL.app.php
|
||||
enterprise/include/class/Oracle.app.php
|
||||
enterprise/include/class/SAP.app.php
|
||||
enterprise/include/class/VMware.app.php
|
||||
|
@ -1,5 +1,5 @@
|
||||
pandorafms.vmware=a272ee00a9b5f201bb708bef72bbe276
|
||||
pandorafms.mysql=fadb4750d18285c0eca34f47c6aa3cfe
|
||||
pandorafms.mysql=33d470c7492214d4b384ed307e81adf4
|
||||
pandorafms.vmware=1deafce1d55d3574645d8b136104e9ad
|
||||
pandorafms.mysql=ca7dd8b80a1a03a25eb0fb077818ad63
|
||||
pandorafms.mssql=1cc215409741d19080269ffba112810e
|
||||
|
@ -125,7 +125,7 @@ UPDATE `tncm_agent_data_template` SET `vendors` = CONCAT('["', TRIM(BOTH '"' FRO
|
||||
-- Update version for plugin oracle
|
||||
UPDATE `tdiscovery_apps` SET `version` = '1.2' WHERE `short_name` = 'pandorafms.oracle';
|
||||
-- Update version for plugin mysql
|
||||
UPDATE `tdiscovery_apps` SET `version` = '1.1' WHERE `short_name` = 'pandorafms.mysql';
|
||||
UPDATE `tdiscovery_apps` SET `version` = '1.2' WHERE `short_name` = 'pandorafms.mysql';
|
||||
|
||||
|
||||
SET @widget_id = NULL;
|
||||
|
File diff suppressed because one or more lines are too long
@ -1053,7 +1053,7 @@ if ($modules !== false) {
|
||||
$data[8] .= html_print_menu_button(
|
||||
[
|
||||
'href' => 'index.php?sec=gagente&tab=module&sec2=godmode/agentes/configurar_agente&id_agente='.$id_agente.'&duplicate_module='.$module['id_agente_modulo'],
|
||||
'onClick' => "if (!confirm(\' '.__('Are you sure?').'\')) return false;",
|
||||
'onClick' => "if (!confirm('".__('Are you sure?')."')) return false;",
|
||||
'image' => 'images/copy.svg',
|
||||
'title' => __('Duplicate'),
|
||||
],
|
||||
@ -1064,8 +1064,8 @@ if ($modules !== false) {
|
||||
$data[8] .= html_print_menu_button(
|
||||
[
|
||||
'href' => 'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&id_agente='.$id_agente.'&tab=module&fix_module='.$module['id_agente_modulo'],
|
||||
'onClick' => "if (!confirm(\' '.__('Are you sure?').'\')) return false;",
|
||||
'image' => 'images/module-graph.svg',
|
||||
'onClick' => "if (!confirm('".__('Are you sure?')."')) return false;",
|
||||
'image' => 'images/normalization@svg.svg',
|
||||
'title' => __('Normalize'),
|
||||
'disabled' => (isset($numericModules[$type]) === false || $numericModules[$type] === false),
|
||||
'disabled_title' => ' ('.__('Disabled').')',
|
||||
@ -1077,7 +1077,7 @@ if ($modules !== false) {
|
||||
$data[8] .= html_print_menu_button(
|
||||
[
|
||||
'href' => 'index.php?sec=gmodules&sec2=godmode/modules/manage_network_components&create_network_from_module=1&id_agente='.$id_agente.'&create_module_from='.$module['id_agente_modulo'],
|
||||
'onClick' => "if (!confirm(\' '.__('Are you sure?').'\')) return false;",
|
||||
'onClick' => "if (!confirm('".__('Are you sure?')."')) return false;",
|
||||
'image' => 'images/cluster@os.svg',
|
||||
'title' => __('Create network component'),
|
||||
'disabled' => ((is_user_admin($config['id_user']) === true) && (int) $module['id_modulo'] === MODULE_NETWORK) === false,
|
||||
|
@ -81,16 +81,6 @@ if ((bool) check_acl($config['id_user'], 0, 'AR') === true
|
||||
if ((bool) check_acl($config['id_user'], 0, 'AW') === true) {
|
||||
// Applications.
|
||||
$sub2 = [];
|
||||
// Check if app has been migrated.
|
||||
if (enterprise_installed() === true) {
|
||||
(ManageExtensions::isMigrated('pandorafms.mssql') === true) ?: ($sub2['godmode/servers/discovery&wiz=app&mode=MicrosoftSQLServer']['text'] = __('Microsoft SQL Server (legacy)'));
|
||||
(ManageExtensions::isMigrated('pandorafms.mysql') === true) ?: ($sub2['godmode/servers/discovery&wiz=app&mode=mysql']['text'] = __('Mysql (legacy)'));
|
||||
(ManageExtensions::isMigrated('pandorafms.oracle') === true) ?: ($sub2['godmode/servers/discovery&wiz=app&mode=oracle']['text'] = __('Oracle (legacy)'));
|
||||
(ManageExtensions::isMigrated('pandorafms.vmware') === true) ?: ($sub2['godmode/servers/discovery&wiz=app&mode=vmware']['text'] = __('VMware (legacy)'));
|
||||
(ManageExtensions::isMigrated('pandorafms.sap.desert') === true) ?: ($sub2['godmode/servers/discovery&wiz=app&mode=SAP']['text'] = __('SAP (legacy)'));
|
||||
(ManageExtensions::isMigrated('pandorafms.db2') === true) ?: ($sub2['godmode/servers/discovery&wiz=app&mode=DB2']['text'] = __('DB2 (legacy)'));
|
||||
}
|
||||
|
||||
$extensions = ManageExtensions::getExtensionBySection('app');
|
||||
if ($extensions !== false) {
|
||||
foreach ($extensions as $key => $extension) {
|
||||
@ -112,13 +102,6 @@ if ((bool) check_acl($config['id_user'], 0, 'AR') === true
|
||||
|
||||
// Cloud.
|
||||
$sub2 = [];
|
||||
if (enterprise_installed() === true) {
|
||||
(ManageExtensions::isMigrated('pandorafms.aws.ec2') === true) ?: (ManageExtensions::isMigrated('pandorafms.aws.s3') === true) ?: (ManageExtensions::isMigrated('pandorafms.aws.rds') === true) ?: ($sub2['godmode/servers/discovery&wiz=cloud&mode=amazonws']['text'] = __('Amazon Web Services (legacy)'));
|
||||
(ManageExtensions::isMigrated('pandorafms.azure.mc') === true) ?: ($sub2['godmode/servers/discovery&wiz=cloud&mode=azure']['text'] = __('Microsoft Azure (legacy)'));
|
||||
(ManageExtensions::isMigrated('pandorafms.azure.gcp.ce') === true) ?: ($sub2['godmode/servers/discovery&wiz=cloud&mode=gcp']['text'] = __('Google Compute Platform (legacy)'));
|
||||
}
|
||||
|
||||
|
||||
$extensions = ManageExtensions::getExtensionBySection('cloud');
|
||||
if ($extensions !== false) {
|
||||
foreach ($extensions as $key => $extension) {
|
||||
|
@ -643,6 +643,7 @@ foreach ($layoutDatas as $layoutData) {
|
||||
default:
|
||||
if ($layoutData['id_layout_linked'] != 0) {
|
||||
// It is a item that links with other visualmap
|
||||
$table->data[($i + 2)][1] = '';
|
||||
break;
|
||||
}
|
||||
|
||||
@ -756,7 +757,7 @@ foreach ($layoutDatas as $layoutData) {
|
||||
$layoutData['id_layout_linked'],
|
||||
'',
|
||||
'None',
|
||||
'',
|
||||
'0',
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
|
@ -632,7 +632,7 @@ if (empty($create) === false || empty($view) === false) {
|
||||
|
||||
$datam[1] = html_print_label_input_block(
|
||||
__('Default value').'<span class="normal_weight">('.$macro_name.')</span>',
|
||||
html_print_input_text_extended($macro_value_name, $macro_value_value, 'text-'.$macro_value_name, '', 30, 255, false, '', "class='command_component command_macro text_input'", true)
|
||||
html_print_input_text_extended($macro_value_name, io_safe_input($macro_value_value), 'text-'.$macro_value_name, '', 30, 255, false, '', "class='command_component command_macro text_input'", true)
|
||||
);
|
||||
|
||||
$table->data['plugin_'.$next_name_number] = $datam;
|
||||
|
@ -82,9 +82,6 @@ class Applications extends Wizard
|
||||
'index.php?sec=gservers&sec2=godmode/servers/discovery&wiz=app'
|
||||
);
|
||||
|
||||
// Print Warning Message.
|
||||
$this->printWarningMessage();
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
@ -108,90 +105,14 @@ class Applications extends Wizard
|
||||
);
|
||||
|
||||
$mode = get_parameter('mode', null);
|
||||
|
||||
// Load application wizards.
|
||||
$enterprise_classes = glob(
|
||||
$config['homedir'].'/'.ENTERPRISE_DIR.'/include/class/*.app.php'
|
||||
);
|
||||
$extensions = new ExtensionsDiscovery('app', $mode);
|
||||
|
||||
foreach ($enterprise_classes as $classpath) {
|
||||
enterprise_include_once(
|
||||
'include/class/'.basename($classpath)
|
||||
);
|
||||
}
|
||||
|
||||
switch ($mode) {
|
||||
case 'DB2':
|
||||
$classname_selected = 'DB2';
|
||||
break;
|
||||
|
||||
case 'SAP':
|
||||
$classname_selected = 'SAP';
|
||||
break;
|
||||
|
||||
case 'vmware':
|
||||
$classname_selected = 'VMware';
|
||||
break;
|
||||
|
||||
case 'mysql':
|
||||
$classname_selected = 'MySQL';
|
||||
break;
|
||||
|
||||
case 'oracle':
|
||||
$classname_selected = 'Oracle';
|
||||
break;
|
||||
|
||||
case 'MicrosoftSQLServer':
|
||||
$classname_selected = 'MicrosoftSQLServer';
|
||||
break;
|
||||
|
||||
default:
|
||||
$classname_selected = null;
|
||||
break;
|
||||
}
|
||||
|
||||
// Else: class not found pseudo exception.
|
||||
if ($classname_selected !== null) {
|
||||
$wiz = new $classname_selected($this->page);
|
||||
// Check if app has been migrated.
|
||||
if (method_exists($wiz, 'isMigrated') === true) {
|
||||
if ($wiz->isMigrated() === true) {
|
||||
ui_print_info_message(__('This legacy app has been migrated to new discovery 2.0 system'));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$result = $wiz->run();
|
||||
if (is_array($result) === true) {
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
if ($classname_selected === null) {
|
||||
if ($mode !== null) {
|
||||
// Load extension if exist.
|
||||
$extensions->run();
|
||||
return;
|
||||
}
|
||||
|
||||
// Load classes and print selector.
|
||||
$wiz_data = [];
|
||||
foreach ($enterprise_classes as $classpath) {
|
||||
$classname = basename($classpath, '.app.php');
|
||||
$obj = new $classname();
|
||||
|
||||
if (method_exists($obj, 'isMigrated') === true) {
|
||||
if ($obj->isMigrated() === true) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
$wiz_data[] = $obj->load();
|
||||
}
|
||||
|
||||
$wiz_data = array_merge($wiz_data, $extensions->loadExtensions());
|
||||
|
||||
$this->prepareBreadcrum(
|
||||
[
|
||||
[
|
||||
@ -225,7 +146,7 @@ class Applications extends Wizard
|
||||
$this->printHeader(true)
|
||||
);
|
||||
|
||||
Wizard::printBigButtonsList($wiz_data);
|
||||
Wizard::printBigButtonsList($extensions->loadExtensions());
|
||||
|
||||
$not_defined_extensions = $extensions->loadExtensions(true);
|
||||
|
||||
@ -249,7 +170,6 @@ class Applications extends Wizard
|
||||
echo $output;
|
||||
|
||||
echo '<div class="app_mssg"><i>*'.__('All company names used here are for identification purposes only. Use of these names, logos, and brands does not imply endorsement.').'</i></div>';
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
@ -114,8 +114,6 @@ class Cloud extends Wizard
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
global $config;
|
||||
|
||||
// Load styles.
|
||||
parent::run();
|
||||
|
||||
@ -127,54 +125,8 @@ class Cloud extends Wizard
|
||||
|
||||
$mode = get_parameter('mode', null);
|
||||
|
||||
// Load cloud wizards.
|
||||
$enterprise_classes = glob(
|
||||
$config['homedir'].'/'.ENTERPRISE_DIR.'/include/class/*.cloud.php'
|
||||
);
|
||||
$extensions = new ExtensionsDiscovery('cloud', $mode);
|
||||
|
||||
foreach ($enterprise_classes as $classpath) {
|
||||
enterprise_include_once(
|
||||
'include/class/'.basename($classpath)
|
||||
);
|
||||
}
|
||||
|
||||
switch ($mode) {
|
||||
case 'amazonws':
|
||||
$classname_selected = 'Aws';
|
||||
break;
|
||||
|
||||
case 'azure':
|
||||
$classname_selected = 'Azure';
|
||||
break;
|
||||
|
||||
case 'gcp':
|
||||
$classname_selected = 'Google';
|
||||
break;
|
||||
|
||||
default:
|
||||
$classname_selected = null;
|
||||
break;
|
||||
}
|
||||
|
||||
// Else: class not found pseudo exception.
|
||||
if ($classname_selected !== null) {
|
||||
$wiz = new $classname_selected($this->page);
|
||||
// Check if app has been migrated.
|
||||
if (method_exists($wiz, 'isMigrated') === true) {
|
||||
if ($wiz->isMigrated() === true) {
|
||||
ui_print_info_message(__('This legacy app has been migrated to new discovery 2.0 system'));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$result = $wiz->run();
|
||||
if (is_array($result) === true) {
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
if ($classname_selected === null) {
|
||||
if ($mode !== null) {
|
||||
// Load extension if exist.
|
||||
$extensions->run();
|
||||
@ -182,22 +134,6 @@ class Cloud extends Wizard
|
||||
}
|
||||
|
||||
// Load classes and print selector.
|
||||
$wiz_data = [];
|
||||
foreach ($enterprise_classes as $classpath) {
|
||||
$classname = basename($classpath, '.cloud.php');
|
||||
$obj = new $classname();
|
||||
// Check if legacy has been migrated.
|
||||
if (method_exists($obj, 'isMigrated') === true) {
|
||||
if ($obj->isMigrated() === true) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
$wiz_data[] = $obj->load();
|
||||
}
|
||||
|
||||
$wiz_data = array_merge($wiz_data, $extensions->loadExtensions());
|
||||
|
||||
$this->prepareBreadcrum(
|
||||
[
|
||||
[
|
||||
@ -230,7 +166,7 @@ class Cloud extends Wizard
|
||||
$this->printHeader(true)
|
||||
);
|
||||
|
||||
Wizard::printBigButtonsList($wiz_data);
|
||||
Wizard::printBigButtonsList($extensions->loadExtensions());
|
||||
|
||||
$not_defined_extensions = $extensions->loadExtensions(true);
|
||||
|
||||
@ -256,12 +192,6 @@ class Cloud extends Wizard
|
||||
echo '<div class="app_mssg"><i>*'.__('All company names used here are for identification purposes only. Use of these names, logos, and brands does not imply endorsement.').'</i></div>';
|
||||
}
|
||||
|
||||
// Print Warning Message.
|
||||
$this->printWarningMessage();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Run credentials wizard.
|
||||
|
@ -222,10 +222,6 @@ class DiscoveryTaskList extends HTML
|
||||
html_print_action_buttons($this->printForm($form, true));
|
||||
}
|
||||
|
||||
// Warning Message.
|
||||
$wizar_main = new Wizard();
|
||||
$wizar_main->printWarningMessage();
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
|
@ -767,24 +767,6 @@ class ManageExtensions extends HTML
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
$migrationHash = $this->canMigrate($row['short_name']);
|
||||
if ($migrationHash !== false && empty($migrationHash) !== true) {
|
||||
// Migrate button.
|
||||
$data[$key]['actions'] .= html_print_input_image(
|
||||
'button_migrate-'.$row['short_name'],
|
||||
'images/reset.png',
|
||||
'',
|
||||
'',
|
||||
true,
|
||||
[
|
||||
'onclick' => 'show_migration_form(\''.$row['short_name'].'\',\''.$migrationHash.'\')',
|
||||
'title' => __('Migrate old discovery tasks.'),
|
||||
'alt' => __('Migrate old discovery tasks.'),
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($data) === true) {
|
||||
@ -1123,386 +1105,6 @@ class ManageExtensions extends HTML
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Checks if the discovery app can be migrated to .disco system.
|
||||
* If app is migrated or is not in .ini file, it cannot be migrated.
|
||||
*
|
||||
* @param string $shortName Short name of the discovery app.
|
||||
*
|
||||
* @return string App hash, false in case hash doesnt exist on ini file, or is already migraeted..
|
||||
*/
|
||||
private function canMigrate(string $shortName='')
|
||||
{
|
||||
global $config;
|
||||
|
||||
if (empty($shortName) === true) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 1. Check if app is already migrated:
|
||||
// Get migrated Discovery Apps from config.
|
||||
$migratedAppsJson = db_get_value('value', 'tconfig', 'token', 'migrated_discovery_apps');
|
||||
|
||||
if ($migratedAppsJson === false || empty($migratedAppsJson) === true) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Decode JSON migrated apps.
|
||||
$migrateApps = json_decode(io_safe_output($migratedAppsJson), true);
|
||||
|
||||
if (json_last_error() !== JSON_ERROR_NONE) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check app migrated.
|
||||
if (array_key_exists($shortName, $migrateApps)) {
|
||||
if (empty($migrateApps[$shortName]) === false && (bool) $migrateApps[$shortName] === true) {
|
||||
// Already migrated.
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// 2. If app not migrated yet, check DiscoveryApplicationsMigrateCodes.ini
|
||||
// Path to the INI file
|
||||
$filePath = $config['homedir'].'/extras/discovery/DiscoveryApplicationsMigrateCodes.ini';
|
||||
|
||||
// Parse the INI file.
|
||||
$migrationCodes = parse_ini_file($filePath, true);
|
||||
|
||||
if ($migrationCodes === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check shortname in ini file.
|
||||
if (array_key_exists($shortName, $migrationCodes) === false) {
|
||||
return false;
|
||||
} else {
|
||||
return $migrationCodes[$shortName];
|
||||
}
|
||||
|
||||
// All checks ok, discovery app can be migrated.
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Prints html for migrate modal
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function loadMigrateModal()
|
||||
{
|
||||
$shortname = get_parameter('shortname', null);
|
||||
$hash = get_parameter('hash', null);
|
||||
|
||||
$form = [
|
||||
'action' => '#',
|
||||
'id' => 'modal_migrate_form',
|
||||
'onsubmit' => 'return false;',
|
||||
'class' => 'modal',
|
||||
'name' => 'migrate_form',
|
||||
];
|
||||
|
||||
$inputs = [];
|
||||
$migrateMessage = __(
|
||||
'All ‘legacy‘ tasks for this application will be migrated to the new ‘.disco’ package system. All configurations and executions will be managed with the new system. This process will not be reversible.</br></br>'
|
||||
);
|
||||
$migrateMessage .= _('Please check the migration code for the application before proceeding.');
|
||||
|
||||
$inputs[] = [
|
||||
'wrapper' => 'div',
|
||||
'block_id' => 'div_migrate_message',
|
||||
'class' => 'hole flex-row flex-items-center w98p',
|
||||
'direct' => 1,
|
||||
'block_content' => [
|
||||
[
|
||||
'label' => $migrateMessage,
|
||||
'arguments' => [
|
||||
'class' => 'first_lbl w98p',
|
||||
'name' => 'lbl_migrate_message',
|
||||
'id' => 'lbl_migrate_message',
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
$inputs[] = [
|
||||
'label' => __('Applicattion hash'),
|
||||
'id' => 'div-hash',
|
||||
'arguments' => [
|
||||
'name' => 'hash',
|
||||
'type' => 'text',
|
||||
'value' => $hash,
|
||||
'return' => true,
|
||||
],
|
||||
];
|
||||
|
||||
$inputs[] = [
|
||||
'block_id' => 'migrate_buttons',
|
||||
'class' => 'flex-row flex-items-center w98p',
|
||||
'direct' => 1,
|
||||
'block_content' => [
|
||||
[
|
||||
'arguments' => [
|
||||
'name' => 'cancel',
|
||||
'label' => __('Cancel'),
|
||||
'type' => 'button',
|
||||
'attributes' => [
|
||||
'icon' => 'left',
|
||||
'mode' => 'secondary',
|
||||
'class' => 'sub cancel float-left',
|
||||
],
|
||||
],
|
||||
],
|
||||
[
|
||||
'arguments' => [
|
||||
'name' => 'migrate',
|
||||
'label' => __('Migrate'),
|
||||
'type' => 'submit',
|
||||
'attributes' => [
|
||||
'icon' => 'wand',
|
||||
'class' => 'sub wand float-right',
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
$spinner = '<div id="migration-spinner" class="invisible spinner-fixed"></div>';
|
||||
|
||||
$migration_form = $this->printForm(
|
||||
[
|
||||
'form' => $form,
|
||||
'inputs' => $inputs,
|
||||
],
|
||||
true,
|
||||
);
|
||||
|
||||
echo $migration_form.$spinner;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Migrate app to new .disco system
|
||||
*
|
||||
* @return true if success, false in case of error.
|
||||
*/
|
||||
public function migrateApp()
|
||||
{
|
||||
global $config;
|
||||
|
||||
$hash = get_parameter('hash', false);
|
||||
$shortName = get_parameter('shortName', false);
|
||||
|
||||
if ($hash === false || $shortName === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 1. Gets md5
|
||||
try {
|
||||
$console_md5 = $this->calculateDirectoryMD5($shortName, false);
|
||||
$server_md5 = $this->calculateDirectoryMD5($shortName, true);
|
||||
} catch (Exception $e) {
|
||||
$return = [
|
||||
'error' => $e->getMessage(),
|
||||
];
|
||||
echo json_encode($return);
|
||||
return;
|
||||
}
|
||||
|
||||
if ($console_md5 === false || $server_md5 === false) {
|
||||
$return = [
|
||||
'error' => __('Error calculating app MD5'),
|
||||
];
|
||||
echo json_encode($return);
|
||||
return;
|
||||
}
|
||||
|
||||
// 2. Checks MD5
|
||||
if ($hash === $console_md5 && $hash === $server_md5) {
|
||||
// Init migration script.
|
||||
$return = $this->executeMigrationScript($shortName);
|
||||
} else {
|
||||
$return = [
|
||||
'error' => __('App hash does not match.'),
|
||||
];
|
||||
}
|
||||
|
||||
// Add shotrname to return for showing messages.
|
||||
$return['shortname'] = $shortName;
|
||||
|
||||
echo \json_encode($return);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Calculates directory MD% and saves it into array
|
||||
*
|
||||
* @param string $shortName Shorname of app.
|
||||
* @param boolean $server If true, perform checks into server folder.
|
||||
*
|
||||
* @return $md5 Array of md5 of filess.
|
||||
*/
|
||||
private function calculateDirectoryMD5($shortName, $server)
|
||||
{
|
||||
global $config;
|
||||
|
||||
$md5List = [];
|
||||
|
||||
$serverPath = $config['remote_config'].'/discovery/'.$shortName;
|
||||
$consolePath = $config['homedir'].'/'.$this->path.'/'.$shortName;
|
||||
|
||||
if ($server === true) {
|
||||
$directory = $serverPath;
|
||||
} else {
|
||||
$directory = $consolePath;
|
||||
}
|
||||
|
||||
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory));
|
||||
|
||||
foreach ($iterator as $file) {
|
||||
if ($file->isFile()) {
|
||||
$md5List[] = md5_file($file->getPathname());
|
||||
}
|
||||
}
|
||||
|
||||
if ($server === true) {
|
||||
$console_ini = $consolePath.'/discovery_definition.ini';
|
||||
$logo = $consolePath.'/logo.png';
|
||||
|
||||
if (file_exists($console_ini)) {
|
||||
$md5List[] = md5_file($console_ini);
|
||||
}
|
||||
|
||||
if (file_exists($logo)) {
|
||||
$md5List[] = md5_file($logo);
|
||||
}
|
||||
}
|
||||
|
||||
sort($md5List);
|
||||
$concatenatedChecksums = implode('', $md5List);
|
||||
return md5($concatenatedChecksums);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Executed migration script for app
|
||||
*
|
||||
* @param string $shortName Shortname of the app.
|
||||
*
|
||||
* @return true on success, false in case of error.
|
||||
*/
|
||||
private function executeMigrationScript(string $shortName)
|
||||
{
|
||||
global $config;
|
||||
|
||||
$dblock = db_get_lock('migrate-working');
|
||||
// Try to get a lock from DB.
|
||||
if ($dblock !== 1) {
|
||||
// Locked!
|
||||
return false;
|
||||
}
|
||||
|
||||
$scriptName = preg_replace('/^pandorafms\.(\w+\.?\w*)$/m', 'migrate.$1.sql', $shortName);
|
||||
|
||||
$script_path = $config['homedir'].'/extras/discovery/migration_scripts/'.$scriptName;
|
||||
if (file_exists($script_path) === false) {
|
||||
$return = [
|
||||
'error' => __('Migration script '.$scriptName.' could not be found'),
|
||||
];
|
||||
} else {
|
||||
try {
|
||||
$res = db_process_file($script_path, false);
|
||||
} catch (\Exception $e) {
|
||||
$return = [
|
||||
'error' => $e->getMessage(),
|
||||
];
|
||||
} finally {
|
||||
db_release_lock('migrate_working');
|
||||
}
|
||||
|
||||
if ($res === true) {
|
||||
$migrateAppsJson = io_safe_output(
|
||||
db_get_value(
|
||||
'value',
|
||||
'tconfig',
|
||||
'token',
|
||||
'migrated_discovery_apps'
|
||||
)
|
||||
);
|
||||
|
||||
$migrateApps = json_decode(
|
||||
$migrateAppsJson,
|
||||
true
|
||||
);
|
||||
|
||||
$migrateApps[$shortName] = 1;
|
||||
|
||||
$migratedAppsJson = json_encode($migrateApps);
|
||||
|
||||
if (json_last_error() === JSON_ERROR_NONE) {
|
||||
config_update_value(
|
||||
'migrated_discovery_apps',
|
||||
$migratedAppsJson
|
||||
);
|
||||
} else {
|
||||
$return = [
|
||||
'error' => __('Error decoding migrated apps json.'),
|
||||
];
|
||||
}
|
||||
|
||||
$return = [
|
||||
'result' => __('App migrated successfully'),
|
||||
'shortName' => $shortName,
|
||||
];
|
||||
} else {
|
||||
$return = [
|
||||
'error' => __('Error migrating app'),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
return $return;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check if legacy app has been migrated.
|
||||
*
|
||||
* @param string $shortName Shorn name of the app.
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
static public function isMigrated($shortName)
|
||||
{
|
||||
global $config;
|
||||
|
||||
$migrateAppsJson = io_safe_output(
|
||||
db_get_value(
|
||||
'value',
|
||||
'tconfig',
|
||||
'token',
|
||||
'migrated_discovery_apps'
|
||||
)
|
||||
);
|
||||
|
||||
$migratedApps = json_decode($migrateAppsJson, true);
|
||||
|
||||
if (json_last_error() !== JSON_ERROR_NONE) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (array_key_exists($shortName, $migratedApps) === true && empty($migratedApps[$shortName] === false)) {
|
||||
return (bool) $migratedApps[$shortName];
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Read metadata CSV from system and store data structure in memory.
|
||||
*
|
||||
|
@ -584,28 +584,4 @@ class Wizard
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Generates warning message.
|
||||
*
|
||||
* @return void Warning message.
|
||||
*/
|
||||
public function printWarningMessage()
|
||||
{
|
||||
return ui_print_warning_message(
|
||||
__(
|
||||
'Starting with version 773, the new modular system of discovery 2.0 has been implemented. The current
|
||||
discovery (1.0) and its defined tasks will continue to function normally until the next LTS version,
|
||||
in which migration to the new system will be mandatory.
|
||||
The tasks of the current discovery (1.0) will be marked as legacy although it will not affect their
|
||||
operation, it will only be a visual indicator to identify and differentiate the tasks of discovery 1.0
|
||||
from those of the new version 2.0.
|
||||
In the intermediate versions between the 773 and the next LTS version, more applications of the new
|
||||
discovery 2.0 will be added. Both new and those that will come to replace the applications of the
|
||||
current discovery 1.0. In addition, an automatic migration tool for legacy (1.0) tasks to the new 2.0
|
||||
model will be included.'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
12
pandora_console/images/normalization@svg.svg
Normal file
12
pandora_console/images/normalization@svg.svg
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>normalizar extremos</title>
|
||||
<g id="normalizar-extremos" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="Group" transform="translate(0, -0)" fill="#3F3F3F">
|
||||
<path d="M10,1 C10.5522847,1 11,0.55228475 11,0 C11,-0.55228475 10.5522847,-1 10,-1 C9.44771525,-1 9,-0.55228475 9,0 C9,0.55228475 9.44771525,1 10,1 Z M10,-2 C10.5522847,-2 11,-2.44771525 11,-3 C11,-3.55228475 10.5522847,-4 10,-4 C9.44771525,-4 9,-3.55228475 9,-3 C9,-2.44771525 9.44771525,-2 10,-2 Z M10,4 C10.5522847,4 11,3.55228475 11,3 C11,2.44771525 10.5522847,2 10,2 C9.44771525,2 9,2.44771525 9,3 C9,3.55228475 9.44771525,4 10,4 Z M10,5 C10.5522847,5 11,5.44771525 11,6 C11,6.18260372 10.9510565,6.35377607 10.8655723,6.5011143 C10.9512743,6.64698644 11,6.81780297 11,7 C11,7.55228475 10.5522847,8 10,8 C9.44771525,8 9,7.55228475 9,7 C9,6.81780297 9.04872573,6.64698644 9.13385712,6.4998705 C9.0489435,6.35377607 9,6.18260372 9,6 C9,5.44771525 9.44771525,5 10,5 Z M10,11 C10.5522847,11 11,10.5522847 11,10 C11,9.44771525 10.5522847,9 10,9 C9.44771525,9 9,9.44771525 9,10 C9,10.5522847 9.44771525,11 10,11 Z M10,15 C10.5522847,15 11,15.4477153 11,16 L9,16 L9.00672773,15.8833789 C9.06449284,15.3860402 9.48716416,15 10,15 Z" id="Oval-2" transform="translate(10, 6) rotate(90) translate(-10, -6)"></path>
|
||||
<path d="M10,9.00004336 C10.5522847,9.00004336 11,8.55232811 11,8.00004336 C11,7.44775861 10.5522847,7.00004336 10,7.00004336 C9.44771525,7.00004336 9,7.44775861 9,8.00004336 C9,8.55232811 9.44771525,9.00004336 10,9.00004336 Z M10,6.00004336 C10.5522847,6.00004336 11,5.55232811 11,5.00004336 C11,4.44775861 10.5522847,4.00004336 10,4.00004336 C9.44771525,4.00004336 9,4.44775861 9,5.00004336 C9,5.55232811 9.44771525,6.00004336 10,6.00004336 Z M10,12.0000434 C10.5522847,12.0000434 11,11.5523281 11,11.0000434 C11,10.4477586 10.5522847,10.0000434 10,10.0000434 C9.44771525,10.0000434 9,10.4477586 9,11.0000434 C9,11.5523281 9.44771525,12.0000434 10,12.0000434 Z M10,13.0000434 C10.5522847,13.0000434 11,13.4477586 11,14.0000434 C11,14.1826471 10.9510565,14.3538194 10.8655723,14.5011577 C10.9512743,14.6470298 11,14.8178463 11,15.0000434 C11,15.5523281 10.5522847,16.0000434 10,16.0000434 C9.44771525,16.0000434 9,15.5523281 9,15.0000434 C9,14.8178463 9.04872573,14.6470298 9.13385712,14.4999139 C9.0489435,14.3538194 9,14.1826471 9,14.0000434 C9,13.4477586 9.44771525,13.0000434 10,13.0000434 Z M10,19.0000434 C10.5522847,19.0000434 11,18.5523281 11,18.0000434 C11,17.4477586 10.5522847,17.0000434 10,17.0000434 C9.44771525,17.0000434 9,17.4477586 9,18.0000434 C9,18.5523281 9.44771525,19.0000434 10,19.0000434 Z M10,23.0000434 C10.5522847,23.0000434 11,23.4477586 11,24.0000434 L9,24.0000434 L9.00672773,23.8834222 C9.06449284,23.3860835 9.48716416,23.0000434 10,23.0000434 Z" id="Oval-2" transform="translate(10, 14) scale(-1, 1) rotate(90) translate(-10, -14)"></path>
|
||||
<path d="M11,5.00004336 L11,15.0000434 L9,15.0000434 L9,5.00004336 L11,5.00004336 Z M19,9.00004336 C19.5522847,9.00004336 20,9.44775861 20,10.0000434 C20,10.5523281 19.5522847,11.0000434 19,11.0000434 C18.4477153,11.0000434 18,11.4477586 18,12.0000434 L18,15.0000434 L16,15.0000434 L16,12.0000434 C16,10.3431891 17.3431458,9.00004336 19,9.00004336 Z M4,5.00004336 L4,8.00004336 C4,9.6568976 2.65685425,11.0000434 1,11.0000434 C0.44771525,11.0000434 0,10.5523281 0,10.0000434 C0,9.44775861 0.44771525,9.00004336 1,9.00004336 C1.55228475,9.00004336 2,8.55232811 2,8.00004336 L2,5.00004336 L4,5.00004336 Z" id="Path-95" fill-rule="nonzero"></path>
|
||||
<path d="M18,13.0000434 L18,15.5000434 C18,17.9853247 15.9852814,20.0000434 13.5,20.0000434 C11.0147186,20.0000434 9,17.9853247 9,15.5000434 L9,13.0000434 L11,13.0000434 L11,15.5000434 C11,16.8807552 12.1192881,18.0000434 13.5,18.0000434 C14.8807119,18.0000434 16,16.8807552 16,15.5000434 L16,13.0000434 L18,13.0000434 Z M6.5,4.3355222e-05 C8.98528137,4.3355222e-05 11,2.01476198 11,4.50004336 L11,7.00004336 L9,7.00004336 L9,4.50004336 C9,3.11933148 7.88071187,2.00004336 6.5,2.00004336 C5.11928813,2.00004336 4,3.11933148 4,4.50004336 L4,7.00004336 L2,7.00004336 L2,4.50004336 C2,2.01476198 4.01471863,4.3355222e-05 6.5,4.3355222e-05 Z" id="Path-95" fill-rule="nonzero" opacity="0.4"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 4.4 KiB |
@ -22,7 +22,7 @@ use DI\ContainerBuilder;
|
||||
/*
|
||||
* Pandora build version and version
|
||||
*/
|
||||
$build_version = 'PC240318';
|
||||
$build_version = 'PC240325';
|
||||
$pandora_version = 'v7.0NG.776';
|
||||
|
||||
// Do not overwrite default timezone set if defined.
|
||||
|
@ -2806,7 +2806,7 @@ function config_process_config()
|
||||
}
|
||||
|
||||
if (!isset($config['custom_splash_login'])) {
|
||||
config_update_value('custom_splash_login', 'none.png');
|
||||
config_update_value('custom_splash_login', 'default');
|
||||
}
|
||||
|
||||
if (!isset($config['custom_docs_logo'])) {
|
||||
|
@ -4094,6 +4094,11 @@ div.div_groups_status {
|
||||
border: 1px solid #e2e2e2;
|
||||
}
|
||||
|
||||
#agents_modules_table th:nth-child(1),
|
||||
#agents_modules_table td:nth-child(1) {
|
||||
max-width: 215px;
|
||||
}
|
||||
|
||||
.dashboard {
|
||||
top: 23px;
|
||||
}
|
||||
|
@ -131,7 +131,7 @@
|
||||
<div style='padding-bottom: 50px'>
|
||||
<?php
|
||||
$version = '7.0NG.776';
|
||||
$build = '240318';
|
||||
$build = '240325';
|
||||
$banner = "v$version Build $build";
|
||||
error_reporting(0);
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
%define debug_package %{nil}
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.776
|
||||
%define release 240318
|
||||
%define release 240325
|
||||
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name httpd
|
||||
|
@ -6,7 +6,7 @@
|
||||
%define debug_package %{nil}
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.776
|
||||
%define release 240318
|
||||
%define release 240325
|
||||
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name httpd
|
||||
|
@ -3,7 +3,7 @@
|
||||
#
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.776
|
||||
%define release 240318
|
||||
%define release 240325
|
||||
%define httpd_name httpd
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name apache2
|
||||
|
@ -2885,7 +2885,7 @@ SET @short_name = 'pandorafms.mysql';
|
||||
SET @name = 'MySQL';
|
||||
SET @section = 'app';
|
||||
SET @description = 'Monitor MySQL databases';
|
||||
SET @version = '1.1';
|
||||
SET @version = '1.2';
|
||||
INSERT IGNORE INTO `tdiscovery_apps` (`id_app`, `short_name`, `name`, `section`, `description`, `version`) VALUES ('', @short_name, @name, @section, @description, @version);
|
||||
SELECT @id_app := `id_app` FROM `tdiscovery_apps` WHERE `short_name` = @short_name;
|
||||
|
||||
|
@ -1498,6 +1498,45 @@ class Client
|
||||
if ($filepath !== null) {
|
||||
include $filepath;
|
||||
|
||||
if ((bool) $config['history_db_enabled'] === true) {
|
||||
if (isset($config['history_db_connection']) === false
|
||||
|| $config['history_db_connection'] === false
|
||||
) {
|
||||
ob_start();
|
||||
$config['history_db_connection'] = db_connect(
|
||||
$config['history_db_host'],
|
||||
$config['history_db_name'],
|
||||
$config['history_db_user'],
|
||||
io_output_password($config['history_db_pass']),
|
||||
$config['history_db_port'],
|
||||
false
|
||||
);
|
||||
ob_get_clean();
|
||||
}
|
||||
|
||||
if ($config['history_db_connection'] !== false) {
|
||||
$curr_mysql_version_hist = @mysql_db_process_sql(
|
||||
'SELECT VERSION() AS version',
|
||||
'affected_rows',
|
||||
$config['history_db_connection'],
|
||||
false
|
||||
);
|
||||
|
||||
$curr_mysql_version_hist = $curr_mysql_version_hist[0]['version'];
|
||||
|
||||
if (is_string($curr_mysql_version_hist) === true
|
||||
&& empty($curr_mysql_version_hist) === false
|
||||
) {
|
||||
if (isset($mysql_version) === true
|
||||
&& is_string($mysql_version) === true
|
||||
&& $this->compareVersions($curr_mysql_version_hist, $mysql_version) < 0
|
||||
) {
|
||||
throw new \Exception('MySQL version (history database) >= '.$mysql_version.' is required');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$curr_php_version = phpversion();
|
||||
$curr_mysql_version = db_get_value_sql('SELECT VERSION() AS version');
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
package: pandorafms-server
|
||||
Version: 7.0NG.776-240318
|
||||
Version: 7.0NG.776-240325
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
@ -14,7 +14,7 @@
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.776-240318"
|
||||
pandora_version="7.0NG.776-240325"
|
||||
|
||||
package_cpan=0
|
||||
package_pandora=1
|
||||
|
@ -46,7 +46,7 @@ our @EXPORT = qw(
|
||||
|
||||
# version: Defines actual version of Pandora Server for this module only
|
||||
my $pandora_version = "7.0NG.776";
|
||||
my $pandora_build = "240318";
|
||||
my $pandora_build = "240325";
|
||||
our $VERSION = $pandora_version." ".$pandora_build;
|
||||
|
||||
# Setup hash
|
||||
|
@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
|
||||
|
||||
# version: Defines actual version of Pandora Server for this module only
|
||||
my $pandora_version = "7.0NG.776";
|
||||
my $pandora_build = "240318";
|
||||
my $pandora_build = "240325";
|
||||
our $VERSION = $pandora_version." ".$pandora_build;
|
||||
|
||||
our %EXPORT_TAGS = ( 'all' => [ qw() ] );
|
||||
|
@ -7,7 +7,7 @@
|
||||
%define debug_package %{nil}
|
||||
%define name pandorafms_server
|
||||
%define version 7.0NG.776
|
||||
%define release 240318
|
||||
%define release 240325
|
||||
|
||||
Summary: Pandora FMS Server
|
||||
Name: %{name}
|
||||
|
@ -4,7 +4,7 @@
|
||||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_server
|
||||
%define version 7.0NG.776
|
||||
%define release 240318
|
||||
%define release 240325
|
||||
|
||||
Summary: Pandora FMS Server
|
||||
Name: %{name}
|
||||
|
@ -9,7 +9,7 @@
|
||||
# **********************************************************************
|
||||
|
||||
PI_VERSION="7.0NG.776"
|
||||
PI_BUILD="240318"
|
||||
PI_BUILD="240325"
|
||||
|
||||
MODE=$1
|
||||
if [ $# -gt 1 ]; then
|
||||
|
@ -38,7 +38,7 @@ use PandoraFMS::Config;
|
||||
use PandoraFMS::DB;
|
||||
|
||||
# version: define current version
|
||||
my $version = "7.0NG.776 Build 240318";
|
||||
my $version = "7.0NG.776 Build 240325";
|
||||
|
||||
# Pandora server configuration
|
||||
my %conf;
|
||||
|
@ -36,7 +36,7 @@ use Encode::Locale;
|
||||
Encode::Locale::decode_argv;
|
||||
|
||||
# version: define current version
|
||||
my $version = "7.0NG.776 Build 240318";
|
||||
my $version = "7.0NG.776 Build 240325";
|
||||
|
||||
# save program name for logging
|
||||
my $progname = basename($0);
|
||||
|
@ -1,83 +1,115 @@
|
||||
#!/bin/bash
|
||||
# DNS Plugin Pandora FMS Server plugin
|
||||
# (c) Antonio Delgado, Sancho Lerena 2010
|
||||
|
||||
# Hint: Use this DNS servers as reference:
|
||||
# Google: 8.8.8.8
|
||||
# Telefonica: 194.179.1.101
|
||||
|
||||
function help {
|
||||
echo -e "DNS Plugin for Pandora FMS Plugin server. http://pandorafms.com"
|
||||
echo " "
|
||||
echo "This plugin is used to check if a specific domain return a specific IP "
|
||||
echo -e "address, and to check how time (milisecs) takes the DNS to answer. \n"
|
||||
echo -e "Syntax:"
|
||||
echo -e "\t\t-d domain to check"
|
||||
echo -e "\t\t-i IP address to check with domain"
|
||||
echo -e "\t\t-s DNS Server to check"
|
||||
echo -e "\t\t-t Do a DNS time response check instead DNS resolve test"
|
||||
echo -e "Samples:"
|
||||
echo " ./dns_plugin.sh -d artica.es -i 69.163.176.17 -s 8.8.8.8"
|
||||
echo " ./dns_plugin.sh -d artica.es -t -s 8.8.8.8"
|
||||
echo ""
|
||||
exit
|
||||
}
|
||||
|
||||
if [ $# -eq 0 ]
|
||||
then
|
||||
help
|
||||
fi
|
||||
|
||||
TIMEOUT_CHECK=0
|
||||
DOMAIN_CHECK=""
|
||||
# Default variables
|
||||
TIMEOUT_DURATION=15
|
||||
IP_CHECK=""
|
||||
DNS_CHECK=""
|
||||
DOMAIN_CHECK=""
|
||||
TIME_CHECK=0
|
||||
|
||||
# Main parsing code
|
||||
while getopts ":htd:i:s:" optname
|
||||
do
|
||||
case "$optname" in
|
||||
"h")
|
||||
help
|
||||
;;
|
||||
"d")
|
||||
# Regular expression to validate IP address
|
||||
IP_REGEX="^(25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)$"
|
||||
|
||||
# Function to display help with command-line options
|
||||
function show_help {
|
||||
echo "DNS Plugin for Pandora FMS Plugin server. http://pandorafms.com"
|
||||
echo " "
|
||||
echo "This plugin is used to check if a specific domain returns a specific IP address,"
|
||||
echo "and to check how much time (in milliseconds) it takes the DNS to answer."
|
||||
echo " "
|
||||
echo "Syntax:"
|
||||
echo " -d domain to check"
|
||||
echo " -i IP address to check with the domain"
|
||||
echo " -s DNS Server to check"
|
||||
echo " -t Do a DNS time response check instead of a DNS resolve test"
|
||||
echo " "
|
||||
echo "Samples:"
|
||||
echo " ./dns_plugin.sh -d example.com -i 192.168.1.1 -s 8.8.8.8"
|
||||
echo " ./dns_plugin.sh -d example.com -t -s 8.8.8.8"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Function to perform DNS query and get IP addresses
|
||||
function do_dns_query {
|
||||
results=$(timeout "${TIMEOUT_DURATION}s" dig "@$DNS_CHECK" +nocmd "$DOMAIN_CHECK" +multiline +answer A)
|
||||
echo "$results"
|
||||
}
|
||||
|
||||
# Command-line argument processing with getopts
|
||||
while getopts ":htd:i:s:" opt; do
|
||||
case "$opt" in
|
||||
d)
|
||||
DOMAIN_CHECK=$OPTARG
|
||||
;;
|
||||
"t")
|
||||
TIMEOUT_CHECK=1
|
||||
;;
|
||||
"i")
|
||||
i)
|
||||
# Validate the provided IP address
|
||||
if [[ $OPTARG =~ $IP_REGEX ]]; then
|
||||
IP_CHECK=$OPTARG
|
||||
else
|
||||
echo "The provided IP address is incorrect: $OPTARG" >&2
|
||||
echo "-1"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
"s")
|
||||
s)
|
||||
# Validate the DNS server IP address
|
||||
if [[ $OPTARG =~ $IP_REGEX ]]; then
|
||||
DNS_CHECK=$OPTARG
|
||||
else
|
||||
echo "The provided DNS server IP address is incorrect: $OPTARG" >&2
|
||||
echo "-1"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
t)
|
||||
TIME_CHECK=1
|
||||
;;
|
||||
|
||||
?)
|
||||
help
|
||||
show_help
|
||||
;;
|
||||
default)
|
||||
help
|
||||
;;
|
||||
|
||||
esac
|
||||
done
|
||||
|
||||
if [ -z "$DNS_CHECK" ]
|
||||
then
|
||||
help
|
||||
# Check if all necessary values are provided
|
||||
if [ -z "$DOMAIN_CHECK" ] || ([ -z "$IP_CHECK" ] && [ $TIME_CHECK -eq 0 ]) || [ -z "$DNS_CHECK" ]; then
|
||||
echo "Missing or incomplete arguments." >&2
|
||||
echo "-1"
|
||||
show_help
|
||||
fi
|
||||
|
||||
|
||||
results=`dig @$DNS_CHECK +nocmd $DOMAIN_CHECK +multiline +noall +answer A`
|
||||
targets=`echo "$results"| awk '{print $5}'`
|
||||
|
||||
for x in $targets; do
|
||||
if [ "$x" == "$IP_CHECK" ]; then
|
||||
echo 1
|
||||
# Check if time response check should be performed
|
||||
if [ $TIME_CHECK -eq 1 ]; then
|
||||
results=$(do_dns_query)
|
||||
RETURN_TIME=$(echo "$results" | awk '/Query time:/ {print $4}')
|
||||
echo "$RETURN_TIME"
|
||||
exit 0
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# Check if IP address check should be performed
|
||||
if [ -n "$IP_CHECK" ]; then
|
||||
results=$(do_dns_query)
|
||||
targets=$(echo "$results" | awk '{print $5}')
|
||||
|
||||
found=0
|
||||
for x in $targets; do
|
||||
if [ "$x" == "$IP_CHECK" ]; then
|
||||
found=1
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$found" -eq 0 ]; then
|
||||
echo "0"
|
||||
else
|
||||
echo "1"
|
||||
fi
|
||||
else
|
||||
# Show error if IP to check is not specified
|
||||
echo "No IP to check was specified for the domain: $DOMAIN_CHECK" >&2
|
||||
echo "-1"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 0
|
||||
exit 0
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user