1024 lines
32 KiB
PHP
1024 lines
32 KiB
PHP
<?php
|
|
|
|
// Pandora FMS- https://pandorafms.com
|
|
// ==================================================
|
|
// Copyright (c) 2005-2023 Pandora FMS
|
|
// Please see https://pandorafms.com/community/ for full contribution list
|
|
// This program is free software; you can redistribute it and/or
|
|
// modify it under the terms of the GNU Lesser General Public License
|
|
// as published by the Free Software Foundation; version 2
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
global $config;
|
|
|
|
require_once $config['homedir'].'/include/functions_agents.php';
|
|
require_once $config['homedir'].'/include/functions_reporting.php';
|
|
enterprise_include_once('include/functions_metaconsole.php');
|
|
|
|
// Clean the possible blanks introduced by the included files
|
|
ob_clean();
|
|
|
|
// Get list of agent + ip
|
|
// Params:
|
|
// * search_agents 1
|
|
// * id_agent
|
|
// * q
|
|
// * id_group
|
|
$search_agents = (bool) get_parameter('search_agents');
|
|
$get_agents_interfaces = (bool) get_parameter('get_agents_interfaces');
|
|
$id_agents = get_parameter('id_agents', []);
|
|
$get_agents_group = (bool) get_parameter('get_agents_group', false);
|
|
$force_local = (bool) get_parameter('force_local', false);
|
|
|
|
// Agent detail filter.
|
|
$load_filter_modal = get_parameter('load_filter_modal', 0);
|
|
$save_filter_modal = get_parameter('save_filter_modal', 0);
|
|
$get_agent_filters = get_parameter('get_agent_filters', 0);
|
|
$save_agent_filter = get_parameter('save_agent_filter', 0);
|
|
$update_agent_filter = get_parameter('update_agent_filter', 0);
|
|
$delete_agent_filter = get_parameter('delete_agent_filter', 0);
|
|
|
|
if (https_is_running()) {
|
|
header('Content-type: application/json');
|
|
}
|
|
|
|
if ($get_agents_interfaces) {
|
|
$agents_interfaces = agents_get_network_interfaces($id_agents);
|
|
|
|
// Include alias per agent.
|
|
foreach ($agents_interfaces as $key => $value) {
|
|
$agent_alias = agents_get_alias($key);
|
|
$agents_interfaces[$key]['agent_alias'] = $agent_alias;
|
|
}
|
|
|
|
echo json_encode($agents_interfaces);
|
|
|
|
return;
|
|
}
|
|
|
|
if ($get_agents_group) {
|
|
$id_group = (int) get_parameter('id_group', -1);
|
|
$mode = (string) get_parameter('mode', 'json');
|
|
$id_server = (int) get_parameter('id_server', 0);
|
|
$serialized = (bool) get_parameter('serialized');
|
|
|
|
$return = [];
|
|
if ($id_group != -1) {
|
|
$filter = [];
|
|
|
|
if (is_metaconsole() && !empty($id_server)) {
|
|
$filter['id_server'] = $id_server;
|
|
}
|
|
|
|
$return = agents_get_group_agents($id_group, $filter, 'none', false, false, $serialized);
|
|
}
|
|
|
|
switch ($mode) {
|
|
case 'json':
|
|
default:
|
|
echo json_encode($return);
|
|
break;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
if ($search_agents && (!is_metaconsole() || $force_local)) {
|
|
$id_agent = (int) get_parameter('id_agent');
|
|
$string = (string) get_parameter('q');
|
|
$string = strtoupper($string);
|
|
// q is what autocomplete plugin gives
|
|
$id_group = (int) get_parameter('id_group', -1);
|
|
$addedItems = html_entity_decode((string) get_parameter('add'));
|
|
$addedItems = json_decode($addedItems);
|
|
$all = (string) get_parameter('all', 'all');
|
|
|
|
$delete_offspring_agents = (int) get_parameter('delete_offspring_agents', 0);
|
|
|
|
if ($addedItems != null) {
|
|
foreach ($addedItems as $item) {
|
|
echo $item."|\n";
|
|
}
|
|
}
|
|
|
|
$filter = [];
|
|
|
|
if ($id_group != -1) {
|
|
if ($id_group == 0) {
|
|
$user_groups = users_get_groups($config['id_user'], 'AR', true);
|
|
|
|
$filter['id_grupo'] = array_keys($user_groups);
|
|
} else {
|
|
$filter['id_grupo'] = $id_group;
|
|
}
|
|
}
|
|
|
|
if ($all === 'enabled') {
|
|
$filter['disabled'] = 1;
|
|
} else {
|
|
$filter['disabled'] = 0;
|
|
}
|
|
|
|
$data = [];
|
|
// Get agents for only the alias.
|
|
$filter_alias = $filter;
|
|
$filter_alias[] = '(UPPER(alias) LIKE "%'.$string.'%")';
|
|
|
|
$agents = agents_get_agents($filter_alias, ['id_agente', 'nombre', 'direccion', 'alias']);
|
|
if ($agents !== false) {
|
|
foreach ($agents as $agent) {
|
|
$data[] = [
|
|
'id' => $agent['id_agente'],
|
|
'name' => io_safe_output($agent['nombre']),
|
|
'alias' => io_safe_output($agent['alias']),
|
|
'ip' => io_safe_output($agent['direccion']),
|
|
'filter' => 'alias',
|
|
];
|
|
}
|
|
}
|
|
|
|
// Get agents for only the name.
|
|
$filter_agents = $filter;
|
|
$filter_agents[] = '(UPPER(alias) NOT LIKE "%'.$string.'%" AND UPPER(nombre) LIKE "%'.$string.'%")';
|
|
|
|
$agents = agents_get_agents($filter_agents, ['id_agente', 'nombre', 'direccion', 'alias']);
|
|
if ($agents !== false) {
|
|
foreach ($agents as $agent) {
|
|
$data[] = [
|
|
'id' => $agent['id_agente'],
|
|
'name' => io_safe_output($agent['nombre']),
|
|
'alias' => io_safe_output($agent['alias']),
|
|
'ip' => io_safe_output($agent['direccion']),
|
|
'filter' => 'agent',
|
|
];
|
|
}
|
|
}
|
|
|
|
// Get agents for only the address.
|
|
$filter_address = $filter;
|
|
$filter_address[] = '(UPPER(alias) NOT LIKE "%'.$string.'%" AND UPPER(nombre) NOT LIKE "%'.$string.'%" AND UPPER(direccion) LIKE "%'.$string.'%")';
|
|
|
|
$agents = agents_get_agents($filter_address, ['id_agente', 'nombre', 'direccion', 'alias']);
|
|
if ($agents !== false) {
|
|
foreach ($agents as $agent) {
|
|
$data[] = [
|
|
'id' => $agent['id_agente'],
|
|
'name' => io_safe_output($agent['nombre']),
|
|
'alias' => io_safe_output($agent['alias']),
|
|
'ip' => io_safe_output($agent['direccion']),
|
|
'filter' => 'address',
|
|
];
|
|
}
|
|
}
|
|
|
|
// Get agents for only the description.
|
|
$filter_description = $filter;
|
|
$filter_description[] = '(UPPER(alias) NOT LIKE "%'.$string.'%" AND UPPER(nombre) NOT LIKE "%'.$string.'%" AND UPPER(direccion) NOT LIKE "%'.$string.'%" AND UPPER(comentarios) LIKE "%'.$string.'%")';
|
|
|
|
$agents = agents_get_agents($filter_description, ['id_agente', 'nombre', 'direccion', 'alias']);
|
|
if ($agents !== false) {
|
|
foreach ($agents as $agent) {
|
|
$data[] = [
|
|
'id' => $agent['id_agente'],
|
|
'name' => io_safe_output($agent['nombre']),
|
|
'alias' => io_safe_output($agent['alias']),
|
|
'ip' => io_safe_output($agent['direccion']),
|
|
'filter' => 'description',
|
|
];
|
|
}
|
|
}
|
|
|
|
if (empty($data) === false && $delete_offspring_agents !== 0) {
|
|
// Gets offspring and deletes them, including himself.
|
|
$agents_offspring = agents_get_offspring($delete_offspring_agents);
|
|
if (empty($agents_offspring) === false) {
|
|
foreach ($data as $key => $value) {
|
|
if (isset($agents_offspring[$value['id']]) === true) {
|
|
unset($data[$key]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
echo json_encode($data);
|
|
return;
|
|
} else if ($search_agents && is_metaconsole()) {
|
|
$id_agent = (int) get_parameter('id_agent');
|
|
$string = (string) get_parameter('q');
|
|
// Q is what autocomplete plugin gives.
|
|
$id_group = (int) get_parameter('id_group', -1);
|
|
$addedItems = html_entity_decode((string) get_parameter('add'));
|
|
$addedItems = json_decode($addedItems);
|
|
$all = (string) get_parameter('all', 'all');
|
|
|
|
if ($addedItems != null) {
|
|
foreach ($addedItems as $item) {
|
|
echo $item."|\n";
|
|
}
|
|
}
|
|
|
|
$data = [];
|
|
|
|
$fields = [
|
|
'id_tagente AS id_agente',
|
|
'nombre',
|
|
'alias',
|
|
'direccion',
|
|
'id_tmetaconsole_setup AS id_server',
|
|
'server_name',
|
|
];
|
|
|
|
$filter = [];
|
|
|
|
if ($id_group != -1) {
|
|
if ($id_group == 0) {
|
|
$user_groups = users_get_groups($config['id_user'], 'AR', true);
|
|
|
|
$filter['id_grupo'] = array_keys($user_groups);
|
|
} else {
|
|
$filter['id_grupo'] = $id_group;
|
|
}
|
|
}
|
|
|
|
switch ($all) {
|
|
case 'enabled':
|
|
$filter['disabled'] = 0;
|
|
break;
|
|
|
|
default:
|
|
// Not possible.
|
|
break;
|
|
}
|
|
|
|
if (empty($id_agent) === false) {
|
|
$filter['id_agente'] = $id_agent;
|
|
}
|
|
|
|
if (empty($string) === false) {
|
|
// Get agents for only the alias.
|
|
$filter_alias = $filter;
|
|
$filter_alias[] = '(alias LIKE "%'.$string.'%")';
|
|
|
|
$agents = db_get_all_rows_filter(
|
|
'tmetaconsole_agent',
|
|
$filter_alias,
|
|
$fields
|
|
);
|
|
|
|
if ($agents !== false) {
|
|
foreach ($agents as $agent) {
|
|
$data[] = [
|
|
'id' => $agent['id_agente'],
|
|
'name' => io_safe_output($agent['nombre']),
|
|
'alias' => io_safe_output($agent['alias']).' ('.io_safe_output($agent['server_name']).')',
|
|
'ip' => io_safe_output($agent['direccion']),
|
|
'id_server' => $agent['id_server'],
|
|
'filter' => 'alias',
|
|
];
|
|
}
|
|
}
|
|
|
|
// Get agents for only the name.
|
|
$filter_agents = $filter;
|
|
$filter_agents[] = '(alias NOT LIKE "%'.$string.'%" AND nombre LIKE "%'.$string.'%")';
|
|
|
|
$agents = db_get_all_rows_filter(
|
|
'tmetaconsole_agent',
|
|
$filter_agents,
|
|
$fields
|
|
);
|
|
|
|
if ($agents !== false) {
|
|
foreach ($agents as $agent) {
|
|
$data[] = [
|
|
'id' => $agent['id_agente'],
|
|
'name' => io_safe_output($agent['nombre']),
|
|
'alias' => io_safe_output($agent['alias']).' ('.io_safe_output($agent['server_name']).')',
|
|
'ip' => io_safe_output($agent['direccion']),
|
|
'id_server' => $agent['id_server'],
|
|
'filter' => 'agent',
|
|
];
|
|
}
|
|
}
|
|
|
|
// Get agents for only the address.
|
|
$filter_address = $filter;
|
|
$filter_address[] = '(alias NOT LIKE "%'.$string.'%" AND nombre NOT LIKE "%'.$string.'%" AND direccion LIKE "%'.$string.'%")';
|
|
|
|
$agents = db_get_all_rows_filter(
|
|
'tmetaconsole_agent',
|
|
$filter_address,
|
|
$fields
|
|
);
|
|
|
|
if ($agents !== false) {
|
|
foreach ($agents as $agent) {
|
|
$data[] = [
|
|
'id' => $agent['id_agente'],
|
|
'name' => io_safe_output($agent['nombre']),
|
|
'alias' => io_safe_output($agent['alias']).' ('.io_safe_output($agent['server_name']).')',
|
|
'ip' => io_safe_output($agent['direccion']),
|
|
'id_server' => $agent['id_server'],
|
|
'filter' => 'address',
|
|
];
|
|
}
|
|
}
|
|
|
|
// Get agents for only the description.
|
|
$filter_description = $filter;
|
|
$filter_description[] = '(alias NOT LIKE "%'.$string.'%" AND nombre NOT LIKE "%'.$string.'%" AND direccion NOT LIKE "%'.$string.'%" AND comentarios LIKE "%'.$string.'%")';
|
|
|
|
$agents = db_get_all_rows_filter(
|
|
'tmetaconsole_agent',
|
|
$filter_description,
|
|
$fields
|
|
);
|
|
|
|
if ($agents !== false) {
|
|
foreach ($agents as $agent) {
|
|
$data[] = [
|
|
'id' => $agent['id_agente'],
|
|
'name' => io_safe_output($agent['nombre']),
|
|
'alias' => io_safe_output($agent['alias']).' ('.io_safe_output($agent['server_name']).')',
|
|
'ip' => io_safe_output($agent['direccion']),
|
|
'id_server' => $agent['id_server'],
|
|
'filter' => 'description',
|
|
];
|
|
}
|
|
}
|
|
}
|
|
|
|
echo json_encode($data);
|
|
return;
|
|
}
|
|
|
|
// Saves an event filter.
|
|
if ($save_agent_filter) {
|
|
$values = [];
|
|
$values['id_name'] = get_parameter('id_name');
|
|
$values['group_id'] = get_parameter('group_id');
|
|
$values['recursion'] = get_parameter('recursion');
|
|
$values['status'] = get_parameter('status');
|
|
$values['search'] = get_parameter('search');
|
|
$values['id_os'] = get_parameter('id_os');
|
|
$values['policies'] = json_encode(get_parameter('policies'));
|
|
$values['search_custom'] = get_parameter('search_custom');
|
|
$values['ag_custom_fields'] = get_parameter('ag_custom_fields');
|
|
$values['id_group_filter'] = get_parameter('id_group_filter');
|
|
|
|
$exists = (bool) db_get_value_filter(
|
|
'id_filter',
|
|
'tagent_filter',
|
|
$values
|
|
);
|
|
|
|
if ($exists === true) {
|
|
echo 'duplicate';
|
|
} else {
|
|
$result = db_process_sql_insert('tagent_filter', $values);
|
|
|
|
if ($result === false) {
|
|
echo 'error';
|
|
} else {
|
|
echo $result;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($update_agent_filter) {
|
|
$values = [];
|
|
$id = get_parameter('id');
|
|
|
|
$values['group_id'] = get_parameter('group_id');
|
|
$values['recursion'] = get_parameter('recursion');
|
|
$values['status'] = get_parameter('status');
|
|
$values['search'] = get_parameter('search');
|
|
$values['id_os'] = get_parameter('id_os');
|
|
$values['policies'] = json_encode(get_parameter('policies'));
|
|
$values['search_custom'] = get_parameter('search_custom');
|
|
$values['ag_custom_fields'] = get_parameter('ag_custom_fields');
|
|
|
|
$result = db_process_sql_update(
|
|
'tagent_filter',
|
|
$values,
|
|
['id_filter' => $id]
|
|
);
|
|
|
|
if ($result === false) {
|
|
echo 'error';
|
|
} else {
|
|
echo 'ok';
|
|
}
|
|
}
|
|
|
|
if ($delete_agent_filter) {
|
|
$id = get_parameter('id');
|
|
|
|
$user_groups = users_get_groups(
|
|
$config['id_user'],
|
|
'AW',
|
|
users_can_manage_group_all('AW'),
|
|
true
|
|
);
|
|
|
|
$sql = 'DELETE
|
|
FROM tagent_filter
|
|
WHERE id_filter = '.$id.' AND id_group_filter IN ('.implode(',', array_keys($user_groups)).')';
|
|
|
|
$agent_filters = db_process_sql($sql);
|
|
|
|
if ($agent_filters === false) {
|
|
echo 'error';
|
|
} else {
|
|
echo 'ok';
|
|
}
|
|
}
|
|
|
|
if ($get_agent_filters) {
|
|
$user_groups = users_get_groups(
|
|
$config['id_user'],
|
|
'AR',
|
|
users_can_manage_group_all('AR'),
|
|
true
|
|
);
|
|
|
|
$sql = 'SELECT id_filter, id_name
|
|
FROM tagent_filter
|
|
WHERE id_group_filter IN ('.implode(',', array_keys($user_groups)).')';
|
|
|
|
$agent_filters = db_get_all_rows_sql($sql);
|
|
|
|
$result = [];
|
|
|
|
if ($agent_filters !== false) {
|
|
foreach ($agent_filters as $agent_filter) {
|
|
$result[$agent_filter['id_filter']] = $agent_filter['id_name'];
|
|
}
|
|
}
|
|
|
|
echo io_json_mb_encode($result);
|
|
}
|
|
|
|
if ((int) $load_filter_modal === 1) {
|
|
$user_groups = users_get_groups(
|
|
$config['id_user'],
|
|
'AR',
|
|
users_can_manage_group_all('AR'),
|
|
true
|
|
);
|
|
|
|
$sql = 'SELECT id_filter, id_name
|
|
FROM tagent_filter
|
|
WHERE id_group_filter IN ('.implode(',', array_keys($user_groups)).')';
|
|
|
|
$agent_filters = db_get_all_rows_sql($sql);
|
|
|
|
$filters = [];
|
|
foreach ($agent_filters as $agent_filter) {
|
|
$filters[$agent_filter['id_filter']] = $agent_filter['id_name'];
|
|
}
|
|
|
|
echo '<div id="load-filter-select" class="load-filter-modal">';
|
|
echo '<form method="post" id="form_load_filter" action="index.php?sec=view&sec2=operation/agentes/estado_agente&pure=">';
|
|
|
|
$table = new StdClass;
|
|
$table->id = 'load_filter_form';
|
|
$table->width = '100%';
|
|
$table->class = 'filter-table-adv';
|
|
|
|
$data = [];
|
|
$table->rowid[3] = 'update_filter_row1';
|
|
$data[0] = html_print_label_input_block(
|
|
__('Load filter'),
|
|
html_print_select(
|
|
$filters,
|
|
'filter_id',
|
|
$current,
|
|
'',
|
|
__('None'),
|
|
0,
|
|
true,
|
|
false,
|
|
true,
|
|
'',
|
|
false
|
|
)
|
|
);
|
|
|
|
$table->data[] = $data;
|
|
$table->rowclass[] = '';
|
|
|
|
html_print_table($table);
|
|
html_print_div(
|
|
[
|
|
'class' => 'action-buttons',
|
|
'content' => html_print_submit_button(
|
|
__('Load filter'),
|
|
'srcbutton',
|
|
false,
|
|
[
|
|
'icon' => 'search',
|
|
'mode' => 'mini',
|
|
],
|
|
true
|
|
),
|
|
],
|
|
false
|
|
);
|
|
echo html_print_input_hidden('load_filter', 1, true);
|
|
echo '</form>';
|
|
echo '</div>';
|
|
?>
|
|
|
|
<script type="text/javascript">
|
|
function show_filter() {
|
|
$("#load-filter-select").dialog({
|
|
resizable: true,
|
|
draggable: true,
|
|
modal: false,
|
|
closeOnEscape: true,
|
|
width: 450
|
|
});
|
|
}
|
|
|
|
$(document).ready(function() {
|
|
show_filter();
|
|
});
|
|
|
|
</script>
|
|
<?php
|
|
return;
|
|
}
|
|
|
|
if ($save_filter_modal) {
|
|
echo '<div id="save-filter-select">';
|
|
if (check_acl($config['id_user'], 0, 'AW')) {
|
|
echo '<div id="#info_box"></div>';
|
|
|
|
$table = new StdClass;
|
|
$table->id = 'save_filter_form';
|
|
$table->width = '100%';
|
|
$table->size = [];
|
|
$table->size[0] = '50%';
|
|
$table->size[1] = '50%';
|
|
$table->class = 'filter-table-adv';
|
|
$data = [];
|
|
|
|
$table->rowid[0] = 'update_save_selector';
|
|
$data[0][0] = html_print_label_input_block(
|
|
__('New filter'),
|
|
html_print_radio_button(
|
|
'filter_mode',
|
|
'new',
|
|
'',
|
|
true,
|
|
true
|
|
)
|
|
);
|
|
|
|
$data[0][1] = html_print_label_input_block(
|
|
__('Update/delete filter'),
|
|
html_print_radio_button(
|
|
'filter_mode',
|
|
'update',
|
|
'',
|
|
false,
|
|
true
|
|
)
|
|
);
|
|
|
|
$table->rowid[1] = 'save_filter_row1';
|
|
$data[1][0] = html_print_label_input_block(
|
|
__('Filter name'),
|
|
html_print_input_text('id_name', '', '', 15, 255, true)
|
|
);
|
|
|
|
$labelInput = __('Filter group');
|
|
if (is_metaconsole() === true) {
|
|
$labelInput = __('Save in Group');
|
|
}
|
|
|
|
$user_groups_array = users_get_groups_for_select(
|
|
$config['id_user'],
|
|
'AW',
|
|
users_can_manage_group_all('AW'),
|
|
true
|
|
);
|
|
|
|
$data[1][1] = html_print_label_input_block(
|
|
$labelInput,
|
|
html_print_select(
|
|
$user_groups_array,
|
|
'id_group_filter_dialog',
|
|
$id_group_filter,
|
|
'',
|
|
'',
|
|
0,
|
|
true,
|
|
false,
|
|
false
|
|
),
|
|
['div_class' => 'filter-group-dialog']
|
|
);
|
|
|
|
$table->rowid[2] = 'save_filter_row2';
|
|
|
|
$table->data[] = $data;
|
|
$table->rowclass[] = '';
|
|
$user_groups = users_get_groups(
|
|
$config['id_user'],
|
|
'AW',
|
|
users_can_manage_group_all('AW'),
|
|
true
|
|
);
|
|
|
|
$sql = 'SELECT id_filter, id_name
|
|
FROM tagent_filter
|
|
WHERE id_group_filter IN ('.implode(',', array_keys($user_groups)).')';
|
|
|
|
$agent_filters = db_get_all_rows_sql($sql);
|
|
|
|
$_filters_update = [];
|
|
|
|
if ($agent_filters !== false) {
|
|
foreach ($agent_filters as $agent_filter) {
|
|
$_filters_update[$agent_filter['id_filter']] = $agent_filter['id_name'];
|
|
}
|
|
}
|
|
|
|
$data[2][0] = html_print_label_input_block(
|
|
__('Filter'),
|
|
html_print_select(
|
|
$_filters_update,
|
|
'overwrite_filter',
|
|
'',
|
|
'',
|
|
'',
|
|
0,
|
|
true
|
|
)
|
|
);
|
|
|
|
$table->data = $data;
|
|
|
|
html_print_table($table);
|
|
html_print_div(
|
|
[
|
|
'id' => 'submit-save_filter',
|
|
'class' => 'action-buttons',
|
|
'content' => html_print_submit_button(
|
|
__('Save current filter'),
|
|
'srcbutton',
|
|
false,
|
|
[
|
|
'icon' => 'search',
|
|
'mode' => 'mini',
|
|
'onclick' => 'save_new_filter();',
|
|
],
|
|
true
|
|
),
|
|
],
|
|
false
|
|
);
|
|
|
|
$input_actions = html_print_submit_button(
|
|
__('Delete filter'),
|
|
'delete_filter',
|
|
false,
|
|
[
|
|
'icon' => 'delete',
|
|
'mode' => 'mini',
|
|
'onclick' => 'save_delete_filter();',
|
|
],
|
|
true
|
|
);
|
|
|
|
$input_actions .= html_print_submit_button(
|
|
__('Update filter'),
|
|
'srcbutton',
|
|
false,
|
|
[
|
|
'icon' => 'update',
|
|
'mode' => 'mini',
|
|
'onclick' => 'save_update_filter();',
|
|
],
|
|
true
|
|
);
|
|
|
|
html_print_div(
|
|
[
|
|
'id' => 'update_filter_row',
|
|
'class' => 'action-buttons',
|
|
'content' => $input_actions,
|
|
],
|
|
false
|
|
);
|
|
} else {
|
|
include 'general/noaccess.php';
|
|
}
|
|
|
|
echo '</div>';
|
|
?>
|
|
<script type="text/javascript">
|
|
|
|
function show_save_filter() {
|
|
$('#save_filter_row2').hide();
|
|
$('#update_filter_row').hide();
|
|
$('#update_delete_row').hide();
|
|
$('.filter-group-dialog').show();
|
|
// Filter save mode selector
|
|
$("[name='filter_mode']").click(function() {
|
|
if ($(this).val() == 'new') {
|
|
$('#save_filter_row2').hide();
|
|
$('#submit-save_filter').show();
|
|
$('#update_filter_row').hide();
|
|
$('#update_delete_row').hide();
|
|
$('.filter-group-dialog').show();
|
|
}
|
|
else {
|
|
$('#save_filter_row2').show();
|
|
$('#update_filter_row').show();
|
|
$('#submit-save_filter').hide();
|
|
$('#update_delete_row').show();
|
|
$('.filter-group-dialog').hide();
|
|
}
|
|
});
|
|
$("#save-filter-select").dialog({
|
|
resizable: true,
|
|
draggable: true,
|
|
modal: false,
|
|
closeOnEscape: true,
|
|
width: 450,
|
|
height: 350
|
|
});
|
|
}
|
|
|
|
function save_new_filter() {
|
|
// If the filter name is blank show error
|
|
if ($('#text-id_name').val() == '') {
|
|
$('#show_filter_error').html("<h3 class='error'><?php echo __('Filter name cannot be left blank'); ?></h3>");
|
|
|
|
// Close dialog
|
|
$('.ui-dialog-titlebar-close').trigger('click');
|
|
return false;
|
|
}
|
|
|
|
var custom_fields_values = $('input[name^="ag_custom_fields"]').map(function() {
|
|
return this.value;
|
|
}).get();
|
|
|
|
var custom_fields_ids = $("input[name^='ag_custom_fields']").map(function() {
|
|
var name = $(this).attr("name");
|
|
var number = name.match(/\[(.*?)\]/)[1];
|
|
|
|
return number;
|
|
}).get();
|
|
|
|
var ag_custom_fields = custom_fields_ids.reduce(function(result, custom_fields_id, index) {
|
|
result[custom_fields_id] = custom_fields_values[index];
|
|
return result;
|
|
}, {});
|
|
|
|
var id_filter_save;
|
|
jQuery.post ("<?php echo ui_get_full_url('ajax.php', false, false, false); ?>",
|
|
{
|
|
"page" : "include/ajax/agent",
|
|
"save_agent_filter" : 1,
|
|
"id_name": $("#text-id_name").val(),
|
|
"id" : $("#overwrite_filter").val(),
|
|
"group_id" : $("#group_id").val(),
|
|
"recursion" : $("#checkbox-recursion").is(':checked'),
|
|
"status" : $("#status").val(),
|
|
"search" : $("#text-search").val(),
|
|
"id_os" : $("#os").val(),
|
|
"policies" : $("#policies").val(),
|
|
"search_custom" : $("#text-search_custom").val(),
|
|
"ag_custom_fields": JSON.stringify(ag_custom_fields),
|
|
"id_group_filter": $("#id_group_filter_dialog").val(),
|
|
},
|
|
|
|
function (data) {
|
|
$("#info_box").hide();
|
|
if (data == 'error') {
|
|
$("#info_box").filter(function(i, item) {
|
|
if ($(item).data('type_info_box') == "error_create_filter") {
|
|
return true;
|
|
}
|
|
else
|
|
return false;
|
|
}).show();
|
|
}
|
|
else if (data == 'duplicate') {
|
|
$("#info_box").filter(function(i, item) {
|
|
if ($(item).data('type_info_box') == "duplicate_create_filter") {
|
|
return true;
|
|
}
|
|
else
|
|
return false;
|
|
}).show();
|
|
}
|
|
else {
|
|
id_filter_save = data;
|
|
|
|
$("#info_box").filter(function(i, item) {
|
|
if ($(item).data('type_info_box') == "success_create_filter") {
|
|
return true;
|
|
}
|
|
else
|
|
return false;
|
|
}).show();
|
|
}
|
|
|
|
// First remove all options of filters select.
|
|
$('#filter_id').find('option').remove().end();
|
|
|
|
// Add 'none' option.
|
|
$('#filter_id').append ($('<option></option>').html ( <?php echo "'".__('None')."'"; ?> ).attr ("value", 0));
|
|
|
|
// Reload filters select.
|
|
jQuery.post ("<?php echo ui_get_full_url('ajax.php', false, false, false); ?>",
|
|
{
|
|
"page" : "include/ajax/agent",
|
|
"get_agent_filters" : 1
|
|
},
|
|
function (data) {
|
|
jQuery.each (data, function (i, val) {
|
|
s = js_html_entity_decode(val);
|
|
$('#filter_id').append($('<option></option>').html (s).attr("value", i));
|
|
});
|
|
},
|
|
"json"
|
|
);
|
|
|
|
// Close dialog.
|
|
$("#save-filter-select").dialog('close');
|
|
}
|
|
);
|
|
}
|
|
|
|
function save_update_filter() {
|
|
var id_filter_update = $("#overwrite_filter").val();
|
|
var name_filter_update = $("#overwrite_filter option[value='"+id_filter_update+"']").text();
|
|
|
|
var custom_fields_values = $('input[name^="ag_custom_fields"]').map(function() {
|
|
return this.value;
|
|
}).get();
|
|
|
|
var custom_fields_ids = $("input[name^='ag_custom_fields']").map(function() {
|
|
var name = $(this).attr("name");
|
|
var number = name.match(/\[(.*?)\]/)[1];
|
|
|
|
return number;
|
|
}).get();
|
|
|
|
var ag_custom_fields = custom_fields_ids.reduce(function(result, custom_fields_id, index) {
|
|
result[custom_fields_id] = custom_fields_values[index];
|
|
return result;
|
|
}, {});
|
|
|
|
jQuery.post ("<?php echo ui_get_full_url('ajax.php', false, false, false); ?>",
|
|
{
|
|
"page" : "include/ajax/agent",
|
|
"update_agent_filter" : 1,
|
|
"id" : $("#overwrite_filter").val(),
|
|
"group_id" : $("#group_id").val(),
|
|
"recursion" : $("#checkbox-recursion").is(':checked'),
|
|
"status" : $("#status").val(),
|
|
"search" : $("#text-search").val(),
|
|
"id_os" : $("#os").val(),
|
|
"policies" : $("#policies").val(),
|
|
"search_custom" : $("#text-search_custom").val(),
|
|
"ag_custom_fields": JSON.stringify(ag_custom_fields),
|
|
},
|
|
function (data) {
|
|
$(".info_box").hide();
|
|
if (data == 'ok') {
|
|
$(".info_box").filter(function(i, item) {
|
|
if ($(item).data('type_info_box') == "success_update_filter") {
|
|
return true;
|
|
}
|
|
else
|
|
return false;
|
|
}).show();
|
|
}
|
|
else {
|
|
$(".info_box").filter(function(i, item) {
|
|
if ($(item).data('type_info_box') == "error_create_filter") {
|
|
return true;
|
|
}
|
|
else
|
|
return false;
|
|
}).show();
|
|
}
|
|
});
|
|
|
|
// First remove all options of filters select.
|
|
$('#filter_id').find('option').remove().end();
|
|
|
|
// Add 'none' option.
|
|
$('#filter_id').append ($('<option></option>').html ( <?php echo "'".__('None')."'"; ?> ).attr ("value", 0));
|
|
|
|
// Reload filters select.
|
|
jQuery.post ("<?php echo ui_get_full_url('ajax.php', false, false, false); ?>",
|
|
{
|
|
"page" : "include/ajax/agent",
|
|
"get_agent_filters" : 1
|
|
},
|
|
function (data) {
|
|
jQuery.each (data, function (i, val) {
|
|
s = js_html_entity_decode(val);
|
|
if (i == id_filter_update) {
|
|
$('#filter_id').append ($('<option selected="selected"></option>').html (s).attr ("value", i));
|
|
}
|
|
else {
|
|
$('#filter_id').append ($('<option></option>').html (s).attr ("value", i));
|
|
}
|
|
});
|
|
},
|
|
"json"
|
|
);
|
|
|
|
// Close dialog
|
|
$('.ui-dialog-titlebar-close').trigger('click');
|
|
|
|
// Update the info with the loaded filter
|
|
$("#hidden-id_name").val($('#text-id_name').val());
|
|
$('#filter_loaded_span').html($('#filter_loaded_text').html() + ': ' + name_filter_update);
|
|
return false;
|
|
}
|
|
|
|
function save_delete_filter() {
|
|
var id_filter_update = $("#overwrite_filter").val();
|
|
|
|
jQuery.post ("<?php echo ui_get_full_url('ajax.php', false, false, false); ?>",
|
|
{
|
|
"page" : "include/ajax/agent",
|
|
"delete_agent_filter" : 1,
|
|
"id" : $("#overwrite_filter").val(),
|
|
},
|
|
function (data) {
|
|
$(".info_box").hide();
|
|
if (data == 'ok') {
|
|
$(".info_box").filter(function(i, item) {
|
|
if ($(item).data('type_info_box') == "success_update_filter") {
|
|
return true;
|
|
}
|
|
else
|
|
return false;
|
|
}).show();
|
|
}
|
|
else {
|
|
$(".info_box").filter(function(i, item) {
|
|
if ($(item).data('type_info_box') == "error_create_filter") {
|
|
return true;
|
|
}
|
|
else
|
|
return false;
|
|
}).show();
|
|
}
|
|
});
|
|
|
|
// First remove all options of filters select.
|
|
$('#filter_id').find('option').remove().end();
|
|
|
|
// Add 'none' option.
|
|
$('#filter_id').append ($('<option></option>').html ( <?php echo "'".__('None')."'"; ?> ).attr ("value", 0));
|
|
|
|
// Reload filters select.
|
|
jQuery.post ("<?php echo ui_get_full_url('ajax.php', false, false, false); ?>",
|
|
{
|
|
"page" : "include/ajax/agent",
|
|
"get_agent_filters" : 1
|
|
},
|
|
function (data) {
|
|
jQuery.each (data, function (i, val) {
|
|
s = js_html_entity_decode(val);
|
|
if (i == id_filter_update) {
|
|
$('#filter_id').append ($('<option selected="selected"></option>').html (s).attr ("value", i));
|
|
}
|
|
else {
|
|
$('#filter_id').append ($('<option></option>').html (s).attr ("value", i));
|
|
}
|
|
});
|
|
},
|
|
"json"
|
|
);
|
|
|
|
// Close dialog
|
|
$('.ui-dialog-titlebar-close').trigger('click');
|
|
|
|
return false;
|
|
}
|
|
|
|
$(document).ready(function() {
|
|
show_save_filter();
|
|
});
|
|
</script>
|
|
<?php
|
|
return;
|
|
}
|
|
|
|
return;
|