Merge remote-tracking branch 'origin/develop' into ent-3178-integrar-terminal-web-en-la-consola-de-pandora-y-explorar-otras-utilidades-anyterm-replace

Conflicts:
	pandora_console/extensions/quick_shell.php
This commit is contained in:
fbsanchez 2019-11-12 13:25:30 +01:00
commit 0022408538
51 changed files with 490 additions and 152 deletions

View File

@ -1,5 +1,5 @@
package: pandorafms-agent-unix
Version: 7.0NG.740-191029
Version: 7.0NG.740-191112
Architecture: all
Priority: optional
Section: admin

View File

@ -14,7 +14,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
pandora_version="7.0NG.740-191029"
pandora_version="7.0NG.740-191112"
echo "Test if you has the tools for to make the packages."
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null

View File

@ -42,7 +42,7 @@ my $Sem = undef;
my $ThreadSem = undef;
use constant AGENT_VERSION => '7.0NG.740';
use constant AGENT_BUILD => '191029';
use constant AGENT_BUILD => '191112';
# Agent log default file size maximum and instances
use constant DEFAULT_MAX_LOG_SIZE => 600000;

View File

@ -3,7 +3,7 @@
#
%define name pandorafms_agent_unix
%define version 7.0NG.740
%define release 191029
%define release 191112
Summary: Pandora FMS Linux agent, PERL version
Name: %{name}

View File

@ -3,7 +3,7 @@
#
%define name pandorafms_agent_unix
%define version 7.0NG.740
%define release 191029
%define release 191112
Summary: Pandora FMS Linux agent, PERL version
Name: %{name}

View File

@ -10,7 +10,7 @@
# **********************************************************************
PI_VERSION="7.0NG.740"
PI_BUILD="191029"
PI_BUILD="191112"
OS_NAME=`uname -s`
FORCE=0

View File

@ -186,7 +186,7 @@ UpgradeApplicationID
{}
Version
{191029}
{191112}
ViewReadme
{Yes}

View File

@ -30,7 +30,7 @@ using namespace Pandora;
using namespace Pandora_Strutils;
#define PATH_SIZE _MAX_PATH+1
#define PANDORA_VERSION ("7.0NG.740(Build 191029)")
#define PANDORA_VERSION ("7.0NG.740(Build 191112)")
string pandora_path;
string pandora_dir;

View File

@ -11,7 +11,7 @@ BEGIN
VALUE "LegalCopyright", "Artica ST"
VALUE "OriginalFilename", "PandoraAgent.exe"
VALUE "ProductName", "Pandora FMS Windows Agent"
VALUE "ProductVersion", "(7.0NG.740(Build 191029))"
VALUE "ProductVersion", "(7.0NG.740(Build 191112))"
VALUE "FileVersion", "1.0.0.0"
END
END

View File

@ -1,5 +1,5 @@
package: pandorafms-console
Version: 7.0NG.740-191029
Version: 7.0NG.740-191112
Architecture: all
Priority: optional
Section: admin

View File

@ -14,7 +14,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
pandora_version="7.0NG.740-191029"
pandora_version="7.0NG.740-191112"
package_pear=0
package_pandora=1

View File

@ -13,6 +13,7 @@ fi
# Install pandora_websocket_engine service.
cp -pf %{prefix}/pandora_console/pandora_websocket_engine /etc/init.d/
chmod +x /etc/init.d/pandora_websocket_engine
echo "You can now start the Pandora FMS Websocket service by executing"
echo " /etc/init.d/pandora_websocket_engine start"

View File

@ -331,19 +331,19 @@ if ($config['menu_type'] == 'classic') {
// Support.
if (defined('PANDORA_ENTERPRISE')) {
$header_support_link = 'https://support.artica.es/';
$header_support_link = $config['custom_support_url'];
} else {
$header_support_link = 'https://pandorafms.com/forums/';
}
$header_support = '<div id="header_support">';
$header_support .= '<a href="'.$header_support_link.'" target="_blank">';
$header_support .= '<a href="'.ui_get_full_external_url($header_support_link).'" target="_blank">';
$header_support .= html_print_image('/images/header_support.png', true, ['title' => __('Go to support'), 'class' => 'bot', 'alt' => 'user']);
$header_support .= '</a></div>';
// Documentation.
$header_docu = '<div id="header_docu">';
$header_docu .= '<a href="https://wiki.pandorafms.com/index.php?title=Main_Page" target="_blank">';
$header_docu .= '<a href="'.ui_get_full_external_url($config['custom_docs_url']).'" target="_blank">';
$header_docu .= html_print_image('/images/header_docu.png', true, ['title' => __('Go to documentation'), 'class' => 'bot', 'alt' => 'user']);
$header_docu .= '</a></div>';

View File

@ -87,7 +87,7 @@ echo '<div id="login_help_dialog" title="'.__('Welcome to %s', get_product_name(
echo '</td>';
echo '<td style="border:1px solid #FFF; text-align:center;">';
echo '<a href="'.$config['custom_docs_url'].'" target="_blank" style="text-decoration:none;">'.html_print_image(
echo '<a href="'.ui_get_full_external_url($config['custom_docs_url']).'" target="_blank" style="text-decoration:none;">'.html_print_image(
'images/documentation.png',
true,
[
@ -96,7 +96,7 @@ echo '<div id="login_help_dialog" title="'.__('Welcome to %s', get_product_name(
]
).'</a>';
echo '<br style="margin-bottom: 40px;" />';
echo '<a style="font-size: 9pt;" href="'.$config['custom_docs_url'].'" target="_blank">'.__('Documentation').'</span></a>';
echo '<a style="font-size: 9pt;"href="'.ui_get_full_external_url($config['custom_docs_url']).'" target="_blank">'.__('Documentation').'</span></a>';
echo '</td>';
echo '</tr>';
echo '</table>';

View File

@ -88,6 +88,24 @@ if (!empty($config['login_background'])) {
$login_body_style = "style=\"background:linear-gradient(74deg, #02020255 36%, transparent 36%), url('".$background_url."');\"";
}
// Get alternative custom in case of db fail.
$custom_fields = [
'custom_logo_login',
'custom_splash_login',
'custom_title1_login',
'custom_title2_login',
'rb_product_name',
];
foreach ($custom_fields as $field) {
if (!isset($config[$field])) {
if (isset($config[$field.'_alt'])) {
$config[$field] = $config[$field.'_alt'];
$custom_conf_enabled = true;
}
}
}
// Get the custom icons.
$docs_logo = ui_get_docs_logo();
$support_logo = ui_get_support_logo();
@ -102,7 +120,7 @@ if ($docs_logo !== false) {
echo '<li><a href="'.$config['custom_docs_url'].'" target="_blank">'.__('Docs').'</li>';
if (file_exists(ENTERPRISE_DIR.'/load_enterprise.php')) {
if ($support_logo !== false) {
echo '<li id="li_margin_left"><a href="'.$config['custom_support_url'].'" target="_blank"><img src="'.$support_logo.'" alt="support"></a></li>';
echo '<li id="li_margin_left"><a href="'.$config['custom_docs_url'].'" target="_blank"><img src="'.$support_logo.'" alt="support"></a></li>';
}
echo '<li><a href="'.$config['custom_support_url'].'" target="_blank">'.__('Support').'</li>';
@ -133,7 +151,7 @@ if (defined('METACONSOLE')) {
html_print_image('enterprise/images/custom_logo_login/'.$config['custom_logo_login'], false, ['class' => 'login_logo', 'alt' => 'logo', 'border' => 0, 'title' => $logo_title], false, true);
}
} else {
if (!isset($config['custom_logo_login']) || $config['custom_logo_login'] == 0) {
if (!isset($config['custom_logo_login']) || $config['custom_logo_login'] === 0) {
html_print_image('images/custom_logo_login/pandora_logo.png', false, ['class' => 'login_logo', 'alt' => 'logo', 'border' => 0, 'title' => $logo_title], false, true);
} else {
html_print_image('images/custom_logo_login/'.$config['custom_logo_login'], false, ['class' => 'login_logo', 'alt' => 'logo', 'border' => 0, 'title' => $logo_title], false, true);
@ -423,9 +441,14 @@ if ($login_screen == 'logout') {
}
switch ($login_screen) {
case 'error_authconfig':
case 'error_dbconfig':
$title = __('Problem with %s database', get_product_name());
case 'error_authconfig':
if (!isset($config['rb_product_name_alt'])) {
$title = __('Problem with %s database', get_product_name());
} else {
$title = __('Problem with %s database', $config['rb_product_name_alt']);
}
$message = __(
'Cannot connect to the database, please check your database setup in the <b>include/config.php</b> file.<i><br/><br/>
Probably your database, hostname, user or password values are incorrect or

View File

@ -83,7 +83,6 @@ background:black;opacity:0.1;left:0px;top:0px;width:100%;height:100%;
</style>
</head>
<body>
<div id="alert_messages_na">
<div class='modalheade'>
@ -100,10 +99,29 @@ background:black;opacity:0.1;left:0px;top:0px;width:100%;height:100%;
?>
</div>
</div>
<a href='https://wiki.pandorafms.com/index.php?title=Pandora:Documentation_en:Configuration' target='_blank'>
<div class='modalwikibutto cerrar'>
<span class='modalwikibuttontex'> <?php echo __('Documentation'); ?></span>
</div>
<?php
$custom_conf_enabled = false;
foreach ($config as $key => $value) {
if (preg_match('/._alt/i', $key)) {
$custom_conf_enabled = true;
break;
}
}
if (!$custom_conf_enabled) {
echo '
<a href="https://wiki.pandorafms.com/index.php?title=Pandora:Documentation_en:Configuration" target="_blank">
<div class="modalwikibutto cerrar">
<span class="modalwikibuttontex">'.__('Documentation').'
</span>
</div>
</a>
';
}
?>
</a>
</div>

View File

@ -14,7 +14,7 @@
// Load global vars
check_login();
// Take some parameters (GET)
// Take some parameters (GET).
$offset = (int) get_parameter('offset');
$group_id = (int) get_parameter('group_id');
$ag_group = get_parameter('ag_group_refresh', -1);
@ -47,10 +47,10 @@ require_once 'include/functions_users.php';
$search = get_parameter('search', '');
// Prepare the tab system to the future
// Prepare the tab system to the future.
$tab = 'view';
// Setup tab
// Setup tab.
$viewtab['text'] = '<a href="index.php?sec=estado&sec2=operation/agentes/estado_agente">'.html_print_image('images/operation.png', true, ['title' => __('View')]).'</a>';
$viewtab['operation'] = true;
@ -59,10 +59,10 @@ $viewtab['active'] = false;
$onheader = ['view' => $viewtab];
// Header
// Header.
ui_print_page_header(__('Agents defined in %s', get_product_name()), 'images/agent_mc.png', false, '', true, $onheader);
// Perform actions
// Perform actions.
$agent_to_delete = (int) get_parameter('borrar_agente');
$enable_agent = (int) get_parameter('enable_agent');
$disable_agent = (int) get_parameter('disable_agent');
@ -99,7 +99,7 @@ if ($agent_to_delete) {
ui_print_result_message($result, __('Success deleted agent.'), __('Could not be deleted.'));
if (enterprise_installed()) {
// Check if the remote config file still exist
// Check if the remote config file still exist.
if (isset($config['remote_config'])) {
enterprise_include_once('include/functions_config_agents.php');
if (enterprise_hook('config_agents_has_remote_configuration', [$id_agente])) {
@ -114,7 +114,7 @@ if ($enable_agent) {
$alias = agents_get_alias($enable_agent);
if ($result) {
// Update the agent from the metaconsole cache
// Update the agent from the metaconsole cache.
enterprise_include_once('include/functions_agents.php');
$values = ['disabled' => 0];
enterprise_hook('agent_update_from_cache', [$enable_agent, $values, $server_name]);
@ -136,7 +136,7 @@ if ($disable_agent) {
$alias = agents_get_alias($disable_agent);
if ($result) {
// Update the agent from the metaconsole cache
// Update the agent from the metaconsole cache.
enterprise_include_once('include/functions_agents.php');
$values = ['disabled' => 1];
enterprise_hook('agent_update_from_cache', [$disable_agent, $values, $server_name]);
@ -223,6 +223,10 @@ switch ($config['dbtype']) {
case 'oracle':
$order_collation = '';
break;
default:
// Default.
break;
}
$selected = true;
@ -252,6 +256,10 @@ switch ($sortField) {
'order' => 'DESC',
];
break;
default:
// Default.
break;
}
break;
@ -274,6 +282,10 @@ switch ($sortField) {
'order' => 'DESC',
];
break;
default:
// Default.
break;
}
break;
@ -296,6 +308,10 @@ switch ($sortField) {
'order' => 'DESC',
];
break;
default:
// Default.
break;
}
break;
@ -318,6 +334,10 @@ switch ($sortField) {
'order' => 'DESC',
];
break;
default:
// Default.
break;
}
break;
@ -378,7 +398,7 @@ if ($os != 0) {
}
$user_groups_to_sql = '';
// Show only selected groups
// Show only selected groups.
if ($ag_group > 0) {
$ag_groups = [];
$ag_groups = (array) $ag_group;
@ -388,7 +408,7 @@ if ($ag_group > 0) {
$user_groups_to_sql = implode(',', $ag_groups);
} else {
// Concatenate AW and AD permisions to get all the possible groups where the user can manage
// Concatenate AW and AD permisions to get all the possible groups where the user can manage.
$user_groupsAW = users_get_groups($config['id_user'], 'AW');
$user_groupsAD = users_get_groups($config['id_user'], 'AD');
@ -431,24 +451,25 @@ $sql = sprintf(
$agents = db_get_all_rows_sql($sql);
// Delete rnum row generated by oracle_recode_query() function
// Delete rnum row generated by oracle_recode_query() function.
if (($config['dbtype'] == 'oracle') && ($agents !== false)) {
for ($i = 0; $i < count($agents); $i++) {
unset($agents[$i]['rnum']);
}
}
// Prepare pagination
// Prepare pagination.
ui_pagination($total_agents, "index.php?sec=gagente&sec2=godmode/agentes/modificar_agente&group_id=$ag_group&recursion=$recursion&search=$search&sort_field=$sortField&sort=$sort&disabled=$disabled&os=$os", $offset);
if ($agents !== false) {
// Urls to sort the table.
// Agent name size and description for Chinese and Japanese languages are adjusted
$agent_font_size = '7';
$description_font_size = '6.5';
if ($config['language'] == 'ja' || $config['language'] == 'zh_CN' || $own_info['language'] == 'ja' || $own_info['language'] == 'zh_CN') {
$agent_font_size = '15';
$description_font_size = '11';
if ($config['language'] == 'ja'
|| $config['language'] == 'zh_CN'
|| $own_info['language'] == 'ja'
|| $own_info['language'] == 'zh_CN'
) {
// Adds a custom font size for Japanese and Chinese language.
$custom_font_size = 'custom_font_size';
}
$url_up_agente = 'index.php?sec=gagente&sec2=godmode/agentes/modificar_agente&group_id='.$ag_group.'&recursion='.$recursion.'&search='.$search.'&os='.$os.'&offset='.$offset.'&sort_field=name&sort=up&disabled=$disabled';
@ -476,21 +497,21 @@ if ($agents !== false) {
$rowPair = true;
$iterator = 0;
foreach ($agents as $agent) {
// Begin Update tagente.remote 0/1 with remote agent function return
// Begin Update tagente.remote 0/1 with remote agent function return.
if (enterprise_hook('config_agents_has_remote_configuration', [$agent['id_agente']])) {
db_process_sql_update('tagente', ['remote' => 1], 'id_agente = '.$agent['id_agente'].'');
} else {
db_process_sql_update('tagente', ['remote' => 0], 'id_agente = '.$agent['id_agente'].'');
}
// End Update tagente.remote 0/1 with remote agent function return
// End Update tagente.remote 0/1 with remote agent function return.
$all_groups = agents_get_all_groups_agent($agent['id_agente'], $agent['id_grupo']);
$check_aw = check_acl_one_of_groups($config['id_user'], $all_groups, 'AW');
$check_ad = check_acl_one_of_groups($config['id_user'], $all_groups, 'AD');
$cluster = db_get_row_sql('select id from tcluster where id_agent = '.$agent['id_agente']);
// Do not show the agent if there is not enough permissions
// Do not show the agent if there is not enough permissions.
if (!$check_aw && !$check_ad) {
continue;
}
@ -512,7 +533,7 @@ if ($agents !== false) {
$rowPair = !$rowPair;
$iterator++;
// Agent name
// Agent name.
echo "<tr class='$rowclass'><td class='$tdcolor' width='40%'>";
if ($agent['disabled']) {
echo '<em>';
@ -537,7 +558,7 @@ if ($agents !== false) {
} else {
echo '<a alt ='.$agent['nombre']." href='index.php?sec=gagente&
sec2=godmode/agentes/configurar_agente&tab=$main_tab&
id_agente=".$agent['id_agente']."'>".'<span style="font-size: '.$agent_font_size.'pt" title="'.$agent['nombre'].'">'.$agent['alias'].'</span>'.'</a>';
id_agente=".$agent['id_agente']."'>".'<span class="'.$custom_font_size.' title ="'.$agent['nombre'].'">'.$agent['alias'].'</span>'.'</a>';
}
echo '</strong>';
@ -617,12 +638,12 @@ if ($agents !== false) {
echo '</td>';
// Operating System icon
// Operating System icon.
echo "<td class='$tdcolor' align='left' valign='middle'>";
ui_print_os_icon($agent['id_os'], false);
echo '</td>';
// Type agent (Networt, Software or Satellite)
// Type agent (Networt, Software or Satellite).
echo "<td class='$tdcolor' align='left' valign='middle'>";
echo ui_print_type_agent_icon(
$agent['id_os'],
@ -634,10 +655,12 @@ if ($agents !== false) {
echo '</td>';
// Group icon and name
// Group icon and name.
echo "<td class='$tdcolor' align='left' valign='middle'>".ui_print_group_icon($agent['id_grupo'], true).'</td>';
// Description
echo "<td class='".$tdcolor."f9'>".ui_print_truncate_text($agent['comentarios'], 'description', true, true, true, '[&hellip;]', 'font-size: '.$description_font_size.'pt;').'</td>';
// Description.
echo "<td class='".$tdcolor."f9'><span class='".$custom_font_size."'>".ui_print_truncate_text($agent['comentarios'], 'description', true, true, true, '[&hellip;]').'</span></td>';
// Action
// When there is only one element in page it's necesary go back page.
if ((count($agents) == 1) && ($offset >= $config['block_size'])) {
@ -695,7 +718,7 @@ if ($agents !== false) {
}
if (check_acl($config['id_user'], 0, 'AW')) {
// Create agent button
// Create agent button.
echo '<div style="text-align: right;">';
echo '<form method="post" action="index.php?sec=gagente&amp;sec2=godmode/agentes/configurar_agente">';
html_print_input_hidden('new_agent', 1);

View File

@ -3777,11 +3777,14 @@ $(document).ready (function () {
});
$("#checkbox-checkbox_show_resume").change(function(){
if($(this).is(":checked")){
type = $("#type").val();
if($(this).is(":checked") && type !== 'general'){
$("#row_select_fields2").show();
$("#row_select_fields3").show();
}
else{
$("#row_select_fields2").hide();
$("#row_select_fields3").hide();
}
});

View File

@ -418,7 +418,7 @@ if ($own_info['is_admin']) {
else {
foreach ($info1 as $key => $usr) {
$u = get_user_info($key);
$g = users_get_groups($key, 'AR', $u['is_admin']);
$g = users_get_groups($key, false, $u['is_admin']);
$result = array_intersect($g, $own_groups);
// Show users without profile too.

View File

@ -20,7 +20,7 @@
/**
* Pandora build version and version
*/
$build_version = 'PC191029';
$build_version = 'PC191112';
$pandora_version = 'v7.0NG.740';
// Do not overwrite default timezone set if defined.
@ -148,8 +148,6 @@ if (!isset($config['homeurl_static'])) {
}
}
db_select_engine();
$config['dbconnection'] = db_connect();
if (! defined('EXTENSIONS_DIR')) {
@ -160,6 +158,9 @@ if (! defined('ENTERPRISE_DIR')) {
define('ENTERPRISE_DIR', 'enterprise');
}
db_select_engine();
$config['dbconnection'] = db_connect();
require_once $ownDir.'functions_config.php';
date_default_timezone_set('Europe/Madrid');

View File

@ -147,7 +147,7 @@ define('COL_UNKNOWN', '#B2B2B2');
define('COL_DOWNTIME', '#976DB1');
define('COL_IGNORED', '#DDD');
define('COL_ALERTFIRED', '#F36201');
define('COL_MINOR', '#B2B2B2');
define('COL_MINOR', '#F099A2');
define('COL_MAJOR', '#C97A4A');
define('COL_INFORMATIONAL', '#E4E4E4');
define('COL_MAINTENANCE', '#4a83f3');

View File

@ -4092,6 +4092,18 @@ function mask2cidr($mask)
}
/**
* convert the cidr prefix to subnet mask
*
* @param int cidr prefix
* @return string subnet mask
*/
function cidr2mask($int)
{
return long2ip(-1 << (32 - (int) $int));
}
function get_help_info($section_name)
{
global $config;

View File

@ -1905,7 +1905,7 @@ function api_set_delete_agent($id, $thrash1, $other, $thrash3)
*
* @param $thrash1 Don't use.
* @param $thrash2 Don't use.
* @param array $other it's array, $other as param are the filters available <filter_so>;<filter_group>;<filter_modules_states>;<filter_name>;<filter_policy>;<csv_separator> in this order
* @param array $other it's array, $other as param are the filters available <filter_so>;<filter_group>;<filter_modules_states>;<filter_name>;<filter_policy>;<csv_separator><recursion> in this order
* and separator char (after text ; ) and separator (pass in param othermode as othermode=url_encode_separator_<separator>)
* example for CSV:
*
@ -1934,17 +1934,25 @@ function api_get_all_agents($thrash1, $thrash2, $other, $returnType)
}
if (isset($other['data'][0])) {
// Filter by SO
// Filter by SO.
if ($other['data'][0] != '') {
$where .= ' AND tconfig_os.id_os = '.$other['data'][0];
}
}
if (isset($other['data'][1])) {
// Filter by group
// Filter by group.
if ($other['data'][1] != '') {
$where .= ' AND id_grupo = '.$other['data'][1];
$ag_groups = $other['data'][1];
// Recursion.
if ($other['data'][6] === '1') {
$ag_groups = groups_get_id_recursive($ag_groups, true);
}
$ag_groups = implode(',', (array) $ag_groups);
}
$where .= ' AND (id_grupo IN ('.$ag_groups.') OR id_group IN ('.$ag_groups.'))';
}
if (isset($other['data'][3])) {
@ -1974,24 +1982,27 @@ function api_get_all_agents($thrash1, $thrash2, $other, $returnType)
// Initialization of array
$result_agents = [];
// Filter by state
if (defined('METACONSOLE')) {
$sql = "SELECT id_agente, alias, direccion, comentarios,
tconfig_os.name, url_address, nombre
FROM tconfig_os, tmetaconsole_agent
LEFT JOIN tagent_secondary_group
ON tmetaconsole_agent.id_agente = tagent_secondary_group.id_agent
WHERE tmetaconsole_agent.id_os = tconfig_os.id_os
AND disabled = 0 $where AND $groups";
if (is_metaconsole()) {
$sql = 'SELECT id_agente, alias, direccion, comentarios,
tconfig_os.name, url_address, nombre
FROM tconfig_os, tmetaconsole_agent
LEFT JOIN tmetaconsole_agent_secondary_group
ON tmetaconsole_agent.id_agente = tmetaconsole_agent_secondary_group.id_agent
WHERE tmetaconsole_agent.id_os = tconfig_os.id_os
AND disabled = 0 '.$where.' AND '.$groups;
} else {
$sql = "SELECT id_agente, alias, direccion, comentarios,
$sql = 'SELECT id_agente, alias, direccion, comentarios,
tconfig_os.name, url_address, nombre
FROM tconfig_os, tagente
LEFT JOIN tagent_secondary_group
ON tagente.id_agente = tagent_secondary_group.id_agent
WHERE tagente.id_os = tconfig_os.id_os
AND disabled = 0 $where AND $groups";
AND disabled = 0 '.$where.' AND '.$groups;
}
// Group by agent
$sql .= ' GROUP BY id_agente';
$all_agents = db_get_all_rows_sql($sql);
// Filter by status: unknown, warning, critical, without modules
@ -9080,7 +9091,9 @@ function api_set_delete_module($id, $id2, $other, $trash1)
function api_set_module_data($id, $thrash2, $other, $trash1)
{
if (defined('METACONSOLE')) {
global $config;
if (is_metaconsole()) {
return;
}
@ -9129,8 +9142,9 @@ function api_set_module_data($id, $thrash2, $other, $trash1)
);
if (false === @file_put_contents($config['remote_config'].'/'.io_safe_output($agent['nombre']).'.'.$time.'.data', $xml)) {
returnError('error_file', 'Can save agent data xml.');
returnError('error_file', 'XML file could not be generated in path: '.$config['remote_config']);
} else {
echo __('XML file was generated successfully in path: ').$config['remote_config'];
returnData('string', ['type' => 'string', 'data' => $xml]);
return;
}
@ -14226,6 +14240,46 @@ function api_get_agents_id_name_by_cluster_name($cluster_name, $trash1, $trash2,
}
/**
* Get agents alias, id and server id (if Metaconsole) given agent alias
* matching part of it.
*
* @param string $alias
* @param $trash1
* @param $trash2
* @param string $returnType
* Example:
* api.php?op=get&op2=agents_id_name_by_alias&return_type=json&apipass=1234&user=admin&pass=pandora&id=pandrora&id2=strict
*/
function api_get_agents_id_name_by_alias($alias, $strict, $trash2, $returnType)
{
global $config;
if ($strict == 'strict') {
$where_clause = " alias = '$alias'";
} else {
$where_clause = " upper(alias) LIKE upper('%$alias%')";
}
if (is_metaconsole()) {
$all_agents = db_get_all_rows_sql("SELECT alias, id_agente, id_tagente,id_tmetaconsole_setup as 'id_server', server_name FROM tmetaconsole_agent WHERE $where_clause");
} else {
$all_agents = db_get_all_rows_sql("SELECT alias, id_agente from tagente WHERE $where_clause");
}
if ($all_agents !== false) {
$data = [
'type' => 'json',
'data' => $all_agents,
];
returnData('json', $data, JSON_FORCE_OBJECT);
} else {
returnError('error_agents', 'Alias did not match any agent.');
}
}
function api_get_modules_id_name_by_cluster_id($cluster_id)
{
global $config;

View File

@ -179,6 +179,10 @@ function reporting_make_reporting_data(
$report['group_name'] = groups_get_name($report['id_group']);
$report['contents'] = [];
if (empty($report['period'])) {
$report['period'] = $period;
}
if (empty($contents)) {
return reporting_check_structure_report($report);
}
@ -224,7 +228,12 @@ function reporting_make_reporting_data(
// General reports with 0 period means last value
// Avoid to overwrite it by template value.
if (!empty($period) && ($content['type'] !== 'general' && $content['period'] != 0)) {
$general_last_value = false;
if ($content['type'] === 'general' && $content['period'] == 0) {
$general_last_value = true;
}
if (!empty($period) && $general_last_value === false) {
$content['period'] = $period;
}

View File

@ -121,12 +121,9 @@ function html_do_report_info($report)
</tr>
<tr>
<td><b>'.__('Report date').': </b></td>';
if (isset($report['period'])) {
if (is_numeric($report['datetime']) && is_numeric($report['period'])) {
$html .= '<td>'.date($config['date_format'], ($report['datetime'] - $report['period'])).'</td>';
}
$html .= '<td></td>';
if (is_numeric($report['datetime']) && is_numeric($report['period']) && ($report['period'] != 0)) {
$html .= '<td>'.__('From').' <b>'.date($config['date_format'], ($report['datetime'] - $report['period'])).'</b></td>';
$html .= '<td>'.__('to').' <b>'.date($config['date_format'], $report['datetime']).'</b></td>';
} else {
$html .= '<td>'.__('Items period before').' <b>'.date($config['date_format'], $report['datetime']).'</b></td>';
}
@ -3583,10 +3580,10 @@ function reporting_html_general($table, $item, $pdf=0)
}
$table1->head[3] = __('Value');
$table1->style[0] = 'text-align: left';
$table1->style[1] = 'text-align: left';
$table1->style[2] = 'text-align: left';
$table1->style[3] = 'text-align: left';
$table1->style[0] = 'text-align: center';
$table1->style[1] = 'text-align: center';
$table1->style[2] = 'text-align: center';
$table1->style[3] = 'text-align: center';
// Begin - Order by agent.
foreach ($item['data'] as $key => $row) {
@ -3717,12 +3714,16 @@ function reporting_html_general($table, $item, $pdf=0)
$table_summary->head = [];
$table_summary->head_colspan = [];
$table_summary->align = [];
$table_summary->headstyle = [];
$table_summary->headstyle[0] = 'text-align: center;';
$table_summary->headstyle[1] = 'text-align: center;';
$table_summary->headstyle[2] = 'text-align: center;';
$table_summary->align[0] = 'left';
$table_summary->align[1] = 'right';
$table_summary->align[2] = 'right';
$table_summary->align[3] = 'left';
$table_summary->align[4] = 'right';
$table_summary->align[0] = 'center';
$table_summary->align[1] = 'center';
$table_summary->align[2] = 'center';
$table_summary->align[3] = 'center';
$table_summary->align[4] = 'center';
$table_summary->head_colspan[0] = 2;
$table_summary->head[0] = __('Min Value');
@ -3730,11 +3731,11 @@ function reporting_html_general($table, $item, $pdf=0)
$table_summary->head_colspan[2] = 2;
$table_summary->head[2] = __('Max Value');
$table_summary->data[0][0] = $item['min']['agent'].' - '.$item['min']['module'];
$table_summary->data[0][1] = $item['min']['formated_value'];
$table_summary->data[0][0] = $item['min']['agent'].' - '.$item['min']['module'].str_repeat('&nbsp;', 20).$item['min']['formated_value'];
$table_summary->data[0][1] = '';
$table_summary->data[0][2] = format_for_graph($item['avg_value'], 2);
$table_summary->data[0][3] = $item['max']['agent'].' - '.$item['max']['module'];
$table_summary->data[0][4] = $item['max']['formated_value'];
$table_summary->data[0][3] = $item['max']['agent'].' - '.$item['max']['module'].str_repeat('&nbsp;', 20).$item['max']['formated_value'];
$table_summary->data[0][4] = '';
if ($pdf !== 0) {
$return_pdf .= html_print_table($table_summary, true);

View File

@ -3233,6 +3233,8 @@ function ui_print_datatable(array $parameters)
{
extend: "csv",
text : "'.__('Export current page to CSV').'",
title: "export_'.$parameters['id'].'_current_page_'.date('Y-m-d').'",
fieldSeparator: "'.$config['csv_divider'].'",
exportOptions : {
modifier : {
// DataTables core
@ -5733,3 +5735,23 @@ function ui_print_comments($comments)
return io_safe_output($comentario);
}
/**
* Get complete external pandora url.
*
* @param string $url Url to be parsed.
*
* @return string Full url.
*/
function ui_get_full_external_url(string $url)
{
$url_parsed = parse_url($url);
if ($url_parsed) {
if (!isset($url_parsed['scheme'])) {
$url = 'http://'.$url;
}
}
return $url;
}

View File

@ -77,6 +77,7 @@ Besides the defined module macros, the following macros are available:
<li>_policy_: Name of the policy that the module belongs to (if applies).</li>
<li>_prevdata_: Module previous data before the alert has been triggered.</li>
<li>_rca_: Root cause analysis chain (only for services).</li>
<li>_secondarygroups_: List of all secondary groups of the agent.</li>
<li>_server_ip_: Ip of server assigned to agent. </li>
<li>_server_name_: Name of server assigned to agent. </li>
<li>_target_ip_: IP address for the modules target.</li>

View File

@ -77,6 +77,7 @@ Además de las macros de módulo definidas, las siguientes macros están disponi
<li>_policy_: Nombre de la política a la que pertenece el módulo (si aplica).</li>
<li>_prevdata_: Dato previo antes de disparase la alerta.</li>
<li>_rca_: Cadena de análasis de causa raíz (sólo para servicios).</li>
<li>_secondarygroups_: Lista de todos los grupos secundarios del agente.</li>
<li>_server_ip_: Ip del servidor al que el agente está asignado. </li>
<li>_server_name_: Nombre del servidor al que el agente está asignado. </li>
<li>_target_ip_: Dirección IP del objetivo del módulo.</li>

View File

@ -77,6 +77,7 @@
<li>_policy_ : モジュールが属するポリシー名 (存在する場合)</li>
<li>_prevdata_ : アラートを発報する前のモジュールデータ</li>
<li>_rca_: Root cause analysis chain (only for services).</li>
<li>_secondarygroups_: エージェントのすべてのセカンダリグループのリスト</li>
<li>_server_ip_ : エージェントが割り当てられているサーバ IP。</li>
<li>_server_name_ : エージェントが割り当てられているサーバ名。 </li>
<li>_target_ip_ : モジュールの対象IPアドレス</li>

View File

@ -5889,6 +5889,12 @@ table.table_modal_alternate tr td:first-child {
width: 100%;
}
/*
* ---------------------------------------------------------------------
* - VISUAL STYLES FOR HISTOGRAM GRAPHS
* ---------------------------------------------------------------------
*/
.slicebar-box-hover-styles {
position: absolute;
background-color: #fff;
@ -5903,3 +5909,15 @@ table.table_modal_alternate tr td:first-child {
.flot-text {
width: 101%;
}
/*
* ---------------------------------------------------------------------
* - FONT SIZES IN AGENT VIEW. This changes the font size of the agent
* name and the description when the language is Japanese or Chinese
* ---------------------------------------------------------------------
*/
.custom_font_size {
font-size: 14px;
font-weight: bold;
}

View File

@ -129,7 +129,7 @@
<div style='height: 10px'>
<?php
$version = '7.0NG.740';
$build = '191029';
$build = '191112';
$banner = "v$version Build $build";
error_reporting(0);
@ -872,7 +872,16 @@ function install_step4()
$config["dbuser"]="pandora"; // DB User
$config["dbpass"]="'.$random_password.'"; // DB Password
$config["dbhost"]="'.$dbhost.'"; // DB Host
$config["homedir"]="'.$path.'"; // Config homedir
$config["homedir"]="'.$path.'"; // Config homedir
// ----------Rebranding--------------------
// Uncomment this lines and add your customs text and paths.
// $config["custom_logo_login_alt"] ="login_logo.png";
// $config["custom_splash_login_alt"] = "splash_image_default.png";
// $config["custom_title1_login_alt"] = "WELCOME TO Pandora FMS";
// $config["custom_title2_login_alt"] = "NEXT GENERATION";
// $config["rb_product_name_alt"] = "Pandora FMS";
/*
----------Attention--------------------
Please note that in certain installations:
@ -974,7 +983,15 @@ function install_step4()
$config["dbuser"]="pandora"; // DB User
$config["dbpass"]="'.$random_password.'"; // DB Password
$config["dbhost"]="'.$dbhost.'"; // DB Host
$config["homedir"]="'.$path.'"; // Config homedir
$config["homedir"]="'.$path.'"; // Config homedir
// ----------Rebranding--------------------
// Uncomment this lines and add your customs text and paths.
// $config["custom_logo_login_alt"] ="login_logo.png";
// $config["custom_splash_login_alt"] = "splash_image_default.png";
// $config["custom_title1_login_alt"] = "WELCOME TO Pandora FMS";
// $config["custom_title2_login_alt"] = "NEXT GENERATION";
// $config["rb_product_name_alt"] = "Pandora FMS";
/*
----------Attention--------------------
Please note that in certain installations:

View File

@ -155,7 +155,7 @@ if (is_ajax()) {
ob_end_clean();
// Take some parameters (GET)
// Take some parameters (GET).
$group_id = (int) get_parameter('group_id', 0);
$search = trim(get_parameter('search', ''));
$search_custom = trim(get_parameter('search_custom', ''));
@ -172,10 +172,10 @@ $access = ($agent_a === true) ? 'AR' : (($agent_w === true) ? 'AW' : 'AR');
$onheader = [];
if (check_acl($config['id_user'], 0, 'AW')) {
// Prepare the tab system to the future
// Prepare the tab system to the future.
$tab = 'setup';
// Setup tab
// Setup tab.
$setuptab['text'] = '<a href="index.php?sec=gagente&sec2=godmode/agentes/modificar_agente">'.html_print_image('images/setup.png', true, ['title' => __('Setup')]).'</a>';
$setuptab['godmode'] = true;
@ -193,7 +193,7 @@ if (!$strict_user) {
}
}
// User is deleting agent
// User is deleting agent.
if (isset($result_delete)) {
if ($result_delete) {
ui_print_success_message(__('Sucessfully deleted agent'));
@ -283,7 +283,7 @@ $order = null;
$order_collation = '';
switch ($config['dbtype']) {
case 'mysql':
// $order_collation = " COLLATE utf8_general_ci";
// $order_collation = " COLLATE utf8_general_ci";.
$order_collation = '';
break;
@ -314,6 +314,10 @@ switch ($sortField) {
'order' => 'DESC',
];
break;
default:
// Default.
break;
}
break;
@ -336,6 +340,10 @@ switch ($sortField) {
'order' => 'DESC',
];
break;
default:
// Default.
break;
}
break;
@ -358,6 +366,10 @@ switch ($sortField) {
'order' => 'DESC',
];
break;
default:
// Default.
break;
}
break;
@ -380,6 +392,10 @@ switch ($sortField) {
'order' => 'DESC',
];
break;
default:
// Default.
break;
}
break;
@ -402,6 +418,10 @@ switch ($sortField) {
'order' => 'DESC',
];
break;
default:
// Default.
break;
}
break;
@ -424,6 +444,10 @@ switch ($sortField) {
'order' => 'ASC',
];
break;
default:
// Default.
break;
}
break;
@ -446,6 +470,10 @@ switch ($sortField) {
'order' => 'ASC',
];
break;
default:
// Default.
break;
}
break;
@ -505,7 +533,7 @@ if (!empty($search_custom)) {
$search_sql_custom = '';
}
// Show only selected groups
// Show only selected groups.
if ($group_id > 0) {
$groups = [$group_id];
if ($recursion) {
@ -624,11 +652,13 @@ if (empty($agents)) {
$agents = [];
}
$agent_font_size = 'font-size: 7px';
$description_font_size = 'font-size: 6.5px';
if ($config['language'] == 'ja' || $config['language'] == 'zh_CN' || $own_info['language'] == 'ja' || $own_info['language'] == 'zh_CN') {
$agent_font_size = 'font-size: 15px';
$description_font_size = 'font-size: 11px';
if ($config['language'] == 'ja'
|| $config['language'] == 'zh_CN'
|| $own_info['language'] == 'ja'
|| $own_info['language'] == 'zh_CN'
) {
// Adds a custom font size for Japanese and Chinese language.
$custom_font_size = 'custom_font_size';
}
// Urls to sort the table.
@ -648,7 +678,7 @@ $url_up_last = 'index.php?sec=view&amp;sec2=operation/agentes/estado_agente&amp;
$url_down_last = 'index.php?sec=view&amp;sec2=operation/agentes/estado_agente&amp;refr='.$refr.'&amp;offset='.$offset.'&amp;group_id='.$group_id.'&amp;recursion='.$recursion.'&amp;search='.$search.'&amp;status='.$status.'&amp;sort_field=last_contact&amp;sort=down';
// Prepare pagination
// Prepare pagination.
ui_pagination(
$total_agents,
ui_get_url_refresh(['group_id' => $group_id, 'recursion' => $recursion, 'search' => $search, 'sort_field' => $sortField, 'sort' => $sort, 'status' => $status])
@ -744,10 +774,8 @@ foreach ($agents as $agent) {
$data = [];
$data[0] = '<div class="left_'.$agent['id_agente'].'">';
$data[0] .= '<span>';
$data[0] .= '<a href="index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$agent['id_agente'].'"> <span style="'.$agent_font_size.';font-weight:bold" title ="'.$agent['nombre'].'">'.$agent['alias'].'</span></a>';
$data[0] .= '</span>';
$data[0] .= '<a href="index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$agent['id_agente'].'"><b><span class="'.$custom_font_size.' title ="'.$agent['nombre'].'">'.$agent['alias'].'</span></b></a>';
if ($agent['quiet']) {
$data[0] .= '&nbsp;';
@ -779,7 +807,7 @@ foreach ($agents as $agent) {
$data[0] .= '</div></div>';
$data[1] = ui_print_truncate_text($agent['description'], 'description', false, true, true, '[&hellip;]', $description_font_size);
$data[1] = '<span class="'.$custom_font_size.'">'.ui_print_truncate_text($agent['description'], 'description', false, true, true, '[&hellip;]').'</span>';
$data[10] = '';

View File

@ -825,7 +825,15 @@ $table_events = '<div class="white_table_graph" id="table_events">
$agent_contact = html_print_table($table_contact, true);
$agent_info = empty($table_data->data) ? '' : html_print_table($table_data, true);
if (empty($table_data->data)) {
$agent_info = '';
} else {
if (count($table_data->data) === 1 && $config['activate_gis'] && $dataPositionAgent === false) {
$agent_info = '';
} else {
$agent_info = html_print_table($table_data, true);
}
}
$agent_incidents = !isset($table_incident) ? '' : html_print_table($table_incident, true);

View File

@ -1018,7 +1018,7 @@ $adv_inputs[] = $in;
$user_users = users_get_user_users(
$config['id_user'],
$access,
users_can_manage_group_all()
true
);
$data = html_print_select(
@ -1539,7 +1539,7 @@ function process_datatables_callback(table, settings) {
// Agent id.
target = i;
}
if(label == '<?php echo __('Agent name'); ?>') {
if(label == '<?php echo addslashes(__('Agent name')); ?>') {
// Agent id.
target = i;
break;
@ -1619,15 +1619,13 @@ function process_datatables_item(item) {
// Show comments events.
item.user_comment = item.comments
if(item.comments.length > 80){
item.user_comment += '&nbsp;&nbsp;<a id="show_comments" href="javascript:" onclick="show_event_dialog(\'';
item.user_comment += item.b64+"','comments'," + $("#group_rep").val()+');">';
item.user_comment += '<?php echo html_print_image('images/eye.png', true, ['title' => __('Show more')]); ?></a>';
if(typeof item.comments !== 'undefined' && item.comments.length > 80) {
item.user_comment += '&nbsp;&nbsp;<a id="show_comments" href="javascript:" onclick="show_event_dialog(\'';
item.user_comment += item.b64+"','comments'," + $("#group_rep").val()+');">';
item.user_comment += '<?php echo html_print_image('images/eye.png', true, ['title' => __('Show more')]); ?></a>';
}
// Grouped events.
if(item.max_id_evento) {
item.id_evento = item.max_id_evento

View File

@ -767,7 +767,7 @@ $data[0] = __('User ack.').$jump;
$user_users = users_get_user_users(
$config['id_user'],
$access,
users_can_manage_group_all()
users_can_manage_group_all($access)
);
$data[0] .= html_print_select(

View File

@ -118,7 +118,7 @@ $now = date('Y-m-d');
// Download header.
header('Content-type: text/txt');
header('Content-Disposition: attachment; filename="pandora_export_event'.$now.'.csv"');
header('Content-Disposition: attachment; filename="export_events_'.$now.'.csv"');
try {
$fb64 = get_parameter('fb64', null);

View File

@ -91,10 +91,6 @@ check_login();
$id_report = (int) get_parameter('id');
$filename = (string) get_parameter('filename');
if (empty($filename)) {
$filename = 'pandorafms_report_'.date('Y-m-d_His');
}
$date_mode = get_parameter('date_mode', 'none');
$period = null;
@ -132,6 +128,10 @@ $report = reporting_make_reporting_data(
'static'
);
if (empty($filename)) {
$filename = $report['name'].'_report_'.date('Y-m-d_His');
}
reporting_xml_get_report($report, $filename);
exit;

View File

@ -430,15 +430,38 @@ if ($date_to_trap != '') {
}
if ($filter_severity != -1) {
// Test if install the enterprise to search oid in text or oid field in ttrap.
if ($config['enterprise_installed']) {
$whereSubquery .= ' AND (
(alerted = 0 AND severity = '.$filter_severity.') OR
(alerted = 1 AND priority = '.$filter_severity.'))';
} else {
$whereSubquery .= ' AND (
(alerted = 0 AND 1 = '.$filter_severity.') OR
(alerted = 1 AND priority = '.$filter_severity.'))';
// There are two special severity values aimed to match two different trap standard severities in database: warning/critical and critical/normal.
if ($filter_severity != EVENT_CRIT_OR_NORMAL && $filter_severity != EVENT_CRIT_WARNING_OR_CRITICAL) {
// Test if enterprise is installed to search oid in text or oid field in ttrap.
if ($config['enterprise_installed']) {
$whereSubquery .= ' AND (
(alerted = 0 AND severity = '.$filter_severity.') OR
(alerted = 1 AND priority = '.$filter_severity.'))';
} else {
$whereSubquery .= ' AND (
(alerted = 0 AND 1 = '.$filter_severity.') OR
(alerted = 1 AND priority = '.$filter_severity.'))';
}
} else if ($filter_severity === EVENT_CRIT_WARNING_OR_CRITICAL) {
// Test if enterprise is installed to search oid in text or oid field in ttrap.
if ($config['enterprise_installed']) {
$whereSubquery .= ' AND (
(alerted = 0 AND (severity = '.EVENT_CRIT_WARNING.' OR severity = '.EVENT_CRIT_CRITICAL.')) OR
(alerted = 1 AND (priority = '.EVENT_CRIT_WARNING.' OR priority = '.EVENT_CRIT_CRITICAL.')))';
} else {
$whereSubquery .= ' AND (
(alerted = 1 AND (priority = '.EVENT_CRIT_WARNING.' OR priority = '.EVENT_CRIT_CRITICAL.')))';
}
} else if ($filter_severity === EVENT_CRIT_OR_NORMAL) {
// Test if enterprise is installed to search oid in text or oid field in ttrap.
if ($config['enterprise_installed']) {
$whereSubquery .= ' AND (
(alerted = 0 AND (severity = '.EVENT_CRIT_NORMAL.' OR severity = '.EVENT_CRIT_CRITICAL.')) OR
(alerted = 1 AND (priority = '.EVENT_CRIT_NORMAL.' OR priority = '.EVENT_CRIT_CRITICAL.')))';
} else {
$whereSubquery .= ' AND (
(alerted = 1 AND (priority = '.EVENT_CRIT_NORMAL.' OR priority = '.EVENT_CRIT_CRITICAL.')))';
}
}
}

View File

@ -3,7 +3,7 @@
#
%define name pandorafms_console
%define version 7.0NG.740
%define release 191029
%define release 191112
# User and Group under which Apache is running
%define httpd_name httpd
@ -57,6 +57,13 @@ install -m 0644 pandora_console_logrotate_centos $RPM_BUILD_ROOT%{_sysconfdir}/l
rm -rf $RPM_BUILD_ROOT
%post
# Install pandora_websocket_engine service.
cp -pf %{prefix}/pandora_console/pandora_websocket_engine /etc/init.d/
chmod +x /etc/init.d/pandora_websocket_engine
echo "You can now start the Pandora FMS Websocket service by executing"
echo " /etc/init.d/pandora_websocket_engine start"
# Has an install already been done, if so we only want to update the files
# push install.php aside so that the console works immediately using existing
# configuration.

View File

@ -3,7 +3,7 @@
#
%define name pandorafms_console
%define version 7.0NG.740
%define release 191029
%define release 191112
# User and Group under which Apache is running
%define httpd_name httpd
@ -59,6 +59,7 @@ rm -rf $RPM_BUILD_ROOT
%post
# Install pandora_websocket_engine service.
cp -pf %{prefix}/pandora_console/pandora_websocket_engine /etc/init.d/
chmod +x /etc/init.d/pandora_websocket_engine
echo "You can now start the Pandora FMS Websocket service by executing"
echo " /etc/init.d/pandora_websocket_engine start"

View File

@ -3,7 +3,7 @@
#
%define name pandorafms_console
%define version 7.0NG.740
%define release 191029
%define release 191112
%define httpd_name httpd
# User and Group under which Apache is running
%define httpd_name apache2
@ -60,6 +60,7 @@ rm -rf $RPM_BUILD_ROOT
%post
# Install pandora_websocket_engine service.
cp -pf %{prefix}/pandora_console/pandora_websocket_engine /etc/init.d/
chmod +x /etc/init.d/pandora_websocket_engine
echo "You can now start the Pandora FMS Websocket service by executing"
echo " /etc/init.d/pandora_websocket_engine start"

View File

@ -1,5 +1,5 @@
package: pandorafms-server
Version: 7.0NG.740-191029
Version: 7.0NG.740-191112
Architecture: all
Priority: optional
Section: admin

View File

@ -14,7 +14,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
pandora_version="7.0NG.740-191029"
pandora_version="7.0NG.740-191112"
package_cpan=0
package_pandora=1

View File

@ -45,7 +45,7 @@ our @EXPORT = qw(
# version: Defines actual version of Pandora Server for this module only
my $pandora_version = "7.0NG.740";
my $pandora_build = "191029";
my $pandora_build = "191112";
our $VERSION = $pandora_version." ".$pandora_build;
# Setup hash

View File

@ -1129,6 +1129,7 @@ sub pandora_execute_action ($$$$$$$$$;$) {
_name_tag_ => undef,
_all_address_ => undef,
'_address_\d+_' => undef,
_secondarygroups_ => undef,
);
if ((defined ($extra_macros)) && (ref($extra_macros) eq "HASH")) {
@ -4117,6 +4118,15 @@ sub on_demand_macro($$$$$$;$) {
}
return(defined($field_value)) ? $field_value : '';
} elsif ($macro eq '_secondarygroups_') {
my $field_value = '';
my @groups = get_db_rows ($dbh, 'SELECT tg.nombre from tagent_secondary_group as tsg INNER JOIN tgrupo tg ON tsg.id_group = tg.id_grupo WHERE tsg.id_agent = ?', $module->{'id_agente'});
foreach my $element (@groups) {
$field_value .= $element->{'nombre'} .",";
}
chop($field_value);
return(defined($field_value)) ? '('.$field_value.')' : '';
}
}

View File

@ -32,7 +32,7 @@ our @ISA = qw(Exporter);
# version: Defines actual version of Pandora Server for this module only
my $pandora_version = "7.0NG.740";
my $pandora_build = "191029";
my $pandora_build = "191112";
our $VERSION = $pandora_version." ".$pandora_build;
our %EXPORT_TAGS = ( 'all' => [ qw() ] );

View File

@ -3,7 +3,7 @@
#
%define name pandorafms_server
%define version 7.0NG.740
%define release 191029
%define release 191112
Summary: Pandora FMS Server
Name: %{name}

View File

@ -3,7 +3,7 @@
#
%define name pandorafms_server
%define version 7.0NG.740
%define release 191029
%define release 191112
Summary: Pandora FMS Server
Name: %{name}

View File

@ -9,7 +9,7 @@
# **********************************************************************
PI_VERSION="7.0NG.740"
PI_BUILD="191029"
PI_BUILD="191112"
MODE=$1
if [ $# -gt 1 ]; then

View File

@ -34,7 +34,7 @@ use PandoraFMS::Config;
use PandoraFMS::DB;
# version: define current version
my $version = "7.0NG.740 PS191029";
my $version = "7.0NG.740 PS191112";
# Pandora server configuration
my %conf;

View File

@ -36,7 +36,7 @@ use Encode::Locale;
Encode::Locale::decode_argv;
# version: define current version
my $version = "7.0NG.740 PS191029";
my $version = "7.0NG.740 PS191112";
# save program name for logging
my $progname = basename($0);
@ -118,12 +118,22 @@ sub help_screen{
help_screen_line('--get_planned_downtimes_items', '<name> [<id_group> <type_downtime> <type_execution> <type_periodicity>]', 'Get all items of planned downtimes');
help_screen_line('--set_planned_downtimes_deleted', '<name> ', 'Deleted a planned downtime');
help_screen_line('--get_module_id', '<agent_id> <module_name>', 'Get the id of an module');
<<<<<<< HEAD
help_screen_line('--get_agent_group', '<agent_name>', 'Get the group name of an agent');
help_screen_line('--get_agent_group_id', '<agent_name>', 'Get the group ID of an agent');
help_screen_line('--get_agent_modules', '<agent_name>', 'Get the modules of an agent');
help_screen_line('--get_agents_id_name_by_alias', '<agent_alias>', '[<strict>]', 'List id and alias of agents mathing given alias');
help_screen_line('--get_agents', '[<group_name> <os_name> <status> <max_modules> <filter_substring> <policy_name>]', "Get \n\t list of agents with optative filter parameters");
help_screen_line('--delete_conf_file', '<agent_name>', 'Delete a local conf of a given agent');
help_screen_line('--clean_conf_file', '<agent_name>', "Clean a local conf of a given agent deleting all modules, \n\t policies, file collections and comments");
=======
help_screen_line('--get_agent_group', '<agent_name> [<use_alias>]', 'Get the group name of an agent');
help_screen_line('--get_agent_group_id', '<agent_name> [<use_alias>]', 'Get the group ID of an agent');
help_screen_line('--get_agent_modules', '<agent_name> [<use_alias>]', 'Get the modules of an agent');
help_screen_line('--get_agents', '[<group_name> <os_name> <status> <max_modules> <filter_substring> <policy_name> <use_alias>]', "Get \n\t list of agents with optative filter parameters");
help_screen_line('--delete_conf_file', '<agent_name> [<use_alias>]', 'Delete a local conf of a given agent');
help_screen_line('--clean_conf_file', '<agent_name> [<use_alias>]', "Clean a local conf of a given agent deleting all modules, \n\t policies, file collections and comments");
>>>>>>> origin/develop
help_screen_line('--get_bad_conf_files', '', 'Get the files bad configured (without essential tokens)');
help_screen_line('--locate_agent', '<agent_name> [<use_alias>]', 'Search a agent into of nodes of metaconsole. Only Enterprise.');
help_screen_line('--migration_agent_queue', '<id_node> <source_node_name> <target_node_name> [<db_only>]', 'Migrate agent only metaconsole');
@ -4849,6 +4859,49 @@ sub cli_get_agent_modules() {
}
}
##############################################################################
# Show id, name and id_server of an agent given alias
# Related option: --get_agents_id_name_by_alias
##############################################################################
sub cli_get_agents_id_name_by_alias() {
my $agent_alias = @ARGV[2];
my $strict = @ARGV[3];
my @agents;
my $where_value;
if($strict eq 'strict') {
$where_value = $agent_alias;
} else {
$where_value = "%".$agent_alias."%";
}
if(is_metaconsole($conf) == 1) {
@agents = get_db_rows($dbh,"SELECT alias, id_agente, id_tagente, id_tmetaconsole_setup as 'id_server', server_name FROM tmetaconsole_agent WHERE UPPER(alias) LIKE UPPER(?)", $where_value);
} else {
@agents = get_db_rows($dbh,"SELECT alias, id_agente FROM tagente WHERE UPPER(alias) LIKE UPPER(?)", $where_value);
}
if(scalar(@agents) == 0) {
print "[ERROR] No agents retrieved.\n\n";
} else {
if(is_metaconsole($conf) == 1) {
print "alias, id_agente, id_tagente, id_server, server_name\n";
foreach my $agent (@agents) {
print safe_output($agent->{'alias'}).", ".$agent->{'id_agente'}.", ".$agent->{'id_tagente'}.", ".$agent->{'id_server'}.", ".$agent->{'server_name'}."\n";
}
} else {
print "alias, id_agente\n";
foreach my $agent (@agents) {
print $agent->{'id_agente'}.",".safe_output($agent->{'alias'})."\n";
}
}
}
}
sub cli_create_synthetic() {
my $name_module = @ARGV[2];
my $synthetic_type = @ARGV[3];
@ -7426,6 +7479,10 @@ sub pandora_manage_main ($$$) {
param_check($ltotal, 2, 1);
cli_get_agent_modules();
}
elsif ($param eq '--get_agents_id_name_by_alias') {
param_check($ltotal, 2,1);
cli_get_agents_id_name_by_alias();
}
elsif ($param eq '--get_policy_modules') {
param_check($ltotal, 1);
cli_get_policy_modules();