Merge remote-tracking branch 'origin/develop' into new-vc-line-element

This commit is contained in:
Daniel Barbero Martin 2020-01-16 08:04:18 +01:00
commit 4a1801bc50
36 changed files with 362 additions and 239 deletions

View File

@ -1,5 +1,5 @@
package: pandorafms-agent-unix package: pandorafms-agent-unix
Version: 7.0NG.742-200115 Version: 7.0NG.742-200116
Architecture: all Architecture: all
Priority: optional Priority: optional
Section: admin Section: admin

View File

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

View File

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

View File

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

View File

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

View File

@ -10,7 +10,7 @@
# ********************************************************************** # **********************************************************************
PI_VERSION="7.0NG.742" PI_VERSION="7.0NG.742"
PI_BUILD="200115" PI_BUILD="200116"
OS_NAME=`uname -s` OS_NAME=`uname -s`
FORCE=0 FORCE=0

View File

@ -186,7 +186,7 @@ UpgradeApplicationID
{} {}
Version Version
{200115} {200116}
ViewReadme ViewReadme
{Yes} {Yes}

View File

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

View File

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

View File

@ -1,5 +1,5 @@
package: pandorafms-console package: pandorafms-console
Version: 7.0NG.742-200115 Version: 7.0NG.742-200116
Architecture: all Architecture: all
Priority: optional Priority: optional
Section: admin Section: admin

View File

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

View File

@ -1,5 +1,6 @@
START TRANSACTION; START TRANSACTION;
ALTER TABLE `tmap` ADD COLUMN `id_group_map` INT(10) UNSIGNED NOT NULL default 0;
ALTER TABLE `tevent_filter` MODIFY `severity` TEXT NOT NULL; ALTER TABLE `tevent_filter` MODIFY `severity` TEXT NOT NULL;
COMMIT; COMMIT;

View File

@ -1195,6 +1195,8 @@ CREATE TABLE IF NOT EXISTS `tmap` (
`generation_method` INTEGER UNSIGNED NOT NULL default 0, `generation_method` INTEGER UNSIGNED NOT NULL default 0,
`generated` INTEGER UNSIGNED NOT NULL default 0, `generated` INTEGER UNSIGNED NOT NULL default 0,
`filter` TEXT, `filter` TEXT,
`id_group_map` INT(10) UNSIGNED NOT NULL default 0,
PRIMARY KEY(`id`) PRIMARY KEY(`id`)
) ENGINE = InnoDB DEFAULT CHARSET=utf8; ) ENGINE = InnoDB DEFAULT CHARSET=utf8;

View File

@ -412,65 +412,56 @@ $url_up_template = $url.'&sort_field=template&sort=up&pure='.$pure;
$url_down_template = $url.'&sort_field=template&sort=down&pure='.$pure; $url_down_template = $url.'&sort_field=template&sort=down&pure='.$pure;
$table = new stdClass(); $table_alert_list = new stdClass();
if (is_metaconsole()) { if (is_metaconsole()) {
$table->class = 'alert_list databox'; $table_alert_list->class = 'alert_list databox';
} else { } else {
$table->class = 'info_table'; $table_alert_list->class = 'info_table';
} }
$table->width = '100%'; $table_alert_list->width = '100%';
$table->cellpadding = 0; $table_alert_list->cellpadding = 0;
$table->cellspacing = 0; $table_alert_list->cellspacing = 0;
$table->size = []; $table_alert_list->size = [];
$table->align = []; $table_alert_list->align = [];
$table->align[0] = 'left'; $table_alert_list->align[0] = 'left';
$table->align[1] = 'left'; $table_alert_list->align[1] = 'left';
$table->align[2] = 'left'; $table_alert_list->align[2] = 'left';
$table->align[3] = 'left'; $table_alert_list->align[3] = 'left';
$table->align[4] = 'left'; $table_alert_list->align[4] = 'left';
$table->head = []; $table_alert_list->head = [];
if (! $id_agente) { if (! $id_agente) {
$table->style = []; $table_alert_list->style = [];
$table->style[0] = 'font-weight: bold;'; $table_alert_list->style[0] = 'font-weight: bold;';
$table->head[0] = __('Agent').ui_get_sorting_arrows($url_up_agente, $url_down_agente, $selectAgentUp, $selectAgentDown); $table_alert_list->head[0] = __('Agent').ui_get_sorting_arrows($url_up_agente, $url_down_agente, $selectAgentUp, $selectAgentDown);
$table->headstyle[0] = 'width: 100%; min-width: 12em;';
$table->headstyle[1] = 'min-width: 15em;';
$table->headstyle[2] = 'min-width: 20em;';
$table->headstyle[3] = 'min-width: 1em;';
$table->headstyle[4] = 'min-width: 15em;';
/*
if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) {
$table->size[4] = '8%';
}*/
} else { } else {
$table->head[0] = __('Module').ui_get_sorting_arrows($url_up_module, $url_down_module, $selectModuleUp, $selectModuleDown); $table_alert_list->head[0] = __('Module').ui_get_sorting_arrows($url_up_module, $url_down_module, $selectModuleUp, $selectModuleDown);
$table->headstyle[0] = 'width: 100%; min-width: 15em;';
$table->headstyle[1] = 'min-width: 15em;';
$table->headstyle[2] = 'min-width: 20em;';
$table->headstyle[3] = 'min-width: 1em;';
$table->headstyle[4] = 'min-width: 15em;';
} }
$table->head[1] = __('Template').ui_get_sorting_arrows($url_up_template, $url_down_template, $selectTemplateUp, $selectTemplateDown); $table_alert_list->head[1] = __('Status');
$table->head[2] = __('Actions'); $table_alert_list->head[2] = __('Template').ui_get_sorting_arrows($url_up_template, $url_down_template, $selectTemplateUp, $selectTemplateDown);
$table->head[3] = __('Status'); $table_alert_list->head[3] = __('Actions');
$table->head[4] = "<span title='".__('Operations')."'>".__('Op.').'</span>'; $table_alert_list->head[4] = "<span title='".__('Operations')."'>".__('Op.').'</span>';
$table->valign[0] = 'middle'; $table_alert_list->headstyle[0] = 'min-width: 200px; width:30%;';
$table->valign[1] = 'middle'; $table_alert_list->headstyle[1] = 'min-width: 50px; width:8%';
$table->valign[2] = 'middle'; $table_alert_list->headstyle[2] = 'min-width: 150px; width:22%;';
$table->valign[3] = 'middle'; $table_alert_list->headstyle[3] = 'min-width: 200px; width:30%;';
$table->valign[4] = 'middle'; $table_alert_list->headstyle[4] = 'min-width: 150px; width:10%;';
$table->style[4] = 'min-width:80px'; $table_alert_list->valign[0] = 'middle';
$table_alert_list->valign[1] = 'middle';
$table_alert_list->valign[2] = 'middle';
$table_alert_list->valign[3] = 'middle';
$table_alert_list->valign[4] = 'middle';
$table->data = []; $table_alert_list->cellstyle = [];
$table_alert_list->data = [];
$url .= $sort_params; $url .= $sort_params;
@ -479,14 +470,14 @@ $iterator = 0;
foreach ($simple_alerts as $alert) { foreach ($simple_alerts as $alert) {
if ($alert['disabled']) { if ($alert['disabled']) {
$table->rowstyle[$iterator] = 'font-style: italic; color: #aaaaaa;'; $table_alert_list->rowstyle[$iterator] = 'font-style: italic; color: #aaaaaa;';
$table->style[$iterator][1] = 'font-style: italic; color: #aaaaaa;'; $table_alert_list->style[$iterator][2] = 'font-style: italic; color: #aaaaaa;';
} }
if ($rowPair) { if ($rowPair) {
$table->rowclass[$iterator] = 'rowPair'; $table_alert_list->rowclass[$iterator] = 'rowPair';
} else { } else {
$table->rowclass[$iterator] = 'rowOdd'; $table_alert_list->rowclass[$iterator] = 'rowOdd';
} }
$rowPair = !$rowPair; $rowPair = !$rowPair;
@ -523,38 +514,53 @@ foreach ($simple_alerts as $alert) {
$all_groups = agents_get_all_groups_agent($id_agente); $all_groups = agents_get_all_groups_agent($id_agente);
} }
$module_name = modules_get_agentmodule_name($alert['id_agent_module']); $status = STATUS_ALERT_NOT_FIRED;
$data[0] .= ui_print_truncate_text($module_name, 'module_medium', false, true, true, '[&hellip;]', 'display:block;font-size: 7.2pt').'<br>'; $title = '';
if ($alert['times_fired'] > 0) {
$status = STATUS_ALERT_FIRED;
$title = __('Alert fired').' '.$alert['internal_counter'].' '.__('time(s)');
} else if ($alert['disabled'] > 0) {
$status = STATUS_ALERT_DISABLED;
$title = __('Alert disabled');
} else {
$status = STATUS_ALERT_NOT_FIRED;
$title = __('Alert not fired');
}
$module_name = modules_get_agentmodule_name($alert['id_agent_module']);
$data[0] .= ui_print_truncate_text($module_name, 'module_medium', false, true, true, '[&hellip;]', 'display:block;font-weight:normal;').'<br>';
$data[1] = ui_print_status_image($status, $title, true);
$template_group = db_get_value('id_group', 'talert_templates', 'id', $alert['id_alert_template']); $template_group = db_get_value('id_group', 'talert_templates', 'id', $alert['id_alert_template']);
// The access to the template manage page is necessary have LW permissions on template group // The access to the template manage page is necessary have LW permissions on template group
if (check_acl($config['id_user'], $template_group, 'LW')) { if (check_acl($config['id_user'], $template_group, 'LW')) {
$data[1] .= "<a href='index.php?sec=".$sec.'&sec2=godmode/alerts/configure_alert_template&id='.$alert['id_alert_template']."'>"; $data[2] .= "<a href='index.php?sec=".$sec.'&sec2=godmode/alerts/configure_alert_template&id='.$alert['id_alert_template']."'>";
} }
$data[1] .= ui_print_truncate_text( $data[2] .= ui_print_truncate_text(
alerts_get_alert_template_name($alert['id_alert_template']), alerts_get_alert_template_name($alert['id_alert_template']),
'module_medium', 'module_medium',
false, false,
true, true,
true, true,
'[&hellip;]', '[&hellip;]',
'font-size: 7.1pt' ''
); );
$data[1] .= ' <a class="template_details" $data[2] .= ' <a class="template_details"
href="'.ui_get_full_url(false, false, false, false).'ajax.php?page=godmode/alerts/alert_templates&get_template_tooltip=1&id_template='.$alert['id_alert_template'].'">'; href="'.ui_get_full_url(false, false, false, false).'ajax.php?page=godmode/alerts/alert_templates&get_template_tooltip=1&id_template='.$alert['id_alert_template'].'">';
$data[1] .= html_print_image('images/zoom.png', true, ['id' => 'template-details-'.$alert['id_alert_template'], 'class' => 'img_help']); $data[2] .= html_print_image('images/zoom.png', true, ['id' => 'template-details-'.$alert['id_alert_template'], 'class' => 'img_help action_button_img']);
$data[1] .= '</a> '; $data[2] .= '</a> ';
if (check_acl($config['id_user'], $template_group, 'LW') || check_acl($config['id_user'], $template_group, 'LM')) { if (check_acl($config['id_user'], $template_group, 'LW') || check_acl($config['id_user'], $template_group, 'LM')) {
$data[1] .= '</a>'; $data[2] .= '</a>';
} }
$actions = alerts_get_alert_agent_module_actions($alert['id']); $actions = alerts_get_alert_agent_module_actions($alert['id']);
$data[2] = "<table width='70%'>"; $data[3] = "<table style='width:100%;'>";
// Get and show default actions for this alert // Get and show default actions for this alert
$default_action = db_get_sql( $default_action = db_get_sql(
'SELECT id_alert_action 'SELECT id_alert_action
@ -562,69 +568,74 @@ foreach ($simple_alerts as $alert) {
WHERE id = '.$alert['id_alert_template'] WHERE id = '.$alert['id_alert_template']
); );
if ($default_action != '') { if ($default_action != '') {
$data[2] .= "<tr><td><ul class='action_list'><li>"; $data[3] .= "<tr><td colspan='2'><ul class='action_list'><li>";
$data[2] .= db_get_sql("SELECT name FROM talert_actions WHERE id = $default_action").' <em>('.__('Default').')</em>'; $data[3] .= db_get_sql("SELECT name FROM talert_actions WHERE id = $default_action").' <em>('.__('Default').')</em>';
$data[2] .= ui_print_help_tip(__('The default actions will be executed every time that the alert is fired and no other action is executed'), true); $data[3] .= '</li></ul></td>';
$data[2] .= '</li></ul></td>'; $data[3] .= '</tr>';
$data[2] .= '<td></td>';
$data[2] .= '</tr>';
} }
foreach ($actions as $action_id => $action) { foreach ($actions as $action_id => $action) {
$data[2] .= '<tr>'; $data[3] .= '<tr style="display: grid; grid-template-columns: 1fr 1fr; align-items: center;">';
$data[2] .= '<td>'; $data[3] .= '<td>';
$data[2] .= '<ul class="action_list" style="display:inline;">'; $data[3] .= '<ul class="action_list" style="display:inline;">';
$data[2] .= '<li style="display:inline;">'; $data[3] .= '<li style="display:inline;">';
if ($alert['disabled']) { if ($alert['disabled']) {
$data[2] .= '<font class="action_name" style="font-style: italic; color: #aaaaaa;">'; $data[3] .= '<font class="action_name" style="font-style: italic; color: #aaaaaa;">';
} else { } else {
$data[2] .= '<font class="action_name">'; $data[3] .= '<font class="action_name">';
} }
$data[2] .= ui_print_truncate_text($action['name'], (GENERIC_SIZE_TEXT + 20), false); $data[3] .= ui_print_truncate_text($action['name'], (GENERIC_SIZE_TEXT + 20), false);
$data[2] .= ' <em>('; $data[3] .= ' <em>(';
if ($action['fires_min'] == $action['fires_max']) { if ($action['fires_min'] == $action['fires_max']) {
if ($action['fires_min'] == 0) { if ($action['fires_min'] == 0) {
$data[2] .= __('Always'); $data[3] .= __('Always');
} else { } else {
$data[2] .= __('On').' '.$action['fires_min']; $data[3] .= __('On').' '.$action['fires_min'];
} }
} else if ($action['fires_min'] < $action['fires_max']) { } else if ($action['fires_min'] < $action['fires_max']) {
if ($action['fires_min'] == 0) { if ($action['fires_min'] == 0) {
$data[2] .= __('Until').' '.$action['fires_max']; $data[3] .= __('Until').' '.$action['fires_max'];
} else { } else {
$data[2] .= __('From').' '.$action['fires_min'].' '.__('to').' '.$action['fires_max']; $data[3] .= __('From').' '.$action['fires_min'].' '.__('to').' '.$action['fires_max'];
} }
} else { } else {
$data[2] .= __('From').' '.$action['fires_min']; $data[3] .= __('From').' '.$action['fires_min'];
} }
if ($action['module_action_threshold'] != 0) { if ($action['module_action_threshold'] != 0) {
$data[2] .= ' '.__('Threshold').' '.human_time_description_alerts($action['module_action_threshold'], true, 'tiny'); $data[3] .= ' '.__('Threshold').' '.human_time_description_alerts($action['module_action_threshold'], true, 'tiny');
} }
$data[2] .= ')</em>'; $data[3] .= ')</em>';
$data[2] .= '</font>'; $data[3] .= '</font>';
$data[2] .= '</li>'; $data[3] .= '</li>';
$data[2] .= '</ul>'; $data[3] .= '</ul>';
// Is possible manage actions if have LW permissions in the agent group of the alert module $data[3] .= '</td>';
$data[3] .= '<td style=" display: flex; align-items: center;">';
$data[3] .= ui_print_help_tip(__('The default actions will be executed every time that the alert is fired and no other action is executed'), true);
// Is possible manage actions if have LW permissions in the agent group of the alert module
if (check_acl_one_of_groups($config['id_user'], $all_groups, 'LW')) { if (check_acl_one_of_groups($config['id_user'], $all_groups, 'LW')) {
// ~ $data[2] .= '<form method="post" action="' . $url . '" class="delete_link" style="display: inline; vertical-align: -50%;">'; // ~ $data[2] .= '<form method="post" action="' . $url . '" class="delete_link" style="display: inline; vertical-align: -50%;">';
$data[2] .= '<form method="post" action="'.$url.'" class="delete_link" style="display: inline;">'; $data[3] .= '<form method="post" action="'.$url.'" class="delete_link" style="display: inline;">';
$data[2] .= html_print_input_image( $data[3] .= html_print_input_image(
'delete', 'delete',
'images/cross.png', 'images/cross.png',
1, 1,
'padding:0px;', 'padding:0px; margin-left:5px; margin-right:5px;',
true, true,
['title' => __('Delete action')] [
'title' => __('Delete action'),
'class' => 'action_button_img',
]
); );
$data[2] .= html_print_input_hidden('delete_action', 1, true); $data[3] .= html_print_input_hidden('delete_action', 1, true);
$data[2] .= html_print_input_hidden('id_alert', $alert['id'], true); $data[3] .= html_print_input_hidden('id_alert', $alert['id'], true);
$data[2] .= html_print_input_hidden('id_action', $action_id, true); $data[3] .= html_print_input_hidden('id_action', $action_id, true);
$data[2] .= '</form>'; $data[3] .= '</form>';
$data[2] .= html_print_input_image( $data[3] .= html_print_input_image(
'update_action', 'update_action',
'images/config.png', 'images/config.png',
1, 1,
@ -632,19 +643,20 @@ foreach ($simple_alerts as $alert) {
true, true,
[ [
'title' => __('Update action'), 'title' => __('Update action'),
'class' => 'action_button_img',
'onclick' => 'show_display_update_action(\''.$action['id'].'\',\''.$alert['id'].'\',\''.$alert['id_agent_module'].'\',\''.$action_id.'\',\''.$alert['id_agent_module'].'\')', 'onclick' => 'show_display_update_action(\''.$action['id'].'\',\''.$alert['id'].'\',\''.$alert['id_agent_module'].'\',\''.$action_id.'\',\''.$alert['id_agent_module'].'\')',
] ]
); );
$data[2] .= html_print_input_hidden('id_agent_module', $alert['id_agent_module'], true); $data[3] .= html_print_input_hidden('id_agent_module', $alert['id_agent_module'], true);
} }
$data[2] .= '</td>'; $data[3] .= '</td>';
$data[2] .= '</tr>'; $data[3] .= '</tr>';
} }
$data[2] .= '<div id="update_action-div" style="display:none;text-align:left">'; $data[3] .= '<div id="update_action-div" style="display:none;text-align:left">';
$data[2] .= '</div>'; $data[3] .= '</div>';
$data[2] .= '</table>'; $data[3] .= '</table>';
// Is possible manage actions if have LW permissions in the agent group of the alert module // Is possible manage actions if have LW permissions in the agent group of the alert module
if (check_acl_one_of_groups($config['id_user'], $all_groups, 'LW') || check_acl($config['id_user'], $template_group, 'LM')) { if (check_acl_one_of_groups($config['id_user'], $all_groups, 'LW') || check_acl($config['id_user'], $template_group, 'LM')) {
$own_info = get_user_info($config['id_user']); $own_info = get_user_info($config['id_user']);
@ -660,45 +672,45 @@ foreach ($simple_alerts as $alert) {
$actions = alerts_get_alert_actions_filter(true, 'id_group IN ('.$filter_groups.')'); $actions = alerts_get_alert_actions_filter(true, 'id_group IN ('.$filter_groups.')');
} }
$data[2] .= '<div id="add_action-div-'.$alert['id'].'" style="display:none;text-align:left">'; $data[3] .= '<div id="add_action-div-'.$alert['id'].'" style="display:none;text-align:left">';
$data[2] .= '<form id="add_action_form-'.$alert['id'].'" method="post">'; $data[3] .= '<form id="add_action_form-'.$alert['id'].'" method="post">';
$data[2] .= '<table class="databox_color" style="width:100%">'; $data[3] .= '<table class="databox_color" style="width:100%">';
$data[2] .= html_print_input_hidden('add_action', 1, true); $data[3] .= html_print_input_hidden('add_action', 1, true);
$data[2] .= html_print_input_hidden('id_alert_module', $alert['id'], true); $data[3] .= html_print_input_hidden('id_alert_module', $alert['id'], true);
if (! $id_agente) { if (! $id_agente) {
$data[2] .= '<tr class="datos2">'; $data[3] .= '<tr class="datos2">';
$data[2] .= '<td class="datos2" style="font-weight:bold;padding:6px;">'; $data[3] .= '<td class="datos2" style="font-weight:bold;padding:6px;">';
$data[2] .= __('Agent'); $data[3] .= __('Agent');
$data[2] .= '</td>'; $data[3] .= '</td>';
$data[2] .= '<td class="datos">'; $data[3] .= '<td class="datos">';
$data[2] .= ui_print_truncate_text($agent_name, 'agent_small', false, true, true, '[&hellip;]'); $data[3] .= ui_print_truncate_text($agent_name, 'agent_small', false, true, true, '[&hellip;]');
$data[2] .= '</td>'; $data[3] .= '</td>';
$data[2] .= '</tr>'; $data[3] .= '</tr>';
} }
$data[2] .= '<tr class="datos">'; $data[3] .= '<tr class="datos">';
$data[2] .= '<td class="datos" style="font-weight:bold;padding:6px;">'; $data[3] .= '<td class="datos" style="font-weight:bold;padding:6px;">';
$data[2] .= __('Module'); $data[3] .= __('Module');
$data[2] .= '</td>'; $data[3] .= '</td>';
$data[2] .= '<td class="datos">'; $data[3] .= '<td class="datos">';
$data[2] .= ui_print_truncate_text($module_name, 'module_small', false, true, true, '[&hellip;]'); $data[3] .= ui_print_truncate_text($module_name, 'module_small', false, true, true, '[&hellip;]');
$data[2] .= '</td>'; $data[3] .= '</td>';
$data[2] .= '</tr>'; $data[3] .= '</tr>';
$data[2] .= '<tr class="datos2">'; $data[3] .= '<tr class="datos2">';
$data[2] .= '<td class="datos2" style="font-weight:bold;padding:6px;">'; $data[3] .= '<td class="datos2" style="font-weight:bold;padding:6px;">';
$data[2] .= __('Action'); $data[3] .= __('Action');
$data[2] .= '</td>'; $data[3] .= '</td>';
$data[2] .= '<td class="datos2">'; $data[3] .= '<td class="datos2">';
$data[2] .= html_print_select($actions, 'action_select', '', '', __('None'), 0, true, false, true, '', false, 'width:150px'); $data[3] .= html_print_select($actions, 'action_select', '', '', __('None'), 0, true, false, true, '', false, 'width:150px');
$data[2] .= '</td>'; $data[3] .= '</td>';
$data[2] .= '</tr>'; $data[3] .= '</tr>';
$data[2] .= '<tr class="datos">'; $data[3] .= '<tr class="datos">';
$data[2] .= '<td class="datos" style="font-weight:bold;padding:6px;">'; $data[3] .= '<td class="datos" style="font-weight:bold;padding:6px;">';
$data[2] .= __('Number of alerts match from'); $data[3] .= __('Number of alerts match from');
$data[2] .= '</td>'; $data[3] .= '</td>';
$data[2] .= '<td class="datos">'; $data[3] .= '<td class="datos">';
$data[2] .= html_print_input_text( $data[3] .= html_print_input_text(
'fires_min', 'fires_min',
0, 0,
'', '',
@ -706,8 +718,8 @@ foreach ($simple_alerts as $alert) {
10, 10,
true true
); );
$data[2] .= ' '.__('to').' '; $data[3] .= ' '.__('to').' ';
$data[2] .= html_print_input_text( $data[3] .= html_print_input_text(
'fires_max', 'fires_max',
0, 0,
'', '',
@ -715,14 +727,14 @@ foreach ($simple_alerts as $alert) {
10, 10,
true true
); );
$data[2] .= '</td>'; $data[3] .= '</td>';
$data[2] .= '</tr>'; $data[3] .= '</tr>';
$data[2] .= '<tr class="datos2">'; $data[3] .= '<tr class="datos2">';
$data[2] .= '<td class="datos2" style="font-weight:bold;padding:6px;">'; $data[3] .= '<td class="datos2" style="font-weight:bold;padding:6px;">';
$data[2] .= __('Threshold'); $data[3] .= __('Threshold');
$data[2] .= '</td>'; $data[3] .= '</td>';
$data[2] .= '<td class="datos2">'; $data[3] .= '<td class="datos2">';
$data[2] .= html_print_input_text( $data[3] .= html_print_input_text(
'module_action_threshold', 'module_action_threshold',
'', '',
'', '',
@ -730,32 +742,16 @@ foreach ($simple_alerts as $alert) {
10, 10,
true true
); );
$data[2] .= '</td>'; $data[3] .= '</td>';
$data[2] .= '</tr>'; $data[3] .= '</tr>';
$data[2] .= '</table>'; $data[3] .= '</table>';
$data[2] .= html_print_submit_button(__('Add'), 'addbutton', false, ['class' => 'sub next', 'style' => 'float:right'], true); $data[3] .= html_print_submit_button(__('Add'), 'addbutton', false, ['class' => 'sub next', 'style' => 'float:right'], true);
$data[2] .= '</form>'; $data[3] .= '</form>';
$data[2] .= '</div>'; $data[3] .= '</div>';
} }
$status = STATUS_ALERT_NOT_FIRED; $table_alert_list->cellclass[] = [
$title = ''; 1 => 'action_buttons',
if ($alert['times_fired'] > 0) {
$status = STATUS_ALERT_FIRED;
$title = __('Alert fired').' '.$alert['internal_counter'].' '.__('time(s)');
} else if ($alert['disabled'] > 0) {
$status = STATUS_ALERT_DISABLED;
$title = __('Alert disabled');
} else {
$status = STATUS_ALERT_NOT_FIRED;
$title = __('Alert not fired');
}
$data[3] = ui_print_status_image($status, $title, true);
$table->cellclass[] = [
3 => 'action_buttons',
4 => 'action_buttons', 4 => 'action_buttons',
]; ];
$data[4] = '<form class="disable_alert_form" action="'.$url.'" method="post" style="display: inline;">'; $data[4] = '<form class="disable_alert_form" action="'.$url.'" method="post" style="display: inline;">';
@ -790,11 +786,11 @@ foreach ($simple_alerts as $alert) {
if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) { if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) {
$policyInfo = policies_is_alert_in_policy2($alert['id'], false); $policyInfo = policies_is_alert_in_policy2($alert['id'], false);
if ($policyInfo === false) { if ($policyInfo === false) {
$data[3] .= ''; $data[1] .= '';
} else { } else {
$img = 'images/policies.png'; $img = 'images/policies.png';
$data[3] .= '&nbsp;&nbsp;<a href="?sec=gmodules&sec2=enterprise/godmode/policies/policies&pure='.$pure.'&id='.$policyInfo['id'].'">'.html_print_image($img, true, ['title' => $policyInfo['name']]).'</a>'; $data[1] .= '&nbsp;&nbsp;<a href="?sec=gmodules&sec2=enterprise/godmode/policies/policies&pure='.$pure.'&id='.$policyInfo['id'].'">'.html_print_image($img, true, ['title' => $policyInfo['name']]).'</a>';
} }
} }
} }
@ -840,11 +836,11 @@ foreach ($simple_alerts as $alert) {
$data[4] .= '</form>'; $data[4] .= '</form>';
} }
array_push($table->data, $data); array_push($table_alert_list->data, $data);
} }
if (isset($data)) { if (isset($data)) {
html_print_table($table); html_print_table($table_alert_list);
if ($id_agente) { if ($id_agente) {
ui_pagination($total, 'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=alert&id_agente='.$id_agente.$form_params.$sort_params, 0, 0, false, 'offset', true, 'pagination-bottom'); ui_pagination($total, 'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=alert&id_agente='.$id_agente.$form_params.$sort_params, 0, 0, false, 'offset', true, 'pagination-bottom');
} else { } else {
@ -864,7 +860,7 @@ if (isset($dont_display_alert_create_bttn)) {
} }
if ($display_create && (check_acl($config['id_user'], 0, 'LW') || check_acl($config['id_user'], $template_group, 'LM')) && !$id_cluster) { if ($display_create && (check_acl($config['id_user'], 0, 'LW') || check_acl($config['id_user'], $template_group, 'LM')) && !$id_cluster) {
echo '<div class="action-buttons" style="width: '.$table->width.'">'; echo '<div class="action-buttons" style="width: '.$table_alert_list->width.'">';
echo '<form method="post" action="index.php?sec='.$sec.'&sec2=godmode/alerts/alert_list&tab=builder&pure='.$pure.'">'; echo '<form method="post" action="index.php?sec='.$sec.'&sec2=godmode/alerts/alert_list&tab=builder&pure='.$pure.'">';
html_print_submit_button(__('Create'), 'crtbtn', false, 'class="sub next"'); html_print_submit_button(__('Create'), 'crtbtn', false, 'class="sub next"');
echo '</form>'; echo '</form>';

View File

@ -1340,6 +1340,10 @@ class NetworkMap
if ($rel['parent_type'] == NODE_MODULE if ($rel['parent_type'] == NODE_MODULE
&& $rel['child_type'] == NODE_MODULE && $rel['child_type'] == NODE_MODULE
) { ) {
// Keep std references.
$ref_id_parent = $id_parent;
$ref_id_child = $id_child;
// Module information available. // Module information available.
$id_parent = $rel['id_parent_source_data']; $id_parent = $rel['id_parent_source_data'];
$id_child = $rel['id_child_source_data']; $id_child = $rel['id_child_source_data'];
@ -1374,6 +1378,12 @@ class NetworkMap
'index' => $index, 'index' => $index,
'priority' => $priority, 'priority' => $priority,
]; ];
// Keep node reference mapping - low precedence relationship.
$rel_map[$ref_id_parent.'_'.$ref_id_child] = [
'index' => $index,
'priority' => $priority,
];
} }
} else if ($rel['parent_type'] == NODE_AGENT } else if ($rel['parent_type'] == NODE_AGENT
&& $rel['child_type'] == NODE_AGENT && $rel['child_type'] == NODE_AGENT

View File

@ -20,7 +20,7 @@
/** /**
* Pandora build version and version * Pandora build version and version
*/ */
$build_version = 'PC200115'; $build_version = 'PC200116';
$pandora_version = 'v7.0NG.742'; $pandora_version = 'v7.0NG.742';
// Do not overwrite default timezone set if defined. // Do not overwrite default timezone set if defined.

View File

@ -1453,6 +1453,20 @@ function networkmap_delete_nodes($id_map)
} }
/**
* Delete relations given id_map
*
* @param integer $id_map
* @return integer result
*/
function networkmap_delete_relations($id_map)
{
$result = db_process_sql_delete('trel_item', ['id_map' => $id_map]);
return $result;
}
function get_networkmaps($id) function get_networkmaps($id)
{ {
$groups = array_keys(users_get_groups(null, 'IW')); $groups = array_keys(users_get_groups(null, 'IW'));

View File

@ -919,9 +919,10 @@ function servers_get_info($id_server=-1)
// Remote servers LAG Calculation (server_type != 0). // Remote servers LAG Calculation (server_type != 0).
if ($server['server_type'] != 0) { if ($server['server_type'] != 0) {
// MySQL 8.0 has function lag(). So, lag must be enclosed in quotations.
$result = db_get_row_sql( $result = db_get_row_sql(
'SELECT COUNT(tagente_modulo.id_agente_modulo) AS module_lag, 'SELECT COUNT(tagente_modulo.id_agente_modulo) AS module_lag,
AVG(UNIX_TIMESTAMP() - utimestamp - current_interval) AS lag AVG(UNIX_TIMESTAMP() - utimestamp - current_interval) AS "lag"
FROM tagente_estado, tagente_modulo, tagente FROM tagente_estado, tagente_modulo, tagente
WHERE utimestamp > 0 WHERE utimestamp > 0
AND tagente.disabled = 0 AND tagente.disabled = 0
@ -935,9 +936,10 @@ function servers_get_info($id_server=-1)
); );
} else { } else {
// Local/Dataserver server LAG calculation. // Local/Dataserver server LAG calculation.
// MySQL 8.0 has function lag(). So, lag must be enclosed in quotations.
$result = db_get_row_sql( $result = db_get_row_sql(
'SELECT COUNT(tagente_modulo.id_agente_modulo) AS module_lag, 'SELECT COUNT(tagente_modulo.id_agente_modulo) AS module_lag,
AVG(UNIX_TIMESTAMP() - utimestamp - current_interval) AS lag AVG(UNIX_TIMESTAMP() - utimestamp - current_interval) AS "lag"
FROM tagente_estado, tagente_modulo, tagente FROM tagente_estado, tagente_modulo, tagente
WHERE utimestamp > 0 WHERE utimestamp > 0
AND tagente.disabled = 0 AND tagente.disabled = 0

View File

@ -4990,11 +4990,10 @@ input:checked + .p-slider:before {
.action_buttons input[type="image"], .action_buttons input[type="image"],
.action_button_img { .action_button_img {
border-radius: 4px; border-radius: 4px;
border: 1px solid #dcdcdc; border: 1px solid #dcdcdc !important;
padding: 1px; padding: 1px !important;
box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1); box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1);
max-width: 21px; max-width: 21px;
background-color: transparent; /*BORRAR*/
} }
/* This class is for only one icon to be a button type. */ /* This class is for only one icon to be a button type. */

View File

@ -129,7 +129,7 @@
<div style='height: 10px'> <div style='height: 10px'>
<?php <?php
$version = '7.0NG.742'; $version = '7.0NG.742';
$build = '200115'; $build = '200116';
$banner = "v$version Build $build"; $banner = "v$version Build $build";
error_reporting(0); error_reporting(0);
@ -965,9 +965,12 @@ function install_step4()
$step5 = mysqli_query( $step5 = mysqli_query(
$connection, $connection,
"GRANT ALL PRIVILEGES ON `$dbname`.* to pandora@$host "CREATE USER pandora@$host IDENTIFIED BY '".$random_password."'"
IDENTIFIED BY '".$random_password."'"
); );
$step5 |= mysqli_query(
$connection,
"GRANT ALL PRIVILEGES ON `$dbname`.* to pandora@$host"
);
mysqli_query($connection, 'FLUSH PRIVILEGES'); mysqli_query($connection, 'FLUSH PRIVILEGES');
check_generic($step5, "Established privileges for user pandora. A new random password has been generated: <b>$random_password</b><div class='warn'>Please write it down, you will need to setup your Pandora FMS server, editing the </i>/etc/pandora/pandora_server.conf</i> file</div>"); check_generic($step5, "Established privileges for user pandora. A new random password has been generated: <b>$random_password</b><div class='warn'>Please write it down, you will need to setup your Pandora FMS server, editing the </i>/etc/pandora/pandora_server.conf</i> file</div>");

View File

@ -81,8 +81,8 @@ if ($edit_networkmap) {
$id_group = $values['id_group']; $id_group = $values['id_group'];
// ACL for the network map. // ACL for the network map.
$networkmap_write = check_acl($config['id_user'], $id_group, 'MW'); $networkmap_write = check_acl($config['id_user'], $id_group_map, 'MW');
$networkmap_manage = check_acl($config['id_user'], $id_group, 'MM'); $networkmap_manage = check_acl($config['id_user'], $id_group_map, 'MM');
if (!$networkmap_write && !$networkmap_manage) { if (!$networkmap_write && !$networkmap_manage) {
db_pandora_audit( db_pandora_audit(
@ -95,6 +95,9 @@ if ($edit_networkmap) {
$name = io_safe_output($values['name']); $name = io_safe_output($values['name']);
// Id group of the map itself, not data source.
$id_group_map = $values['id_group_map'];
$description = $values['description']; $description = $values['description'];
$filter = json_decode($values['filter'], true); $filter = json_decode($values['filter'], true);
@ -267,8 +270,8 @@ if ($not_found) {
$config['id_user'], $config['id_user'],
'AR', 'AR',
true, true,
'id_group', 'id_group_map',
$id_group, $id_group_map,
'', '',
'', '',
'', '',
@ -329,6 +332,28 @@ if ($not_found) {
$table->data['source_data_ip_mask'][0] = __('Source from CIDR IP mask'); $table->data['source_data_ip_mask'][0] = __('Source from CIDR IP mask');
$table->data['source_data_ip_mask'][1] = html_print_input_text('ip_mask', $ip_mask, '', 20, 255, true, $disabled_source); $table->data['source_data_ip_mask'][1] = html_print_input_text('ip_mask', $ip_mask, '', 20, 255, true, $disabled_source);
$table->data['source_data_group'][0] = __('Source group');
$table->data['source_data_group'][1] = html_print_select_groups(
$config['id_user'],
'AR',
true,
'id_group',
$id_group,
'',
'',
'',
true
);
$table->data['source_data_group'][1] .= html_print_image(
'images/error.png',
true,
[
'id' => 'group_change_warning',
'title' => __('Source id group changed. All elements in networkmap will be lost.'),
'style' => 'display : none',
]
);
$table->data['source_data_dont_show_subgroups'][0] = __('Don\'t show subgroups:'); $table->data['source_data_dont_show_subgroups'][0] = __('Don\'t show subgroups:');
$table->data['source_data_dont_show_subgroups'][1] = html_print_checkbox( $table->data['source_data_dont_show_subgroups'][1] = html_print_checkbox(
'dont_show_subgroups', 'dont_show_subgroups',
@ -379,7 +404,7 @@ if ($not_found) {
$table->data['kval'][0] = __('Default ideal node separation'); $table->data['kval'][0] = __('Default ideal node separation');
$table->data['kval'][1] = html_print_input_text('kval', $kval, '', 5, 10, true, $disabled_source, false, $itemClass).ui_print_help_tip(__('Only fdp. Default ideal node separation in the layout. By default 0.3'), true); $table->data['kval'][1] = html_print_input_text('kval', $kval, '', 5, 10, true, $disabled_source, false, $itemClass).ui_print_help_tip(__('Only fdp. Default ideal node separation in the layout. By default 0.3'), true);
echo '<form method="post" action="index.php?sec=network&amp;sec2=operation/agentes/pandora_networkmap">'; echo '<form id="networkmap_options_form" method="post" action="index.php?sec=network&amp;sec2=operation/agentes/pandora_networkmap">';
html_print_table($table); html_print_table($table);
@ -420,8 +445,11 @@ $(document).ready(function() {
.css('display', 'none'); .css('display', 'none');
$("#form_editor-source_data_dont_show_subgroups") $("#form_editor-source_data_dont_show_subgroups")
.css('display', 'none'); .css('display', 'none');
$("#form_editor-source_data_group")
.css('display', 'none');
$("#form_editor-source_data_recon_task") $("#form_editor-source_data_recon_task")
.css('display', ''); .css('display', '');
} }
else if (source == 'ip_mask') { else if (source == 'ip_mask') {
$("#form_editor-source_data_ip_mask") $("#form_editor-source_data_ip_mask")
@ -430,6 +458,8 @@ $(document).ready(function() {
.css('display', 'none'); .css('display', 'none');
$("#form_editor-source_data_dont_show_subgroups") $("#form_editor-source_data_dont_show_subgroups")
.css('display', 'none'); .css('display', 'none');
$("#form_editor-source_data_group")
.css('display', 'none');
} }
else if (source == 'group') { else if (source == 'group') {
$("#form_editor-source_data_ip_mask") $("#form_editor-source_data_ip_mask")
@ -438,6 +468,8 @@ $(document).ready(function() {
.css('display', 'none'); .css('display', 'none');
$("#form_editor-source_data_dont_show_subgroups") $("#form_editor-source_data_dont_show_subgroups")
.css('display', ''); .css('display', '');
$("#form_editor-source_data_group")
.css('display', '');
} }
}); });
@ -508,5 +540,53 @@ $(document).ready(function() {
$("input[name='source']").trigger("change"); $("input[name='source']").trigger("change");
$("#method").trigger("change"); $("#method").trigger("change");
// Control if id_group has changed.
var id_group_old = $("#id_group").val();
var id_group_changed = false;
$("#id_group").on('change',{id_group_old: id_group_old}, function () {
var id_group_new = $("#id_group").val();
if((id_group_old != id_group_new) && (update_networkmap == 1 )) {
id_group_changed = true;
$("#group_change_warning").show();
} else {
id_group_changed = false;
$("#group_change_warning").hide();
}
});
var update_networkmap = 0;
// Show advice if id_group has changed.
update_networkmap = $("input[name='update_networkmap']").val();
$( "#submit-crt" ).click(function( event ) {
if(update_networkmap == 1 && id_group_changed === true) {
confirmDialog({
title: '<?php echo __('Are you sure?'); ?>',
message: '<?php echo __('Source id group changed. All elements in Networkmap will be lost'); ?>',
ok: '<?php echo __('OK'); ?>',
cancel: '<?php echo __('Cancel'); ?>',
onDeny: function() {
// Continue execution.
return false;
},
onAccept: function () {
// Submit form
$("#networkmap_options_form").submit();
}
})
event.preventDefault();
}
}); });
});
</script> </script>

View File

@ -12,10 +12,10 @@
// Load global variables // Load global variables
global $config; global $config;
// Check user credentials // Check user credentials.
check_login(); check_login();
// General ACL for the network maps // General ACL for the network maps.
$networkmaps_read = check_acl($config['id_user'], 0, 'MR'); $networkmaps_read = check_acl($config['id_user'], 0, 'MR');
$networkmaps_write = check_acl($config['id_user'], 0, 'MW'); $networkmaps_write = check_acl($config['id_user'], 0, 'MW');
$networkmaps_manage = check_acl($config['id_user'], 0, 'MM'); $networkmaps_manage = check_acl($config['id_user'], 0, 'MM');
@ -53,11 +53,12 @@ if (enterprise_installed()) {
if ($save_empty_networkmap) { if ($save_empty_networkmap) {
$id_group = (int) get_parameter('id_group', 0); $id_group = (int) get_parameter('id_group', 0);
$id_group_map = (int) get_paramater('id_group_map', 0);
// ACL for the network map // ACL for the network map.
// $networkmap_read = check_acl ($config['id_user'], $id_group, "MR"); // $networkmap_read = check_acl ($config['id_user'], $id_group, "MR");
$networkmap_write = check_acl($config['id_user'], $id_group, 'MW'); $networkmap_write = check_acl($config['id_user'], $id_group_map, 'MW');
$networkmap_manage = check_acl($config['id_user'], $id_group, 'MM'); $networkmap_manage = check_acl($config['id_user'], $id_group_map, 'MM');
if (!$networkmap_write && !$networkmap_manage) { if (!$networkmap_write && !$networkmap_manage) {
db_pandora_audit( db_pandora_audit(
@ -93,6 +94,7 @@ if (enterprise_installed()) {
$values['description'] = $description; $values['description'] = $description;
$values['source'] = 0; $values['source'] = 0;
$values['source_data'] = $id_group; $values['source_data'] = $id_group;
$values['id_group_map'] = $id_group_map;
if (!$networkmap_write && !$networkmap_manage) { if (!$networkmap_write && !$networkmap_manage) {
@ -139,10 +141,12 @@ if (enterprise_installed()) {
} }
} else if ($update_empty_networkmap) { } else if ($update_empty_networkmap) {
$id_group = (int) get_parameter('id_group', 0); $id_group = (int) get_parameter('id_group', 0);
$id_group_map = (int) get_parameter('id_group_map', 0);
// ACL for the new network map // ACL for the new network map
$networkmap_write_new = check_acl($config['id_user'], $id_group, 'MW'); $networkmap_write_new = check_acl($config['id_user'], $id_group_map, 'MW');
$networkmap_manage_new = check_acl($config['id_user'], $id_group, 'MM'); $networkmap_manage_new = check_acl($config['id_user'], $id_group_map, 'MM');
if (!$networkmap_write && !$networkmap_manage) { if (!$networkmap_write && !$networkmap_manage) {
db_pandora_audit( db_pandora_audit(
@ -221,11 +225,13 @@ if ($new_networkmap || $save_networkmap) {
if ($save_networkmap) { if ($save_networkmap) {
$id_group = (int) get_parameter('id_group', 0); $id_group = (int) get_parameter('id_group', 0);
$id_group_map = (int) get_parameter('id_group_map', 0);
// ACL for the network map // ACL for the network map
// $networkmap_read = check_acl ($config['id_user'], $id_group, "MR"); // $networkmap_read = check_acl ($config['id_user'], $id_group, "MR");
$networkmap_write = check_acl($config['id_user'], $id_group, 'MW'); $networkmap_write = check_acl($config['id_user'], $id_group_map, 'MW');
$networkmap_manage = check_acl($config['id_user'], $id_group, 'MM'); $networkmap_manage = check_acl($config['id_user'], $id_group_map, 'MM');
if (!$networkmap_write && !$networkmap_manage) { if (!$networkmap_write && !$networkmap_manage) {
db_pandora_audit( db_pandora_audit(
@ -282,6 +288,7 @@ if ($new_networkmap || $save_networkmap) {
$values['height'] = $height; $values['height'] = $height;
$values['id_user'] = $config['id_user']; $values['id_user'] = $config['id_user'];
$values['description'] = $description; $values['description'] = $description;
$values['id_group_map'] = $id_group_map;
switch ($method) { switch ($method) {
case 'twopi': case 'twopi':
@ -401,8 +408,10 @@ else if ($update_networkmap || $copy_networkmap || $delete) {
return; return;
} }
$id_group_old = db_get_value('id_group', 'tmap', 'id', $id); // ACL for the network map.
if ($id_group_old === false) { $id_group_map_old = db_get_value('id_group_map', 'tmap', 'id', $id);
if ($id_group_map_old === false) {
db_pandora_audit( db_pandora_audit(
'ACL Violation', 'ACL Violation',
'Trying to accessnode graph builder' 'Trying to accessnode graph builder'
@ -411,9 +420,8 @@ else if ($update_networkmap || $copy_networkmap || $delete) {
return; return;
} }
// ACL for the network map $networkmap_write = check_acl($config['id_user'], $id_group_map_old, 'MW');
$networkmap_write = check_acl($config['id_user'], $id_group_old, 'MW'); $networkmap_manage = check_acl($config['id_user'], $id_group_map_old, 'MM');
$networkmap_manage = check_acl($config['id_user'], $id_group_old, 'MM');
if (!$networkmap_write && !$networkmap_manage) { if (!$networkmap_write && !$networkmap_manage) {
db_pandora_audit( db_pandora_audit(
@ -426,10 +434,14 @@ else if ($update_networkmap || $copy_networkmap || $delete) {
if ($update_networkmap) { if ($update_networkmap) {
$id_group = (int) get_parameter('id_group', 0); $id_group = (int) get_parameter('id_group', 0);
// Get id of old group source to check changes.
$id_group_old = db_get_value('id_group', 'tmap', 'id', $id);
// ACL for the new network map // ACL for the new network map
$networkmap_write_new = check_acl($config['id_user'], $id_group, 'MW'); $id_group_map = (int) get_parameter('id_group_map', 0);
$networkmap_manage_new = check_acl($config['id_user'], $id_group, 'MM'); $networkmap_write_new = check_acl($config['id_user'], $id_group_map, 'MW');
$networkmap_manage_new = check_acl($config['id_user'], $id_group_map, 'MM');
if (!$networkmap_write && !$networkmap_manage) { if (!$networkmap_write && !$networkmap_manage) {
db_pandora_audit( db_pandora_audit(
@ -456,6 +468,7 @@ else if ($update_networkmap || $copy_networkmap || $delete) {
$values = []; $values = [];
$values['name'] = $name; $values['name'] = $name;
$values['id_group'] = $id_group; $values['id_group'] = $id_group;
$values['id_group_map'] = $id_group_map;
$description = get_parameter('description', ''); $description = get_parameter('description', '');
$values['description'] = $description; $values['description'] = $description;
@ -493,6 +506,8 @@ else if ($update_networkmap || $copy_networkmap || $delete) {
// If change the group, the map must be regenerated // If change the group, the map must be regenerated
if ($id_group != $id_group_old) { if ($id_group != $id_group_old) {
networkmap_delete_nodes($id); networkmap_delete_nodes($id);
// Delete relations.
networkmap_delete_relations($id);
} }
$networkmap_write = $networkmap_write_new; $networkmap_write = $networkmap_write_new;
@ -701,9 +716,9 @@ switch ($tab) {
$network_maps = db_get_all_rows_filter( $network_maps = db_get_all_rows_filter(
'tmap', 'tmap',
[ [
'id_group' => $id_groups, 'id_group_map' => $id_groups,
'limit' => $limit, 'limit' => $limit,
'offset' => $offset, 'offset' => $offset,
] ]
); );
@ -712,9 +727,9 @@ switch ($tab) {
foreach ($network_maps as $network_map) { foreach ($network_maps as $network_map) {
// ACL for the network map // ACL for the network map
$networkmap_read = check_acl($config['id_user'], $network_map['id_group'], 'MR'); $networkmap_read = check_acl($config['id_user'], $network_map['id_group_map'], 'MR');
$networkmap_write = check_acl($config['id_user'], $network_map['id_group'], 'MW'); $networkmap_write = check_acl($config['id_user'], $network_map['id_group_map'], 'MW');
$networkmap_manage = check_acl($config['id_user'], $network_map['id_group'], 'MM'); $networkmap_manage = check_acl($config['id_user'], $network_map['id_group_map'], 'MM');
if (!$networkmap_read && !$networkmap_write && !$networkmap_manage) { if (!$networkmap_read && !$networkmap_write && !$networkmap_manage) {
db_pandora_audit( db_pandora_audit(
@ -722,7 +737,7 @@ switch ($tab) {
'Trying to access networkmap enterprise' 'Trying to access networkmap enterprise'
); );
include 'general/noaccess.php'; include 'general/noaccess.php';
return; continue;
} }
$data = []; $data = [];
@ -768,7 +783,7 @@ switch ($tab) {
} }
} }
$data['groups'] = ui_print_group_icon($network_map['id_group'], true); $data['groups'] = ui_print_group_icon($network_map['id_group_map'], true);
if ($networkmap_write || $networkmap_manage) { if ($networkmap_write || $networkmap_manage) {
$table->cellclass[] = [ $table->cellclass[] = [

View File

@ -576,8 +576,8 @@ if (is_ajax()) {
$filter = json_encode($array_filter); $filter = json_encode($array_filter);
// ACL for the network map. // ACL for the network map.
$networkmap_write = check_acl($config['id_user'], $networkmap['id_group'], 'MW'); $networkmap_write = check_acl($config['id_user'], $networkmap['id_group_map'], 'MW');
$networkmap_manage = check_acl($config['id_user'], $networkmap['id_group'], 'MM'); $networkmap_manage = check_acl($config['id_user'], $networkmap['id_group_map'], 'MM');
if (!$networkmap_write && !$networkmap_manage) { if (!$networkmap_write && !$networkmap_manage) {
db_pandora_audit( db_pandora_audit(
@ -800,9 +800,9 @@ if ($networkmap === false) {
return; return;
} else { } else {
// ACL for the network map. // ACL for the network map.
$networkmap_read = check_acl($config['id_user'], $networkmap['id_group'], 'MR'); $networkmap_read = check_acl($config['id_user'], $networkmap['id_group_map'], 'MR');
$networkmap_write = check_acl($config['id_user'], $networkmap['id_group'], 'MW'); $networkmap_write = check_acl($config['id_user'], $networkmap['id_group_map'], 'MW');
$networkmap_manage = check_acl($config['id_user'], $networkmap['id_group'], 'MM'); $networkmap_manage = check_acl($config['id_user'], $networkmap['id_group_map'], 'MM');
if (!$networkmap_read && !$networkmap_write && !$networkmap_manage) { if (!$networkmap_read && !$networkmap_write && !$networkmap_manage) {
db_pandora_audit( db_pandora_audit(

View File

@ -3,7 +3,7 @@
# #
%define name pandorafms_console %define name pandorafms_console
%define version 7.0NG.742 %define version 7.0NG.742
%define release 200115 %define release 200116
# User and Group under which Apache is running # User and Group under which Apache is running
%define httpd_name httpd %define httpd_name httpd

View File

@ -3,7 +3,7 @@
# #
%define name pandorafms_console %define name pandorafms_console
%define version 7.0NG.742 %define version 7.0NG.742
%define release 200115 %define release 200116
# User and Group under which Apache is running # User and Group under which Apache is running
%define httpd_name httpd %define httpd_name httpd

View File

@ -3,7 +3,7 @@
# #
%define name pandorafms_console %define name pandorafms_console
%define version 7.0NG.742 %define version 7.0NG.742
%define release 200115 %define release 200116
%define httpd_name httpd %define httpd_name httpd
# User and Group under which Apache is running # User and Group under which Apache is running
%define httpd_name apache2 %define httpd_name apache2

View File

@ -2188,6 +2188,7 @@ CREATE TABLE IF NOT EXISTS `tmap` (
`generation_method` INTEGER UNSIGNED NOT NULL default 0, `generation_method` INTEGER UNSIGNED NOT NULL default 0,
`generated` INTEGER UNSIGNED NOT NULL default 0, `generated` INTEGER UNSIGNED NOT NULL default 0,
`filter` TEXT, `filter` TEXT,
`id_group_map` INT(10) UNSIGNED NOT NULL default 0,
PRIMARY KEY(`id`) PRIMARY KEY(`id`)
) ENGINE = InnoDB DEFAULT CHARSET=utf8; ) ENGINE = InnoDB DEFAULT CHARSET=utf8;

View File

@ -1,5 +1,5 @@
package: pandorafms-server package: pandorafms-server
Version: 7.0NG.742-200115 Version: 7.0NG.742-200116
Architecture: all Architecture: all
Priority: optional Priority: optional
Section: admin Section: admin

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -36,7 +36,7 @@ use Encode::Locale;
Encode::Locale::decode_argv; Encode::Locale::decode_argv;
# version: define current version # version: define current version
my $version = "7.0NG.742 PS200115"; my $version = "7.0NG.742 PS200116";
# save program name for logging # save program name for logging
my $progname = basename($0); my $progname = basename($0);