mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-31 01:35:36 +02:00
Added feature of generate event
This commit is contained in:
parent
a69666aad9
commit
3d3beca727
@ -37,6 +37,8 @@ require_once $config['homedir'].'/include/functions_cron.php';
|
|||||||
ui_require_javascript_file('encode_decode_base64');
|
ui_require_javascript_file('encode_decode_base64');
|
||||||
ui_require_css_file('agent_manager');
|
ui_require_css_file('agent_manager');
|
||||||
|
|
||||||
|
use PandoraFMS\Event;
|
||||||
|
|
||||||
check_login();
|
check_login();
|
||||||
|
|
||||||
// Get tab parameter to check ACL in each tabs.
|
// Get tab parameter to check ACL in each tabs.
|
||||||
@ -229,7 +231,7 @@ if ($create_agent) {
|
|||||||
if ($alias == '') {
|
if ($alias == '') {
|
||||||
$agent_creation_error = __('No agent alias specified');
|
$agent_creation_error = __('No agent alias specified');
|
||||||
$agent_created_ok = 0;
|
$agent_created_ok = 0;
|
||||||
} else if (group_allow_more_agents($grupo) === false) {
|
} else if (group_allow_more_agents($grupo, true) === false) {
|
||||||
$agent_creation_error = __('Agent cannot be created due to the maximum agent limit for this group');
|
$agent_creation_error = __('Agent cannot be created due to the maximum agent limit for this group');
|
||||||
$agent_created_ok = 0;
|
$agent_created_ok = 0;
|
||||||
} else {
|
} else {
|
||||||
@ -1037,7 +1039,7 @@ if ($update_agent) {
|
|||||||
|
|
||||||
if ($grupo <= 0) {
|
if ($grupo <= 0) {
|
||||||
ui_print_error_message(__('The group id %d is incorrect.', $grupo));
|
ui_print_error_message(__('The group id %d is incorrect.', $grupo));
|
||||||
} else if (group_allow_more_agents($grupo) === false) {
|
} else if (group_allow_more_agents($grupo, true) === false) {
|
||||||
ui_print_error_message(__('Agent cannot be updated due to the maximum agent limit for this group'));
|
ui_print_error_message(__('Agent cannot be updated due to the maximum agent limit for this group'));
|
||||||
} else if ($exists_ip) {
|
} else if ($exists_ip) {
|
||||||
ui_print_error_message(__('Duplicate main IP address'));
|
ui_print_error_message(__('Duplicate main IP address'));
|
||||||
|
@ -247,38 +247,7 @@ function agents_create_agent(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check if group has limit or overrides the agent limit.
|
// Check if group has limit or overrides the agent limit.
|
||||||
if (group_allow_more_agents($id_group) === false) {
|
if (group_allow_more_agents($id_group, true) === false) {
|
||||||
// Capture the group name.
|
|
||||||
$groupName = db_get_value(
|
|
||||||
'nombre',
|
|
||||||
'tgrupo',
|
|
||||||
'id_grupo',
|
|
||||||
$id_group
|
|
||||||
);
|
|
||||||
|
|
||||||
// Generate new event.
|
|
||||||
$evt = new Event;
|
|
||||||
$evt->evento(
|
|
||||||
sprintf(
|
|
||||||
'Agent cannot be created due to the maximum agent limit for group %s',
|
|
||||||
$groupName
|
|
||||||
)
|
|
||||||
);
|
|
||||||
$evt->id_grupo($id_group);
|
|
||||||
$evt->id_source_event(0);
|
|
||||||
$evt->id_agente(0);
|
|
||||||
$evt->estado(EVENT_NO_VALIDATED);
|
|
||||||
$evt->id_agentmodule(0);
|
|
||||||
$evt->id_usuario($config['id_user']);
|
|
||||||
$evt->event_type(EVENTS_NEW_AGENT);
|
|
||||||
$evt->criticity(EVENT_CRIT_WARNING);
|
|
||||||
$evt->timestamp(date('Y-m-d H:i:s'));
|
|
||||||
$evt->utimestamp(time());
|
|
||||||
$evt->data(0);
|
|
||||||
$evt->source('agent_creation');
|
|
||||||
// Save the event.
|
|
||||||
$evt->save();
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3909,18 +3878,58 @@ function agents_get_last_status_change($id_agent)
|
|||||||
/**
|
/**
|
||||||
* Checks if group allow more agents due itself limitation.
|
* Checks if group allow more agents due itself limitation.
|
||||||
*
|
*
|
||||||
* @param integer $id_group Id of the group.
|
* @param integer $id_group Id of the group.
|
||||||
|
* @param boolean $generateEvent If true and the check fails, will generate an event.
|
||||||
*
|
*
|
||||||
* @return boolean True if allow more agents.
|
* @return boolean True if allow more agents.
|
||||||
*/
|
*/
|
||||||
function group_allow_more_agents(int $id_group):bool
|
function group_allow_more_agents(int $id_group, bool $generateEvent=false):bool
|
||||||
{
|
{
|
||||||
|
global $config;
|
||||||
|
|
||||||
$groupMaxAgents = (int) db_get_value('max_agents', 'tgrupo', sprintf('id_grupo = %d', $id_group));
|
$groupMaxAgents = (int) db_get_value('max_agents', 'tgrupo', sprintf('id_grupo = %d', $id_group));
|
||||||
$groupCountAgents = (int) db_get_num_rows(sprintf('SELECT nombre FROM tagente WHERE id_grupo = "%s"', $id_group));
|
$groupCountAgents = (int) db_get_num_rows(sprintf('SELECT nombre FROM tagente WHERE id_grupo = "%s"', $id_group));
|
||||||
|
|
||||||
// If `max_agents` is not defined or the count of agents in the group is below of max agents allowed.
|
// If `max_agents` is not defined or the count of agents in the group is below of max agents allowed.
|
||||||
$output = ($groupMaxAgents === 0 || $groupCountAgents < $groupMaxAgents);
|
$output = ($groupMaxAgents === 0 || $groupCountAgents < $groupMaxAgents);
|
||||||
|
|
||||||
|
if ($output === false && $generateEvent === true) {
|
||||||
|
// Get the group name.
|
||||||
|
$groupName = db_get_value(
|
||||||
|
'nombre',
|
||||||
|
'tgrupo',
|
||||||
|
'id_grupo',
|
||||||
|
$id_group
|
||||||
|
);
|
||||||
|
// New event.
|
||||||
|
$evt = new Event;
|
||||||
|
// Set parameters.
|
||||||
|
$evt->evento(
|
||||||
|
sprintf(
|
||||||
|
'Agent cannot be created due to the maximum agent limit for group %s',
|
||||||
|
$groupName
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$evt->id_grupo($id_group);
|
||||||
|
$evt->id_agente(0);
|
||||||
|
$evt->id_agentmodule(0);
|
||||||
|
$evt->id_usuario($config['id_user']);
|
||||||
|
$evt->estado(EVENT_STATUS_NEW);
|
||||||
|
$evt->event_type(EVENTS_ERROR);
|
||||||
|
$evt->criticity(EVENT_CRIT_WARNING);
|
||||||
|
$evt->timestamp(date('Y-m-d H:i:s'));
|
||||||
|
$evt->utimestamp(time());
|
||||||
|
$evt->data(0);
|
||||||
|
$evt->source('agent_creation');
|
||||||
|
// Any fields are only available in meta.
|
||||||
|
if (is_metaconsole() === true) {
|
||||||
|
$evt->id_source_event(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save the event.
|
||||||
|
$evt->save();
|
||||||
|
}
|
||||||
|
|
||||||
return $output;
|
return $output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user