Merge remote-tracking branch 'origin/develop' into ent-8540-contel-nuevo-informe-custom-render

This commit is contained in:
Daniel Barbero Martin 2022-04-05 08:20:21 +02:00
commit c049f18bf1
37 changed files with 625 additions and 554 deletions

View File

@ -1,5 +1,5 @@
package: pandorafms-agent-unix package: pandorafms-agent-unix
Version: 7.0NG.760-220404 Version: 7.0NG.760-220405
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.760-220404" pandora_version="7.0NG.760-220405"
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

@ -1015,7 +1015,7 @@ my $Sem = undef;
my $ThreadSem = undef; my $ThreadSem = undef;
use constant AGENT_VERSION => '7.0NG.760'; use constant AGENT_VERSION => '7.0NG.760';
use constant AGENT_BUILD => '220404'; use constant AGENT_BUILD => '220405';
# 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.760 %define version 7.0NG.760
%define release 220404 %define release 220405
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.760 %define version 7.0NG.760
%define release 220404 %define release 220405
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.760" PI_VERSION="7.0NG.760"
PI_BUILD="220404" PI_BUILD="220405"
OS_NAME=`uname -s` OS_NAME=`uname -s`
FORCE=0 FORCE=0

View File

@ -186,7 +186,7 @@ UpgradeApplicationID
{} {}
Version Version
{220404} {220405}
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.760 Build 220404") #define PANDORA_VERSION ("7.0NG.760 Build 220405")
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.760(Build 220404))" VALUE "ProductVersion", "(7.0NG.760(Build 220405))"
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.760-220404 Version: 7.0NG.760-220405
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.760-220404" pandora_version="7.0NG.760-220405"
package_pear=0 package_pear=0
package_pandora=1 package_pandora=1

View File

@ -3,6 +3,9 @@ START TRANSACTION;
ALTER TABLE `tipam_vlan` ADD COLUMN `custom_id` bigint(20) unsigned DEFAULT NULL; ALTER TABLE `tipam_vlan` ADD COLUMN `custom_id` bigint(20) unsigned DEFAULT NULL;
ALTER TABLE `tuser_task_scheduled`ADD COLUMN `enabled` TINYINT UNSIGNED NOT NULL DEFAULT 1; ALTER TABLE `tuser_task_scheduled`ADD COLUMN `enabled` TINYINT UNSIGNED NOT NULL DEFAULT 1;
ALTER TABLE `tevent_filter` ADD COLUMN `custom_data` VARCHAR(500) DEFAULT '';
ALTER TABLE `tevent_filter` ADD COLUMN `custom_data_filter_type` TINYINT UNSIGNED DEFAULT 0;
ALTER TABLE tagente MODIFY alias varchar(600) NOT NULL DEFAULT ''; ALTER TABLE tagente MODIFY alias varchar(600) NOT NULL DEFAULT '';
ALTER TABLE tagente MODIFY nombre varchar(600) NOT NULL DEFAULT ''; ALTER TABLE tagente MODIFY nombre varchar(600) NOT NULL DEFAULT '';

View File

@ -1543,6 +1543,8 @@ ALTER TABLE `tevent_filter` MODIFY COLUMN `severity` text NOT NULL;
ALTER TABLE tevent_filter ADD COLUMN `server_id` int(10) NOT NULL default 0; ALTER TABLE tevent_filter ADD COLUMN `server_id` int(10) NOT NULL default 0;
ALTER TABLE `tevent_filter` ADD COLUMN `time_from` TIME NULL; ALTER TABLE `tevent_filter` ADD COLUMN `time_from` TIME NULL;
ALTER TABLE `tevent_filter` ADD COLUMN `time_to` TIME NULL; ALTER TABLE `tevent_filter` ADD COLUMN `time_to` TIME NULL;
ALTER TABLE `tevent_filter` ADD COLUMN `custom_data` VARCHAR(500) DEFAULT '';
ALTER TABLE `tevent_filter` ADD COLUMN `custom_data_filter_type` TINYINT UNSIGNED DEFAULT 0;
-- --------------------------------------------------------------------- -- ---------------------------------------------------------------------
-- Table `tusuario` -- Table `tusuario`

View File

@ -116,6 +116,7 @@ $fields_available['data'] = __('Data');
$fields_available['module_status'] = __('Module Status'); $fields_available['module_status'] = __('Module Status');
$fields_available['mini_severity'] = __('Severity mini'); $fields_available['mini_severity'] = __('Severity mini');
$fields_available['module_custom_id'] = __('Module custom ID'); $fields_available['module_custom_id'] = __('Module custom ID');
$fields_available['custom_data'] = __('Custom data');
// Remove fields already selected. // Remove fields already selected.

View File

@ -89,6 +89,8 @@ if ($id) {
$tag_without_base64 = base64_encode($tag_without_json_clean); $tag_without_base64 = base64_encode($tag_without_json_clean);
$filter_only_alert = $filter['filter_only_alert']; $filter_only_alert = $filter['filter_only_alert'];
$custom_data = $filter['custom_data'];
$custom_data_filter_type = $filter['custom_data_filter_type'];
if ($id_agent_module != 0) { if ($id_agent_module != 0) {
$text_module = modules_get_agentmodule_name($id_agent_module); $text_module = modules_get_agentmodule_name($id_agent_module);
@ -165,6 +167,8 @@ if ($update || $create) {
$tag_without_json = io_safe_input(base64_decode($tag_without_base64)); $tag_without_json = io_safe_input(base64_decode($tag_without_base64));
$filter_only_alert = get_parameter('filter_only_alert', ''); $filter_only_alert = get_parameter('filter_only_alert', '');
$custom_data = get_parameter('custom_data', '');
$custom_data_filter_type = get_parameter('custom_data_filter_type', '');
$values = [ $values = [
'id_name' => $id_name, 'id_name' => $id_name,
@ -189,6 +193,8 @@ if ($update || $create) {
'id_extra' => $id_extra, 'id_extra' => $id_extra,
'user_comment' => $user_comment, 'user_comment' => $user_comment,
'filter_only_alert' => $filter_only_alert, 'filter_only_alert' => $filter_only_alert,
'custom_data' => $custom_data,
'custom_data_filter_type' => $custom_data_filter_type,
]; ];
$severity = explode(',', $severity); $severity = explode(',', $severity);
@ -627,9 +633,26 @@ $table->data[23][1] = html_print_input_text('id_extra', $id_extra, '', 11, 255,
$table->data[24][0] = '<b>'.__('Comment').'</b>'; $table->data[24][0] = '<b>'.__('Comment').'</b>';
$table->data[24][1] = html_print_input_text('user_comment', $user_comment, '', 35, 255, true); $table->data[24][1] = html_print_input_text('user_comment', $user_comment, '', 35, 255, true);
$table->data[25][0] = '<b>'.__('Custom data filter type').'</b>';
$table->data[25][1] = html_print_select(
[
'0' => __('Filter custom data by name field'),
'1' => __('Filter custom data by value field'),
],
'custom_data_filter_type',
$custom_data_filter_type,
'',
false,
'',
true
);
$table->data[26][0] = '<b>'.__('Custom data').'</b>';
$table->data[26][1] = html_print_input_text('custom_data', $custom_data, '', 35, 255, true);
if (is_metaconsole()) { if (is_metaconsole()) {
$table->data[25][0] = '<b>'.__('Id souce event').'</b>'; $table->data[27][0] = '<b>'.__('Id souce event').'</b>';
$table->data[25][1] = html_print_input_text( $table->data[27][1] = html_print_input_text(
'id_source_event', 'id_source_event',
$id_source_event, $id_source_event,
'', '',

View File

@ -119,7 +119,6 @@ switch ($action) {
$map_initial_altitude = get_parameter('map_initial_altitude'); $map_initial_altitude = get_parameter('map_initial_altitude');
$map_zoom_level = get_parameter('map_zoom_level'); $map_zoom_level = get_parameter('map_zoom_level');
$map_background = ''; $map_background = '';
// TODO
$map_default_longitude = get_parameter('map_default_longitude'); $map_default_longitude = get_parameter('map_default_longitude');
$map_default_latitude = get_parameter('map_default_latitude'); $map_default_latitude = get_parameter('map_default_latitude');
$map_default_altitude = get_parameter('map_default_altitude'); $map_default_altitude = get_parameter('map_default_altitude');
@ -219,7 +218,6 @@ switch ($action) {
case 'edit_map': case 'edit_map':
$next_action = 'update_saved'; $next_action = 'update_saved';
break; break;
case 'update_saved': case 'update_saved':
@ -229,7 +227,6 @@ switch ($action) {
$map_initial_altitude = get_parameter('map_initial_altitude'); $map_initial_altitude = get_parameter('map_initial_altitude');
$map_zoom_level = get_parameter('map_zoom_level'); $map_zoom_level = get_parameter('map_zoom_level');
$map_background = ''; $map_background = '';
// TODO
$map_default_longitude = get_parameter('map_default_longitude'); $map_default_longitude = get_parameter('map_default_longitude');
$map_default_latitude = get_parameter('map_default_latitude'); $map_default_latitude = get_parameter('map_default_latitude');
$map_default_altitude = get_parameter('map_default_altitude'); $map_default_altitude = get_parameter('map_default_altitude');
@ -275,8 +272,7 @@ switch ($action) {
$map_levels_zoom $map_levels_zoom
); );
if (empty($invalidFields)) { if (empty($invalidFields) === true) {
// TODO
gis_update_map( gis_update_map(
$idMap, $idMap,
$map_name, $map_name,
@ -307,6 +303,10 @@ switch ($action) {
$next_action = 'update_saved'; $next_action = 'update_saved';
html_print_input_hidden('map_id', $idMap); html_print_input_hidden('map_id', $idMap);
break; break;
default:
// Default.
break;
} }
?> ?>
@ -440,6 +440,10 @@ switch ($action) {
$layer_list = !empty($mapData['layers']) ? $mapData['layers'] : []; $layer_list = !empty($mapData['layers']) ? $mapData['layers'] : [];
break; break;
default:
// Default.
break;
} }
$table = new stdClass(); $table = new stdClass();
@ -468,12 +472,20 @@ foreach ($listConnectionTemp as $connectionTemp) {
} }
$table->data[1][0] = __('Add Map connection').$iconError; $table->data[1][0] = __('Add Map connection').$iconError;
$table->data[1][1] = ".html_print_select($listConnection, 'map_connection_list', '', '', '', '0', true)." $table->data[1][1] = "<table class='no-class' border='0' id='map_connection'>
< / td > < td > < a href = 'javascript: addConnectionMap();' > ".html_print_image( <tr>
<td>".html_print_select($listConnection, 'map_connection_list', '', '', '', '0', true)."
</td>
<td >
<a href='javascript: addConnectionMap();'>".html_print_image(
'images/add.png', 'images/add.png',
true, true,
['class' => 'invert_filter'] ['class' => 'invert_filter']
)." < / a > < input type = 'hidden' name = 'map_connection_list' value = '' id = 'map_connection_list' / > < input type = 'hidden' name = 'layer_list' value = '' id = 'layer_list' / > < / td > < / tr > (".gis_add_conection_maps_in_form($map_connection_list).' )."</a>
<input type='hidden' name='map_connection_list' value='' id='map_connection_list' />
<input type='hidden' name='layer_list' value='' id='layer_list' />
</td>
</tr> ".gis_add_conection_maps_in_form($map_connection_list).'
</table>'; </table>';
$own_info = get_user_info($config['id_user']); $own_info = get_user_info($config['id_user']);
@ -549,9 +561,9 @@ $table->data = [];
$table->data[0][0] = '<h4>'.__('List of layers').'</h4>'; $table->data[0][0] = '<h4>'.__('List of layers').'</h4>';
$table->data[0][1] = '<div class="right">'.html_print_button(__('New layer'), 'new_layer', false, 'newLayer();', 'class="sub add "', true).'</div>'; $table->data[0][1] = '<div class="right">'.html_print_button(__('New layer'), 'new_layer', false, 'newLayer();', 'class="sub add "', true).'</div>';
$table->data[1][0] = '<table class="databox' border='0' cellpadding='4' cellspacing='4' id='list_layers"></table>'; $table->data[1][0] = '<table class="databox" border="0" cellpadding="4" cellspacing="4" id="list_layers"></table>';
$table->data[1][1] = '<div id="form_layer' class='invisible'> $table->data[1][1] = '<div id="form_layer" class="invisible">
<table id='form_layer_table' class="" border='0' cellpadding='4' cellspacing='4"> <table id="form_layer_table" class="" border="0" cellpadding="4" cellspacing="4">
<tr> <tr>
<td>'.__('Layer name').':</td> <td>'.__('Layer name').':</td>
<td>'.html_print_input_text('layer_name_form', '', '', 20, 40, true).'</td> <td>'.html_print_input_text('layer_name_form', '', '', 20, 40, true).'</td>
@ -594,7 +606,7 @@ $table->data[1][1] .= '</td>
<tr> <tr>
<td colspan="4"> <td colspan="4">
<h4>'.__('List of Agents to be shown in the layer').'</h4> <h4>'.__('List of Agents to be shown in the layer').'</h4>
<table class="databox' border='0' cellpadding='4' cellspacing='4' id='list_agents"> <table class="databox" border="0" cellpadding="4" cellspacing="4" id="list_agents">
</table> </table>
</td> </td>
</tr>'; </tr>';
@ -628,18 +640,18 @@ $table->data[1][1] .= '<tr><td colspan="4"><hr /></td></tr>
<td colspan="3">'.$agent_for_group_input.'</td> <td colspan="3">'.$agent_for_group_input.'</td>
</tr> </tr>
<tr> <tr>
<td colspan="4' align='right">'.$add_group_btn.'</td> <td colspan="4" align="right">'.$add_group_btn.'</td>
</tr> </tr>
<tr> <tr>
<td colspan="4"> <td colspan="4">
<h4>'.__('List of groups to be shown in the layer').'</h4> <h4>'.__('List of groups to be shown in the layer').'</h4>
<table class="databox' border='0' cellpadding='4' cellspacing='4' id='list_groups"> <table class="databox" border="0" cellpadding="4" cellspacing="4" id="list_groups">
</table> </table>
</td> </td>
</tr>'; </tr>';
$table->data[1][1] .= '<tr> $table->data[1][1] .= '<tr>
<td align="right' colspan='4">'.html_print_button(__('Save Layer'), 'save_layer', false, 'javascript:saveNewLayer();', 'class="sub wand"', true).' <td align="right" colspan="4">'.html_print_button(__('Save Layer'), 'save_layer', false, 'javascript:saveNewLayer();', 'class="sub wand"', true).'
'.html_print_input_hidden('current_edit_layer_id', '', true).' '.html_print_input_hidden('current_edit_layer_id', '', true).'
</td> </td>
</tr> </tr>
@ -649,12 +661,12 @@ $table->data[1][1] .= '<tr>
html_print_table($table); html_print_table($table);
echo '<div class="action - buttons' style=')width: '.$table->width.'">'; echo '<div class="action-buttons" style="width: '.$table->width.'">';
switch ($action) { switch ($action) {
case 'save_new': case 'save_new':
case 'edit_map': case 'edit_map':
case 'update_saved': case 'update_saved':
if (!empty($invalidFields)) { if (empty($invalidFields) === true) {
html_print_submit_button(_('Save map'), 'save_button', false, 'class="sub wand"'); html_print_submit_button(_('Save map'), 'save_button', false, 'class="sub wand"');
} else { } else {
html_print_submit_button(_('Update map'), 'update_button', false, 'class="sub upd"'); html_print_submit_button(_('Update map'), 'update_button', false, 'class="sub upd"');
@ -664,6 +676,10 @@ switch ($action) {
case 'new_map': case 'new_map':
html_print_submit_button(_('Save map'), 'save_button', false, 'class="sub wand"'); html_print_submit_button(_('Save map'), 'save_button', false, 'class="sub wand"');
break; break;
default:
// Default.
break;
} }
echo '</div>'; echo '</div>';
@ -674,12 +690,12 @@ echo '</form>';
// -------------------------INI CHUNKS--------------------------------------- // -------------------------INI CHUNKS---------------------------------------
?> ?>
<table style="visibility: hidden;('> <table style="visibility: hidden;">
<tbody id='chunk_map_connection'> <tbody id="chunk_map_connection">
<tr class='row_0"> <tr class="row_0">
<td><?php html_print_input_text('map_connection_name', $map_name, '', 20, 40, false, true); ?></td> <td><?php html_print_input_text('map_connection_name', $map_name, '', 20, 40, false, true); ?></td>
<td><?php html_print_radio_button_extended('map_connection_default', '', '', true, false, 'changeDefaultConection(this.value)', ''); ?></td> <td><?php html_print_radio_button_extended('map_connection_default', '', '', true, false, 'changeDefaultConection(this.value)', ''); ?></td>
<td><a id="delete_row' href='none"> <td><a id="delete_row" href="none">
<?php <?php
html_print_image( html_print_image(
'images/cross.png', 'images/cross.png',
@ -702,43 +718,36 @@ ui_require_jquery_file('cluetip');
ui_require_jquery_file('pandora.controls'); ui_require_jquery_file('pandora.controls');
ui_require_jquery_file('json'); ui_require_jquery_file('json');
?> ?>
<script type="text / javascript'> <script type="text/javascript">
function active_button_add_agent() { function active_button_add_agent() {
$(') $("#button-add_agent").prop("disabled", false);
// button-add_agent").prop("disabled", false);
} }
function addAgentClick (event) {
function addAgentClick(event) var $layerFormAgentIdInput = $("#hidden-agent_id");
{ var $layerFormAgentAliasInput = $("#text-agent_alias");
var $layerFormAgentIdInput = $('#hidden-agent_id');
var $layerFormAgentAliasInput = $('#text-agent_alias');
var agentId = Number.parseInt($layerFormAgentIdInput.val()); var agentId = Number.parseInt($layerFormAgentIdInput.val());
var agentAlias = $layerFormAgentAliasInput.val(); var agentAlias = $layerFormAgentAliasInput.val();
var layerId = $('input#hidden-current_edit_layer_id').val(); var layerId = $("input#hidden-current_edit_layer_id").val();
if (Number.isNaN(agentId) || agentId === 0 || agentAlias.length === 0) { if (Number.isNaN(agentId) || agentId === 0 || agentAlias.length === 0) return;
return;
}
addAgentRow(layerId, agentId, agentAlias); addAgentRow(layerId, agentId, agentAlias);
// Clear agent inputs // Clear agent inputs
$layerFormAgentIdInput.val(''); $layerFormAgentIdInput.val("");
$layerFormAgentAliasInput.val(''); $layerFormAgentAliasInput.val("");
$('#button-add_agent').prop('disabled', true); $("#button-add_agent").prop("disabled", true);
} }
function toggleAddGroupBtn () {
function toggleAddGroupBtn() var groupId = Number.parseInt($("select#layer_group_id").val());
{
var groupId = Number.parseInt($('select#layer_group_id').val());
var existGroupId = $("table#list_groups tr.groups_list_item[data-group-id='" + groupId + "']").length > 0; var existGroupId = $("table#list_groups tr.groups_list_item[data-group-id='" + groupId + "']").length > 0;
var agentId = Number.parseInt($('input#hidden-agent_id_for_data').val()); var agentId = Number.parseInt($("input#hidden-agent_id_for_data").val());
var agentAlias = $('input#text-agent_alias_for_data').val(); var agentAlias = $("input#text-agent_alias_for_data").val();
var enabled = ( var enabled = (
!existGroupId !existGroupId
@ -749,19 +758,17 @@ function toggleAddGroupBtn()
&& agentAlias.length > 0 && agentAlias.length > 0
); );
$('#button-add_group').prop('disabled', !enabled); $("#button-add_group").prop("disabled", !enabled);
} }
function addGroupClick (event) {
var $layerFormGroupIdInput = $("select#layer_group_id");
var $layerFormAgentIdInput = $("input#hidden-agent_id_for_data");
var $layerFormAgentAliasInput = $("input#text-agent_alias_for_data");
function addGroupClick(event) var layerId = $("input#hidden-current_edit_layer_id").val();
{
var $layerFormGroupIdInput = $('select#layer_group_id');
var $layerFormAgentIdInput = $('input#hidden-agent_id_for_data');
var $layerFormAgentAliasInput = $('input#text-agent_alias_for_data');
var layerId = $('input#hidden-current_edit_layer_id').val();
var groupId = Number.parseInt($layerFormGroupIdInput.val()); var groupId = Number.parseInt($layerFormGroupIdInput.val());
var groupName = $layerFormGroupIdInput.find(':selected').text(); var groupName = $layerFormGroupIdInput.find(":selected").text();
var agentId = Number.parseInt($layerFormAgentIdInput.val()); var agentId = Number.parseInt($layerFormAgentIdInput.val());
var agentAlias = $layerFormAgentAliasInput.val(); var agentAlias = $layerFormAgentAliasInput.val();
@ -774,61 +781,46 @@ function addGroupClick(event)
&& agentAlias.length > 0 && agentAlias.length > 0
); );
if (!valid) { if (!valid) return;
return;
}
addGroupRow(layerId, groupId, groupName, agentId, agentAlias); addGroupRow(layerId, groupId, groupName, agentId, agentAlias);
// Clear inputs // Clear inputs
// $layerFormGroupIdInput.val(0); // $layerFormGroupIdInput.val(0);
$layerFormAgentIdInput.val(''); $layerFormAgentIdInput.val("");
$layerFormAgentAliasInput.val(''); $layerFormAgentAliasInput.val("");
$('#button-add_group').prop('disabled', true); $("#button-add_group").prop("disabled", true);
} }
function moveLayerRowUpOnClick (event) {
function moveLayerRowUpOnClick(event)
{
var $row = $(event.currentTarget).parent().parent(); var $row = $(event.currentTarget).parent().parent();
$row.insertBefore($row.prev()); $row.insertBefore($row.prev());
} }
function moveLayerRowDownOnClick (event) {
function moveLayerRowDownOnClick(event)
{
var $row = $(event.currentTarget).parent().parent(); var $row = $(event.currentTarget).parent().parent();
$row.insertAfter($row.next()); $row.insertAfter($row.next());
} }
function removeLayerRowOnClick (event) {
function removeLayerRowOnClick(event)
{
var $layerRow = $(event.currentTarget).parent().parent(); var $layerRow = $(event.currentTarget).parent().parent();
var layerRowId = $layerRow.find('input.layer_id').val(); var layerRowId = $layerRow.find("input.layer_id").val();
var layerEditorId = $('input#hidden-current_edit_layer_id').val(); var layerEditorId = $("input#hidden-current_edit_layer_id").val();
if (layerRowId == layerEditorId) { if (layerRowId == layerEditorId) hideLayerEditor();
hideLayerEditor();
}
// Remove row // Remove row
$(event.currentTarget).parent().parent().remove(); $(event.currentTarget).parent().parent().remove();
} }
function hideLayerEditor () {
function hideLayerEditor()
{
// Clean editor // Clean editor
cleanLayerEditor(); cleanLayerEditor();
// Hide editor // Hide editor
$('div#form_layer').hide(); $("div#form_layer").hide();
} }
function showLayerEditor (layerId) {
function showLayerEditor(layerId) var $layerSaveBtn = $("input#button-save_layer");
{
var $layerSaveBtn = $('input#button-save_layer');
// Clean editor // Clean editor
cleanLayerEditor(); cleanLayerEditor();
@ -852,39 +844,33 @@ function showLayerEditor(layerId)
} }
// Show editor (if hidden) // Show editor (if hidden)
$('div#form_layer').show(); $("div#form_layer").show();
} }
function getLayerData (layerId) {
function getLayerData(layerId) var $layerRow = $("tr#layer_row_" + layerId);
{ var layerName = $layerRow.find("input.layer_name").val();
var $layerRow = $('tr#layer_row_' + layerId); var layerVisible = $layerRow.find("input.layer_visible").val() == 1;
var layerName = $layerRow.find('input.layer_name').val(); var layerAgentsFromGroup = $layerRow.find("input.layer_agents_from_group").val();
var layerVisible = $layerRow.find('input.layer_visible').val() == 1; var layerAgents = $layerRow.find("input.layer_agent_alias").map(function () {
var layerAgentsFromGroup = $layerRow.find('input.layer_agents_from_group').val();
var layerAgents = $layerRow.find('input.layer_agent_alias').map(
function () {
return { return {
'id': $(this).data('agent-id'), "id": $(this).data("agent-id"),
'alias': $(this).val() "alias": $(this).val()
}; };
} }).get();
).get(); var layerGroups = $layerRow.find("input.layer_group_id").map(function () {
var layerGroups = $layerRow.find('input.layer_group_id').map(
function () {
var groupId = $(this).val(); var groupId = $(this).val();
var groupName = $(this).siblings(("input.layer_group_name[data-group-id='" + groupId + "']")).val(); var groupName = $(this).siblings("input.layer_group_name[data-group-id='" + groupId + "']").val();
var agentId = $(this).siblings(("input.layer_agent_id_for_data[data-group-id='" + groupId + "']")).val(); var agentId = $(this).siblings("input.layer_agent_id_for_data[data-group-id='" + groupId + "']").val();
var agentAlias = $(this).siblings(("input.layer_agent_alias_for_data[data-group-id='" + groupId + "']")).val(); var agentAlias = $(this).siblings("input.layer_agent_alias_for_data[data-group-id='" + groupId + "']").val();
return { return {
'id': groupId, "id": groupId,
'name': groupName, "name": groupName,
'agentId': agentId, "agentId": agentId,
'agentAlias': agentAlias "agentAlias": agentAlias
}; };
} }).get();
).get();
return { return {
id: layerId, id: layerId,
@ -896,185 +882,142 @@ function getLayerData(layerId)
} }
} }
function setLayerEditorData (data) {
function setLayerEditorData(data) if (data == null) data = {};
{
if (data == null) {
data = {};
}
// Set defaults // Set defaults
data = { data = {
id: data.id || 0, id: data.id || 0,
name: data.name || '', name: data.name || "",
visible: data.visible != null ? !!data.visible : true, visible: data.visible != null ? !!data.visible : true,
agentsFromGroup: data.agentsFromGroup || -1, agentsFromGroup: data.agentsFromGroup || -1,
agents: data.agents || [], agents: data.agents || [],
groups: data.groups || [] groups: data.groups || []
} }
var $layerFormIdInput = $('input#hidden-current_edit_layer_id'); var $layerFormIdInput = $("input#hidden-current_edit_layer_id");
var $layerFormNameInput = $('input#text-layer_name_form'); var $layerFormNameInput = $("input#text-layer_name_form");
var $layerFormVisibleCheckbox = $('input#checkbox-layer_visible_form'); var $layerFormVisibleCheckbox = $("input#checkbox-layer_visible_form");
var $layerFormAgentsFromGroupSelect = $('#layer_group_form'); var $layerFormAgentsFromGroupSelect = $("#layer_group_form");
var $layerFormAgentInput = $('input#text-agent_alias'); var $layerFormAgentInput = $("input#text-agent_alias");
var $layerFormAgentButton = $('input#button-add_agent'); var $layerFormAgentButton = $("input#button-add_agent");
var $layerFormAgentsListItems = $('tr.agents_list_item'); var $layerFormAgentsListItems = $("tr.agents_list_item");
var $layerFormGroupsListItems = $('tr.groups_list_item'); var $layerFormGroupsListItems = $("tr.groups_list_item");
$layerFormIdInput.val(data.id); $layerFormIdInput.val(data.id);
$layerFormNameInput.val(data.name); $layerFormNameInput.val(data.name);
$layerFormVisibleCheckbox.prop('checked', data.visible); $layerFormVisibleCheckbox.prop("checked", data.visible);
$(`#layer_group_form option[value=${data.agentsFromGroup $(`#layer_group_form option[value=${data.agentsFromGroup}]`).attr('selected', 'selected');
}]`).attr('selected', 'selected');
$(`#layer_group_form`).trigger('change'); $(`#layer_group_form`).trigger('change');
$layerFormAgentInput.val(''); $layerFormAgentInput.val("");
$layerFormAgentButton.prop('disabled', true); $layerFormAgentButton.prop("disabled", true);
$layerFormAgentsListItems.remove(); $layerFormAgentsListItems.remove();
$layerFormGroupsListItems.remove(); $layerFormGroupsListItems.remove();
var $tableAgents = $('table#list_agents'); var $tableAgents = $("table#list_agents");
data.agents.foreach (function (agent) { data.agents.forEach(function (agent) {
addAgentRow(data.id, agent.id, agent.alias); addAgentRow(data.id, agent.id, agent.alias);
}) { });
}
var $tableGroups = $('table#list_groups'); var $tableGroups = $("table#list_groups");
data.groups.foreach (function (group) { data.groups.forEach(function (group) {
addGroupRow(data.id, group.id, group.name, group.agentId, group.agentAlias); addGroupRow(data.id, group.id, group.name, group.agentId, group.agentAlias);
}) { });
} }
} function newLayer () {
function newLayer()
{
showLayerEditor(null); showLayerEditor(null);
} }
function saveNewLayer () {
var $layerFormNameInput = $("input#text-layer_name_form");
var $layerFormVisibleCheckbox = $("input#checkbox-layer_visible_form");
var $layerFormAgentsFromGroupSelect = $("select#layer_group_form");
var $layerFormAgentsListItems = $("tr.agents_list_item > td > span.agent_alias");
var $layerFormGroupsListItems = $("tr.groups_list_item");
var newLayerId = "new_" + ($("tr.layer_row").length + 1);
function saveNewLayer() addLayerRow(newLayerId, {
{
var $layerFormNameInput = $('input#text-layer_name_form');
var $layerFormVisibleCheckbox = $('input#checkbox-layer_visible_form');
var $layerFormAgentsFromGroupSelect = $('select#layer_group_form');
var $layerFormAgentsListItems = $('tr.agents_list_item > td > span.agent_alias');
var $layerFormGroupsListItems = $('tr.groups_list_item');
var newLayerId = ('new_' + ($('tr.layer_row').length + 1));
addLayerRow(
newLayerId,
{
id: newLayerId, id: newLayerId,
name: $layerFormNameInput.val(), name: $layerFormNameInput.val(),
visible: $layerFormVisibleCheckbox.prop('checked'), visible: $layerFormVisibleCheckbox.prop("checked"),
agentsFromGroup: $layerFormAgentsFromGroupSelect.val(), agentsFromGroup: $layerFormAgentsFromGroupSelect.val(),
agents: $layerFormAgentsListItems.map( agents: $layerFormAgentsListItems.map(function () {
function () {
return { return {
'id': $(this).data('agent-id'), "id": $(this).data("agent-id"),
'alias': $(this).text() "alias": $(this).text()
}; };
} }).get(),
).get(), groups: $layerFormGroupsListItems.map(function () {
groups: $layerFormGroupsListItems.map(
function () {
return { return {
'id': $(this).data('group-id'), "id": $(this).data("group-id"),
'name': $(this).data('group-name'), "name": $(this).data("group-name"),
'agentId': $(this).data('agent-id'), "agentId": $(this).data("agent-id"),
'agentAlias': $(this).data('agent-alias') "agentAlias": $(this).data("agent-alias")
}; };
} }).get()
).get() });
}
);
} }
function cleanLayerEditor () {
function cleanLayerEditor()
{
// Clear editor events // Clear editor events
unbindLayerEditorEvents(); unbindLayerEditorEvents();
// Add default data to the editor // Add default data to the editor
setLayerEditorData(); setLayerEditorData();
} }
function bindLayerEditorEvents (layerId) {
var $layerFormNameInput = $("input#text-layer_name_form");
var $layerFormVisibleCheckbox = $("input#checkbox-layer_visible_form");
var $layerFormAgentsFromGroupSelect = $("select#layer_group_form");
function bindLayerEditorEvents(layerId) var $layerRow = $("tr#layer_row_" + layerId);
{
var $layerFormNameInput = $('input#text-layer_name_form');
var $layerFormVisibleCheckbox = $('input#checkbox-layer_visible_form');
var $layerFormAgentsFromGroupSelect = $('select#layer_group_form');
var $layerRow = $('tr#layer_row_' + layerId); if ($layerRow.length === 0) return;
if ($layerRow.length === 0) { $layerFormNameInput.bind("change", function (event) {
return;
}
$layerFormNameInput.bind(
'change',
function (event) {
var name = event.currentTarget.value; var name = event.currentTarget.value;
$layerRow.find('span.layer_name').html(name); $layerRow.find("span.layer_name").html(name);
$layerRow.find('input.layer_name').val(name); $layerRow.find("input.layer_name").val(name);
} });
); $layerFormVisibleCheckbox.bind("click", function (event) {
$layerFormVisibleCheckbox.bind( var visible = $(event.currentTarget).prop("checked");
'click', $layerRow.find("input.layer_visible").val(visible ? 1 : 0);
function (event) { });
var visible = $(event.currentTarget).prop('checked'); $layerFormAgentsFromGroupSelect.bind("change", function (event) {
$layerRow.find('input.layer_visible').val(visible ? 1 : 0);
}
);
$layerFormAgentsFromGroupSelect.bind(
'change',
function (event) {
var group = event.currentTarget.value; var group = event.currentTarget.value;
$layerRow.find('input.layer_agents_from_group').val(group); $layerRow.find("input.layer_agents_from_group").val(group);
} });
);
} }
function unbindLayerEditorEvents () {
var $layerFormNameInput = $("input#text-layer_name_form");
var $layerFormVisibleCheckbox = $("input#checkbox-layer_visible_form");
var $layerFormAgentsFromGroupSelect = $("select#layer_group_form");
function unbindLayerEditorEvents() $layerFormNameInput.unbind("change");
{ $layerFormVisibleCheckbox.unbind("click");
var $layerFormNameInput = $('input#text-layer_name_form');
var $layerFormVisibleCheckbox = $('input#checkbox-layer_visible_form');
var $layerFormAgentsFromGroupSelect = $('select#layer_group_form');
$layerFormNameInput.unbind('change');
$layerFormVisibleCheckbox.unbind('click');
$layerFormAgentsFromGroupSelect.val('-1'); $layerFormAgentsFromGroupSelect.val('-1');
} }
function getAgentRow (layerId, agentId, agentAlias) {
var $row = $("<tr class=\"agents_list_item\" />");
var $nameCol = $("<td />");
var $deleteCol = $("<td />");
function getAgentRow(layerId, agentId, agentAlias) var $agentAlias = $("<span class=\"agent_alias\" data-agent-id=\"" + agentId + "\">" + agentAlias + "</span>");
{
var $row = $('<tr class="agents_list_item" />');
var $nameCol = $('<td />');
var $deleteCol = $('<td />');
var $agentAlias = $('<span class="agent_alias" data-agent-id="' + agentId + '">' + agentAlias + '</span>');
var $removeBtn = $('<a class="delete_row" href="javascript:" <?php echo html_print_image('images/cross.png', false, ['class' => 'invert_filter']); ?> </a>'); var $removeBtn = $('<a class="delete_row" href="javascript:" <?php echo html_print_image('images/cross.png', false, ['class' => 'invert_filter']); ?> </a>');
$removeBtn.click( $removeBtn.click(function (event) {
function (event) { var $layerRow = $("tr#layer_row_" + layerId);
var $layerRow = $('tr#layer_row_' + layerId);
if ($layerRow.length > 0) { if ($layerRow.length > 0) {
$layerRow.find(("input.layer_agent_id[data-agent-id='" + agentId + "']")).remove(); $layerRow.find("input.layer_agent_id[data-agent-id='" + agentId + "']").remove();
$layerRow.find(("input.layer_agent_alias[data-agent-id='" + agentId + "']")).remove(); $layerRow.find("input.layer_agent_alias[data-agent-id='" + agentId + "']").remove();
} }
var $agentListItemRow = $(event.currentTarget).parent().parent(); var $agentListItemRow = $(event.currentTarget).parent().parent();
$agentListItemRow.remove(); $agentListItemRow.remove();
} });
);
$nameCol.append($agentAlias); $nameCol.append($agentAlias);
$deleteCol.append($removeBtn); $deleteCol.append($removeBtn);
@ -1084,64 +1027,55 @@ function setLayerEditorData(data)
return $row; return $row;
} }
function addAgentRow (layerId, agentId, agentAlias) {
if (agentId == null || agentId == 0 || agentAlias.length === 0) return;
function addAgentRow(layerId, agentId, agentAlias) var $layerRow = $("tr#layer_row_" + layerId);
{ if ($layerRow && $layerRow.find("input.layer_agent_id[value='" + agentId + "']").length === 0) {
if (agentId == null || agentId == 0 || agentAlias.length === 0) { $layerRow
return; .find("td:first-child")
.append(getLayerAgentIdInput(layerId, agentId))
.append(getLayerAgentAliasInput(layerId, agentId, agentAlias));
} }
var $layerRow = $('tr#layer_row_' + layerId); $("table#list_agents").append(getAgentRow(layerId, agentId, agentAlias));
if ($layerRow && $layerRow.find(("input.layer_agent_id[value='" + agentId + "']")).length === 0) {
$layerRow.find('td:first-child').append(getLayerAgentIdInput(layerId, agentId)).append(getLayerAgentAliasInput(layerId, agentId, agentAlias));
} }
$('table#list_agents').append(getAgentRow(layerId, agentId, agentAlias)); function getLayerAgentIdInput (layerId, agentId) {
return $("<input class=\"layer_agent_id\" type=\"hidden\" data-agent-id=\"" + agentId + "\" name=\"layers[" + layerId + "][agents][" + agentId + "][id]\" value=\"" + agentId + "\">");
} }
function getLayerAgentAliasInput (layerId, agentId, agentAlias) {
function getLayerAgentIdInput(layerId, agentId) return $("<input class=\"layer_agent_alias\" type=\"hidden\" data-agent-id=\"" + agentId + "\" name=\"layers[" + layerId + "][agents][" + agentId + "][alias]\" value=\"" + agentAlias + "\">");
{
return $('<input class="layer_agent_id" type="hidden" data-agent-id="' + agentId + '" name="layers[' + layerId + '][agents][' + agentId + '][id]" value="' + agentId + '">');
} }
function getGroupRow (layerId, groupId, groupName, agentId, agentAlias) {
var $row = $("<tr class=\"groups_list_item\" data-group-id=\"" + groupId + "\" data-group-name=\"" + groupName + "\" data-agent-id=\"" + agentId + "\" data-agent-alias=\"" + agentAlias + "\" />");
var $nameCol = $("<td />");
var $deleteCol = $("<td />");
function getLayerAgentAliasInput(layerId, agentId, agentAlias) var $groupName = $("<span class=\"group_desc\">"
{
return $('<input class="layer_agent_alias" type="hidden" data-agent-id="' + agentId + '" name="layers[' + layerId + '][agents][' + agentId + '][alias]" value="' + agentAlias + '">');
}
function getGroupRow(layerId, groupId, groupName, agentId, agentAlias)
{
var $row = $('<tr class="groups_list_item" data-group-id="' + groupId + '" data-group-name="' + groupName + '" data-agent-id="' + agentId + '" data-agent-alias="' + agentAlias + '" />');
var $nameCol = $('<td />');
var $deleteCol = $('<td />');
var $groupName = $('<span class="group_desc">'
+ groupName + groupName
+ ' (' + " ("
+ "<?php echo __('Using data from'); ?> " + "<?php echo __('Using data from'); ?> "
+ '<i>' + agentAlias + '</i>' + "<i>" + agentAlias + "</i>"
+ ')' + ")"
+ '</span>'); + "</span>");
var $removeBtn = $('<a class="delete_row" href="javascript:;"><?php echo html_print_image('images/cross.png', true, ['class' => 'invert_filter']); ?></a>'); var $removeBtn = $('<a class="delete_row" href="javascript:;"><?php echo html_print_image('images/cross.png', true, ['class' => 'invert_filter']); ?></a>');
$removeBtn.click( $removeBtn.click(function (event) {
function (event) { var $layerRow = $("tr#layer_row_" + layerId);
var $layerRow = $('tr#layer_row_' + layerId);
if ($layerRow.length > 0) { if ($layerRow.length > 0) {
$layerRow.find(("input.layer_group_id[data-group-id='" + groupId + "']")).remove(); $layerRow.find("input.layer_group_id[data-group-id='" + groupId + "']").remove();
$layerRow.find(("input.layer_group_name[data-group-id='" + groupId + "']")).remove(); $layerRow.find("input.layer_group_name[data-group-id='" + groupId + "']").remove();
$layerRow.find(("input.layer_agent_id_for_data[data-group-id='" + groupId + "']")).remove(); $layerRow.find("input.layer_agent_id_for_data[data-group-id='" + groupId + "']").remove();
$layerRow.find(("input.layer_agent_alias_for_data[data-group-id='" + groupId + "']")).remove(); $layerRow.find("input.layer_agent_alias_for_data[data-group-id='" + groupId + "']").remove();
} }
var $groupListItemRow = $(event.currentTarget).parent().parent(); var $groupListItemRow = $(event.currentTarget).parent().parent();
$groupListItemRow.remove(); $groupListItemRow.remove();
} });
);
$nameCol.append($groupName); $nameCol.append($groupName);
$deleteCol.append($removeBtn); $deleteCol.append($removeBtn);
@ -1151,144 +1085,132 @@ function setLayerEditorData(data)
return $row; return $row;
} }
function addGroupRow (layerId, groupId, groupName, agentId, agentAlias) {
if (
groupId == null ||
groupId == 0 ||
groupName.length === 0 ||
agentId == null ||
agentId == 0 ||
agentAlias.length === 0
) return;
function addGroupRow(layerId, groupId, groupName, agentId, agentAlias) var $layerRow = $("tr#layer_row_" + layerId);
{ if ($layerRow && $layerRow.find("input.layer_group_id[value='" + groupId + "']").length === 0) {
if (groupId == null $layerRow
|| groupId == 0 .find("td:first-child")
|| groupName.length === 0 .append(getLayerGroupIdInput(layerId, groupId))
|| agentId == null .append(getLayerGroupNameInput(layerId, groupId, groupName))
|| agentId == 0 .append(getLayerAgentIdForDataInput(layerId, groupId, agentId))
|| agentAlias.length === 0 .append(getLayerAgentAliasForDataInput(layerId, groupId, agentAlias));
) {
return;
} }
var $layerRow = $('tr#layer_row_' + layerId); $("table#list_groups").append(getGroupRow(layerId, groupId, groupName, agentId, agentAlias));
if ($layerRow && $layerRow.find(("input.layer_group_id[value='" + groupId + "']")).length === 0) {
$layerRow.find('td:first-child').append(getLayerGroupIdInput(layerId, groupId)).append(getLayerGroupNameInput(layerId, groupId, groupName)).append(getLayerAgentIdForDataInput(layerId, groupId, agentId)).append(getLayerAgentAliasForDataInput(layerId, groupId, agentAlias));
} }
$('table#list_groups').append(getGroupRow(layerId, groupId, groupName, agentId, agentAlias)); function getLayerGroupIdInput (layerId, groupId) {
return $("<input class=\"layer_group_id\" type=\"hidden\" data-group-id=\"" + groupId + "\" name=\"layers[" + layerId + "][groups][" + groupId + "][id]\" value=\"" + groupId + "\">");
} }
function getLayerGroupNameInput (layerId, groupId, groupName) {
function getLayerGroupIdInput(layerId, groupId) return $("<input class=\"layer_group_name\" type=\"hidden\" data-group-id=\"" + groupId + "\" name=\"layers[" + layerId + "][groups][" + groupId + "][name]\" value=\"" + groupName + "\">");
{
return $('<input class="layer_group_id" type="hidden" data-group-id="' + groupId + '" name="layers[' + layerId + '][groups][' + groupId + '][id]" value="' + groupId + '">');
} }
function getLayerAgentIdForDataInput (layerId, groupId, agentId) {
function getLayerGroupNameInput(layerId, groupId, groupName) return $("<input class=\"layer_agent_id_for_data\" type=\"hidden\" data-group-id=\"" + groupId + "\" name=\"layers[" + layerId + "][groups][" + groupId + "][agent_id]\" value=\"" + agentId + "\">");
{
return $('<input class="layer_group_name" type="hidden" data-group-id="' + groupId + '" name="layers[' + layerId + '][groups][' + groupId + '][name]" value="' + groupName + '">');
} }
function getLayerAgentAliasForDataInput (layerId, groupId, agentAlias) {
function getLayerAgentIdForDataInput(layerId, groupId, agentId) return $("<input class=\"layer_agent_alias_for_data\" type=\"hidden\" data-group-id=\"" + groupId + "\" name=\"layers[" + layerId + "][groups][" + groupId + "][agent_alias]\" value=\"" + agentAlias + "\">");
{
return $('<input class="layer_agent_id_for_data" type="hidden" data-group-id="' + groupId + '" name="layers[' + layerId + '][groups][' + groupId + '][agent_id]" value="' + agentId + '">');
} }
function getLayerRow (layerId, layerData) {
var $row = $("<tr id=\"layer_row_" + layerId + "\" class=\"layer_row\" />");
var $nameCol = $("<td />");
var $sortCol = $("<td />");
var $editCol = $("<td />");
var $deleteCol = $("<td />");
function getLayerAgentAliasForDataInput(layerId, groupId, agentAlias) var $layerIdInput = $("<input class=\"layer_id\" type=\"hidden\" name=\"layer_ids[]\" value=\"" + layerId + "\">");
{ var $layerNameInput = $("<input class=\"layer_name\" type=\"hidden\" name=\"layers[" + layerId + "][name]\" value=\"" + layerData.name + "\">");
return $('<input class="layer_agent_alias_for_data" type="hidden" data-group-id="' + groupId + '" name="layers[' + layerId + '][groups][' + groupId + '][agent_alias]" value="' + agentAlias + '">'); var $layerVisibleInput = $("<input class=\"layer_visible\" type=\"hidden\" name=\"layers[" + layerId + "][visible]\" value=\"" + (layerData.visible ? 1 : 0) + "\">");
} var $layerAgentsFromGroupInput = $("<input class=\"layer_agents_from_group\" type=\"hidden\" name=\"layers[" + layerId + "][agents_from_group]\" value=\"" + layerData.agentsFromGroup + "\">");
var $layerName = $("<span class=\"layer_name\">" + layerData.name + "</span>");
function getLayerRow(layerId, layerData) var $sortUpBtn = $("<a class=\"up_arrow\" href=\"javascript:;\" />");
{ var $sortDownBtn = $("<a class=\"down_arrow\" href=\"javascript:;\" />");
var $row = $('<tr id="layer_row_' + layerId + '" class="layer_row" />');
var $nameCol = $('<td />');
var $sortCol = $('<td />');
var $editCol = $('<td />');
var $deleteCol = $('<td />');
var $layerIdInput = $('<input class="layer_id" type="hidden" name="layer_ids[]" value="' + layerId + '">');
var $layerNameInput = $('<input class="layer_name" type="hidden" name="layers[' + layerId + '][name]" value="' + layerData.name + '">');
var $layerVisibleInput = $('<input class="layer_visible" type="hidden" name="layers[' + layerId + '][visible]" value="' + (layerData.visible ? 1 : 0) + '">');
var $layerAgentsFromGroupInput = $('<input class="layer_agents_from_group" type="hidden" name="layers[' + layerId + '][agents_from_group]" value="' + layerData.agentsFromGroup + '">');
var $layerName = $('<span class="layer_name">' + layerData.name + '</span>');
var $sortUpBtn = $('<a class="up_arrow" href="javascript:;" />');
var $sortDownBtn = $('<a class="down_arrow" href="javascript:;" />');
var $editBtn = $('<a class="edit_layer" href="javascript:;"><?php echo html_print_image('images/config.png', true, ['class' => 'invert_filter']); ?></a>'); var $editBtn = $('<a class="edit_layer" href="javascript:;"><?php echo html_print_image('images/config.png', true, ['class' => 'invert_filter']); ?></a>');
var $removeBtn = $('<a class="delete_row" href="javascript:;"><?php echo html_print_image('images/cross.png', true, ['class' => 'invert_filter']); ?></a>'); var $removeBtn = $('<a class="delete_row" href="javascript:;"><?php echo html_print_image('images/cross.png', true, ['class' => 'invert_filter']); ?></a>');
$sortUpBtn.click(moveLayerRowUpOnClick); $sortUpBtn.click(moveLayerRowUpOnClick);
$sortDownBtn.click(moveLayerRowDownOnClick); $sortDownBtn.click(moveLayerRowDownOnClick);
$editBtn.click( $editBtn.click(function () { showLayerEditor(layerId); });
function () {
showLayerEditor(layerId);
}
);
$removeBtn.click(removeLayerRowOnClick); $removeBtn.click(removeLayerRowOnClick);
$nameCol.append($layerName).append($layerIdInput).append($layerNameInput).append($layerVisibleInput).append($layerAgentsFromGroupInput); $nameCol
.append($layerName)
.append($layerIdInput)
.append($layerNameInput)
.append($layerVisibleInput)
.append($layerAgentsFromGroupInput);
if (layerData.agents && layerData.agents.length > 0) { if (layerData.agents && layerData.agents.length > 0) {
layerData.agents.foreach (function (agent) { layerData.agents.forEach(function (agent) {
$nameCol.append(getLayerAgentIdInput(layerId, agent.id)); $nameCol.append(getLayerAgentIdInput(layerId, agent.id));
$nameCol.append(getLayerAgentAliasInput(layerId, agent.id, agent.alias)); $nameCol.append(getLayerAgentAliasInput(layerId, agent.id, agent.alias));
}) { });
}
} }
if (layerData.groups && layerData.groups.length > 0) { if (layerData.groups && layerData.groups.length > 0) {
layerData.groups.foreach (function (group) { layerData.groups.forEach(function (group) {
$nameCol.append(getLayerGroupIdInput(layerId, group.id)); $nameCol.append(getLayerGroupIdInput(layerId, group.id));
$nameCol.append(getLayerGroupNameInput(layerId, group.id, group.name)); $nameCol.append(getLayerGroupNameInput(layerId, group.id, group.name));
$nameCol.append(getLayerAgentIdForDataInput(layerId, group.id, group.agentId)); $nameCol.append(getLayerAgentIdForDataInput(layerId, group.id, group.agentId));
$nameCol.append(getLayerAgentAliasForDataInput(layerId, group.id, group.agentAlias)); $nameCol.append(getLayerAgentAliasForDataInput(layerId, group.id, group.agentAlias));
}) { });
}
} }
$sortCol.append($sortUpBtn).append($sortDownBtn); $sortCol
$editCol.append($editBtn); .append($sortUpBtn)
$deleteCol.append($removeBtn); .append($sortDownBtn);
$editCol
.append($editBtn);
$deleteCol
.append($removeBtn);
$row.append($nameCol).append($sortCol).append($editCol).append($deleteCol); $row
.append($nameCol)
.append($sortCol)
.append($editCol)
.append($deleteCol);
return $row; return $row;
} }
function addLayerRow (layerId, layerData) {
function addLayerRow(layerId, layerData) $("table#list_layers").append(getLayerRow(layerId, layerData));
{
$('table#list_layers').append(getLayerRow(layerId, layerData));
showLayerEditor(layerId); showLayerEditor(layerId);
} }
function hightlightRow (layerId) {
function hightlightRow(layerId) var highlightColor = "#E9F3D2";
{ $("tr.layer_row").css("background", "");
var highlightColor = '#E9F3D2'; $("tr#layer_row_" + layerId).css("background", highlightColor);
$('tr.layer_row').css('background', '');
$('tr#layer_row_' + layerId).css('background', highlightColor);
} }
function existInvalidLayerNames () {
function existInvalidLayerNames()
{
var exist = false; var exist = false;
$('table#list_layers input.layer_name').each( $("table#list_layers input.layer_name").each(function () {
function () {
if ($(this).val().trim().length === 0) { if ($(this).val().trim().length === 0) {
exist = true; exist = true;
return false; return false; // Break jQuery object each
// Break jQuery object each
} }
} });
);
return exist; return exist;
} }
function onFormSubmit (event) {
function onFormSubmit(event)
{
// Validate layer names // Validate layer names
if (existInvalidLayerNames()) { if (existInvalidLayerNames()) {
event.preventDefault(); event.preventDefault();
@ -1296,31 +1218,25 @@ function setLayerEditorData(data)
alert("<?php echo __('Empty layer names are not supported'); ?>"); alert("<?php echo __('Empty layer names are not supported'); ?>");
return false; return false;
} }
// Save connection list // Save connection list
$('#map_connection_list').val(connectionMaps.toString()); $('#map_connection_list').val(connectionMaps.toString());
} }
function onLayerGroupIdChange (event) {
function onLayerGroupIdChange(event)
{
// Clear agent inputs // Clear agent inputs
$('input#hidden-agent_id_for_data').val(0); $("input#hidden-agent_id_for_data").val(0);
$('input#text-agent_alias_for_data').val(''); $("input#text-agent_alias_for_data").val("");
toggleAddGroupBtn(); toggleAddGroupBtn();
} }
// Bind events // Bind events
$('form#form_setup').submit(onFormSubmit); $("form#form_setup").submit(onFormSubmit);
$('input#button-add_agent').click(addAgentClick); $("input#button-add_agent").click(addAgentClick);
$('select#layer_group_id').change(onLayerGroupIdChange); $("select#layer_group_id").change(onLayerGroupIdChange);
$('input#button-add_group').click(addGroupClick); $("input#button-add_group").click(addGroupClick);
// Populate layer list // Populate layer list
var layers = < ? php echo json_encode($layer_list); var layers = <?php echo json_encode($layer_list); ?>;
?>
;
layers.forEach(function (layer) { layers.forEach(function (layer) {
$("table#list_layers").append( $("table#list_layers").append(
getLayerRow(layer["id"], { getLayerRow(layer["id"], {

View File

@ -309,6 +309,8 @@ if ($save_event_filter) {
$values['id_extra'] = get_parameter('id_extra'); $values['id_extra'] = get_parameter('id_extra');
$values['user_comment'] = get_parameter('user_comment'); $values['user_comment'] = get_parameter('user_comment');
$values['id_source_event'] = get_parameter('id_source_event'); $values['id_source_event'] = get_parameter('id_source_event');
$values['custom_data'] = get_parameter('custom_data');
$values['custom_data_filter_type'] = get_parameter('custom_data_filter_type');
if (is_metaconsole()) { if (is_metaconsole()) {
$values['server_id'] = get_parameter('server_id'); $values['server_id'] = get_parameter('server_id');
@ -363,6 +365,8 @@ if ($update_event_filter) {
$values['id_extra'] = get_parameter('id_extra'); $values['id_extra'] = get_parameter('id_extra');
$values['user_comment'] = get_parameter('user_comment'); $values['user_comment'] = get_parameter('user_comment');
$values['id_source_event'] = get_parameter('id_source_event'); $values['id_source_event'] = get_parameter('id_source_event');
$values['custom_data'] = get_parameter('custom_data');
$values['custom_data_filter_type'] = get_parameter('custom_data_filter_type');
if (is_metaconsole() === true) { if (is_metaconsole() === true) {
$values['server_id'] = get_parameter('server_id'); $values['server_id'] = get_parameter('server_id');
@ -834,7 +838,9 @@ function save_new_filter() {
"id_extra": $("#text-id_extra").val(), "id_extra": $("#text-id_extra").val(),
"user_comment": $("#text-user_comment").val(), "user_comment": $("#text-user_comment").val(),
"id_source_event": $("#text-id_source_event").val(), "id_source_event": $("#text-id_source_event").val(),
"server_id": $("#server_id").val() "server_id": $("#server_id").val(),
"custom_data": $("#text-custom_data").val(),
"custom_data_filter_type": $("#custom_data_filter_type").val()
}, },
function (data) { function (data) {
$("#info_box").hide(); $("#info_box").hide();
@ -907,7 +913,9 @@ function save_update_filter() {
"id_extra": $("#text-id_extra").val(), "id_extra": $("#text-id_extra").val(),
"user_comment": $("#text-user_comment").val(), "user_comment": $("#text-user_comment").val(),
"id_source_event": $("#text-id_source_event").val(), "id_source_event": $("#text-id_source_event").val(),
"server_id": $("#server_id").val() "server_id": $("#server_id").val(),
"custom_data": $("#text-custom_data").val(),
"custom_data_filter_type": $("#custom_data_filter_type").val()
}, },
function (data) { function (data) {

View File

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

View File

@ -210,6 +210,7 @@ function events_get_all_fields()
$columns['data'] = __('Data'); $columns['data'] = __('Data');
$columns['module_status'] = __('Module status'); $columns['module_status'] = __('Module status');
$columns['module_custom_id'] = __('Module custom id'); $columns['module_custom_id'] = __('Module custom id');
$columns['custom_data'] = __('Custom data');
return $columns; return $columns;
} }
@ -310,6 +311,9 @@ function events_get_column_name($field, $table_alias=false)
case 'direccion': case 'direccion':
return __('Agent IP'); return __('Agent IP');
case 'custom_data':
return __('Custom data');
default: default:
return __($field); return __($field);
} }
@ -1122,6 +1126,23 @@ function events_get_all(
); );
} }
// Custom data.
if (empty($filter['custom_data']) === false) {
if ($filter['custom_data_filter_type'] === '1') {
$sql_filters[] = sprintf(
' AND JSON_VALID(custom_data) = 1
AND (JSON_EXTRACT(custom_data, "$.*") LIKE lower("%%%s%%") COLLATE utf8mb4_0900_ai_ci) ',
io_safe_output($filter['custom_data'])
);
} else {
$sql_filters[] = sprintf(
' AND JSON_VALID(custom_data) = 1
AND (JSON_SEARCH(JSON_KEYS(custom_data), "all", lower("%%%s%%") COLLATE utf8mb4_0900_ai_ci) IS NOT NULL) ',
io_safe_output($filter['custom_data'])
);
}
}
// Validated or in process by. // Validated or in process by.
if (empty($filter['id_user_ack']) === false) { if (empty($filter['id_user_ack']) === false) {
$sql_filters[] = sprintf( $sql_filters[] = sprintf(

View File

@ -129,7 +129,7 @@
<div style='height: 10px'> <div style='height: 10px'>
<?php <?php
$version = '7.0NG.760'; $version = '7.0NG.760';
$build = '220404'; $build = '220405';
$banner = "v$version Build $build"; $banner = "v$version Build $build";
error_reporting(0); error_reporting(0);

View File

@ -134,7 +134,7 @@ if ($group_rep == 2) {
echo '<div class="nf">'.__('No events').'</div>'; echo '<div class="nf">'.__('No events').'</div>';
} }
} else { } else {
// fields that the user has selected to show // Fields that the user has selected to show.
if ($meta) { if ($meta) {
$show_fields = events_meta_get_custom_fields_user(); $show_fields = events_meta_get_custom_fields_user();
} else { } else {
@ -345,6 +345,13 @@ if ($group_rep == 2) {
$i++; $i++;
} }
if ($fields === 'custom_data') {
$table->head[$i] = __('Custom data');
$table->align[$i] = 'left';
$i++;
}
} }
if (in_array('estado', $show_fields)) { if (in_array('estado', $show_fields)) {

View File

@ -226,6 +226,16 @@ $server_id = get_parameter(
$filter['id_server_meta'] $filter['id_server_meta']
); );
$custom_data_filter_type = get_parameter(
'filter[custom_data_filter_type]',
$filter['custom_data_filter_type']
);
$custom_data = get_parameter(
'filter[custom_data]',
$filter['custom_data']
);
if (is_metaconsole() === true) { if (is_metaconsole() === true) {
// Connect to node database. // Connect to node database.
$id_node = $server_id; $id_node = $server_id;
@ -530,6 +540,8 @@ if ($loaded_filter !== false && $from_event_graph != 1 && !isset($fb64)) {
$user_comment = $filter['user_comment']; $user_comment = $filter['user_comment'];
$id_source_event = ($filter['id_source_event'] ?? ''); $id_source_event = ($filter['id_source_event'] ?? '');
$server_id = $filter['server_id']; $server_id = $filter['server_id'];
$custom_data = $filter['custom_data'];
$custom_data_filter_type = $filter['custom_data_filter_type'];
} }
} }
@ -1451,6 +1463,54 @@ $adv_inputs[] = html_print_div(
true true
); );
// Custom data filter type.
$custom_data_filter_type_input = html_print_select(
[
'0' => __('Filter custom data by field name'),
'1' => __('Filter custom data by field value'),
],
'custom_data_filter_type',
$custom_data_filter_type,
'',
false,
-1,
true
);
$adv_inputs[] = html_print_div(
[
'class' => 'filter_input',
'content' => sprintf(
'<label>%s</label>%s',
__('Custom data filter'),
$custom_data_filter_type_input
),
],
true
);
// Custom data.
$custom_data_input = html_print_input_text(
'custom_data',
$custom_data,
'',
5,
255,
true
);
$adv_inputs[] = html_print_div(
[
'class' => 'filter_input',
'content' => sprintf(
'<label>%s</label>%s',
__('Custom data search'),
$custom_data_input
),
],
true
);
// Tags. // Tags.
if (is_metaconsole() === true) { if (is_metaconsole() === true) {
$data = '<fieldset><legend class="pdd_0px">'.__('Events with following tags').'</legend>'.html_print_table($tabletags_with, true).'</fieldset>'; $data = '<fieldset><legend class="pdd_0px">'.__('Events with following tags').'</legend>'.html_print_table($tabletags_with, true).'</fieldset>';
@ -2259,6 +2319,27 @@ function process_datatables_item(item) {
/* Module name */ /* Module name */
item.id_agentmodule = item.module_name; item.id_agentmodule = item.module_name;
if (item.custom_data !== '') {
var custom_data_str = '';
var item_custom_data_obj = (function(json_str) {
try {
return JSON.parse(json_str);
} catch (err) {
return false;
}
})(item.custom_data);
if (item_custom_data_obj !== false) {
for (const [attr_name, val] of Object.entries(item_custom_data_obj)) {
custom_data_str += attr_name + ' = ' + val + '<br>';
}
item.custom_data = custom_data_str;
} else {
item.custom_data = '';
}
}
} }
/* Datatables auxiliary functions ends */ /* Datatables auxiliary functions ends */

View File

@ -127,6 +127,8 @@ if (is_ajax()) {
$values['source'] = get_parameter('source'); $values['source'] = get_parameter('source');
$values['id_extra'] = get_parameter('id_extra'); $values['id_extra'] = get_parameter('id_extra');
$values['user_comment'] = get_parameter('user_comment'); $values['user_comment'] = get_parameter('user_comment');
$values['custom_data'] = get_parameter('custom_data');
$values['custom_data_filter_type'] = get_parameter('custom_data_filter_type');
if (is_metaconsole()) { if (is_metaconsole()) {
$values['id_source_event'] = get_parameter('id_source_event'); $values['id_source_event'] = get_parameter('id_source_event');
@ -182,6 +184,8 @@ if (is_ajax()) {
$values['source'] = get_parameter('source'); $values['source'] = get_parameter('source');
$values['id_extra'] = get_parameter('id_extra'); $values['id_extra'] = get_parameter('id_extra');
$values['user_comment'] = get_parameter('user_comment'); $values['user_comment'] = get_parameter('user_comment');
$values['custom_data'] = get_parameter('custom_data');
$values['custom_data_filter_type'] = get_parameter('custom_data_filter_type');
if (is_metaconsole()) { if (is_metaconsole()) {
$values['id_source_event'] = get_parameter('id_source_event'); $values['id_source_event'] = get_parameter('id_source_event');
@ -1567,8 +1571,9 @@ $(document).ready( function() {
"id_extra": $("#text-id_extra").val(), "id_extra": $("#text-id_extra").val(),
"user_comment": $("#text-user_comment").val(), "user_comment": $("#text-user_comment").val(),
"id_source_event": $("#text-id_source_event").val(), "id_source_event": $("#text-id_source_event").val(),
"server_id" : $("#server_id").val() "server_id" : $("#server_id").val(),
"custom_data" : $("#text-custom_data").val(),
"custom_data_filter_type" : $("#custom_data_filter_type").val()
}, },
function (data) { function (data) {
$(".info_box").hide(); $(".info_box").hide();
@ -1670,7 +1675,9 @@ $(document).ready( function() {
"id_extra": $("#text-id_extra").val(), "id_extra": $("#text-id_extra").val(),
"user_comment": $("#text-user_comment").val(), "user_comment": $("#text-user_comment").val(),
"id_source_event": $("#text-id_source_event").val(), "id_source_event": $("#text-id_source_event").val(),
"server_id" : $("#server_id").val() "server_id" : $("#server_id").val(),
"custom_data" : $("#text-custom_data").val()
"custom_data_filter_type" : $("#custom_data_filter_type").val()
}, },
function (data) { function (data) {
$(".info_box").hide(); $(".info_box").hide();

View File

@ -226,7 +226,7 @@ try {
if ($custom_data_array !== null) { if ($custom_data_array !== null) {
array_walk( array_walk(
$custom_data_array, $custom_data_array,
function (&$value, $field) { function (&$value, $field) use ($separator) {
if (is_array($value) === true) { if (is_array($value) === true) {
$value = '['.implode($separator, $value).']'; $value = '['.implode($separator, $value).']';
} }

View File

@ -3,7 +3,7 @@
# #
%define name pandorafms_console %define name pandorafms_console
%define version 7.0NG.760 %define version 7.0NG.760
%define release 220404 %define release 220405
# 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.760 %define version 7.0NG.760
%define release 220404 %define release 220405
# 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.760 %define version 7.0NG.760
%define release 220404 %define release 220405
%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

@ -1251,6 +1251,8 @@ CREATE TABLE IF NOT EXISTS `tevent_filter` (
`server_id` INT NOT NULL DEFAULT 0, `server_id` INT NOT NULL DEFAULT 0,
`time_from` TIME NULL, `time_from` TIME NULL,
`time_to` TIME NULL, `time_to` TIME NULL,
`custom_data` VARCHAR(500) DEFAULT '',
`custom_data_filter_type` TINYINT UNSIGNED DEFAULT 0,
PRIMARY KEY (`id_filter`) PRIMARY KEY (`id_filter`)
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; ) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;

View File

@ -1,5 +1,5 @@
package: pandorafms-server package: pandorafms-server
Version: 7.0NG.760-220404 Version: 7.0NG.760-220405
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.760-220404" pandora_version="7.0NG.760-220405"
package_cpan=0 package_cpan=0
package_pandora=1 package_pandora=1

View File

@ -46,7 +46,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.760"; my $pandora_version = "7.0NG.760";
my $pandora_build = "220404"; my $pandora_build = "220405";
our $VERSION = $pandora_version." ".$pandora_build; our $VERSION = $pandora_version." ".$pandora_build;
# Setup hash # Setup hash

View File

@ -34,7 +34,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.760"; my $pandora_version = "7.0NG.760";
my $pandora_build = "220404"; my $pandora_build = "220405";
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.760 %define version 7.0NG.760
%define release 220404 %define release 220405
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.760 %define version 7.0NG.760
%define release 220404 %define release 220405
Summary: Pandora FMS Server Summary: Pandora FMS Server
Name: %{name} Name: %{name}

View File

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

View File

@ -35,7 +35,7 @@ use PandoraFMS::Config;
use PandoraFMS::DB; use PandoraFMS::DB;
# version: define current version # version: define current version
my $version = "7.0NG.760 Build 220404"; my $version = "7.0NG.760 Build 220405";
# 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.760 Build 220404"; my $version = "7.0NG.760 Build 220405";
# save program name for logging # save program name for logging
my $progname = basename($0); my $progname = basename($0);