2012-07-12 Juan Manuel Ramon <juanmanuel.ramon@artica.es>

* include/functions_modules.php
		 include/functions_groups.php
		 include/functions_os.php
		 include/functions_tags.php
		 operation/tree.php: Fixes in tree view counts.
		 
		* operation/agentes/status_monitor.php: Fixed module group 
		filter.
		 
		 Pending to port to branches.



git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6766 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
This commit is contained in:
juanmanuelr 2012-07-12 18:10:44 +00:00
parent 795495887b
commit b95f135a14
7 changed files with 857 additions and 161 deletions

View File

@ -1,3 +1,16 @@
2012-07-12 Juan Manuel Ramon <juanmanuel.ramon@artica.es>
* include/functions_modules.php
include/functions_groups.php
include/functions_os.php
include/functions_tags.php
operation/tree.php: Fixes in tree view counts.
* operation/agentes/status_monitor.php: Fixed module group
filter.
Pending to port to branches.
2012-07-10 Juan Manuel Ramon <juanmanuel.ramon@artica.es>
* include/functions_agents.php

View File

@ -853,9 +853,51 @@ function groups_agent_unknown ($group_array) {
$group_clause = implode (",", $group_array);
$group_clause = "(" . $group_clause . ")";
//TODO REVIEW ORACLE AND POSTGRES
return db_get_sql ("SELECT COUNT(min_estado) FROM (SELECT MIN(tagente_estado.estado) as min_estado FROM tagente_estado, tagente, tagente_modulo WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND tagente_modulo.disabled = 0 AND tagente_estado.id_agente = tagente.id_agente AND tagente_estado.estado != 0 AND tagente.id_grupo IN $group_clause GROUP BY tagente.id_agente HAVING min_estado = 3) AS S1");
// Agent of module group X and critical status
$agents_critical = "SELECT tagente.id_agente
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND estado = 1
AND tagente_estado.utimestamp != 0
AND tagente.id_grupo IN $group_clause
group by tagente.id_agente";
// Agent of module group X and warning status
$agents_warning = "SELECT tagente.id_agente
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND estado = 2
AND tagente_estado.utimestamp != 0
AND tagente.id_grupo IN $group_clause
group by tagente.id_agente";
// Agent of module group X and unknown status
$agents_unknown = "SELECT tagente.id_agente
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND estado = 3
AND tagente_estado.utimestamp != 0
AND tagente.id_grupo IN $group_clause
group by tagente.id_agente";
return db_get_sql ("SELECT COUNT(*) FROM ( SELECT DISTINCT tagente.id_agente
FROM tagente, tagente_modulo, tagente_estado
WHERE tagente.id_agente = tagente_modulo.id_agente
AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo
AND tagente.id_grupo IN $group_clause
AND tagente.id_agente NOT IN ($agents_critical)
AND tagente.id_agente NOT IN ($agents_warning)
AND tagente.id_agente IN ($agents_unknown) ) AS t");
}
@ -873,17 +915,65 @@ function groups_agent_ok ($group_array) {
$group_clause = implode (",", $group_array);
$group_clause = "(" . $group_clause . ")";
//!!!Query explanation!!!
//An agent is OK if all its modules are OK
//The status values are: 0 OK; 1 Critical; 2 Warning; 3 Unkown
//This query grouped all modules by agents and select the MAX value for status which has the value 0
//If MAX(estado) is 0 it means all modules has status 0 => OK
//Then we count the agents of the group selected to know how many agents are in OK status
//TODO REVIEW ORACLE AND POSTGRES
return db_get_sql ("SELECT COUNT(max_estado) FROM (SELECT MAX(tagente_estado.estado) as max_estado FROM tagente_estado, tagente, tagente_modulo WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND tagente_modulo.disabled = 0 AND tagente_estado.id_agente = tagente.id_agente AND tagente.id_grupo IN $group_clause GROUP BY tagente.id_agente HAVING max_estado = 0) AS S1");
// Agent of module group X and critical status
$agents_critical = "SELECT tagente.id_agente
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND estado = 1
AND tagente_estado.utimestamp != 0
AND tagente.id_grupo IN $group_clause
group by tagente.id_agente";
// Agent of module group X and warning status
$agents_warning = "SELECT tagente.id_agente
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND estado = 2
AND tagente_estado.utimestamp != 0
AND tagente.id_grupo IN $group_clause
group by tagente.id_agente";
// Agent of module group X and unknown status
$agents_unknown = "SELECT tagente.id_agente
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND estado = 3
AND tagente_estado.utimestamp != 0
AND tagente.id_grupo IN $group_clause
group by tagente.id_agente";
// Agent of module group X and ok status
$agents_ok = "SELECT tagente.id_agente
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND estado = 0
AND tagente_estado.utimestamp != 0
AND tagente.id_grupo IN $group_clause
group by tagente.id_agente";
return db_get_sql ("SELECT COUNT(*) FROM ( SELECT DISTINCT tagente.id_agente
FROM tagente, tagente_modulo, tagente_estado
WHERE tagente.id_agente = tagente_modulo.id_agente
AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo
AND tagente.id_grupo IN $group_clause
AND tagente.id_agente NOT IN ($agents_critical)
AND tagente.id_agente NOT IN ($agents_warning)
AND tagente.id_agente NOT IN ($agents_unknown)
AND tagente.id_agente IN ($agents_ok) ) AS t");
}
// Get critical agents by using the status code in modules.
@ -926,16 +1016,40 @@ function groups_agent_warning ($group_array) {
$group_clause = implode (",", $group_array);
$group_clause = "(" . $group_clause . ")";
//!!!Query explanation!!!
//An agent is Warning when has at least one module in warning status and nothing more in critical status
//The status values are: 0 OK; 1 Critical; 2 Warning; 3 Unkown
//This query grouped all modules by agents and select the MIN value for status which has the value 0
//If MIN(estado) is 2 it means at least one module is warning and there is no critical modules
//Then we count the agents of the group selected to know how many agents are in warning status
// Agent of group X and critical status
$agents_critical = "SELECT tagente.id_agente
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND estado = 1
AND tagente_estado.utimestamp != 0
AND tagente.id_grupo IN $group_clause
group by tagente.id_agente";
// Agent of group X and warning status
$agents_warning = "SELECT tagente.id_agente
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND estado = 2
AND tagente_estado.utimestamp != 0
AND tagente.id_grupo IN $group_clause
group by tagente.id_agente";
//TODO REVIEW ORACLE AND POSTGRES
return db_get_sql ("SELECT COUNT(min_estado) FROM (SELECT MIN(tagente_estado.estado) as min_estado FROM tagente_estado, tagente, tagente_modulo WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND tagente_modulo.disabled = 0 AND tagente_estado.id_agente = tagente.id_agente AND tagente.id_grupo IN $group_clause GROUP BY tagente.id_agente HAVING min_estado = 2) AS S1");
return db_get_sql ("SELECT COUNT(*) FROM ( SELECT DISTINCT tagente.id_agente
FROM tagente, tagente_modulo, tagente_estado
WHERE tagente.id_agente = tagente_modulo.id_agente
AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo
AND tagente.id_grupo IN $group_clause
AND tagente.id_agente NOT IN ($agents_critical)
AND tagente.id_agente IN ($agents_warning) ) AS t");
}

View File

@ -1290,7 +1290,14 @@ function modules_agents_critical ($module_name) {
//TODO REVIEW ORACLE AND POSTGRES
return db_get_sql ("SELECT COUNT( DISTINCT tagente_estado.id_agente) FROM tagente_estado, tagente, tagente_modulo WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND tagente_modulo.disabled = 0 AND estado = 1 AND tagente_estado.id_agente = tagente.id_agente AND tagente_modulo.nombre = '$module_name'");
return db_get_sql ("SELECT COUNT( DISTINCT tagente_estado.id_agente)
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0
AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo
AND tagente_modulo.disabled = 0
AND estado = 1
AND tagente_estado.id_agente = tagente.id_agente
AND tagente_modulo.nombre = '$module_name'");
}
@ -1307,7 +1314,16 @@ function modules_agents_warning ($module_name) {
//TODO REVIEW ORACLE AND POSTGRES
return db_get_sql ("SELECT COUNT(min_estado) FROM (SELECT MIN(tagente_estado.estado) as min_estado FROM tagente_estado, tagente, tagente_modulo WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND tagente_modulo.disabled = 0 AND tagente_estado.id_agente = tagente.id_agente AND tagente_modulo.nombre = '$module_name' GROUP BY tagente.id_agente HAVING min_estado = 2) AS S1");
return db_get_sql ("SELECT COUNT(min_estado)
FROM (SELECT MAX(tagente_estado.estado) as min_estado
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0
AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo
AND tagente_modulo.disabled = 0
AND tagente_estado.id_agente = tagente.id_agente
AND tagente_modulo.nombre = '$module_name'
GROUP BY tagente.id_agente
HAVING min_estado = 2) AS S1");
}
@ -1315,9 +1331,51 @@ function modules_agents_warning ($module_name) {
function modules_group_agent_unknown ($module_group) {
//TODO REVIEW ORACLE AND POSTGRES
// Agent of module group X and critical status
$agents_critical = "SELECT tagente.id_agente
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND estado = 1
AND tagente_estado.utimestamp != 0
AND tagente_modulo.id_module_group = $module_group
group by tagente.id_agente";
return db_get_sql ("SELECT COUNT(min_estado) FROM (SELECT MIN(tagente_estado.estado) as min_estado FROM tagente_estado, tagente, tagente_modulo WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND tagente_modulo.disabled = 0 AND tagente_estado.id_agente = tagente.id_agente AND tagente_estado.estado != 0 AND tagente_modulo.id_module_group = $module_group GROUP BY tagente.id_agente HAVING min_estado = 3) AS S1");
// Agent of module group X and warning status
$agents_warning = "SELECT tagente.id_agente
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND estado = 2
AND tagente_estado.utimestamp != 0
AND tagente_modulo.id_module_group = $module_group
group by tagente.id_agente";
// Agent of module group X and unknown status
$agents_unknown = "SELECT tagente.id_agente
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND estado = 3
AND tagente_estado.utimestamp != 0
AND tagente_modulo.id_module_group = $module_group
group by tagente.id_agente";
return db_get_sql ("SELECT COUNT(*) FROM ( SELECT DISTINCT tagente.id_agente
FROM tagente, tagente_modulo, tagente_estado
WHERE tagente.id_agente = tagente_modulo.id_agente
AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo
AND tagente_modulo.id_module_group = $module_group
AND tagente.id_agente NOT IN ($agents_critical)
AND tagente.id_agente NOT IN ($agents_warning)
AND tagente.id_agente IN ($agents_unknown) ) AS t");
}
@ -1325,16 +1383,64 @@ function modules_group_agent_unknown ($module_group) {
function modules_group_agent_ok ($module_group) {
//!!!Query explanation!!!
//An agent is OK if all its modules are OK
//The status values are: 0 OK; 1 Critical; 2 Warning; 3 Unkown
//This query grouped all modules by agents and select the MAX value for status which has the value 0
//If MAX(estado) is 0 it means all modules has status 0 => OK
//Then we count the agents of the group selected to know how many agents are in OK status
//TODO REVIEW ORACLE AND POSTGRES
return db_get_sql ("SELECT COUNT(max_estado) FROM (SELECT MAX(tagente_estado.estado) as max_estado FROM tagente_estado, tagente, tagente_modulo WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND tagente_modulo.disabled = 0 AND tagente_estado.id_agente = tagente.id_agente AND tagente_modulo.id_module_group = $module_group GROUP BY tagente.id_agente HAVING max_estado = 0) AS S1");
// Agent of module group X and critical status
$agents_critical = "SELECT tagente.id_agente
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND estado = 1
AND tagente_estado.utimestamp != 0
AND tagente_modulo.id_module_group = $module_group
group by tagente.id_agente";
// Agent of module group X and warning status
$agents_warning = "SELECT tagente.id_agente
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND estado = 2
AND tagente_estado.utimestamp != 0
AND tagente_modulo.id_module_group = $module_group
group by tagente.id_agente";
// Agent of module group X and unknown status
$agents_unknown = "SELECT tagente.id_agente
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND estado = 3
AND tagente_estado.utimestamp != 0
AND tagente_modulo.id_module_group = $module_group
group by tagente.id_agente";
// Agent of module group X and ok status
$agents_ok = "SELECT tagente.id_agente
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND estado = 0
AND tagente_estado.utimestamp != 0
AND tagente_modulo.id_module_group = $module_group
group by tagente.id_agente";
return db_get_sql ("SELECT COUNT(*) FROM ( SELECT DISTINCT tagente.id_agente
FROM tagente, tagente_modulo, tagente_estado
WHERE tagente.id_agente = tagente_modulo.id_agente
AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo
AND tagente_modulo.id_module_group = $module_group
AND tagente.id_agente NOT IN ($agents_critical)
AND tagente.id_agente NOT IN ($agents_warning)
AND tagente.id_agente NOT IN ($agents_unknown)
AND tagente.id_agente IN ($agents_ok) ) AS t");
}
@ -1342,15 +1448,25 @@ function modules_group_agent_ok ($module_group) {
function modules_group_agent_critical ($module_group) {
//!!!Query explanation!!!
//An agent is Warning when has at least one module in warning status and nothing more in critical status
//The status values are: 0 OK; 1 Critical; 2 Warning; 3 Unkown
//If estado = 1 it means at leas 1 module is in critical status so the agent is critical
//Then we count the agents of the group selected to know how many agents are in critical status
// Agent of module group X and critical status
$agents_critical = "SELECT tagente.id_agente
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND estado = 1
AND tagente_estado.utimestamp != 0
AND tagente_modulo.id_module_group = $module_group
group by tagente.id_agente";
//TODO REVIEW ORACLE AND POSTGRES
return db_get_sql ("SELECT COUNT( DISTINCT tagente_estado.id_agente) FROM tagente_estado, tagente, tagente_modulo WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND tagente_modulo.disabled = 0 AND estado = 1 AND tagente_estado.id_agente = tagente.id_agente AND tagente_modulo.id_module_group = $module_group");
return db_get_sql ("SELECT COUNT(*) FROM ( SELECT DISTINCT tagente.id_agente
FROM tagente, tagente_modulo, tagente_estado
WHERE tagente.id_agente = tagente_modulo.id_agente
AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo
AND tagente_modulo.id_module_group = $module_group
AND tagente.id_agente IN ($agents_critical) ) AS t");
}
@ -1358,17 +1474,39 @@ function modules_group_agent_critical ($module_group) {
function modules_group_agent_warning ($module_group) {
//!!!Query explanation!!!
//An agent is Warning when has at least one module in warning status and nothing more in critical status
//The status values are: 0 OK; 1 Critical; 2 Warning; 3 Unkown
//This query grouped all modules by agents and select the MIN value for status which has the value 0
//If MIN(estado) is 2 it means at least one module is warning and there is no critical modules
//Then we count the agents of the group selected to know how many agents are in warning status
//TODO REVIEW ORACLE AND POSTGRES
return db_get_sql ("SELECT COUNT(min_estado) FROM (SELECT MIN(tagente_estado.estado) as min_estado FROM tagente_estado, tagente, tagente_modulo WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND tagente_modulo.disabled = 0 AND tagente_estado.id_agente = tagente.id_agente AND tagente_modulo.id_module_group = $module_group GROUP BY tagente.id_agente HAVING min_estado = 2) AS S1");
// Agent of module group X and critical status
$agents_critical = "SELECT tagente.id_agente
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND estado = 1
AND tagente_estado.utimestamp != 0
AND tagente_modulo.id_module_group = $module_group
group by tagente.id_agente";
// Agent of module group X and warning status
$agents_warning = "SELECT tagente.id_agente
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND estado = 2
AND tagente_estado.utimestamp != 0
AND tagente_modulo.id_module_group = $module_group
group by tagente.id_agente";
return db_get_sql ("SELECT COUNT(*) FROM ( SELECT DISTINCT tagente.id_agente
FROM tagente, tagente_modulo, tagente_estado
WHERE tagente.id_agente = tagente_modulo.id_agente
AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo
AND tagente_modulo.id_module_group = $module_group
AND tagente.id_agente NOT IN ($agents_critical)
AND tagente.id_agente IN ($agents_warning) ) AS t");
}
?>

View File

@ -26,33 +26,104 @@ function os_agents_critical ($id_os) {
// Get ok agents by using the status code in modules.
function os_agents_ok($id_os) {
// Agent of OS X and critical status
$agents_critical = "SELECT tagente.id_agente
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND estado = 1
AND tagente_estado.utimestamp != 0
AND tagente.id_os = $id_os
group by tagente.id_agente";
// Agent of OS X and warning status
$agents_warning = "SELECT tagente.id_agente
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND estado = 2
AND tagente_estado.utimestamp != 0
AND tagente.id_os = $id_os
group by tagente.id_agente";
// Agent of OS X and unknown status
$agents_unknown = "SELECT tagente.id_agente
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND estado = 3
AND tagente_estado.utimestamp != 0
AND tagente.id_os = $id_os
group by tagente.id_agente";
// Agent of OS X and ok status
$agents_ok = "SELECT tagente.id_agente
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND estado = 0
AND tagente_estado.utimestamp != 0
AND tagente.id_os = $id_os
group by tagente.id_agente";
//!!!Query explanation!!!
//An agent is OK if all its modules are OK
//The status values are: 0 OK; 1 Critical; 2 Warning; 3 Unkown
//This query grouped all modules by agents and select the MAX value for status which has the value 0
//If MAX(estado) is 0 it means all modules has status 0 => OK
//Then we count the agents of the group selected to know how many agents are in OK status
//TODO REVIEW ORACLE AND POSTGRES
return db_get_sql ("SELECT COUNT(max_estado) FROM (SELECT MAX(tagente_estado.estado) as max_estado FROM tagente_estado, tagente, tagente_modulo WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND tagente_modulo.disabled = 0 AND tagente_estado.id_agente = tagente.id_agente AND tagente.id_os = $id_os GROUP BY tagente.id_agente HAVING max_estado = 0) AS S1");
return db_get_sql ("SELECT COUNT(*) FROM ( SELECT DISTINCT tagente.id_agente
FROM tagente, tagente_modulo, tagente_estado
WHERE tagente.id_agente = tagente_modulo.id_agente
AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo
AND tagente.id_os = $id_os
AND tagente.id_agente NOT IN ($agents_critical)
AND tagente.id_agente NOT IN ($agents_warning)
AND tagente.id_agente NOT IN ($agents_unknown)
AND tagente.id_agente IN ($agents_ok) ) AS t");
}
// Get warning agents by using the status code in modules.
function os_agents_warning ($id_os) {
//!!!Query explanation!!!
//An agent is Warning when has at least one module in warning status and nothing more in critical status
//The status values are: 0 OK; 1 Critical; 2 Warning; 3 Unkown
//This query grouped all modules by agents and select the MIN value for status which has the value 0
//If MIN(estado) is 2 it means at least one module is warning and there is no critical modules
//Then we count the agents of the group selected to know how many agents are in warning status
// Agent of OS X and critical status
$agents_critical = "SELECT tagente.id_agente
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND estado = 1
AND tagente_estado.utimestamp != 0
AND tagente.id_os = $id_os
group by tagente.id_agente";
// Agent of OS X and warning status
$agents_warning = "SELECT tagente.id_agente
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND estado = 2
AND tagente_estado.utimestamp != 0
AND tagente.id_os = $id_os
group by tagente.id_agente";
//TODO REVIEW ORACLE AND POSTGRES
return db_get_sql ("SELECT COUNT(min_estado) FROM (SELECT MIN(tagente_estado.estado) as min_estado FROM tagente_estado, tagente, tagente_modulo WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND tagente_modulo.disabled = 0 AND tagente_estado.id_agente = tagente.id_agente AND tagente.id_os = $id_os GROUP BY tagente.id_agente HAVING min_estado = 2) AS S1");
return db_get_sql ("SELECT COUNT(*) FROM ( SELECT DISTINCT tagente.id_agente
FROM tagente, tagente_modulo, tagente_estado
WHERE tagente.id_agente = tagente_modulo.id_agente
AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo
AND tagente.id_os = $id_os
AND tagente.id_agente NOT IN ($agents_critical)
AND tagente.id_agente IN ($agents_warning) ) AS t");
}
@ -60,9 +131,51 @@ function os_agents_warning ($id_os) {
function os_agents_unknown ($id_os) {
//TODO REVIEW ORACLE AND POSTGRES
return db_get_sql ("SELECT COUNT(min_estado) FROM (SELECT MIN(tagente_estado.estado) as min_estado FROM tagente_estado, tagente, tagente_modulo WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND tagente_modulo.disabled = 0 AND tagente_estado.id_agente = tagente.id_agente AND tagente_estado.estado != 0 AND tagente.id_os = $id_os GROUP BY tagente.id_agente HAVING min_estado = 3) AS S1");
// Agent of module group X and critical status
$agents_critical = "SELECT tagente.id_agente
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND estado = 1
AND tagente_estado.utimestamp != 0
AND tagente.id_os = $id_os
group by tagente.id_agente";
// Agent of module group X and warning status
$agents_warning = "SELECT tagente.id_agente
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND estado = 2
AND tagente_estado.utimestamp != 0
AND tagente.id_os = $id_os
group by tagente.id_agente";
// Agent of module group X and unknown status
$agents_unknown = "SELECT tagente.id_agente
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND estado = 3
AND tagente_estado.utimestamp != 0
AND tagente.id_os = $id_os
group by tagente.id_agente";
return db_get_sql ("SELECT COUNT(*) FROM ( SELECT DISTINCT tagente.id_agente
FROM tagente, tagente_modulo, tagente_estado
WHERE tagente.id_agente = tagente_modulo.id_agente
AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo
AND tagente.id_os = $id_os
AND tagente.id_agente NOT IN ($agents_critical)
AND tagente.id_agente NOT IN ($agents_warning)
AND tagente.id_agente IN ($agents_unknown) ) AS t");
}

View File

@ -18,6 +18,123 @@
* @package Include
* @subpackage TAGS
*/
/**
* Get critical agents by using the status code in modules by filtering by id_tag.
*
* @param int $id_tag Id of the tag to search module with critical state
*
* @return mixed Returns count of agents in critical status or false if they aren't.
*/
function tags_agent_critical ($id_tag) {
if (empty($id_tag))
return false;
//TODO REVIEW ORACLE AND POSTGRES
return db_get_sql ("SELECT COUNT( DISTINCT tagente_estado.id_agente)
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0
AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo
AND tagente_modulo.disabled = 0
AND estado = 1
AND tagente_estado.id_agente = tagente.id_agente
AND tagente.id_agente IN (SELECT id_agente
FROM tagente_modulo, ttag_module
WHERE tagente_modulo.id_agente_modulo = ttag_module.id_agente_modulo
AND ttag_module.id_tag = $id_tag)");
}
/**
* Get unknown agents by using the status code in modules by filtering by id_tag.
*
* @param int $id_tag Id of the tag to search module with unknown state
*
* @return mixed Returns count of agents in unknown status or false if they aren't.
*/
function tags_agent_unknown ($id_tag) {
if (empty($id_tag))
return false;
//TODO REVIEW ORACLE AND POSTGRES
return db_get_sql ("SELECT COUNT(min_estado)
FROM (SELECT MIN(tagente_estado.estado) as min_estado
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0
AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo
AND tagente_modulo.disabled = 0
AND tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.estado != 0
AND tagente.id_agente IN (SELECT id_agente
FROM tagente_modulo, ttag_module
WHERE tagente_modulo.id_agente_modulo = ttag_module.id_agente_modulo
AND ttag_module.id_tag = $id_tag)
GROUP BY tagente.id_agente HAVING min_estado = 3
) AS S1");
}
/**
* Get normal agents by using the status code in modules by filtering by id_tag.
*
* @param int $id_tag Id of the tag to search module with normal state
*
* @return mixed Returns count of agents in normal status or false if they aren't.
*/
function tags_agent_ok ($id_tag) {
if (empty($id_tag))
return false;
//TODO REVIEW ORACLE AND POSTGRES
return db_get_sql ("SELECT COUNT(max_estado)
FROM (SELECT MAX(tagente_estado.estado) as max_estado
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0
AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo
AND tagente_modulo.disabled = 0
AND tagente_estado.id_agente = tagente.id_agente
AND tagente.id_agente IN (SELECT id_agente
FROM tagente_modulo, ttag_module
WHERE tagente_modulo.id_agente_modulo = ttag_module.id_agente_modulo
AND ttag_module.id_tag = $id_tag)
GROUP BY tagente.id_agente HAVING max_estado = 0) AS S1");
}
/**
* Get warning agents by using the status code in modules by filtering by id_tag.
*
* @param int $id_tag Id of the tag to search module with warning state
*
* @return mixed Returns count of agents in warning status or false if they aren't.
*/
function tags_agent_warning ($id_tag) {
if (empty($id_tag))
return false;
//TODO REVIEW ORACLE AND POSTGRES
return db_get_sql ("SELECT COUNT(min_estado)
FROM (SELECT MAX(tagente_estado.estado) as min_estado
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0
AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo
AND tagente_modulo.disabled = 0
AND tagente_estado.id_agente = tagente.id_agente
AND tagente.id_agente IN (SELECT id_agente
FROM tagente_modulo, ttag_module
WHERE tagente_modulo.id_agente_modulo = ttag_module.id_agente_modulo
AND ttag_module.id_tag = $id_tag)
GROUP BY tagente.id_agente HAVING min_estado = 2) AS S1");
}
/**
* Find a tag searching by tag's or description name.

View File

@ -79,8 +79,14 @@ echo '<td valign="middle">'.__('Module group').'</td>';
echo '<td valign="middle">';
$rows = db_get_all_rows_sql("SELECT * FROM tmodule_group ORDER BY name");
$rows = io_safe_output($rows);
$rows[0] = __('Not assigned');
html_print_select($rows, 'modulegroup', $modulegroup, '', __('All'), -1);
$rows_select = array();
if (!empty($rows))
foreach ($rows as $module_group)
$rows_select[$module_group['id_mg']] = $module_group['name'];
$rows_select[0] = __('Not assigned');
html_print_select($rows_select, 'modulegroup', $modulegroup, '', __('All'), -1);
echo '</td></tr><tr><td valign="middle">'.__('Module name').'</td>';
echo '<td valign="middle">';

View File

@ -242,7 +242,7 @@ if (is_ajax ())
$countRows = 0;
if (!empty($avariableGroupsIds)) {
$extra_sql = enterprise_hook('policies_get_agents_sql_condition');
$extra_sql = '';
if($extra_sql != '') {
$extra_sql .= ' OR';
}
@ -256,45 +256,125 @@ if (is_ajax ())
//Extract all rows of data for each type
switch ($type) {
case 'group':
$sql = sprintf('SELECT * FROM tagente
WHERE id_grupo = %s AND (%s id_grupo IN (%s))', $id, $extra_sql, $groups_sql);
case 'group':
$sql = agents_get_agents(array (
'order' => 'nombre COLLATE utf8_general_ci ASC',
'id_grupo' => $id,
'disabled' => 0,
'status' => $statusSel,
'search' => $search_sql),
array ('*'),
'AR',
false,
true);
// Skip agents without modules
$sql .= ' AND id_agente IN
(SELECT tagente.id_agente
FROM tagente, tagente_modulo
WHERE tagente.id_agente = tagente_modulo.id_agente
AND tagente.id_grupo = ' . $id . ' AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
group by tagente.id_agente
having COUNT(*) > 0)';
break;
case 'os':
$sql = sprintf('SELECT * FROM tagente
WHERE id_os = %s AND (%s id_grupo IN (%s))', $id, $extra_sql, $groups_sql);
$sql = agents_get_agents(array (
'order' => 'nombre COLLATE utf8_general_ci ASC',
'id_os' => $id,
'disabled' => 0,
'status' => $statusSel,
'search' => $search_sql),
array ('*'),
'AR',
false,
true);
// Skip agents without modules
$sql .= ' AND id_agente IN
(SELECT tagente.id_agente
FROM tagente, tagente_modulo
WHERE tagente.id_agente = tagente_modulo.id_agente
AND tagente.id_os = ' . $id . ' AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
group by tagente.id_agente
having COUNT(*) > 0)';
break;
case 'module_group':
$extra_sql = substr($extra_sql,1);
$extra_sql = "tagente_modulo.".$extra_sql;
$sql = sprintf('SELECT * FROM tagente
WHERE id_agente IN (SELECT tagente_modulo.id_agente FROM tagente_modulo, tagente_estado
WHERE tagente_modulo.id_agente = tagente_estado.id_agente AND tagente_estado.utimestamp !=0 AND
tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo
AND id_module_group = %s
AND ((%s id_grupo IN (%s)))', $id, $extra_sql, $groups_sql);
$sql = agents_get_agents(array (
'order' => 'nombre COLLATE utf8_general_ci ASC',
'disabled' => 0,
'status' => $statusSel,
'search' => $search_sql),
array ('*'),
'AR',
false,
true);
// Skip agents without modules
$sql .= ' AND id_agente IN
(SELECT tagente.id_agente
FROM tagente, tagente_modulo
WHERE tagente.id_agente = tagente_modulo.id_agente
AND id_module_group = ' . $id . ' AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
group by tagente.id_agente
having COUNT(*) > 0)';
break;
case 'policies':
$sql = "";
$sql = agents_get_agents(array (
'order' => 'nombre COLLATE utf8_general_ci ASC',
'disabled' => 0,
'status' => $statusSel,
'search' => $search_sql),
array ('*'),
'AR',
false,
true);
if ($id == 0) {
$queryWhere = 'id_agente NOT IN (SELECT id_agent FROM tpolicy_agents)';
$sql = sprintf('SELECT DISTINCT tagente.id_agente as id_agente, tagente.nombre as nombre FROM tagente, tagente_modulo, tagente_estado WHERE
tagente_estado.id_agente = tagente.id_agente AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND
tagente_modulo.id_policy_module = 0 AND tagente_estado.utimestamp != 0 AND
tagente.id_agente IN (SELECT id_agente FROM tagente WHERE %s AND ( %s id_grupo IN (%s)))',
$queryWhere, $extra_sql, $groups_sql);
// Skip agents without modules
$sql .= ' AND tagente.id_agente IN
(SELECT tagente.id_agente
FROM tagente, tagente_modulo, tagente_estado
WHERE tagente.id_agente = tagente_modulo.id_agente
AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND tagente_estado.utimestamp != 0
AND tagente_modulo.id_policy_module = 0
AND tagente.id_agente NOT IN (SELECT id_agent FROM tpolicy_agents)
group by tagente.id_agente
having COUNT(*) > 0)';
} else {
$queryWhere = sprintf('id_agente IN (SELECT id_agent FROM tpolicy_agents WHERE id_policy = %s)',$id);
$sql = sprintf('SELECT DISTINCT tagente.id_agente as id_agente, tagente.nombre as nombre FROM tagente, tagente_modulo, tagente_estado, tpolicy_modules WHERE
tagente_estado.id_agente = tagente.id_agente AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND tpolicy_modules.id = tagente_modulo.id_policy_module AND
tpolicy_modules.id_policy = %s AND tagente_modulo.id_policy_module != 0 AND tagente_estado.utimestamp != 0 AND
tagente.id_agente IN (SELECT id_agente FROM tagente WHERE %s AND ( %s id_grupo IN (%s)))',
$id, $queryWhere, $extra_sql, $groups_sql);
// Skip agents without modules
$sql .= ' AND tagente.id_agente IN
(SELECT tagente.id_agente
FROM tagente, tagente_modulo, tagente_estado
WHERE tagente.id_agente = tagente_modulo.id_agente
AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
AND tagente_estado.utimestamp != 0
AND tagente_modulo.id_policy_module != 0
AND tagente.id_agente IN (SELECT id_agent FROM tpolicy_agents)
group by tagente.id_agente
having COUNT(*) > 0)';
}
break;
@ -307,14 +387,24 @@ if (is_ajax ())
$name = io_safe_input($name);
$sql = sprintf('SELECT *
FROM tagente
WHERE id_agente IN (
$sql = agents_get_agents(array (
'order' => 'nombre COLLATE utf8_general_ci ASC',
'disabled' => 0,
'status' => $statusSel,
'search' => $search_sql),
array ('*'),
'AR',
false,
true);
$sql .= sprintf('AND id_agente IN (
SELECT id_agente
FROM tagente_modulo
WHERE nombre = \'%s\'
)
AND (%s id_grupo IN (%s))', $name, $extra_sql, $groups_sql);
', $name);
break;
}
@ -446,21 +536,7 @@ if (is_ajax ())
break;
}
if ($statusSel == ALL) {
}
else if ($statusSel == NORMAL) {
if ($agent_info['status'] != 'agent_ok.png')
continue;
} else if ($statusSel == WARNING) {
if ($agent_info['status'] != 'agent_warning.png')
continue;
} else if ($statusSel == CRITICAL) {
if ($agent_info['status'] != 'agent_critical.png')
continue;
} else if ($statusSel == UNKNOWN) {
if ($agent_info['status'] != 'agent_down.png')
continue;
}
$less = $lessBranchs;
if ($count != $countRows)
@ -750,18 +826,105 @@ function printTree_($type) {
if($avariableGroupsIds == ''){
$avariableGroupsIds == -1;
}
// Filter groups by agent status
switch ($select_status) {
case NORMAL:
foreach ($avariableGroups as $group_name) {
$id_group = db_get_value_sql('SELECT id_grupo FROM tgrupo where nombre ="' . $group_name . '"');
$num_ok = groups_agent_ok($id_group);
if ($num_ok <= 0)
unset($avariableGroups[$id_group]);
}
break;
case WARNING:
foreach ($avariableGroups as $group_name) {
$id_group = db_get_value_sql('SELECT id_grupo FROM tgrupo where nombre ="' . $group_name . '"');
$num_warning = groups_agent_warning($id_group);
if ($num_warning <= 0)
unset($avariableGroups[$id_group]);
}
break;
case CRITICAL:
foreach ($avariableGroups as $group_name) {
$id_group = db_get_value_sql('SELECT id_grupo FROM tgrupo where nombre ="' . $group_name . '"');
$num_critical = groups_agent_critical($id_group);
if ($num_critical <= 0)
unset($avariableGroups[$id_group]);
}
break;
case UNKNOWN:
foreach ($avariableGroups as $group_name) {
$id_group = db_get_value_sql('SELECT id_grupo FROM tgrupo where nombre ="' . $group_name . '"');
$num_unknown = groups_agent_unknown($id_group);
if ($num_unknown <= 0)
unset($avariableGroups[$id_group]);
}
break;
}
// If there are not groups display error and return
if (empty($avariableGroups)) {
ui_print_error_message("There aren't agents in this agrupation");
return;
}
if ($search_free != '') {
$sql_search = " AND id_grupo IN (SELECT id_grupo FROM tagente
WHERE nombre COLLATE utf8_general_ci LIKE '%$search_free%')";
} else {
$sql_search ='';
}
switch ($type) {
default:
case 'os':
if ($search_free != '') {
$sql = "SELECT * FROM tconfig_os
WHERE id_os IN (SELECT id_os FROM tagente
WHERE nombre COLLATE utf8_general_ci LIKE '%$search_free%')";
$list = db_get_all_rows_sql($sql);
} else {
$list = db_get_all_rows_sql("SELECT DISTINCT (tagente.id_os), tconfig_os.name FROM tagente, tconfig_os WHERE tagente.id_os = tconfig_os.id_os");
}
$sql = agents_get_agents(array (
'order' => 'nombre COLLATE utf8_general_ci ASC',
'disabled' => 0,
'status' => $select_status,
'search' => $sql_search),
array ('tagente.id_os'),
'AR',
false,
true);
echo $sql;
echo "<br>";
// Skip agents without modules
$sql .= ' AND id_agente IN
(SELECT tagente.id_agente
FROM tagente, tagente_modulo
WHERE tagente.id_agente = tagente_modulo.id_agente
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
group by tagente.id_agente
having COUNT(*) > 0)';
$sql_os = sprintf("SELECT * FROM tconfig_os WHERE id_os IN (%s)", $sql);
$list = db_get_all_rows_sql($sql_os);
break;
case 'group':
$stringAvariableGroups = (
implode(', ',
@ -770,12 +933,7 @@ function printTree_($type) {
)
)
);
if ($search_free != '') {
$sql_search = " AND id_grupo IN (SELECT id_grupo FROM tagente
WHERE nombre COLLATE utf8_general_ci LIKE '%$search_free%')";
} else {
$sql_search ='';
}
switch ($config["dbtype"]) {
case "mysql":
case "postgresql":
@ -786,49 +944,84 @@ function printTree_($type) {
break;
}
break;
case 'module_group':
if ($search_free != '') {
$sql = "SELECT * FROM tmodule_group
WHERE id_mg IN (SELECT id_module_group FROM tagente_modulo
WHERE id_agente IN (SELECT id_agente FROM tagente
WHERE nombre COLLATE utf8_general_ci LIKE '%$search_free%'))";
$list = db_get_all_rows_sql($sql);
} else {
$list = db_get_all_rows_sql("SELECT distinct id_mg, name FROM tmodule_group, tagente_modulo WHERE tmodule_group.id_mg = tagente_modulo.id_module_group");
if ($list !== false)
array_push($list, array('id_mg' => 0, 'name' => 'Not assigned'));
}
$sql = agents_get_agents(array (
'order' => 'nombre COLLATE utf8_general_ci ASC',
'disabled' => 0,
'status' => $select_status,
'search' => $sql_search),
array ('id_agente'),
'AR',
false,
true);
// Skip agents without modules
$sql .= ' AND id_agente IN
(SELECT tagente.id_agente
FROM tagente, tagente_modulo
WHERE tagente.id_agente = tagente_modulo.id_agente
AND tagente.disabled = 0
AND tagente_modulo.disabled = 0
group by tagente.id_agente
having COUNT(*) > 0)';
$sql_module_groups = sprintf("SELECT * FROM tmodule_group
WHERE id_mg IN (SELECT id_module_group FROM tagente_modulo WHERE id_agente IN (%s))", $sql);
$list = db_get_all_rows_sql($sql_module_groups);
if ($list !== false)
array_push($list, array('id_mg' => 0, 'name' => 'Not assigned'));
break;
case 'policies':
$groups_id = array_keys($avariableGroups);
$groups = implode(',',$groups_id);
if ($search_free != '') {
$sql = "SELECT * FROM tpolicies
WHERE id_group IN ($groups)
AND id IN (SELECT id_policy FROM tpolicy_agents
WHERE id_agent IN (SELECT id_agente FROM tagente
WHERE nombre COLLATE utf8_general_ci LIKE '%$search_free%'))";
$sql = "SELECT DISTINCT tpolicies.id, tpolicies.name FROM tpolicies, tpolicy_modules, tagente_estado, tagente, tagente_modulo WHERE
tagente.id_agente = tagente_estado.id_agente AND tagente_modulo.id_agente = tagente_estado.id_agente AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND
tagente_estado.utimestamp != 0 AND tagente_modulo.id_policy_module != 0 AND tpolicy_modules.id = tagente_modulo.id_policy_module AND tpolicies.id = tpolicy_modules.id_policy AND
tpolicies.id_group IN ($groups) AND tagente.nombre LIKE '%$search_free%'";
$list = db_get_all_rows_sql($sql);
if ($list !== false)
array_push($list, array('id' => 0, 'name' => 'No policy'));
} else {
$list = db_get_all_rows_sql("SELECT DISTINCT tpolicies.id, tpolicies.name FROM tpolicies, tpolicy_modules, tagente_estado, tagente, tagente_modulo WHERE
tagente.id_agente = tagente_estado.id_agente AND tagente_modulo.id_agente = tagente_estado.id_agente AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND
tagente_estado.utimestamp != 0 AND tagente_modulo.id_policy_module != 0 AND tpolicy_modules.id = tagente_modulo.id_policy_module AND tpolicies.id = tpolicy_modules.id_policy AND
tpolicies.id_group IN ($groups)");
if ($list !== false)
array_push($list, array('id' => 0, 'name' => 'No policy'));
}
break;
case 'module':
$avariableGroupsIds = implode(',',array_keys($avariableGroups));
if($avariableGroupsIds == ''){
$avariableGroupsIds == -1;
}
if ($search_free != '') {
$sql_search = " AND t1.id_agente IN (SELECT id_agente FROM tagente
WHERE nombre COLLATE utf8_general_ci LIKE '%$search_free%')";
} else {
$sql_search ='';
}
} else {
$sql_search = '';
}
if ($select_status != -1)
$sql_search .= " AND estado = " . $select_status . " ";
switch ($config["dbtype"]) {
case "mysql":
case "postgresql":
@ -845,7 +1038,9 @@ function printTree_($type) {
AND t3.utimestamp !=0 GROUP BY dbms_lob.substr(t1.nombre,4000,1) ORDER BY dbms_lob.substr(t1.nombre,4000,1) ASC');
break;
}
break;
}
if ($list === false) {
@ -1004,8 +1199,8 @@ ui_print_page_header (__('Tree view')." - ".__('Sort the agents by ') .$order, "
echo "<br>";
echo '<form id="tree_search" method="post" action="index.php??extension_in_menu=estado&sec=estado&sec2=operation/tree&refr=0&sort_by='.$activeTab.'">';
echo "<b>" . __('Monitor status') . "</b>";
echo '<form id="tree_search" method="post" action="index.php?extension_in_menu=estado&sec=estado&sec2=operation/tree&refr=0&sort_by='.$activeTab.'">';
echo "<b>" . __('Agent status') . "</b>";
$search_free = get_parameter('search_free', '');
$select_status = get_parameter('status', -1);
@ -1020,7 +1215,7 @@ $fields[UNKNOWN] = __('Unknown');
html_print_select ($fields, "status", $select_status);
echo "&nbsp;&nbsp;&nbsp;";
echo "<b>" . __('Search agent') . ui_print_help_tip (__('Case sensitive'))."</b>";
echo "<b>" . __('Search agent') . "</b>";
echo "&nbsp;";
html_print_input_text ("search_free", $search_free, '', 40,30, false);
echo "&nbsp;&nbsp;&nbsp;";