2012-11-26 Ramon Novoa <rnovoa@artica.es>
* include/functions_groups.php, include/functions_agents.php, include/functions_treeview.php, include/functions_os.php, include/functions_tags.php, operation/tree.php: Added metaconsole support to the tree view. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@7184 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
This commit is contained in:
parent
9a355f5090
commit
8a6b23e04a
|
@ -1,3 +1,12 @@
|
|||
2012-11-26 Ramon Novoa <rnovoa@artica.es>
|
||||
|
||||
* include/functions_groups.php,
|
||||
include/functions_agents.php,
|
||||
include/functions_treeview.php,
|
||||
include/functions_os.php,
|
||||
include/functions_tags.php,
|
||||
operation/tree.php: Added metaconsole support to the tree view.
|
||||
|
||||
2012-11-26 Sergio Martin <sergio.martin@artica.es>
|
||||
|
||||
* include/functions_ui.php
|
||||
|
|
|
@ -355,71 +355,31 @@ function agents_get_agents ($filter = false, $fields = false, $access = 'AR', $o
|
|||
}
|
||||
|
||||
$status_sql = ' 1 = 1';
|
||||
if (isset($filter['status'])) {
|
||||
$normal_modules = 'SELECT tagente.id_agente
|
||||
FROM tagente_estado, tagente, tagente_modulo
|
||||
WHERE tagente.disabled = 0 AND tagente_estado.id_agente = tagente.id_agente
|
||||
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
|
||||
AND tagente_modulo.disabled = 0 AND estado = 0
|
||||
AND (utimestamp != 0)';
|
||||
|
||||
$warning_modules = 'SELECT tagente.id_agente
|
||||
FROM tagente_estado, tagente, tagente_modulo
|
||||
WHERE tagente.disabled = 0 AND tagente_estado.id_agente = tagente.id_agente
|
||||
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
|
||||
AND tagente_modulo.disabled = 0 AND estado = 2 AND tagente_estado.utimestamp != 0';
|
||||
|
||||
|
||||
$critical_modules = 'SELECT tagente.id_agente
|
||||
FROM tagente_estado, tagente, tagente_modulo
|
||||
WHERE tagente.disabled = 0 AND tagente_estado.id_agente = tagente.id_agente
|
||||
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
|
||||
AND tagente_modulo.disabled = 0 AND estado = 1 AND tagente_estado.utimestamp != 0';
|
||||
|
||||
$unknown_modules = 'SELECT tagente.id_agente
|
||||
FROM tagente_estado, tagente, tagente_modulo
|
||||
WHERE tagente.disabled = 0 AND tagente.id_agente = tagente_estado.id_agente
|
||||
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
|
||||
AND tagente_modulo.disabled = 0 AND estado = 3 AND utimestamp != 0';
|
||||
|
||||
$notinit_modules = 'SELECT tagente_estado.id_agente
|
||||
FROM tagente_estado, tagente, tagente_modulo
|
||||
WHERE tagente.disabled = 0 AND tagente.id_agente = tagente_estado.id_agente
|
||||
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
|
||||
AND tagente_modulo.disabled = 0
|
||||
AND tagente_modulo.id_tipo_modulo NOT IN (21,22,23)
|
||||
AND utimestamp = 0';
|
||||
|
||||
if (isset($filter['status'])) {
|
||||
switch ($filter['status']) {
|
||||
// Normal
|
||||
case 0:
|
||||
$status_sql = "id_agente IN ($normal_modules) && id_agente NOT IN ($warning_modules) &&
|
||||
id_agente NOT IN ($critical_modules) && id_agente NOT IN ($unknown_modules)"; //&& id_agente NOT IN ($notinit_modules)";
|
||||
$status_sql = "normal_count=total_count";
|
||||
break;
|
||||
// Warning
|
||||
case 2:
|
||||
$status_sql = "id_agente IN ($warning_modules) &&
|
||||
id_agente NOT IN ($critical_modules)"; //&& id_agente NOT IN ($notinit_modules)";
|
||||
$status_sql = "critical_count=0 AND warning_count>0";
|
||||
break;
|
||||
// Critical
|
||||
case 1:
|
||||
$status_sql = "id_agente IN ($critical_modules)";
|
||||
$status_sql = "critical_count>0";
|
||||
break;
|
||||
// Unknown
|
||||
case 3:
|
||||
$status_sql = "id_agente IN ($unknown_modules) &&
|
||||
id_agente NOT IN ($critical_modules) && id_agente NOT IN ($warning_modules)";
|
||||
$status_sql = "critical_count=0 AND warning_count=0 AND unknown_count>0";
|
||||
break;
|
||||
// Not normal
|
||||
case 4:
|
||||
//$status_sql = "id_agente NOT IN ($normal_modules)";
|
||||
$status_sql = "id_agente NOT IN ($normal_modules) || id_agente IN ($warning_modules) ||
|
||||
id_agente IN ($critical_modules) || id_agente IN ($unknown_modules)";
|
||||
$status_sql = "normal_count<>total_count";
|
||||
break;
|
||||
// Not init
|
||||
case 5:
|
||||
$status_sql = "id_agente NOT IN ($warning_modules) &&
|
||||
id_agente NOT IN ($critical_modules) && id_agente NOT IN ($unknown_modules) && id_agente NOT IN ($normal_modules)";
|
||||
$status_sql = "notinit_count=total_count";
|
||||
break;
|
||||
}
|
||||
unset($filter['status']);
|
||||
|
@ -2032,4 +1992,4 @@ function agents_tree_view_status_img ($critical, $warning, $unknown) {
|
|||
return ui_print_status_image (STATUS_AGENT_OK, __('All Monitors OK'), true);
|
||||
}
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -557,6 +557,17 @@ function groups_get_name ($id_group, $returnAllGroup = false) {
|
|||
return "All";
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the id of a group given its name.
|
||||
*
|
||||
* @param string Name of the group.
|
||||
*
|
||||
* @return int The id of the given group.
|
||||
*/
|
||||
function groups_get_id ($group_name, $returnAllGroup = false) {
|
||||
return db_get_value ('id_grupo', 'tgrupo', 'nombre', $group_name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all the users belonging to a group.
|
||||
*
|
||||
|
|
|
@ -44,4 +44,9 @@ function os_agents_unknown ($id_os) {
|
|||
return db_get_sql ("SELECT COUNT(*) FROM tagente WHERE critical_count=0 AND warning_count=0 AND unknown_count>0 AND id_os=$id_os");
|
||||
}
|
||||
|
||||
// Get the name of a group given its id.
|
||||
function os_get_name ($id_os) {
|
||||
return db_get_value ('name', 'tconfig_os', 'id_os', (int) $id_os);
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
|
@ -27,22 +27,12 @@
|
|||
* @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, ttag_module
|
||||
WHERE tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo
|
||||
AND tagente_modulo.id_agente_modulo = ttag_module.id_agente_modulo
|
||||
AND tagente_estado.id_agente = tagente.id_agente
|
||||
AND tagente_modulo.disabled = 0
|
||||
AND estado = 1
|
||||
AND tagente.disabled = 0
|
||||
AND tagente_estado.utimestamp != 0
|
||||
AND ttag_module.id_tag = $id_tag");
|
||||
return db_get_sql ("SELECT COUNT(*) FROM tagente, tagente_modulo, ttag_module
|
||||
WHERE tagente.id_agente = tagente_modulo.id_agente
|
||||
AND tagente_modulo.id_agente_modulo = ttag_module.id_agente_modulo
|
||||
AND ttag_module.id_tag = $id_tag
|
||||
AND critical_count>0");
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -53,54 +43,12 @@ function tags_agent_critical ($id_tag) {
|
|||
* @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;
|
||||
|
||||
// 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
|
||||
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
|
||||
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
|
||||
group by tagente.id_agente";
|
||||
|
||||
return db_get_sql ("SELECT COUNT(*) FROM ( SELECT DISTINCT tagente.id_agente
|
||||
FROM tagente, tagente_modulo, tagente_estado, ttag_module
|
||||
return db_get_sql ("SELECT COUNT(*) FROM tagente, tagente_modulo, ttag_module
|
||||
WHERE tagente.id_agente = tagente_modulo.id_agente
|
||||
AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo
|
||||
AND tagente_modulo.id_agente_modulo = ttag_module.id_agente_modulo
|
||||
|
||||
AND ttag_module.id_tag = $id_tag
|
||||
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");
|
||||
|
||||
AND ttag_module.id_tag = $id_tag
|
||||
AND critical_count=0 AND warning_count=0 AND unknown_count>0");
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -125,29 +73,6 @@ function tags_total_agents ($id_tag) {
|
|||
return db_get_sql ($total_agents);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get total agents filtering by id_tag that are disabled.
|
||||
*
|
||||
* @param int $id_tag Id of the tag to search total agents
|
||||
*
|
||||
* @return mixed Returns count of agents with this tag or false if they aren't.
|
||||
*/
|
||||
function tags_agent_disabled ($id_tag) {
|
||||
|
||||
// Avoid mysql error
|
||||
if (empty($id_tag))
|
||||
return;
|
||||
|
||||
$total_agents_disabled = "SELECT COUNT(DISTINCT tagente.id_agente)
|
||||
FROM tagente, tagente_modulo, ttag_module
|
||||
WHERE tagente.id_agente = tagente_modulo.id_agente
|
||||
AND tagente_modulo.id_agente_modulo = ttag_module.id_agente_modulo
|
||||
AND tagente.disabled = 1
|
||||
AND ttag_module.id_tag = " . $id_tag;
|
||||
|
||||
return db_get_sql ($total_agents_disabled);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get normal agents by using the status code in modules by filtering by id_tag.
|
||||
*
|
||||
|
@ -156,66 +81,12 @@ function tags_agent_disabled ($id_tag) {
|
|||
* @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;
|
||||
|
||||
// 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
|
||||
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
|
||||
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
|
||||
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
|
||||
group by tagente.id_agente";
|
||||
|
||||
return db_get_sql ("SELECT COUNT(*) FROM ( SELECT DISTINCT tagente.id_agente
|
||||
FROM tagente, tagente_modulo, tagente_estado, ttag_module
|
||||
return db_get_sql ("SELECT COUNT(*) FROM tagente, tagente_modulo, ttag_module
|
||||
WHERE tagente.id_agente = tagente_modulo.id_agente
|
||||
AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo
|
||||
AND tagente_modulo.id_agente_modulo = ttag_module.id_agente_modulo
|
||||
|
||||
AND ttag_module.id_tag = $id_tag
|
||||
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");
|
||||
|
||||
AND normal_count=total_count");
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -227,40 +98,11 @@ function tags_agent_ok ($id_tag) {
|
|||
*/
|
||||
function tags_agent_warning ($id_tag) {
|
||||
|
||||
if (empty($id_tag))
|
||||
return false;
|
||||
|
||||
// Agent 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
|
||||
group by tagente.id_agente";
|
||||
|
||||
// Agent 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
|
||||
group by tagente.id_agente";
|
||||
|
||||
return db_get_sql ("SELECT COUNT(*) FROM ( SELECT DISTINCT tagente.id_agente
|
||||
FROM tagente, tagente_modulo, tagente_estado, ttag_module
|
||||
return db_get_sql ("SELECT COUNT(*) FROM tagente, tagente_modulo, ttag_module
|
||||
WHERE tagente.id_agente = tagente_modulo.id_agente
|
||||
AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo
|
||||
AND tagente_modulo.id_agente_modulo = ttag_module.id_agente_modulo
|
||||
|
||||
AND ttag_module.id_tag = $id_tag
|
||||
AND tagente.id_agente NOT IN ($agents_critical)
|
||||
AND tagente.id_agente IN ($agents_warning)) AS t");
|
||||
AND critical_count=0 AND warning_count>0");
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -373,6 +215,17 @@ function tags_get_name($id){
|
|||
return db_get_value_filter ('name', 'ttag', array('id_tag' => $id));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get tag id given the tag name.
|
||||
*
|
||||
* @param string Tag name.
|
||||
*
|
||||
* @return int Tag id.
|
||||
*/
|
||||
function tags_get_id($name){
|
||||
return db_get_value_filter ('id_tag', 'ttag', array('name' => $name));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get tag description.
|
||||
*
|
||||
|
@ -711,4 +564,4 @@ function tags_get_all_tags () {
|
|||
|
||||
return $return;
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -191,17 +191,116 @@ function treeview_printTable($id_agente) {
|
|||
function treeview_printTree($type) {
|
||||
global $config;
|
||||
|
||||
$search_free = get_parameter('search_free', '');
|
||||
$select_status = get_parameter('status', -1);
|
||||
|
||||
echo '<table class="databox" style="width:98%">';
|
||||
echo '<tr><td style="width:60%" valign="top">';
|
||||
|
||||
if (! defined ('METACONSOLE')) {
|
||||
$list = treeview_getData ($type);
|
||||
}
|
||||
else {
|
||||
$servers = db_get_all_rows_sql ("SELECT * FROM tmetaconsole_setup WHERE disabled = 0");
|
||||
if ($servers === false) {
|
||||
$servers = array();
|
||||
}
|
||||
|
||||
$list = array ();
|
||||
foreach ($servers as $server) {
|
||||
if (metaconsole_connect($server) != NOERR) {
|
||||
continue;
|
||||
}
|
||||
$server_list = treeview_getData ($type, $server);
|
||||
foreach ($server_list as $server_item) {
|
||||
if (! isset ($list[$server_item['_name_']])) {
|
||||
$list[$server_item['_name_']] = $server_item;
|
||||
}
|
||||
// Merge!
|
||||
else {
|
||||
$list[$server_item['_name_']]['_num_ok_'] += $server_item['_num_ok_'];
|
||||
$list[$server_item['_name_']]['_num_critical_'] += $server_item['_num_critical_'];
|
||||
$list[$server_item['_name_']]['_num_warning_'] += $server_item['_num_warning_'];
|
||||
$list[$server_item['_name_']]['_num_unknown_'] += $server_item['_num_unknown_'];
|
||||
}
|
||||
}
|
||||
echo "<br/>";
|
||||
}
|
||||
|
||||
metaconsole_restore_db();
|
||||
}
|
||||
|
||||
if ($list === false) {
|
||||
ui_print_error_message("There aren't agents in this agrupation");
|
||||
echo '</td></tr>';
|
||||
echo '</table>';
|
||||
}
|
||||
else {
|
||||
echo "<ul style='margin: 0; margin-top: 20px; padding: 0;'>\n";
|
||||
|
||||
$first = true;
|
||||
foreach ($list as $item) {
|
||||
$lessBranchs = 0;
|
||||
if ($first) {
|
||||
if ($item != end($list)) {
|
||||
$img = html_print_image ("operation/tree/first_closed.png", true, array ("style" => 'vertical-align: middle;', "id" => "tree_image_" . $type . "_" . $item['_id_'], "pos_tree" => "0"));
|
||||
$first = false;
|
||||
}
|
||||
else {
|
||||
$lessBranchs = 1;
|
||||
$img = html_print_image ("operation/tree/one_closed.png", true, array ("style" => 'vertical-align: middle;', "id" => "tree_image_" . $type . "_" . $item['_id_'], "pos_tree" => "1"));
|
||||
}
|
||||
}
|
||||
else {
|
||||
if ($item != end($list))
|
||||
$img = html_print_image ("operation/tree/closed.png", true, array ("style" => 'vertical-align: middle;', "id" => "tree_image_" . $type . "_" . $item['_id_'], "pos_tree" => "2"));
|
||||
else
|
||||
{
|
||||
$lessBranchs = 1;
|
||||
$img = html_print_image ("operation/tree/last_closed.png", true, array ("style" => 'vertical-align: middle;', "id" => "tree_image_" . $type . "_" . $item['_id_'], "pos_tree" => "3"));
|
||||
}
|
||||
}
|
||||
|
||||
echo "<li style='margin: 0px 0px 0px 0px;'>";
|
||||
echo "<a onfocus='JavaScript: this.blur()' href='javascript: loadSubTree(\"" . $type . "\",\"" . $item['_id_'] . "\", " . $lessBranchs . ", \"\")'>";
|
||||
|
||||
echo $img . $item['_iconImg_'] ." " . __($item['_name_']) . ' ('.
|
||||
'<span class="green">'.'<b>'.$item['_num_ok_'].'</b>'.'</span>'.
|
||||
' : <span class="red">'.$item['_num_critical_'].'</span>' .
|
||||
' : <span class="yellow">'.$item['_num_warning_'].'</span>'.
|
||||
' : <span class="grey">'.$item['_num_unknown_'].'</span>'.') '. "</a>";
|
||||
|
||||
echo "<div hiddenDiv='1' loadDiv='0' style='margin: 0px; padding: 0px;' class='tree_view' id='tree_div_" . $type . "_" . $item['_id_'] . "'></div>";
|
||||
echo "</li>\n";
|
||||
}
|
||||
echo "</ul>\n";
|
||||
echo '</td>';
|
||||
echo '<td style="width:38%" valign="top">';
|
||||
echo '<div id="cont"> </div>';
|
||||
echo '</td></tr>';
|
||||
echo '</table>';
|
||||
}
|
||||
}
|
||||
|
||||
// Get data for the tree view
|
||||
function treeview_getData ($type, $server=false) {
|
||||
global $config;
|
||||
|
||||
if ($server !== false) {
|
||||
if (metaconsole_connect ($server) != NOERR) {
|
||||
return array ();
|
||||
}
|
||||
}
|
||||
|
||||
$search_free = get_parameter('search_free', '');
|
||||
$select_status = get_parameter('status', -1);
|
||||
|
||||
//Get all groups
|
||||
$avariableGroups = users_get_groups (); //db_get_all_rows_in_table('tgrupo', 'nombre');
|
||||
|
||||
//Get all groups with agents
|
||||
$full_groups = db_get_all_rows_sql("SELECT DISTINCT id_grupo FROM tagente WHERE total_count > 0");
|
||||
//$full_groups = db_get_all_rows_sql("SELECT DISTINCT id_grupo FROM tagente WHERE total_count > 0");
|
||||
$full_groups = db_get_all_rows_sql("SELECT DISTINCT id_grupo FROM tagente");
|
||||
if ($full_groups === false) {
|
||||
return array ();
|
||||
}
|
||||
|
||||
$fgroups = array();
|
||||
|
||||
|
@ -268,10 +367,7 @@ function treeview_printTree($type) {
|
|||
|
||||
// If there are not groups display error and return
|
||||
if (empty($avariableGroups)) {
|
||||
ui_print_error_message("There aren't agents in this agrupation");
|
||||
echo '</td></tr>';
|
||||
echo '</table>';
|
||||
return;
|
||||
return array ();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -285,7 +381,6 @@ function treeview_printTree($type) {
|
|||
|
||||
|
||||
switch ($type) {
|
||||
default:
|
||||
case 'os':
|
||||
//Skip agent with all modules in not init status
|
||||
$sql_search .= " AND total_count<>notinit_count";
|
||||
|
@ -506,6 +601,7 @@ function treeview_printTree($type) {
|
|||
array_push($list, array('id' => 0, 'name' => 'No policy'));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
case 'module':
|
||||
$avariableGroupsIds = implode(',',array_keys($avariableGroups));
|
||||
if($avariableGroupsIds == ''){
|
||||
|
@ -554,105 +650,325 @@ function treeview_printTree($type) {
|
|||
}
|
||||
|
||||
break;
|
||||
case 'tag':
|
||||
$list = db_get_all_rows_sql('SELECT DISTINCT ttag.name
|
||||
FROM ttag, ttag_module, tagente_modulo
|
||||
WHERE ttag.id_tag = ttag_module.id_tag AND
|
||||
ttag_module.id_agente_modulo = tagente_modulo.id_agente_modulo');
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
foreach ($list as $key => $item) {
|
||||
switch ($type) {
|
||||
case 'os':
|
||||
$id = $item['id_os'];
|
||||
$list[$key]['_id_'] = $id;
|
||||
$list[$key]['_name_'] = $item['name'];
|
||||
$list[$key]['_iconImg_'] = html_print_image(str_replace('.png' ,'_small.png', ui_print_os_icon ($item['id_os'], false, true, false)) . " ", true);
|
||||
$list[$key]['_num_ok_'] = os_agents_ok($id);
|
||||
$list[$key]['_num_critical_'] = os_agents_critical($id);
|
||||
$list[$key]['_num_warning_'] = os_agents_warning($id);
|
||||
$list[$key]['_num_unknown_'] = os_agents_unknown($id);
|
||||
break;
|
||||
case 'group':
|
||||
$id = $item['id_grupo'];
|
||||
$list[$key]['_id_'] = $id;
|
||||
$list[$key]['_name_'] = $item['nombre'];
|
||||
$list[$key]['_iconImg_'] = html_print_image ("images/groups_small/" . groups_get_icon($item['id_grupo']).".png", true, array ("style" => 'vertical-align: middle; width: 16px; height: 16px;'));
|
||||
$list[$key]['_num_ok_'] = groups_agent_ok($id);
|
||||
$list[$key]['_num_critical_'] = groups_agent_critical($id);
|
||||
$list[$key]['_num_warning_'] = groups_agent_warning($id);
|
||||
$list[$key]['_num_unknown_'] = groups_agent_unknown ($id);
|
||||
break;
|
||||
case 'module_group':
|
||||
$id = $item['id_mg'];
|
||||
$list[$key]['_id_'] = $id;
|
||||
$list[$key]['_name_'] = $item['name'];
|
||||
$list[$key]['_iconImg_'] = '';
|
||||
$list[$key]['_num_ok_'] = modules_group_agent_ok($id);
|
||||
$list[$key]['_num_critical_'] = modules_group_agent_critical ($id);
|
||||
$list[$key]['_num_warning_'] = modules_group_agent_warning($id);
|
||||
$list[$key]['_num_unknown_'] = modules_group_agent_unknown($id);
|
||||
break;
|
||||
case 'policies':
|
||||
$id = $item['id'];
|
||||
$list[$key]['_id_'] = $id;
|
||||
$list[$key]['_name_'] = $item['name'];
|
||||
$list[$key]['_iconImg_'] = '';
|
||||
$list[$key]['_num_ok_'] = policies_agents_ok($id);
|
||||
$list[$key]['_num_critical_'] = policies_agents_critical($id);
|
||||
$list[$key]['_num_warning_'] = policies_agents_warning($id);
|
||||
$list[$key]['_num_unknown_'] = policies_agents_unknown($id);
|
||||
break;
|
||||
default:
|
||||
case 'module':
|
||||
$id = str_replace(array(' ','#','/'), array('_articapandora_'.ord(' ').'_pandoraartica_', '_articapandora_'.ord('#').'_pandoraartica_', '_articapandora_'.ord('/').'_pandoraartica_'),io_safe_output($item['nombre']));
|
||||
$module_name = $item['nombre'];
|
||||
$list[$key]['_id_'] = $id;
|
||||
$list[$key]['_name_'] = io_safe_output($module_name);
|
||||
$list[$key]['_iconImg_'] = '';
|
||||
$list[$key]['_num_ok_'] = modules_agents_ok($module_name);
|
||||
$list[$key]['_num_critical_'] = modules_agents_critical($module_name);
|
||||
$list[$key]['_num_warning_'] = modules_agents_warning($module_name);
|
||||
$list[$key]['_num_unknown_'] = modules_agents_unknown($module_name);
|
||||
break;
|
||||
case 'tag':
|
||||
$id = db_get_value('id_tag', 'ttag', 'name', $item['name']);
|
||||
$list[$key]['_id_'] = $id;
|
||||
$list[$key]['_name_'] = $item['name'];
|
||||
$list[$key]['_iconImg_'] = html_print_image ("images/tag_red.png", true, array ("style" => 'vertical-align: middle; width: 16px; height: 16px;'));
|
||||
$list[$key]['_num_ok_'] = tags_agent_ok($id);
|
||||
$list[$key]['_num_critical_'] = tags_agent_critical($id);
|
||||
$list[$key]['_num_warning_'] = tags_agent_warning($id);
|
||||
$list[$key]['_num_unknown_'] = tags_agent_unknown($id);
|
||||
break;
|
||||
}
|
||||
|
||||
if (defined ('METACONSOLE')) {
|
||||
$list[$key]['_id_'] = $list[$key]['_name_'];
|
||||
}
|
||||
}
|
||||
|
||||
return $list;
|
||||
}
|
||||
|
||||
// Get SQL for the first tree branch
|
||||
function treeview_getFirstBranchSQL ($type, $id, $avariableGroupsIds, $statusSel, $search_free) {
|
||||
|
||||
if (empty($avariableGroupsIds)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
//TODO CHANGE POLICY ACL FOR TAG ACL
|
||||
$extra_sql = '';
|
||||
if($extra_sql != '') {
|
||||
$extra_sql .= ' OR';
|
||||
}
|
||||
$groups_sql = implode(', ', $avariableGroupsIds);
|
||||
|
||||
if ($list === false) {
|
||||
ui_print_error_message("There aren't agents in this agrupation");
|
||||
echo '</td></tr>';
|
||||
echo '</table>';
|
||||
if ($search_free != '') {
|
||||
$search_sql = " AND nombre COLLATE utf8_general_ci LIKE '%$search_free%'";
|
||||
}
|
||||
else {
|
||||
echo "<ul style='margin: 0; margin-top: 20px; padding: 0;'>\n";
|
||||
|
||||
$first = true;
|
||||
foreach ($list as $item) {
|
||||
|
||||
$iconImg = '';
|
||||
switch ($type) {
|
||||
default:
|
||||
case 'os':
|
||||
$id = $item['id_os'];
|
||||
$name = $item['name'];
|
||||
$iconImg = html_print_image(str_replace('.png' ,'_small.png', ui_print_os_icon ($item['id_os'], false, true, false)) . " ", true);
|
||||
$num_ok = os_agents_ok($id);
|
||||
$num_critical = os_agents_critical($id);
|
||||
$num_warning = os_agents_warning($id);
|
||||
$num_unknown = os_agents_unknown($id);
|
||||
break;
|
||||
case 'group':
|
||||
$id = $item['id_grupo'];
|
||||
$name = $item['nombre'];
|
||||
$iconImg = html_print_image ("images/groups_small/" . groups_get_icon($item['id_grupo']).".png", true, array ("style" => 'vertical-align: middle; width: 16px; height: 16px;'));
|
||||
$num_ok = groups_agent_ok($id);
|
||||
$num_critical = groups_agent_critical($id);
|
||||
$num_warning = groups_agent_warning($id);
|
||||
$num_unknown = groups_agent_unknown ($id);
|
||||
break;
|
||||
case 'module_group':
|
||||
$id = $item['id_mg'];
|
||||
$name = $item['name'];
|
||||
$num_ok = modules_group_agent_ok($id);
|
||||
$num_critical = modules_group_agent_critical ($id);
|
||||
$num_warning = modules_group_agent_warning($id);
|
||||
$num_unknown = modules_group_agent_unknown($id);
|
||||
break;
|
||||
case 'policies':
|
||||
$id = $item['id'];
|
||||
$name = $item['name'];
|
||||
$num_ok = policies_agents_ok($id);
|
||||
$num_critical = policies_agents_critical($id);
|
||||
$num_warning = policies_agents_warning($id);
|
||||
$num_unknown = policies_agents_unknown($id);
|
||||
break;
|
||||
case 'module':
|
||||
$id = str_replace(array(' ','#','/'), array('_articapandora_'.ord(' ').'_pandoraartica_', '_articapandora_'.ord('#').'_pandoraartica_', '_articapandora_'.ord('/').'_pandoraartica_'),io_safe_output($item['nombre']));
|
||||
$name = io_safe_output($item['nombre']);
|
||||
$module_name = $item['nombre'];
|
||||
$num_ok = modules_agents_ok($module_name);
|
||||
$num_critical = modules_agents_critical($module_name);
|
||||
$num_warning = modules_agents_warning($module_name);
|
||||
$num_unknown = modules_agents_unknown($module_name);
|
||||
break;
|
||||
}
|
||||
|
||||
$lessBranchs = 0;
|
||||
if ($first) {
|
||||
if ($item != end($list)) {
|
||||
$img = html_print_image ("operation/tree/first_closed.png", true, array ("style" => 'vertical-align: middle;', "id" => "tree_image_" . $type . "_" . $id, "pos_tree" => "0"));
|
||||
$first = false;
|
||||
}
|
||||
else {
|
||||
$lessBranchs = 1;
|
||||
$img = html_print_image ("operation/tree/one_closed.png", true, array ("style" => 'vertical-align: middle;', "id" => "tree_image_" . $type . "_" . $id, "pos_tree" => "1"));
|
||||
}
|
||||
}
|
||||
else {
|
||||
if ($item != end($list))
|
||||
$img = html_print_image ("operation/tree/closed.png", true, array ("style" => 'vertical-align: middle;', "id" => "tree_image_" . $type . "_" . $id, "pos_tree" => "2"));
|
||||
else
|
||||
{
|
||||
$lessBranchs = 1;
|
||||
$img = html_print_image ("operation/tree/last_closed.png", true, array ("style" => 'vertical-align: middle;', "id" => "tree_image_" . $type . "_" . $id, "pos_tree" => "3"));
|
||||
}
|
||||
}
|
||||
|
||||
echo "<li style='margin: 0px 0px 0px 0px;'>
|
||||
<a onfocus='JavaScript: this.blur()' href='javascript: loadSubTree(\"" . $type . "\",\"" . $id . "\", " . $lessBranchs . ", \"\")'>" .
|
||||
$img . $iconImg ." " . __($name) . ' ('.
|
||||
'<span class="green">'.'<b>'.$num_ok.'</b>'.'</span>'.
|
||||
' : <span class="red">'.$num_critical.'</span>' .
|
||||
' : <span class="yellow">'.$num_warning.'</span>'.
|
||||
' : <span class="grey">'.$num_unknown.'</span>'.') '. "</a>";
|
||||
|
||||
echo "<div hiddenDiv='1' loadDiv='0' style='margin: 0px; padding: 0px;' class='tree_view' id='tree_div_" . $type . "_" . $id . "'></div>";
|
||||
echo "</li>\n";
|
||||
}
|
||||
echo "</ul>\n";
|
||||
echo '</td>';
|
||||
echo '<td style="width:38%" valign="top">';
|
||||
echo '<div id="cont"> </div>';
|
||||
echo '</td></tr>';
|
||||
echo '</table>';
|
||||
$search_sql = '';
|
||||
}
|
||||
|
||||
//Extract all rows of data for each type
|
||||
switch ($type) {
|
||||
case 'group':
|
||||
|
||||
if (defined ('METACONSOLE')) {
|
||||
$id = groups_get_id ($id);
|
||||
if ($id == '') {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//Skip agents which only have not init modules
|
||||
$search_sql .= " AND total_count<>notinit_count";
|
||||
|
||||
$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);
|
||||
break;
|
||||
case 'os':
|
||||
|
||||
//Skip agents which only have not init modules
|
||||
$search_sql .= " AND total_count<>notinit_count";
|
||||
|
||||
|
||||
$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);
|
||||
break;
|
||||
case 'module_group':
|
||||
|
||||
//Skip agents which only have not init modules
|
||||
$search_sql .= " AND total_count<>notinit_count";
|
||||
|
||||
$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 total_count>0 AND disabled=0 AND id_agente IN
|
||||
(SELECT DISTINCT (id_agente)
|
||||
FROM tagente_modulo
|
||||
WHERE id_module_group = ' . $id . ')';
|
||||
break;
|
||||
case 'policies':
|
||||
|
||||
$sql = agents_get_agents(array (
|
||||
'order' => 'nombre COLLATE utf8_general_ci ASC',
|
||||
'disabled' => 0,
|
||||
'search' => $search_sql),
|
||||
|
||||
array ('*'),
|
||||
'AR',
|
||||
false,
|
||||
true);
|
||||
|
||||
if ($id != 0) {
|
||||
// Skip agents without modules
|
||||
$sql .= ' AND tagente.id_agente IN
|
||||
(SELECT tagente.id_agente
|
||||
FROM tagente, tagente_modulo, tagente_estado, tpolicy_modules
|
||||
WHERE tagente.id_agente = tagente_modulo.id_agente
|
||||
AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo
|
||||
AND tagente_modulo.id_policy_module = tpolicy_modules.id
|
||||
AND tagente.disabled = 0
|
||||
AND tagente_modulo.disabled = 0
|
||||
AND tagente_estado.utimestamp != 0
|
||||
AND tagente_modulo.id_policy_module != 0
|
||||
AND tpolicy_modules.id_policy = ' . $id . '
|
||||
group by tagente.id_agente
|
||||
having COUNT(*) > 0)';
|
||||
}
|
||||
else if ($statusSel == 0) {
|
||||
|
||||
// If status filter is NORMAL add void agents
|
||||
$sql .= " UNION SELECT * FROM tagente
|
||||
WHERE tagente.disabled = 0
|
||||
AND tagente.id_agente NOT IN (SELECT tagente_estado.id_agente
|
||||
FROM tagente_estado)";
|
||||
}
|
||||
break;
|
||||
case 'module':
|
||||
//Replace separator token "articapandora_32_pandoraartica_" for " "
|
||||
//example:
|
||||
//"Load_articapandora_32_pandoraartica_Average"
|
||||
//result -> "Load Average"
|
||||
$name = str_replace(array('_articapandora_'.ord(' ').'_pandoraartica_', '_articapandora_'.ord('#').'_pandoraartica_','_articapandora_'.ord('/').'_pandoraartica_'),array(' ','#','/'),$id);
|
||||
|
||||
$name = io_safe_input($name);
|
||||
|
||||
|
||||
$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 disabled = 0
|
||||
)
|
||||
', $name);
|
||||
break;
|
||||
case 'tag':
|
||||
$id = tags_get_id ($id);
|
||||
if ($id === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$sql = "SELECT tagente.*
|
||||
FROM tagente, tagente_modulo, ttag_module
|
||||
WHERE tagente.id_agente = tagente_modulo.id_agente
|
||||
AND tagente_modulo.id_agente_modulo = ttag_module.id_agente_modulo
|
||||
AND ttag_module.id_tag = " . $id;
|
||||
break;
|
||||
}
|
||||
|
||||
$sql .= ' AND tagente.disabled = 0'. $search_sql;
|
||||
return $sql;
|
||||
}
|
||||
?>
|
||||
|
||||
// Get SQL for the second tree branch
|
||||
function treeview_getSecondBranchSQL ($fatherType, $id, $id_father) {
|
||||
global $config;
|
||||
|
||||
switch ($fatherType) {
|
||||
case 'group':
|
||||
$sql = 'SELECT *
|
||||
FROM tagente_modulo AS t1
|
||||
INNER JOIN tagente_estado AS t2 ON t1.id_agente_modulo = t2.id_agente_modulo
|
||||
WHERE t1.id_agente = ' . $id;
|
||||
break;
|
||||
case 'os':
|
||||
$sql = 'SELECT *
|
||||
FROM tagente_modulo AS t1
|
||||
INNER JOIN tagente_estado AS t2 ON t1.id_agente_modulo = t2.id_agente_modulo
|
||||
WHERE t1.id_agente = ' . $id;
|
||||
break;
|
||||
case 'module_group':
|
||||
$sql = 'SELECT *
|
||||
FROM tagente_modulo AS t1
|
||||
INNER JOIN tagente_estado AS t2 ON t1.id_agente_modulo = t2.id_agente_modulo
|
||||
WHERE t1.id_agente = ' . $id . ' AND id_module_group = ' . $id_father;
|
||||
break;
|
||||
case 'policies':
|
||||
$whereQuery = '';
|
||||
if ($id_father != 0)
|
||||
$whereQuery = ' AND t1.id_policy_module IN
|
||||
(SELECT id FROM tpolicy_modules WHERE id_policy = ' . $id_father . ')';
|
||||
else
|
||||
$whereQuery = ' AND t1.id_policy_module = 0 ';
|
||||
|
||||
$sql = 'SELECT *
|
||||
FROM tagente_modulo AS t1
|
||||
INNER JOIN tagente_estado AS t2 ON t1.id_agente_modulo = t2.id_agente_modulo
|
||||
WHERE t1.id_agente = ' . $id . $whereQuery;
|
||||
break;
|
||||
default:
|
||||
case 'module':
|
||||
$name = str_replace(array('_articapandora_'.ord(' ').'_pandoraartica_', '_articapandora_'.ord('#').'_pandoraartica_','_articapandora_'.ord('/').'_pandoraartica_'),array(' ','#','/'),$id_father);
|
||||
switch ($config["dbtype"]) {
|
||||
case "mysql":
|
||||
$sql = 'SELECT *
|
||||
FROM tagente_modulo AS t1
|
||||
INNER JOIN tagente_estado AS t2 ON t1.id_agente_modulo = t2.id_agente_modulo
|
||||
WHERE t1.id_agente = ' . $id . ' AND nombre = \'' . io_safe_input($name) . '\'';
|
||||
break;
|
||||
case "postgresql":
|
||||
case "oracle":
|
||||
$sql = 'SELECT *
|
||||
FROM tagente_modulo AS t1
|
||||
INNER JOIN tagente_estado AS t2 ON t1.id_agente_modulo = t2.id_agente_modulo
|
||||
WHERE t1.id_agente = ' . $id . ' AND nombre = \'' . io_safe_input($name) . '\'';
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 'tag':
|
||||
$id_father = tags_get_id ($id_father);
|
||||
if ($id_father === false) {
|
||||
return false;
|
||||
}
|
||||
$sql = 'SELECT * FROM tagente_modulo, tagente_estado, ttag_module
|
||||
WHERE tagente_modulo.id_agente_modulo = ttag_module.id_agente_modulo
|
||||
AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo
|
||||
AND tagente_modulo.id_agente=' . $id . ' AND ttag_module.id_tag = ' . $id_father;
|
||||
break;
|
||||
}
|
||||
|
||||
// This line checks for initializated modules or (non-initialized) asyncronous modules
|
||||
$sql .= ' AND disabled = 0 AND (utimestamp > 0 OR id_tipo_modulo IN (21,22,23))';
|
||||
return $sql;
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
|
@ -22,13 +22,21 @@ define('UNKNOWN', 3);
|
|||
|
||||
global $config;
|
||||
|
||||
require_once ('include/functions_treeview.php');
|
||||
require_once ($config['homedir'] . '/include/functions_treeview.php');
|
||||
|
||||
if (defined ('METACONSOLE')) {
|
||||
// For each server defined:
|
||||
$servers = db_get_all_rows_sql ("SELECT * FROM tmetaconsole_setup WHERE disabled = 0");
|
||||
if ($servers === false) {
|
||||
$servers = array();
|
||||
}
|
||||
}
|
||||
|
||||
if (is_ajax ())
|
||||
{
|
||||
require_once ('include/functions_reporting.php');
|
||||
require_once ('include/functions_users.php');
|
||||
require_once ('include/functions_servers.php');
|
||||
require_once ($config['homedir'] . '/include/functions_reporting.php');
|
||||
require_once ($config['homedir'] . '/include/functions_users.php');
|
||||
require_once ($config['homedir'] . '/include/functions_servers.php');
|
||||
|
||||
global $config;
|
||||
|
||||
|
@ -58,159 +66,46 @@ if (is_ajax ())
|
|||
* 1 1 - hide 2 branch
|
||||
*/
|
||||
$lessBranchs = get_parameter('less_branchs');
|
||||
|
||||
switch ($type) {
|
||||
case 'group':
|
||||
case 'os':
|
||||
case 'module_group':
|
||||
case 'policies':
|
||||
case 'module':
|
||||
$avariableGroups = users_get_groups();
|
||||
$avariableGroupsIds = array_keys($avariableGroups);
|
||||
case 'tag':
|
||||
|
||||
$countRows = 0;
|
||||
|
||||
if (!empty($avariableGroupsIds)) {
|
||||
//TODO CHANGE POLICY ACL FOR TAG ACL
|
||||
$extra_sql = '';
|
||||
if($extra_sql != '') {
|
||||
$extra_sql .= ' OR';
|
||||
if (! defined ('METACONSOLE')) {
|
||||
$avariableGroups = users_get_groups();
|
||||
$avariableGroupsIds = array_keys($avariableGroups);
|
||||
$sql = treeview_getFirstBranchSQL ($type, $id, $avariableGroupsIds, $statusSel, $search_free);
|
||||
if ($sql === false) {
|
||||
$rows = array ();
|
||||
} else {
|
||||
$rows = db_get_all_rows_sql($sql);
|
||||
}
|
||||
$groups_sql = implode(', ', $avariableGroupsIds);
|
||||
|
||||
if ($search_free != '') {
|
||||
$search_sql = " AND nombre COLLATE utf8_general_ci LIKE '%$search_free%'";
|
||||
}
|
||||
else {
|
||||
$search_sql = '';
|
||||
}
|
||||
|
||||
//Extract all rows of data for each type
|
||||
switch ($type) {
|
||||
case 'group':
|
||||
|
||||
//Skip agents which only have not init modules
|
||||
$search_sql .= " AND total_count<>notinit_count";
|
||||
|
||||
$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);
|
||||
break;
|
||||
case 'os':
|
||||
|
||||
//Skip agents which only have not init modules
|
||||
$search_sql .= " AND total_count<>notinit_count";
|
||||
|
||||
|
||||
$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);
|
||||
break;
|
||||
case 'module_group':
|
||||
|
||||
//Skip agents which only have not init modules
|
||||
$search_sql .= " AND total_count<>notinit_count";
|
||||
|
||||
$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 total_count>0 AND disabled=0 AND id_agente IN
|
||||
(SELECT DISTINCT (id_agente)
|
||||
FROM tagente_modulo
|
||||
WHERE id_module_group = ' . $id . ')';
|
||||
break;
|
||||
case 'policies':
|
||||
|
||||
$sql = agents_get_agents(array (
|
||||
'order' => 'nombre COLLATE utf8_general_ci ASC',
|
||||
'disabled' => 0,
|
||||
'search' => $search_sql),
|
||||
|
||||
array ('*'),
|
||||
'AR',
|
||||
false,
|
||||
true);
|
||||
|
||||
if ($id != 0) {
|
||||
// Skip agents without modules
|
||||
$sql .= ' AND tagente.id_agente IN
|
||||
(SELECT tagente.id_agente
|
||||
FROM tagente, tagente_modulo, tagente_estado, tpolicy_modules
|
||||
WHERE tagente.id_agente = tagente_modulo.id_agente
|
||||
AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo
|
||||
AND tagente_modulo.id_policy_module = tpolicy_modules.id
|
||||
AND tagente.disabled = 0
|
||||
AND tagente_modulo.disabled = 0
|
||||
AND tagente_estado.utimestamp != 0
|
||||
AND tagente_modulo.id_policy_module != 0
|
||||
AND tpolicy_modules.id_policy = ' . $id . '
|
||||
group by tagente.id_agente
|
||||
having COUNT(*) > 0)';
|
||||
} else {
|
||||
$rows = array ();
|
||||
foreach ($servers as $server) {
|
||||
if (metaconsole_connect($server) != NOERR) {
|
||||
continue;
|
||||
}
|
||||
$avariableGroups = users_get_groups();
|
||||
$avariableGroupsIds = array_keys($avariableGroups);
|
||||
$sql = treeview_getFirstBranchSQL ($type, $id, $avariableGroupsIds, $statusSel, $search_free);
|
||||
if ($sql === false) {
|
||||
$server_rows = array ();
|
||||
} else {
|
||||
$server_rows = db_get_all_rows_sql($sql);
|
||||
if ($server_rows === false) {
|
||||
$server_rows = array ();
|
||||
}
|
||||
else if ($statusSel == 0) {
|
||||
|
||||
// If status filter is NORMAL add void agents
|
||||
$sql .= " UNION SELECT * FROM tagente
|
||||
WHERE tagente.disabled = 0
|
||||
AND tagente.id_agente NOT IN (SELECT tagente_estado.id_agente
|
||||
FROM tagente_estado)";
|
||||
}
|
||||
break;
|
||||
case 'module':
|
||||
//Replace separator token "articapandora_32_pandoraartica_" for " "
|
||||
//example:
|
||||
//"Load_articapandora_32_pandoraartica_Average"
|
||||
//result -> "Load Average"
|
||||
$name = str_replace(array('_articapandora_'.ord(' ').'_pandoraartica_', '_articapandora_'.ord('#').'_pandoraartica_','_articapandora_'.ord('/').'_pandoraartica_'),array(' ','#','/'),$id);
|
||||
|
||||
$name = io_safe_input($name);
|
||||
|
||||
|
||||
$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 disabled = 0
|
||||
)
|
||||
', $name);
|
||||
break;
|
||||
}
|
||||
$rows = array_merge($rows, $server_rows);
|
||||
}
|
||||
|
||||
$sql .= ' AND tagente.disabled = 0'. $search_sql;
|
||||
metaconsole_restore_db();
|
||||
}
|
||||
|
||||
$rows = db_get_all_rows_sql($sql);
|
||||
$countRows = count ($rows);
|
||||
|
||||
//Empty Branch
|
||||
|
@ -312,11 +207,7 @@ if (is_ajax ())
|
|||
if ($agent_info["monitor_normal"] > 0)
|
||||
echo ' : <span class="green">'.$agent_info["monitor_normal"].'</span>';
|
||||
echo ")";
|
||||
if ($agent_info["last_contact"]!='') {
|
||||
echo " (";
|
||||
ui_print_timestamp ($agent_info["last_contact"]);
|
||||
echo ")";
|
||||
}
|
||||
|
||||
if ($row['quiet']) {
|
||||
echo " ";
|
||||
html_print_image("images/dot_green.disabled.png", false, array("border" => '0', "title" => __('Quiet'), "alt" => ""));
|
||||
|
@ -335,63 +226,28 @@ if (is_ajax ())
|
|||
case 'agent_os':
|
||||
case 'agent_policies':
|
||||
case 'agent_module':
|
||||
case 'agent_tag':
|
||||
$fatherType = str_replace('agent_', '', $type);
|
||||
|
||||
switch ($fatherType) {
|
||||
case 'group':
|
||||
$sql = 'SELECT *
|
||||
FROM tagente_modulo AS t1
|
||||
INNER JOIN tagente_estado AS t2 ON t1.id_agente_modulo = t2.id_agente_modulo
|
||||
WHERE t1.id_agente = ' . $id;
|
||||
break;
|
||||
case 'os':
|
||||
$sql = 'SELECT *
|
||||
FROM tagente_modulo AS t1
|
||||
INNER JOIN tagente_estado AS t2 ON t1.id_agente_modulo = t2.id_agente_modulo
|
||||
WHERE t1.id_agente = ' . $id;
|
||||
break;
|
||||
case 'module_group':
|
||||
$sql = 'SELECT *
|
||||
FROM tagente_modulo AS t1
|
||||
INNER JOIN tagente_estado AS t2 ON t1.id_agente_modulo = t2.id_agente_modulo
|
||||
WHERE t1.id_agente = ' . $id . ' AND id_module_group = ' . $id_father;
|
||||
break;
|
||||
case 'policies':
|
||||
$whereQuery = '';
|
||||
if ($id_father != 0)
|
||||
$whereQuery = ' AND t1.id_policy_module IN
|
||||
(SELECT id FROM tpolicy_modules WHERE id_policy = ' . $id_father . ')';
|
||||
else
|
||||
$whereQuery = ' AND t1.id_policy_module = 0 ';
|
||||
|
||||
$sql = 'SELECT *
|
||||
FROM tagente_modulo AS t1
|
||||
INNER JOIN tagente_estado AS t2 ON t1.id_agente_modulo = t2.id_agente_modulo
|
||||
WHERE t1.id_agente = ' . $id . $whereQuery;
|
||||
break;
|
||||
case 'module':
|
||||
$name = str_replace(array('_articapandora_'.ord(' ').'_pandoraartica_', '_articapandora_'.ord('#').'_pandoraartica_','_articapandora_'.ord('/').'_pandoraartica_'),array(' ','#','/'),$id_father);
|
||||
switch ($config["dbtype"]) {
|
||||
case "mysql":
|
||||
$sql = 'SELECT *
|
||||
FROM tagente_modulo AS t1
|
||||
INNER JOIN tagente_estado AS t2 ON t1.id_agente_modulo = t2.id_agente_modulo
|
||||
WHERE t1.id_agente = ' . $id . ' AND nombre = \'' . io_safe_input($name) . '\'';
|
||||
break;
|
||||
case "postgresql":
|
||||
case "oracle":
|
||||
$sql = 'SELECT *
|
||||
FROM tagente_modulo AS t1
|
||||
INNER JOIN tagente_estado AS t2 ON t1.id_agente_modulo = t2.id_agente_modulo
|
||||
WHERE t1.id_agente = ' . $id . ' AND nombre = \'' . io_safe_input($name) . '\'';
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
// This line checks for initializated modules or (non-initialized) asyncronous modules
|
||||
$sql .= ' AND disabled = 0 AND (utimestamp > 0 OR id_tipo_modulo IN (21,22,23))';
|
||||
|
||||
$rows = db_get_all_rows_sql($sql);
|
||||
if (! defined ('METACONSOLE')) {
|
||||
$sql = treeview_getSecondBranchSQL ($fatherType, $id, $id_father);
|
||||
$rows = db_get_all_rows_sql($sql);
|
||||
} else {
|
||||
$rows = array ();
|
||||
foreach ($servers as $server) {
|
||||
if (metaconsole_connect($server) != NOERR) {
|
||||
continue;
|
||||
}
|
||||
$sql = treeview_getSecondBranchSQL ($fatherType, $id, $id_father);
|
||||
$server_rows = db_get_all_rows_sql($sql);
|
||||
if ($server_rows === false) {
|
||||
$server_rows = array ();
|
||||
}
|
||||
$rows = array_merge($rows, $server_rows);
|
||||
}
|
||||
|
||||
metaconsole_restore_db();
|
||||
}
|
||||
$countRows = count ($rows);
|
||||
|
||||
if ($countRows === 0) {
|
||||
|
@ -562,8 +418,6 @@ else {
|
|||
$module_tab = array('text' => "<a href='index.php?extension_in_menu=estado&sec=estado&sec2=operation/tree&refr=0&sort_by=module'>"
|
||||
. html_print_image ("images/brick.png", true, array ("title" => __('Modules'))) . "</a>", 'active' => $activeTab == "module");
|
||||
|
||||
$onheader = array('os' => $os_tab, 'group' => $group_tab, 'module_group' => $module_group_tab, 'policies' => $policies_tab, 'module' => $module_tab);
|
||||
|
||||
switch ($activeTab) {
|
||||
case 'group':
|
||||
$order = __('groups');
|
||||
|
@ -580,9 +434,39 @@ switch ($activeTab) {
|
|||
case 'os':
|
||||
$order = __('OS');
|
||||
break;
|
||||
case 'tag':
|
||||
$order = __('tags');
|
||||
break;
|
||||
}
|
||||
ui_print_page_header (__('Tree view')." - ".__('Sort the agents by ') .$order, "images/extensions.png", false, "", false, $onheader);
|
||||
|
||||
if (! defined ('METACONSOLE')) {
|
||||
$onheader = array('os' => $os_tab, 'group' => $group_tab, 'module_group' => $module_group_tab, 'policies' => $policies_tab, 'module' => $module_tab);
|
||||
ui_print_page_header (__('Tree view')." - ".__('Sort the agents by ') .$order, "images/extensions.png", false, "", false, $onheader);
|
||||
} else {
|
||||
|
||||
ui_meta_add_breadcrumb(array('link' => 'index.php?sec=monitoring&sec2=operation/tree', 'text' => __('Tree View')));
|
||||
ui_meta_print_page_header($nav_bar);
|
||||
|
||||
$img_style = array ("class" => "top", "width" => 16);
|
||||
$activeTab = get_parameter('tab','group');
|
||||
$group_tab = array('text' => "<a href='index.php?sec=monitoring&sec2=operation/tree&refr=0&tab=group'>"
|
||||
. html_print_image ("images/group.png", true, array ("title" => __('Groups'))) . "</a>",
|
||||
'active' => $activeTab == "group");
|
||||
$tags_tab = array('text' => "<a href='index.php?&sec=monitoring&sec2=operation/tree&refr=0&tab=tag'>"
|
||||
. html_print_image ("images/tag_red.png", true, array ("title" => __('Tags'))) . "</a>", 'active' => $activeTab == "tag");
|
||||
$subsections = array('group' => $group_tab, 'tag' => $tags_tab);
|
||||
switch ($activeTab) {
|
||||
case 'group':
|
||||
$subsection = __('Groups');
|
||||
$tab = 'group';
|
||||
break;
|
||||
case 'tag':
|
||||
$subsection = __('Tags');
|
||||
$tab = 'tag';
|
||||
break;
|
||||
}
|
||||
ui_meta_print_header(__("Tree view"), $subsection, $subsections);
|
||||
}
|
||||
|
||||
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.'">';
|
||||
|
@ -650,7 +534,7 @@ treeview_printTree($activeTab);
|
|||
$('#tree_div'+id_father+'_'+type+'_'+div_id).attr('loadDiv', 2);
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "ajax.php",
|
||||
url: <?php echo '"' . ui_get_full_url("ajax.php", false, false, false) . '"'; ?>,
|
||||
data: "page=<?php echo $_GET['sec2']; ?>&ajax_treeview=1&type=" +
|
||||
type + "&id=" + div_id + "&less_branchs=" + less_branchs + "&id_father=" + id_father + "&status=" + status + "&search_free=" + search_free,
|
||||
success: function(msg){
|
||||
|
@ -660,18 +544,24 @@ treeview_printTree($activeTab);
|
|||
$('#tree_div'+id_father+'_'+type+'_'+div_id).show('normal');
|
||||
|
||||
//change image of tree [+] to [-]
|
||||
<?php if (! defined ('METACONSOLE')) {
|
||||
echo 'var icon_path = \'operation/tree\';';
|
||||
} else {
|
||||
echo 'var icon_path = \'../../operation/tree\';';
|
||||
}
|
||||
?>
|
||||
switch (pos) {
|
||||
case 0:
|
||||
$('#tree_image'+id_father+'_'+type+'_'+div_id).attr('src','operation/tree/first_expanded.png');
|
||||
$('#tree_image'+id_father+'_'+type+'_'+div_id).attr('src',icon_path+'/first_expanded.png');
|
||||
break;
|
||||
case 1:
|
||||
$('#tree_image'+id_father+'_'+type+'_'+div_id).attr('src','operation/tree/one_expanded.png');
|
||||
$('#tree_image'+id_father+'_'+type+'_'+div_id).attr('src',icon_path+'/one_expanded.png');
|
||||
break;
|
||||
case 2:
|
||||
$('#tree_image'+id_father+'_'+type+'_'+div_id).attr('src','operation/tree/expanded.png');
|
||||
$('#tree_image'+id_father+'_'+type+'_'+div_id).attr('src',icon_path+'/expanded.png');
|
||||
break;
|
||||
case 3:
|
||||
$('#tree_image'+id_father+'_'+type+'_'+div_id).attr('src','operation/tree/last_expanded.png');
|
||||
$('#tree_image'+id_father+'_'+type+'_'+div_id).attr('src',icon_path+'/last_expanded.png');
|
||||
break;
|
||||
}
|
||||
$('#tree_div'+id_father+'_'+type+'_'+div_id).attr('hiddendiv',0);
|
||||
|
@ -681,6 +571,12 @@ treeview_printTree($activeTab);
|
|||
});
|
||||
}
|
||||
else {
|
||||
<?php if (! defined ('METACONSOLE')) {
|
||||
echo 'var icon_path = \'operation/tree\';';
|
||||
} else {
|
||||
echo 'var icon_path = \'../../operation/tree\';';
|
||||
}
|
||||
?>
|
||||
if (hiddenDiv == 0) {
|
||||
$('#tree_div'+id_father+'_'+type+'_'+div_id).hide('normal');
|
||||
$('#tree_div'+id_father+'_'+type+'_'+div_id).attr('hiddenDiv',1);
|
||||
|
@ -688,16 +584,16 @@ treeview_printTree($activeTab);
|
|||
//change image of tree [-] to [+]
|
||||
switch (pos) {
|
||||
case 0:
|
||||
$('#tree_image'+id_father+'_'+type+'_'+div_id).attr('src','operation/tree/first_closed.png');
|
||||
$('#tree_image'+id_father+'_'+type+'_'+div_id).attr('src',icon_path+'/first_closed.png');
|
||||
break;
|
||||
case 1:
|
||||
$('#tree_image'+id_father+'_'+type+'_'+div_id).attr('src','operation/tree/one_closed.png');
|
||||
$('#tree_image'+id_father+'_'+type+'_'+div_id).attr('src',icon_path+'/one_closed.png');
|
||||
break;
|
||||
case 2:
|
||||
$('#tree_image'+id_father+'_'+type+'_'+div_id).attr('src','operation/tree/closed.png');
|
||||
$('#tree_image'+id_father+'_'+type+'_'+div_id).attr('src',icon_path+'/closed.png');
|
||||
break;
|
||||
case 3:
|
||||
$('#tree_image'+id_father+'_'+type+'_'+div_id).attr('src','operation/tree/last_closed.png');
|
||||
$('#tree_image'+id_father+'_'+type+'_'+div_id).attr('src',icon_path+'/last_closed.png');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -705,16 +601,16 @@ treeview_printTree($activeTab);
|
|||
//change image of tree [+] to [-]
|
||||
switch (pos) {
|
||||
case 0:
|
||||
$('#tree_image'+id_father+'_'+type+'_'+div_id).attr('src','operation/tree/first_expanded.png');
|
||||
$('#tree_image'+id_father+'_'+type+'_'+div_id).attr('src',icon_path+'/first_expanded.png');
|
||||
break;
|
||||
case 1:
|
||||
$('#tree_image'+id_father+'_'+type+'_'+div_id).attr('src','operation/tree/one_expanded.png');
|
||||
$('#tree_image'+id_father+'_'+type+'_'+div_id).attr('src',icon_path+'/one_expanded.png');
|
||||
break;
|
||||
case 2:
|
||||
$('#tree_image'+id_father+'_'+type+'_'+div_id).attr('src','operation/tree/expanded.png');
|
||||
$('#tree_image'+id_father+'_'+type+'_'+div_id).attr('src',icon_path+'/expanded.png');
|
||||
break;
|
||||
case 3:
|
||||
$('#tree_image'+id_father+'_'+type+'_'+div_id).attr('src','operation/tree/last_expanded.png');
|
||||
$('#tree_image'+id_father+'_'+type+'_'+div_id).attr('src',icon_path+'/last_expanded.png');
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -748,7 +644,7 @@ treeview_printTree($activeTab);
|
|||
id_agent = div_id;
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "ajax.php",
|
||||
url: <?php echo '"' . ui_get_full_url("ajax.php", false, false, false) . '"'; ?>,
|
||||
data: "page=<?php echo $_GET['sec2']; ?>&printTable=1&id_agente=" +
|
||||
id_agent, success: function(data){
|
||||
$('#cont').html(data);
|
||||
|
@ -757,4 +653,4 @@ treeview_printTree($activeTab);
|
|||
|
||||
loadSubTree(type, div_id, less_branchs, id_father);
|
||||
}
|
||||
</script>
|
||||
</script>
|
||||
|
|
Loading…
Reference in New Issue