".__('Pandora Agents')." > ".__('Full list of Monitors').""; $ag_freestring = get_parameter ("ag_freestring", ""); $ag_modulename = get_parameter ("ag_modulename", ""); $ag_group = get_parameter ("ag_group", -1); $offset = get_parameter ("offset", 0); $status = get_parameter ("status", 0); $url = ''; if ($ag_group > 0) { $url .= "&ag_group=".$ag_group; } if ($ag_modulename != "") { $url .= "&ag_modulename=".$ag_modulename; } if ($ag_freestring != "") { $url .= "&ag_freestring=".$ag_freestring; } if ($status != 0) { $url .= "&status=".$status; } echo '
'; echo ''; echo ''; echo '"; echo "'; echo ''; echo '
'.__('Group').''; print_select (get_user_groups (), "ag_group", $ag_group, 'this.form.submit();', '', '0', false, false, false, 'w130'); echo "".__('Monitor status').""; $fields = array (); $fields[0] = __('Monitors down'); //default $fields[1] = __('Monitors up'); $fields[2] = __('Monitors unknown'); print_select ($fields, "status", $status, 'this.form.submit();', __('All'), -1); echo '
'.__('Module name').''; $result = get_db_all_rows_sql ("SELECT DISTINCT(nombre) FROM tagente_modulo WHERE id_tipo_modulo IN (2, 6, 9, 18, 21, 100) ORDER BY nombre"); if ($result === false) { $result = array (); } $fields = array (); foreach ($result as $row) { $fields[$row["nombre"]] = $row["nombre"]; } print_select ($fields, "ag_modulename", $ag_modulename, 'this.form.submit();', __('All'), ""); echo ''.__('Free text').''; print_input_text ("ag_freestring", $ag_freestring, '', 15); echo ''; print_submit_button (__('Show'), "uptbutton", false, 'class="sub"'); echo ""; echo "
"; // Begin Build SQL sentences $sql = " FROM tagente, tagente_modulo, tagente_estado WHERE tagente.id_agente = tagente_modulo.id_agente AND tagente_modulo.disabled = 0 AND tagente.disabled = 0 AND tagente_modulo.id_tipo_modulo IN (2, 9, 12, 18, 6, 100) AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo"; // Agent group selector if ($ag_group > 1 && give_acl ($config["id_user"], $ag_group, "AR")) { $sql .= sprintf (" AND tagente.id_grupo = %d", $ag_group); } else { // User has explicit permission on group 1 ? $sql .= " AND tagente.id_grupo IN (".implode (",", array_keys (get_user_groups ())).")"; } // Module name selector if ($ag_modulename != "") { $sql .= sprintf (" AND tagente_modulo.nombre = '%s'", $ag_modulename); } // Freestring selector if ($ag_freestring != "") { $sql .= sprintf (" AND (tagente.nombre LIKE '%%%s%%' OR tagente_modulo.nombre LIKE '%%%s%%' OR tagente_modulo.descripcion LIKE '%%%s%%')", $ag_freestring, $ag_freestring, $ag_freestring); } // Status selector if ($status == 1) { //Up $sql .= " AND tagente_estado.estado = 0 AND (UNIX_TIMESTAMP(NOW()) - tagente_estado.utimestamp) < (tagente_estado.current_interval * 2)"; } elseif ($status == 0) { //Down $sql .= " AND tagente_estado.estado = 1"; } elseif ($status == 2) { //Unknown $sql .= " AND (UNIX_TIMESTAMP(NOW()) - tagente_estado.utimestamp) >= (tagente_estado.current_interval * 2)"; } $sql .= " ORDER BY tagente.id_grupo, tagente.nombre"; // Build final SQL sentences $count = get_db_sql ("SELECT COUNT(tagente_modulo.id_agente_modulo)".$sql); $sql = "SELECT tagente_modulo.id_agente_modulo, tagente.intervalo AS agent_interval, tagente.nombre AS agent_name, tagente_modulo.nombre AS module_name, tagente_modulo.flag AS flag, tagente.id_grupo AS id_group, tagente.id_agente AS id_agent, tagente_modulo.id_tipo_modulo AS module_type, tagente_modulo.module_interval, tagente_estado.datos, tagente_estado.utimestamp AS utimestamp".$sql." LIMIT ".$offset.",".$config["block_size"]; $result = get_db_all_rows_sql ($sql); if ($count > $config["block_size"]) { pagination ($count, "index.php?sec=estado&sec2=operation/agentes/status_monitor&refr=60".$url, $offset); } if ($result === false) { $result = array (); } $table->cellpadding = 4; $table->cellspacing = 4; $table->width = 750; $table->class = "databox"; $table->head = array (); $table->data = array (); $table->size = array (); $table->align = array (); $table->head[0] = ""; $table->align[0] = "center"; $table->head[1] = __('Agent'); $table->head[2] = __('Type'); $table->align[2] = "center"; $table->head[3] = __('Module Name'); $table->head[4] = __('Interval'); $table->align[4] = "center"; $table->head[5] = __('Status'); $table->align[5] = "center"; $table->head[6] = __('Timestamp'); $table->algin[6] = "center"; foreach ($result as $row) { $data = array (); //This should be processed locally. Don't rely on other URL's to do our dirty work. Maybe a process_agentmodule_flag function $data[0] = ''; if ($row["flag"] == 0) { $data[0] .= ''; } else { $data[0] .= ''; } $data[0] .= ''; $data[1] = ''; $data[1] .= strtoupper (substr ($row["agent_name"], 0, 25)); $data[1] .= ''; $data[2] = ''; $data[3] = substr ($row["module_name"], 0, 30); $data[4] = $row["agent_interval"]; if ($row["datos"] > 0) { $data[5] = ''; } else { $data[5] = ''; } $seconds = time () - $row["utimestamp"]; if ($seconds >= ($row["agent_interval"] * 2)) { $data[6] = ''; } else { $data[6] = ''; } $data[6] .= human_time_comparation ($row["utimestamp"]); $data[6] .= ""; array_push ($table->data, $data); } if (!empty ($table->data)) { print_table ($table); echo '
  '.__('Monitor up').'        '.__('Monitor down').'
'; } else { echo '
'.__('This group doesn\'t have any monitor').'
'; } ?>