From b4a87a0eef7c0f21855b215f6b6d9ca46939f4aa Mon Sep 17 00:00:00 2001 From: slerena <slerena@gmail.com> Date: Thu, 10 Jan 2008 16:40:00 +0000 Subject: [PATCH] 2008-01-10 Sancho Lerena <slerena@gmail.com> Code merged from 1.3.1 branch: * functions_db.php: Some changes in future generic SQL interface access. * pandora_console/include/functions.php: Added generic acces to HTTP parameters. * status_monitor.php: Fixed problems detected by Pierre Gaxatte. * estado_agente.php: Fixed the same kind of problems (ACL / Group acces) and added a Agent search field as request by J.Corona. * tactical.php: Rename of generic SQL function access. * view_server.php: Rename of generic SQL function access. * modificar_agente.php: Fixed some render problems, added a Agent search option and better formatting. * configurar_agente.php: New management for KeepAlive module. New code for 1.4 development branch (trunk) * pandoradbdata_13_to_14.sql: Migration SQL (data) code from 1.3 to 1.4 * pandoradb_13_to_14.sql: Migration SQL (schema) code frrom 1.3 to 1.4 * pandoradb_data.sql: Modified code to fresh install SQL data. * pandoradb.sql: Modified code to fresh install SQL schema. * index.php, * install.php: new version info. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@700 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f --- pandora_console/ChangeLog | 36 ++ .../godmode/agentes/configurar_agente.php | 28 +- .../godmode/agentes/modificar_agente.php | 117 ++++--- pandora_console/include/functions.php | 39 +-- pandora_console/include/functions_db.php | 53 ++- pandora_console/include/styles/pandora.css | 2 +- pandora_console/index.php | 6 +- pandora_console/install.php | 10 +- .../operation/agentes/estado_agente.php | 99 +++--- .../agentes/estado_ultimopaquete.php | 37 +- .../operation/agentes/status_monitor.php | 331 +++++++++--------- .../operation/agentes/tactical.php | 48 +-- .../operation/servers/view_server.php | 60 +--- .../operation/servers/view_server_detail.php | 10 +- pandora_console/pandoradb.sql | 85 +++-- pandora_console/pandoradb_13_to_14.sql | 72 ++++ pandora_console/pandoradb_data.sql | 2 +- pandora_console/pandoradbdata_13_to_14.sql | 12 + 18 files changed, 560 insertions(+), 487 deletions(-) create mode 100644 pandora_console/pandoradb_13_to_14.sql create mode 100644 pandora_console/pandoradbdata_13_to_14.sql diff --git a/pandora_console/ChangeLog b/pandora_console/ChangeLog index 9bcac4dd3e..a3ab4db702 100644 --- a/pandora_console/ChangeLog +++ b/pandora_console/ChangeLog @@ -1,3 +1,39 @@ +2008-01-10 Sancho Lerena <slerena@gmail.com> + + Code merged from 1.3.1 branch: + + * functions_db.php: Some changes in future generic SQL interface access. + + * pandora_console/include/functions.php: Added generic acces to HTTP + parameters. + + * status_monitor.php: Fixed problems detected by Pierre Gaxatte. + + * estado_agente.php: Fixed the same kind of problems (ACL / Group acces) + and added a Agent search field as request by J.Corona. + + * tactical.php: Rename of generic SQL function access. + + * view_server.php: Rename of generic SQL function access. + + * modificar_agente.php: Fixed some render problems, added a Agent search + option and better formatting. + + * configurar_agente.php: New management for KeepAlive module. + + New code for 1.4 development branch (trunk) + + * pandoradbdata_13_to_14.sql: Migration SQL (data) code from 1.3 to 1.4 + + * pandoradb_13_to_14.sql: Migration SQL (schema) code frrom 1.3 to 1.4 + + * pandoradb_data.sql: Modified code to fresh install SQL data. + + * pandoradb.sql: Modified code to fresh install SQL schema. + + * index.php, + * install.php: new version info. + 2008-01-09 Sancho Lerena <slerena@gmail.com> * fgraph.php: Solved problem in combined area render (ugly graphs most of times). diff --git a/pandora_console/godmode/agentes/configurar_agente.php b/pandora_console/godmode/agentes/configurar_agente.php index bd5e5ff488..9e66001c32 100644 --- a/pandora_console/godmode/agentes/configurar_agente.php +++ b/pandora_console/godmode/agentes/configurar_agente.php @@ -1,27 +1,11 @@ <?php -// Pandora FMS - the Free monitoring system +// Pandora FMS - the Free Monitoring System // ======================================== - -// Copyright (c) 2004-2007 Sancho Lerena, slerena@gmail.com -// Main PHP/SQL code development and project architecture and management +// Copyright (c) 2004-2008 Sancho Lerena, slerena@gmail.com +// Main PHP/SQL code development, project architecture and management. // Copyright (c) 2004-2007 Raul Mateos Martin, raulofpandora@gmail.com -// CSS and some PHP additions -// Copyright (c) 2006-2007 Jonathan Barajas, jonathan.barajas[AT]gmail[DOT]com -// Javascript Active Console code. -// Copyright (c) 2006 Jose Navarro <contacto@indiseg.net> -// Additions to Pandora FMS 1.2 graph code and new XML reporting template management -// Copyright (c) 2005-2007 Artica Soluciones Tecnologicas, info@artica.es -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; version 2 -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +// CSS and some PHP code additions +// Please see http://pandora.sourceforge.net for full contribution list // Load global vars require("include/config.php"); @@ -123,7 +107,7 @@ if (isset($_POST["create_agent"])) { // Create a new and shining agent $id_agent_module = mysql_insert_id(); // And create MODULE agent_keepalive in tagente_estado table - $sql_insert2 ="INSERT INTO tagente_estado (id_agente_modulo, datos, timestamp, cambio, estado, id_agente, last_try, utimestamp, current_interval, running_by, last_execution_try) VALUES ($id_agent_module, 1, '', 0, 1, $id_agente, 0,0,0,0,0)"; + $sql_insert2 ="INSERT INTO tagente_estado (id_agente_modulo, datos, timestamp, cambio, estado, id_agente, last_try, utimestamp, current_interval, running_by, last_execution_try) VALUES ($id_agent_module, 1, '', 0, 0, $id_agente, 0,0,0,0,0)"; $result = mysql_query ($sql_insert2); // Create address for this agent in taddress diff --git a/pandora_console/godmode/agentes/modificar_agente.php b/pandora_console/godmode/agentes/modificar_agente.php index 4d24f2cad1..7d76a29709 100644 --- a/pandora_console/godmode/agentes/modificar_agente.php +++ b/pandora_console/godmode/agentes/modificar_agente.php @@ -1,26 +1,11 @@ <?php -// Pandora FMS - the Free monitoring system +// Pandora FMS - the Free Monitoring System // ======================================== -// Copyright (c) 2004-2007 Sancho Lerena, slerena@gmail.com -// Main PHP/SQL code development and project architecture and management +// Copyright (c) 2004-2008 Sancho Lerena, slerena@gmail.com +// Main PHP/SQL code development, project architecture and management. // Copyright (c) 2004-2007 Raul Mateos Martin, raulofpandora@gmail.com -// CSS and some PHP additions -// Copyright (c) 2006-2007 Jonathan Barajas, jonathan.barajas[AT]gmail[DOT]com -// Javascript Active Console code. -// Copyright (c) 2006 Jose Navarro <contacto@indiseg.net> -// Additions to Pandora FMS 1.2 graph code and new XML reporting template management -// Copyright (c) 2005-2007 Artica Soluciones Tecnologicas, info@artica.es -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; version 2 -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +// CSS and some PHP code additions +// Please see http://pandora.sourceforge.net for full contribution list // Load global vars require("include/config.php"); @@ -32,22 +17,16 @@ if (give_acl($id_user, 0, "AW") != 1) { exit; } -if (isset($_GET["offset"])) - $offset = entrada_limpia($_GET["offset"]); -else - $offset = 0; - -if (isset($_GET["group_id"])) - $group_id = entrada_limpia($_GET["group_id"]); - else - $group_id = 0; - - if (isset($_POST["ag_group"])) - $ag_group = $_POST["ag_group"]; - elseif (isset($_GET["group_id"])) - $ag_group = $_GET["group_id"]; - else - $ag_group = -1; +// Take some parameters (GET) +$offset = get_parameter ("offset", 0); +$group_id = get_parameter ("group_id", 0); +$ag_group = get_parameter ("ag_group", -1); +if (($ag_group == -1) && ($group_id != 0)) + $ag_group = $group_id; +if (isset($_GET["ag_group_refresh"])){ + $ag_group = $_GET["ag_group_refresh"]; +} +$search = get_parameter ("search", ""); if (isset($_GET["borrar_agente"])){ // if delete agent $id_agente = entrada_limpia($_GET["borrar_agente"]); @@ -120,9 +99,9 @@ if (isset($_POST["ag_group"])){ action='index.php?sec=gagente&sec2=godmode/agentes/modificar_agente'>"; } -echo "<table cellpadding='4' cellspacing='4' class='databox'><tr>"; -echo "<td>".$lang_label["group"]."</td>"; -echo "<td valign='middle'>"; +echo "<table cellpadding='4' cellspacing='4' class='databox' width=700><tr>"; +echo "<td valign='top'>".$lang_label["group"]."</td>"; +echo "<td valign='top'>"; echo "<select name='ag_group' onChange='javascript:this.form.submit();' class='w130'>"; @@ -133,23 +112,57 @@ if ( $ag_group > 1 ){ echo "<option value=1>".dame_nombre_grupo(1)."</option>"; // Group all is always active $mis_grupos = list_group ($id_user); //Print combo for groups and set an array with all groups echo "</select>"; -echo "<td valign='middle'> +echo "<td valign='top'> <noscript> <input name='uptbutton' type='submit' class='sub upd' value='".$lang_label["show"]."'> </noscript> </td> </form> -</table>"; -if (isset($ag_group) && $ag_group> 1){ - $sql1="SELECT id_agente, nombre, id_grupo, comentarios, id_os - FROM tagente WHERE id_grupo = $ag_group ORDER BY nombre LIMIT $offset, $block_size"; - $sql2="SELECT COUNT(id_agente) FROM tagente WHERE id_grupo = $ag_group"; +<td valign='top'>"; + +echo $lang_label["free_text_search"]; +echo "</td><td>"; + +// Show group selector +if (isset($_POST["ag_group"])){ + $group_mod = "&ag_group_refresh=".$_POST["ag_group"]; } else { - $sql1="SELECT id_agente, nombre, id_grupo, comentarios, id_os - FROM tagente ORDER BY nombre LIMIT $offset, $block_size"; - $sql2="SELECT COUNT(id_agente) FROM tagente"; + $group_mod =""; } + +echo "<form method='post' action='index.php?sec=gagente&sec2=godmode/agentes/modificar_agente&refr=60$group_mod'>"; +echo "<input type=text name='search' size='15' >"; +echo "</td><td valign='top'>"; +echo "<input name='srcbutton' type='submit' class='sub' +value='".$lang_label["search"]."'>"; +echo "</form>"; +echo "</td></table>"; + +if ($search != ""){ + $search_sql = " AND nombre LIKE '%$search%' "; +} else { + $search_sql = ""; +} + +// Show only selected groups +if ($ag_group > 1){ + $sql1="SELECT * FROM tagente WHERE id_grupo=$ag_group + AND disabled = 0 $search_sql ORDER BY nombre LIMIT $offset, $block_size "; + $sql2="SELECT COUNT(id_agente) FROM tagente WHERE id_grupo=$ag_group + AND disabled = 0 $search_sql ORDER BY nombre"; +} else { + // Is admin user ?? + if (get_db_sql ("SELECT * FROM tusuario WHERE id_usuario ='$id_user'", "nivel") == 1){ + $sql1="SELECT * FROM tagente WHERE disabled = 0 $search_sql ORDER BY nombre, id_grupo LIMIT $offset, $block_size"; + $sql2="SELECT COUNT(id_agente) FROM tagente WHERE disabled = 0 $search_sql ORDER BY nombre, id_grupo"; + } else { + $sql1="SELECT * FROM tagente WHERE disabled = 0 $search_sql AND id_grupo IN (SELECT id_grupo FROM tusuario_perfil WHERE id_usuario='$id_user') + ORDER BY nombre, id_grupo LIMIT $offset, $block_size"; + $sql2="SELECT COUNT(id_agente) FROM tagente WHERE disabled = 0 $search_sql AND id_grupo IN (SELECT id_grupo FROM tusuario_perfil WHERE id_usuario='$id_user') ORDER BY nombre, id_grupo"; + } +} + $result=mysql_query($sql1); $result2=mysql_query($sql2); $row2=mysql_fetch_array($result2); @@ -160,7 +173,7 @@ pagination ($total_events, "index.php?sec=gagente&sec2=godmode/agentes/modificar echo "<div style='height: 20px'> </div>"; if (mysql_num_rows($result)){ - echo "<table cellpadding='4' cellspacing='4' width='700' class='databox'>"; + echo "<table cellpadding='4' cellspacing='4' width='750' class='databox'>"; echo "<th>".$lang_label["agent_name"]."</th>"; echo "<th>".$lang_label["os"]."</th>"; echo "<th>".$lang_label["group"]."</th>"; @@ -182,7 +195,7 @@ if (mysql_num_rows($result)){ echo "<tr><td class='$tdcolor'> <b><a href='index.php?sec=gagente& sec2=godmode/agentes/configurar_agente&tab=main& - id_agente=".$row["id_agente"]."'>".strtoupper($row["nombre"])."</a></b></td>"; + id_agente=".$row["id_agente"]."'>".substr(strtoupper($row["nombre"]),0,20)."</a></b></td>"; // Operating System icon echo "<td class='$tdcolor' align='center'> <img src='images/".dame_so_icon($row["id_os"])."'></td>"; @@ -191,7 +204,7 @@ if (mysql_num_rows($result)){ <img src='images/groups_small/".show_icon_group($id_grupo).".png' class='bot' border='0'> ".dame_grupo($id_grupo)."</td>"; // Description - echo "<td class='$tdcolor'>".$row["comentarios"]."</td>"; + echo "<td class='".$tdcolor."f9'>".$row["comentarios"]."</td>"; // Action echo "<td class='$tdcolor' align='center'><a href='index.php?sec=gagente&sec2=godmode/agentes/modificar_agente& borrar_agente=".$row["id_agente"]."'"; @@ -200,7 +213,7 @@ if (mysql_num_rows($result)){ } } echo "</table>"; - echo "<table width='700'><tr><td align='right'>"; + echo "<table width='750'><tr><td align='right'>"; } else { echo "<div class='nf'>".$lang_label["no_agent_def"]."</div>"; echo " </td></tr><tr><td>"; diff --git a/pandora_console/include/functions.php b/pandora_console/include/functions.php index f785fa23da..1be0f0701d 100644 --- a/pandora_console/include/functions.php +++ b/pandora_console/include/functions.php @@ -1,28 +1,14 @@ <?php -// Pandora FMS - the Free monitoring system +// Pandora FMS - the Free Monitoring System // ======================================== -// Copyright (c) 2004-2007 Sancho Lerena, slerena@gmail.com -// Main PHP/SQL code development and project architecture and management +// Copyright (c) 2004-2008 Sancho Lerena, slerena@gmail.com +// Main PHP/SQL code development, project architecture and management. // Copyright (c) 2004-2007 Raul Mateos Martin, raulofpandora@gmail.com -// CSS and some PHP additions -// Copyright (c) 2006-2007 Jonathan Barajas, jonathan.barajas[AT]gmail[DOT]com -// Javascript Active Console code. -// Copyright (c) 2006 Jose Navarro <contacto@indiseg.net> -// Additions to Pandora FMS 1.2 graph code and new XML reporting template management -// Copyright (c) 2005-2007 Artica Soluciones Tecnologicas, info@artica.es -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; version 2 -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -// --------------------------------------------------------------- +// CSS and some PHP code additions +// Please see http://pandora.sourceforge.net for full contribution list + + // input: var, string. // mesg, mesage to show, var content. // --------------------------------------------------------------- @@ -524,4 +510,15 @@ function render_time ($lapse) { return $output; } +function get_parameter ($name, $default = '') { + // POST has precedence + if (isset($_POST[$name])) + return give_parameter_post ($name); + + if (isset($_GET[$name])) + return give_parameter_get ($name); + + return $default; +} + ?> diff --git a/pandora_console/include/functions_db.php b/pandora_console/include/functions_db.php index e916f3903b..4fb41fbbf7 100644 --- a/pandora_console/include/functions_db.php +++ b/pandora_console/include/functions_db.php @@ -1,26 +1,13 @@ <?php -// Pandora FMS - the Free monitoring system +// Pandora FMS - the Free Monitoring System // ======================================== -// Copyright (c) 2004-2007 Sancho Lerena, slerena@gmail.com -// Main PHP/SQL code development and project architecture and management +// Copyright (c) 2004-2008 Sancho Lerena, slerena@gmail.com +// Main PHP/SQL code development, project architecture and management. // Copyright (c) 2004-2007 Raul Mateos Martin, raulofpandora@gmail.com -// CSS and some PHP additions -// Copyright (c) 2006 Jose Navarro <contacto@indiseg.net> -// Additions to Pandora FMS 1.2 graph code -// Copyright (c) 2005-2007 Artica Soluciones Tecnologicas, info@artica.es -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; version 2 -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -// Database functions +// CSS and some PHP code additions +// Please see http://pandora.sourceforge.net for full contribution list + // --------------------------------------------------------------- // give_acl () @@ -611,11 +598,7 @@ function dame_email($id){ // --------------------------------------------------------------- function dame_admin($id){ - require("config.php"); - $query1="SELECT * FROM tusuario WHERE id_usuario ='".$id."'"; - $rowdup=mysql_query($query1); - $rowdup2=mysql_fetch_array($rowdup); - $admin=$rowdup2["nivel"]; + $admin = get_db_sql ("SELECT * FROM tusuario WHERE id_usuario ='$id'", "nivel"); return $admin; } @@ -1080,6 +1063,25 @@ function give_db_value ($field, $table, $field_search, $condition_value){ return $pro; } +// --------------------------------------------------------------- +// Wrapper for old function name. Should be upgraded/renamed in next versions +// --------------------------------------------------------------- + +function get_db_value ($field, $table, $field_search, $condition_value){ + give_db_value ($field, $table, $field_search, $condition_value); +} + +// --------------------------------------------------------------- +// Generic access to single field using a free SQL sentence +// --------------------------------------------------------------- + +function get_db_sql ($sentence, $field = 0){ + global $config; + if ($rowdup = mysql_fetch_array(mysql_query($sentence))) + return $rowdup[$field]; + else + return ""; +} // --------------------------------------------------------------- // Return current status from a given agent module (1 alive, 0 down) @@ -1232,7 +1234,4 @@ function return_moduledata_min_value ($id_agent_module, $period){ return (0); } - - - ?> diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css index ec7a83f44e..4b502585cb 100644 --- a/pandora_console/include/styles/pandora.css +++ b/pandora_console/include/styles/pandora.css @@ -453,7 +453,7 @@ div.title_line { } #menu_tab li.nomn:hover a, #menu_tab li:hover ul a:hover { - background: #cde0ad; + background: #66AA44; } #menu_tab li:hover a { background: #b2b08a url("../images/arrow.png") no-repeat right 3px; diff --git a/pandora_console/index.php b/pandora_console/index.php index 0fe865833e..d40ca0a62d 100644 --- a/pandora_console/index.php +++ b/pandora_console/index.php @@ -2,7 +2,7 @@ // Pandora FMS - the Free Monitoring System // ======================================== -// Copyright (c) 2004-2007 Sancho Lerena, slerena@gmail.com +// Copyright (c) 2004-2008 Sancho Lerena, slerena@gmail.com // Main PHP/SQL code development, project architecture and management. // Copyright (c) 2004-2007 Raul Mateos Martin, raulofpandora@gmail.com // CSS and some PHP code additions @@ -24,8 +24,8 @@ // Pandora FMS 1.x uses Pear Image::Graph code //Pandora Version, if not defined here it would take from config.php -$build_version="PC071216"; -$pandora_version="v1.4dev"; +$build_version="PC080109"; +$pandora_version="v1.4-dev"; global $build_version; global $pandora_version; diff --git a/pandora_console/install.php b/pandora_console/install.php index e3827bf555..5727932884 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -1,12 +1,12 @@ <?php -// Pandora FMS - the Free monitoring system +// Pandora FMS - the Free Monitoring System // ======================================== -// Copyright (c) 2004-2007 Sancho Lerena, slerena@openideas.info -// Copyright (c) 2005-2007 Artica Soluciones Tecnologicas +// Copyright (c) 2004-2008 Sancho Lerena, slerena@gmail.com +// Main PHP/SQL code development, project architecture and management. // Copyright (c) 2004-2007 Raul Mateos Martin, raulofpandora@gmail.com -// Copyright (c) 2006-2007 Jose Navarro jose@jnavarro.net -// Copyright (c) 2006-2007 Jonathan Barajas, jonathan.barajas[AT]gmail[DOT]com +// CSS and some PHP code additions +// Please see http://pandora.sourceforge.net for full contribution list // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License diff --git a/pandora_console/operation/agentes/estado_agente.php b/pandora_console/operation/agentes/estado_agente.php index c0045ca1e0..3a073d8c92 100644 --- a/pandora_console/operation/agentes/estado_agente.php +++ b/pandora_console/operation/agentes/estado_agente.php @@ -1,22 +1,11 @@ <?php -// Pandora FMS - the Free monitoring system +// Pandora FMS - the Free Monitoring System // ======================================== -// Copyright (c) 2004-2007 Sancho Lerena, slerena@openideas.info -// Copyright (c) 2005-2007 Artica Soluciones Tecnologicas +// Copyright (c) 2004-2008 Sancho Lerena, slerena@gmail.com +// Main PHP/SQL code development, project architecture and management. // Copyright (c) 2004-2007 Raul Mateos Martin, raulofpandora@gmail.com -// Copyright (c) 2006-2007 Jose Navarro jose@jnavarro.net -// Copyright (c) 2006-2007 Jonathan Barajas, jonathan.barajas[AT]gmail[DOT]com - -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation version 2 -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +// CSS and some PHP code additions +// Please see http://pandora.sourceforge.net for full contribution list // Load global vars require("include/config.php"); @@ -28,30 +17,21 @@ if (comprueba_login() == 0) { exit; } - if (isset($_GET["offset"])) - $offset = entrada_limpia($_GET["offset"]); - else - $offset = 0; - - if (isset($_GET["group_id"])) - $group_id = entrada_limpia($_GET["group_id"]); - else - $group_id = 0; - - if (isset($_POST["ag_group"])) - $ag_group = $_POST["ag_group"]; - elseif (isset($_GET["group_id"])) - $ag_group = $_GET["group_id"]; - else - $ag_group = -1; - + // Take some parameters (GET) + $offset = get_parameter ("offset", 0); + $group_id = get_parameter ("group_id", 0); + $ag_group = get_parameter ("ag_group", -1); + if (($ag_group == -1) && ($group_id != 0)) + $ag_group = $group_id; if (isset($_GET["ag_group_refresh"])){ $ag_group = $_GET["ag_group_refresh"]; } + $search = get_parameter ("search", ""); + echo "<h2>".$lang_label["ag_title"]." > ".$lang_label["summary"]."</h2>"; - - // Show group selector + + // Show group selector (POST) if (isset($_POST["ag_group"])){ $ag_group = $_POST["ag_group"]; echo "<form method='post' @@ -64,8 +44,8 @@ if (comprueba_login() == 0) { } echo "<table cellpadding='4' cellspacing='4' class='databox'><tr>"; - echo "<td>".$lang_label["group"]."</td>"; - echo "<td valign='middle'>"; + echo "<td valign='top'>".$lang_label["group"]."</td>"; + echo "<td valign='top'>"; echo "<select name='ag_group' onChange='javascript:this.form.submit();' class='w130'>"; @@ -76,27 +56,48 @@ if (comprueba_login() == 0) { $mis_grupos=list_group ($id_user); //Print combo for groups and set an array with all groups echo "</select>"; - echo "<td valign='middle'> + echo "<td valign='top'> <noscript> <input name='uptbutton' type='submit' class='sub' value='".$lang_label["show"]."'> </noscript> - </td> - </form> - </table>"; + </td></form><td valign='top'>"; + + echo $lang_label["free_text_search"]; + echo "</td><td>"; + echo "<form method='post' + action='index.php?sec=estado&sec2=operation/agentes/estado_agente + &refr=60'>"; + echo "<input type=text name='search' size='15' >"; + echo "</td><td valign='top'>"; + echo "<input name='srcbutton' type='submit' class='sub' + value='".$lang_label["search"]."'>"; + echo "</form>"; + echo "</td></table>"; + + if ($search != ""){ + $search_sql = " AND nombre LIKE '%$search%' "; + } else { + $search_sql = ""; + } + // Show only selected groups if ($ag_group > 1){ $sql="SELECT * FROM tagente WHERE id_grupo=$ag_group - AND disabled = 0 ORDER BY nombre LIMIT $offset, $block_size "; + AND disabled = 0 $search_sql ORDER BY nombre LIMIT $offset, $block_size "; $sql2="SELECT COUNT(id_agente) FROM tagente WHERE id_grupo=$ag_group - AND disabled = 0 ORDER BY nombre"; - } - else { - $sql="SELECT * FROM tagente WHERE disabled = 0 - ORDER BY nombre, id_grupo LIMIT $offset, $block_size"; - $sql2="SELECT COUNT(id_agente) FROM tagente WHERE disabled = 0 - ORDER BY nombre, id_grupo"; + AND disabled = 0 $search_sql ORDER BY nombre"; + } else { + // Is admin user ?? + if (get_db_sql ("SELECT * FROM tusuario WHERE id_usuario ='$id_user'", "nivel") == 1){ + $sql="SELECT * FROM tagente WHERE disabled = 0 $search_sql ORDER BY nombre, id_grupo LIMIT $offset, $block_size"; + $sql2="SELECT COUNT(id_agente) FROM tagente WHERE disabled = 0 $search_sql ORDER BY nombre, id_grupo"; + } else { + $sql="SELECT * FROM tagente WHERE disabled = 0 $search_sql AND id_grupo IN (SELECT id_grupo FROM tusuario_perfil WHERE id_usuario='$id_user') + ORDER BY nombre, id_grupo LIMIT $offset, $block_size"; + $sql2="SELECT COUNT(id_agente) FROM tagente WHERE disabled = 0 $search_sql AND id_grupo IN (SELECT id_grupo FROM tusuario_perfil WHERE id_usuario='$id_user') ORDER BY nombre, id_grupo"; + } } $result2=mysql_query($sql2); diff --git a/pandora_console/operation/agentes/estado_ultimopaquete.php b/pandora_console/operation/agentes/estado_ultimopaquete.php index dfbd051bc2..dcc9782039 100644 --- a/pandora_console/operation/agentes/estado_ultimopaquete.php +++ b/pandora_console/operation/agentes/estado_ultimopaquete.php @@ -1,26 +1,11 @@ <?PHP -// Pandora FMS - the Free monitoring system +// Pandora FMS - the Free Monitoring System // ======================================== -// Copyright (c) 2004-2007 Sancho Lerena, slerena@gmail.com -// Main PHP/SQL code development and project architecture and management +// Copyright (c) 2004-2008 Sancho Lerena, slerena@gmail.com +// Main PHP/SQL code development, project architecture and management. // Copyright (c) 2004-2007 Raul Mateos Martin, raulofpandora@gmail.com -// CSS and some PHP additions -// Copyright (c) 2006-2007 Jonathan Barajas, jonathan.barajas[AT]gmail[DOT]com -// Javascript Active Console code. -// Copyright (c) 2006 Jose Navarro <contacto@indiseg.net> -// Additions to Pandora FMS 1.2 graph code and new XML reporting template management -// Copyright (c) 2005-2007 Artica Soluciones Tecnologicas, info@artica.es -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; version 2 -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +// CSS and some PHP code additions +// Please see http://pandora.sourceforge.net for full contribution list ?> <!-- Javascript --> @@ -103,7 +88,7 @@ if (comprueba_login() == 0) { $id_grupo = $row_t["id_grupo"]; $id_usuario=$_SESSION["id_usuario"]; if (give_acl($id_usuario, $id_grupo, "AW")==1){ - if ($row3["id_tipo_modulo"] > 4){ + if ($row3["id_tipo_modulo"] > 4 AND ($row3["id_tipo_modulo"] < 100)){ if ($row3["flag"] == 0){ echo "<a href='index.php?sec=estado& sec2=operation/agentes/ver_agente& @@ -157,6 +142,7 @@ if (comprueba_login() == 0) { // For types not string type (3 data_string, 9 tcp_string, 14 snmp_string) if (($row3["id_tipo_modulo"] != 3) AND ($row3["id_tipo_modulo"] != 10) + AND ($row3["id_tipo_modulo"] != 100) // Type not keepalive (1.4) AND ($row3["id_tipo_modulo"] != 17)){ echo "<td class=".$tdcolor.">"; if (is_numeric($row3["datos"])) { @@ -201,9 +187,12 @@ if (comprueba_login() == 0) { } echo "<td class=".$tdcolor." width=70>"; - echo "<a href='index.php?sec=estado&sec2=operation/agentes/datos_agente&tipo=mes&id=".$row3["id_agente_modulo"]."'><img border=0 src='images/data_m.png'></a> "; - echo "<a href='index.php?sec=estado&sec2=operation/agentes/datos_agente&tipo=semana&id=".$row3["id_agente_modulo"]."'><img border=0 src='images/data_w.png'></a> "; - echo "<a href='index.php?sec=estado&sec2=operation/agentes/datos_agente&tipo=dia&id=".$row3["id_agente_modulo"]."'><img border=0 src='images/data_d.png'></a>"; + if ($row3["id_tipo_modulo"] != 100) { + echo "<a href='index.php?sec=estado&sec2=operation/agentes/datos_agente&tipo=mes&id=".$row3["id_agente_modulo"]."'><img border=0 src='images/data_m.png'></a> "; + echo "<a href='index.php?sec=estado&sec2=operation/agentes/datos_agente&tipo=semana&id=".$row3["id_agente_modulo"]."'><img border=0 src='images/data_w.png'></a> "; + echo "<a href='index.php?sec=estado&sec2=operation/agentes/datos_agente&tipo=dia&id=".$row3["id_agente_modulo"]."'><img border=0 src='images/data_d.png'></a>"; + } + echo "<td class='".$tdcolor."f9'>"; if ($row3["timestamp"] == "0000-00-00 00:00:00"){ echo $lang_label["never"]; diff --git a/pandora_console/operation/agentes/status_monitor.php b/pandora_console/operation/agentes/status_monitor.php index 1ded7e789a..523c9ab38c 100644 --- a/pandora_console/operation/agentes/status_monitor.php +++ b/pandora_console/operation/agentes/status_monitor.php @@ -18,172 +18,176 @@ // Load global vars require("include/config.php"); -if (comprueba_login() == 0) { - if ((give_acl($id_user, 0, "AR")==1) or (give_acl($id_user,0,"AW")) or (dame_admin($id_user)==1)) { - - echo "<h2>".$lang_label["ag_title"]." > "; - echo $lang_label["monitor_listing"]."</h2>"; - - if (isset($_POST["ag_group"])) - $ag_group = $_POST["ag_group"]; - elseif (isset($_GET["group_id"])) - $ag_group = $_GET["group_id"]; - else - $ag_group = -1; - if (isset($_GET["ag_group_refresh"])){ - $ag_group = $_GET["ag_group_refresh"]; - } - - if (isset($_POST["ag_group"])){ - $ag_group = $_POST["ag_group"]; - echo "<form method='post' action='index.php?sec=estado&sec2=operation/agentes/status_monitor&refr=60&ag_group_refresh=".$ag_group."'>"; - } else { - echo "<form method='post' action='index.php?sec=estado&sec2=operation/agentes/status_monitor&refr=60'>"; - } - echo "<table cellspacing='4' cellpadding='4' width='600' class='databox'>"; - echo "<tr><td valign='middle'>".$lang_label["group"]."</td>"; - echo "<td valign='middle'>"; - echo "<select name='ag_group' onChange='javascript:this.form.submit();' class='w130'>"; +if (comprueba_login() != 0) { + require ("general/noaccess.php"); + exit; +} - if ( $ag_group > 1 ){ - echo "<option value='".$ag_group."'>".dame_nombre_grupo($ag_group)."</option>"; - } - echo "<option value=1>".dame_nombre_grupo(1)."</option>"; - list_group ($id_user); - echo "</select>"; +if ((give_acl($id_user, 0, "AR")!=1) AND (give_acl($id_user,0,"AW")!=1)) { + audit_db($id_user,$REMOTE_ADDR, "ACL Violation", + "Trying to access Agent Management"); + require ("general/noaccess.php"); + exit; +} - // Module name selector - // This code thanks for an idea from Nikum, nikun_h@hotmail.com - if (isset($_POST["ag_modulename"])){ - $ag_modulename = $_POST["ag_modulename"]; - echo "<form method='post' action='index.php?sec=estado& - sec2=operation/agentes/status_monitor& - refr=60&ag_modulename=".$ag_modulename."'>"; - } else { - echo "<form method='post' action='index.php?sec=estado& - sec2=operation/agentes/status_monitor&refr=60'>"; - } - - echo "<td class='f9' style='padding-left: 10px;'>"; - echo "<img src='images/pixel_green.png' width=40 height=18><br>".$lang_label["green_light"]."</td>"; - echo "<td class='f9' style='padding-left: 10px;'>"; - echo "<img src='images/pixel_red.png' width=40 height=18><br>".$lang_label["red_light"]."</td>"; - echo "</td>"; - echo "</tr>"; - echo "<tr>"; - echo "<td valign='middle'>".$lang_label["module_name"]."</td>"; - echo "<td valign='middle'> - <select name='ag_modulename' onChange='javascript:this.form.submit();'>"; - if ( isset($ag_modulename)){ - echo "<option>".$ag_modulename."</option>"; - } - echo "<option>".$lang_label["all"]."</option>"; - $sql='SELECT DISTINCT nombre - FROM tagente_modulo - WHERE id_tipo_modulo in (2, 9, 12, 18, 6, 100)'; - $result=mysql_query($sql); - while ($row=mysql_fetch_array($result)){ - echo "<option>".$row['0']."</option>"; - } - echo "</select>"; - echo "<td valign='middle'> - <noscript><input name='uptbutton' type='submit' class='sub' - value='".$lang_label["show"]."'></noscript> - </form>"; - +echo "<h2>".$lang_label["ag_title"]." > "; +echo $lang_label["monitor_listing"]."</h2>"; - // Show only selected names & groups - if ($ag_group > 1) - $sql='SELECT * FROM tagente WHERE id_grupo='.$ag_group.' ORDER BY nombre'; - else - $sql='SELECT * FROM tagente ORDER BY id_grupo, nombre'; - - echo "</table>"; - echo "<br>"; - $color =1; - $result=mysql_query($sql); - if (mysql_num_rows($result)){ - while ($row=mysql_fetch_array($result)){ //while there are agents - if ($row["disabled"] == 0) { - if ((isset($ag_modulename)) && ($ag_modulename != $lang_label["all"])) - $query_gen='SELECT * FROM tagente_modulo - WHERE id_agente = '.$row["id_agente"].' - AND nombre = "'.entrada_limpia($_POST["ag_modulename"]).'" - AND - id_tipo_modulo in (2, 9, 12, 18, 6)'; - // generic_proc, remote_tcp_proc, ??, remote_snmp_proc, remote_icmp_proc - else - $query_gen='SELECT * FROM tagente_modulo - WHERE id_agente = '.$row["id_agente"].' - AND - id_tipo_modulo in (2, 9, 12, 18, 6) '; - $result_gen=mysql_query($query_gen); - if (mysql_num_rows ($result_gen)) { - while ($data=mysql_fetch_array($result_gen)){ - if ($color == 1){ - $tdcolor="datos"; - $color =0; - } else { - $tdcolor="datos2"; - $color =1; - } - if (!isset($string)) {$string='';} - $string=$string. "<tr><td class='$tdcolor'>"; - $string=$string. "<a href='index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente=".$data["id_agente"]."&id_agente_modulo=".$data["id_agente_modulo"]."&flag=1&tab=data&refr=60'>"; - $string=$string."<img src='images/target.png'></a>"; - $string=$string. "</td><td class='$tdcolor'>"; - $string=$string."<b><a href='index.php?sec=estado& - sec2=operation/agentes/ver_agente& - id_agente=".$data["id_agente"]."'>". - strtoupper(substr(dame_nombre_agente($data["id_agente"]),0,21))."</a></b>"; - $string=$string."</td><td class='$tdcolor'>"; - $string=$string." - <img src='images/".show_icon_type($data["id_tipo_modulo"])."' border=0> - </td>"; - $string=$string."<td class='$tdcolor'>". - substr($data["nombre"],0,21)."</td>"; - $string=$string."<td class='".$tdcolor."f9'>". - substr($data["descripcion"],0,30)."</td>"; - $string=$string."<td align='center' class='$tdcolor' width=25>"; - if ($data["max"] == $data["min"]) - $string .= "--"; - else - $data["max"]."/".$data["min"]."</td>"; - $string=$string."<td class='$tdcolor' align='center' width=25>"; - if ($data["module_interval"] == 0){ - $my_interval = give_agentinterval($data["id_agente"]); - } else { - $my_interval = $data["module_interval"]; - } - $string .= $my_interval; - - $query_gen2='SELECT * FROM tagente_estado - WHERE id_agente_modulo = '.$data["id_agente_modulo"]; - $result_gen2=mysql_query($query_gen2); - $data2=mysql_fetch_array($result_gen2); - $string=$string."<td class='$tdcolor' align='center' width=20>"; - if ($data2["datos"] > 0){ - $string=$string."<img src='images/pixel_green.png' width=40 height=18>"; - } else { - $string=$string."<img src='images/pixel_red.png' width=40 height=18>"; - } - - $string=$string."<td class='".$tdcolor."f9'>"; - $seconds = time() - $data2["utimestamp"]; - if ($seconds >= ($my_interval*2)) - $string .= "<span class='redb'>"; - else - $string .= "<span>"; - - $string .= human_time_comparation($data2["timestamp"])."</td></tr>"; +if (isset($_POST["ag_group"])) + $ag_group = $_POST["ag_group"]; +elseif (isset($_GET["group_id"])) + $ag_group = $_GET["group_id"]; +else + $ag_group = -1; +if (isset($_GET["ag_group_refresh"])){ + $ag_group = $_GET["ag_group_refresh"]; +} + +if (isset($_POST["ag_group"])){ + $ag_group = $_POST["ag_group"]; + echo "<form method='post' action='index.php?sec=estado&sec2=operation/agentes/status_monitor&refr=60&ag_group_refresh=".$ag_group."'>"; +} else { + echo "<form method='post' action='index.php?sec=estado&sec2=operation/agentes/status_monitor&refr=60'>"; +} +echo "<table cellspacing='4' cellpadding='4' width='600' class='databox'>"; +echo "<tr><td valign='middle'>".$lang_label["group"]."</td>"; +echo "<td valign='middle'>"; +echo "<select name='ag_group' onChange='javascript:this.form.submit();' class='w130'>"; + +if ( $ag_group > 1 ){ + echo "<option value='".$ag_group."'>".dame_nombre_grupo($ag_group)."</option>"; +} +echo "<option value=1>".dame_nombre_grupo(1)."</option>"; +list_group ($id_user); +echo "</select>"; + +// Module name selector +// This code thanks for an idea from Nikum, nikun_h@hotmail.com +if (isset($_POST["ag_modulename"])){ + $ag_modulename = $_POST["ag_modulename"]; + echo "<form method='post' action='index.php?sec=estado& + sec2=operation/agentes/status_monitor& + refr=60&ag_modulename=".$ag_modulename."'>"; +} else { + echo "<form method='post' action='index.php?sec=estado& + sec2=operation/agentes/status_monitor&refr=60'>"; +} + +echo "<td class='f9' style='padding-left: 10px;'>"; +echo "<img src='images/pixel_green.png' width=40 height=18><br>".$lang_label["green_light"]."</td>"; +echo "<td class='f9' style='padding-left: 10px;'>"; +echo "<img src='images/pixel_red.png' width=40 height=18><br>".$lang_label["red_light"]."</td>"; +echo "</td>"; +echo "</tr>"; +echo "<tr>"; +echo "<td valign='middle'>".$lang_label["module_name"]."</td>"; +echo "<td valign='middle'> +<select name='ag_modulename' onChange='javascript:this.form.submit();'>"; +if ( isset($ag_modulename)){ + echo "<option>".$ag_modulename."</option>"; +} +echo "<option>".$lang_label["all"]."</option>"; +$sql='SELECT DISTINCT nombre +FROM tagente_modulo +WHERE id_tipo_modulo in (2, 9, 12, 18, 6, 100)'; +$result=mysql_query($sql); +while ($row=mysql_fetch_array($result)){ + echo "<option>".$row['0']."</option>"; +} +echo "</select>"; +echo "<td valign='middle'> +<noscript><input name='uptbutton' type='submit' class='sub' +value='".$lang_label["show"]."'></noscript> +</form>"; + +// Show only selected names & groups +if ($ag_group > 1) + $sql='SELECT * FROM tagente WHERE id_grupo='.$ag_group.' ORDER BY nombre'; +else + $sql='SELECT * FROM tagente ORDER BY id_grupo, nombre'; + +echo "</table>"; +echo "<br>"; +$color =1; +$result=mysql_query($sql); +if (mysql_num_rows($result)){ + while ($row=mysql_fetch_array($result)){ //while there are agents + if ($row["disabled"] == 0) { + if ((isset($ag_modulename)) && ($ag_modulename != $lang_label["all"])){ + $query_gen='SELECT * FROM tagente_modulo + WHERE id_agente = '.$row["id_agente"].' + AND nombre = "'.entrada_limpia($_POST["ag_modulename"]).'" + AND + id_tipo_modulo in (2, 9, 12, 18, 6, 100)'; + // generic_proc, remote_tcp_proc, ??, remote_snmp_proc, remote_icmp_proc + } else { + $query_gen='SELECT * FROM tagente_modulo + WHERE id_agente = '.$row["id_agente"].' + AND + id_tipo_modulo in (2, 9, 12, 18, 6, 100)'; + } + $result_gen=mysql_query($query_gen); + if (mysql_num_rows ($result_gen)) { + while ($data=mysql_fetch_array($result_gen)){ + if ($color == 1){ + $tdcolor="datos"; + $color =0; + } else { + $tdcolor="datos2"; + $color =1; } + if (!isset($string)) {$string='';} + $string=$string. "<tr><td class='$tdcolor'>"; + $string=$string. "<a href='index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente=".$data["id_agente"]."&id_agente_modulo=".$data["id_agente_modulo"]."&flag=1&tab=data&refr=60'>"; + $string=$string."<img src='images/target.png'></a>"; + $string=$string. "</td><td class='$tdcolor'>"; + $string=$string."<b><a href='index.php?sec=estado& + sec2=operation/agentes/ver_agente& + id_agente=".$data["id_agente"]."'>". + strtoupper(substr(dame_nombre_agente($data["id_agente"]),0,21))."</a></b>"; + $string=$string."</td><td class='$tdcolor'>"; + $string=$string." + <img src='images/".show_icon_type($data["id_tipo_modulo"])."' border=0> + </td>"; + $string=$string."<td class='$tdcolor'>". + substr($data["nombre"],0,21)."</td>"; + $string=$string."<td class='".$tdcolor."f9'>". + substr($data["descripcion"],0,30)."</td>"; + + $string=$string."<td class='$tdcolor' align='center' width=25>"; + if ($data["module_interval"] == 0){ + $my_interval = give_agentinterval($data["id_agente"]); + } else { + $my_interval = $data["module_interval"]; + } + $string .= $my_interval; + + $query_gen2='SELECT * FROM tagente_estado + WHERE id_agente_modulo = '.$data["id_agente_modulo"]; + $result_gen2=mysql_query($query_gen2); + $data2=mysql_fetch_array($result_gen2); + $string=$string."<td class='$tdcolor' align='center' width=20>"; + if ($data2["datos"] > 0){ + $string=$string."<img src='images/pixel_green.png' width=40 height=18>"; + } else { + $string=$string."<img src='images/pixel_red.png' width=40 height=18>"; + } + + $string=$string."<td class='".$tdcolor."f9'>"; + $seconds = time() - $data2["utimestamp"]; + if ($seconds >= ($my_interval*2)) + $string .= "<span class='redb'>"; + else + $string .= "<span>"; + + $string .= human_time_comparation($data2["timestamp"])."</td></tr>"; } - else if($ag_group>1) {unset($string);} } } - if (isset($string)) { + } + if (isset($string)) { echo " <table cellpadding='4' cellspacing='4' width='750' class='databox'> <tr> @@ -192,21 +196,16 @@ if (comprueba_login() == 0) { <th>".$lang_label["type"]."</th> <th>".$lang_label["name"]."</th> <th>".$lang_label["description"]."</th> - <th>".$lang_label["max_min"]."</th> <th>".$lang_label["interval"]."</th> <th>".$lang_label["status"]."</th> <th>".$lang_label["timestamp"]."</th>"; echo $string; //the built table of monitors echo "</table>"; - } - else { - echo "<div class='nf'>".$lang_label["no_monitors_g"]."</div>"; - } } else { - echo "<div class='nf'>".$lang_label["no_agent"]."</div>"; + echo "<div class='nf'>".$lang_label["no_monitors_g"]."</div>"; } - -} //end acl -} //end login +} else { + echo "<div class='nf'>".$lang_label["no_agent"]."</div>"; +} ?> diff --git a/pandora_console/operation/agentes/tactical.php b/pandora_console/operation/agentes/tactical.php index e088d616da..eb7bc76694 100644 --- a/pandora_console/operation/agentes/tactical.php +++ b/pandora_console/operation/agentes/tactical.php @@ -1,25 +1,14 @@ <?php -// Pandora FMS - the Free monitoring system +// Pandora FMS - the Free Monitoring System // ======================================== -// Copyright (c) 2004-2007 Sancho Lerena, slerena@gmail.com -// Main PHP/SQL code development and project architecture and management +// Copyright (c) 2004-2008 Sancho Lerena, slerena@gmail.com +// Main PHP/SQL code development, project architecture and management. // Copyright (c) 2004-2007 Raul Mateos Martin, raulofpandora@gmail.com -// CSS and some PHP additions -// Copyright (c) 2006 Jose Navarro <contacto@indiseg.net> -// Additions to Pandora FMS 1.2 graph code -// Copyright (c) 2005-2007 Artica Soluciones Tecnologicas, info@artica.es -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; version 2 -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +// CSS and some PHP code additions +// Please see http://pandora.sourceforge.net for full contribution list + + // Load global vars require("include/config.php"); @@ -149,28 +138,15 @@ echo "<h2>".$lang_label["tactical_indicator"]."</h2>"; echo "<img src='reporting/fgraph.php?tipo=odo_tactic&value1=$global_health&value2=$data_health&value3=$monitor_health'>"; - - // Server information // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - $sql='SELECT * FROM tserver'; + // Get total modules defined (network) + $total_modules_network = get_db_sql ("SELECT COUNT(id_agente_modulo) FROM tagente_modulo WHERE id_tipo_modulo > 4 AND id_tipo_modulo != 100"); + // Get total modules defined (data) + $total_modules_data = get_db_sql ("SELECT COUNT(id_agente_modulo) FROM tagente_modulo WHERE id_tipo_modulo < 5 OR id_tipo_modulo = 100"); echo "<h2>".$lang_label["tactical_server_information"]."</h2>"; - // Get total modules defined (network) - $sql1='SELECT COUNT(id_agente_modulo) FROM tagente_modulo WHERE id_tipo_modulo > 4'; - $result1=mysql_query($sql1); - $row1=mysql_fetch_array($result1); - $total_modules = $row1[0]; - - // Get total modules defined (data) - $sql1='SELECT COUNT(id_agente_modulo) FROM tagente_modulo WHERE id_tipo_modulo < 5 AND id_tipo_modulo != -1'; - if ($result1=mysql_query($sql1)){ - $row1=mysql_fetch_array($result1); - $total_modules_data = $row1[0]; - } else - $total_modules_data = 0; - // Connect DataBase + $sql='SELECT * FROM tserver'; $result=mysql_query($sql); if (mysql_num_rows($result)){ echo "<table cellpadding='4' cellspacing='4' witdh='720' class='databox'>"; diff --git a/pandora_console/operation/servers/view_server.php b/pandora_console/operation/servers/view_server.php index e05f46ce7c..932719935a 100644 --- a/pandora_console/operation/servers/view_server.php +++ b/pandora_console/operation/servers/view_server.php @@ -1,21 +1,12 @@ <?php -// Pandora - the Free monitoring system -// ==================================== -// Copyright (c) 2004-2006 Sancho Lerena, slerena@gmail.com -// Copyright (c) 2005-2006 Artica Soluciones Tecnologicas S.L, info@artica.es -// Copyright (c) 2004-2006 Raul Mateos Martin, raulofpandora@gmail.com -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +// Pandora FMS - the Free Monitoring System +// ======================================== +// Copyright (c) 2004-2008 Sancho Lerena, slerena@gmail.com +// Main PHP/SQL code development, project architecture and management. +// Copyright (c) 2004-2007 Raul Mateos Martin, raulofpandora@gmail.com +// CSS and some PHP code additions +// Please see http://pandora.sourceforge.net for full contribution list // Load global vars require("include/config.php"); @@ -26,27 +17,17 @@ $total_modules_data = 0; if (comprueba_login() == 0) { if ((give_acl($id_user, 0, "AR")==1) or (give_acl($id_user,0,"AW")) or (dame_admin($id_user)==1)) { - - $sql='SELECT * FROM tserver'; - echo "<h2>".$lang_label["view_servers"]." > "; echo $lang_label["server_detail"]."</h2>"; // Get total modules defined (network) - $sql1='SELECT COUNT(id_agente_modulo) FROM tagente_modulo WHERE id_tipo_modulo > 4'; - $result1=mysql_query($sql1); - $row1=mysql_fetch_array($result1); - $total_modules_network = $row1[0]; + $total_modules_network = get_db_sql ("SELECT COUNT(id_agente_modulo) FROM tagente_modulo WHERE id_tipo_modulo > 4 AND id_tipo_modulo != 100"); // Get total modules defined (data) - $sql1='SELECT COUNT(id_agente_modulo) FROM tagente_modulo WHERE id_tipo_modulo < 5 AND id_tipo_modulo != -1'; - if ($result1=mysql_query($sql1)){ - $row1=mysql_fetch_array($result1); - $total_modules_data = $row1[0]; - } else - $total_modules_data = 0; + $total_modules_data = get_db_sql ("SELECT COUNT(id_agente_modulo) FROM tagente_modulo WHERE id_tipo_modulo < 5 OR id_tipo_modulo = 100"); // Connect DataBase + $sql='SELECT * FROM tserver'; $result=mysql_query($sql); if (mysql_num_rows($result)){ echo "<table cellpadding='4' cellspacing='4' witdh='720' class='databox'>"; @@ -86,11 +67,8 @@ if (comprueba_login() == 0) { $modules_server = 0; if (($network_server == 1) OR ($data_server == 1)){ - // Get total modules defined for this server (data modules) - $sql2 = "SELECT COUNT(running_by) FROM tagente_estado WHERE running_by = $id_server"; - $result2=mysql_query($sql2); - $row2=mysql_fetch_array($result2); - $modules_server = $row2[0]; + // Get total modules defined for this server (data modules) + $modules_server = get_db_sql ("SELECT COUNT(running_by) FROM tagente_estado WHERE running_by = $id_server"); } echo "<tr><td class='$tdcolor'>"; if ($recon_server == 1) @@ -122,16 +100,8 @@ if (comprueba_login() == 0) { $total_modules_temp = $total_modules_data; } } elseif ($recon_server == 1){ - - $sql2 = "SELECT COUNT(id_rt) FROM trecon_task WHERE id_network_server = $id_server"; - $result2=mysql_query($sql2); - $row2=mysql_fetch_array($result2); - $modules_server = $row2[0]; - - $sql2 = "SELECT COUNT(id_rt) FROM trecon_task"; - $result2=mysql_query($sql2); - $row2=mysql_fetch_array($result2); - $total_modules = $row2[0]; + $modules_server = get_db_sql ("SELECT COUNT(id_rt) FROM trecon_task WHERE id_network_server = $id_server"); + $total_modules = get_db_sql ("SELECT COUNT(id_rt) FROM trecon_task"); if ($total_modules == 0) $percentil = 0; else @@ -164,7 +134,7 @@ if (comprueba_login() == 0) { // This only checks for agent with a last_execution_try of at // maximun: ten times it's interval.... if is bigger, it probably // will be because an agent down - $sql1 = "SELECT MAX(last_execution_try), current_interval, id_agente FROM tagente_estado WHERE last_execution_try > 0 AND (tagente_estado.last_execution_try + (tagente_estado.current_interval *10) > UNIX_TIMESTAMP()) AND running_by=$id_server GROUP BY id_agente ORDER BY 1 ASC LIMIT 1"; + $sql1 = "SELECT MAX(last_execution_try), current_interval, id_agente FROM tagente_estado WHERE last_execution_try > 0 AND (tagente_estado.last_execution_try + (tagente_estado.current_interval * 10) > UNIX_TIMESTAMP()) AND running_by=$id_server GROUP BY id_agente ORDER BY 1 ASC LIMIT 1"; $nowtime = time(); $maxlag=0; if ($result1=mysql_query($sql1)) diff --git a/pandora_console/operation/servers/view_server_detail.php b/pandora_console/operation/servers/view_server_detail.php index 4f1b57ab1e..28f86f83e1 100644 --- a/pandora_console/operation/servers/view_server_detail.php +++ b/pandora_console/operation/servers/view_server_detail.php @@ -1,8 +1,12 @@ <?php -// Pandora - the Free monitoring system -// ==================================== -// Copyright (c) 2004-2007 Sancho Lerena, slerena@gmail.com +// Pandora FMS - the Free Monitoring System +// ======================================== +// Copyright (c) 2004-2008 Sancho Lerena, slerena@gmail.com +// Main PHP/SQL code development, project architecture and management. +// Copyright (c) 2004-2007 Raul Mateos Martin, raulofpandora@gmail.com +// CSS and some PHP code additions +// Please see http://pandora.sourceforge.net for full contribution list // Load global vars require("include/config.php"); diff --git a/pandora_console/pandoradb.sql b/pandora_console/pandoradb.sql index 167821fd7b..bc97d25b96 100644 --- a/pandora_console/pandoradb.sql +++ b/pandora_console/pandoradb.sql @@ -1,5 +1,6 @@ - --- Pandora FMS official tables for 1.3 version +-------------------------------------------------------------- +-- Pandora FMS official tables for 1.4 version -- +-------------------------------------------------------------- CREATE TABLE `taddress` ( `id_a` bigint(20) unsigned NOT NULL auto_increment, @@ -43,6 +44,7 @@ CREATE TABLE `tagente` ( `disabled` tinyint(2) NOT NULL default '0', `agent_type` int(2) unsigned NOT NULL default '0', `id_server` int(10) unsigned default '0', + `id_parent` mediumint(8) unsigned default '0', PRIMARY KEY (`id_agente`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; @@ -58,6 +60,17 @@ CREATE TABLE `tagente_datos` ( KEY `data_index2` (`id_agente`,`id_agente_modulo`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `tagent_data_image` ( + `id` bigint(20) unsigned NOT NULL auto_increment, + `id_agente_modulo` mediumint(8) unsigned NOT NULL default '0', + `blob` blob NOT NULL, + `filename` varchar(255) default '', + `timestamp` datetime NOT NULL default '0000-00-00 00:00:00', + `id_agente` mediumint(8) unsigned NOT NULL default '0', + `utimestamp` int(10) unsigned default '0', + PRIMARY KEY (`id`), + KEY `img_idx2` (`id_agente`,`id_agente_modulo`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `tagente_datos_inc` ( `id_adi` bigint(20) unsigned NOT NULL auto_increment, @@ -102,13 +115,6 @@ CREATE TABLE `tagente_estado` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -CREATE TABLE `tmodule` ( - `id_module` int(11) unsigned NOT NULL auto_increment, - `name` varchar(100) NOT NULL default '', - PRIMARY KEY (`id_module`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - - CREATE TABLE `tagente_modulo` ( `id_agente_modulo` bigint(100) unsigned NOT NULL auto_increment, `id_agente` int(11) NOT NULL default '0', @@ -128,6 +134,7 @@ CREATE TABLE `tagente_modulo` ( `flag` tinyint(3) unsigned default '1', `id_modulo` int(11) unsigned NULL default 0, `disabled` tinyint(3) unsigned default '0', + `export` tinyint(3) unsigned default '0', PRIMARY KEY (`id_agente_modulo`, `id_agente`), KEY `tam_agente` (`id_agente`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; @@ -162,31 +169,45 @@ CREATE TABLE `talerta` ( PRIMARY KEY (`id_alerta`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -CREATE TABLE `talerta_agente_modulo` ( - `id_aam` int(11) unsigned NOT NULL auto_increment, - `id_agente_modulo` int(11) NOT NULL default '0', - `id_alerta` int(11) NOT NULL default '0', - `al_campo1` varchar(255) default '', - `al_campo2` varchar(255) default '', - `al_campo3` mediumtext NOT NULL, - `descripcion` varchar(255) default '', - `dis_max` double(18,2) default NULL, - `dis_min` double(18,2) default NULL, - `time_threshold` int(11) NOT NULL default '0', - `last_fired` datetime NOT NULL default '0000-00-00 00:00:00', - `max_alerts` int(4) NOT NULL default '1', - `times_fired` int(11) NOT NULL default '0', - `module_type` int(11) NOT NULL default '0', - `min_alerts` int(4) NOT NULL default '0', - `internal_counter` int(4) default '0', - `alert_text` varchar(255) default '', - `disable` int(4) default '0', - `time_from` TIME default '00:00:00', - `time_to` TIME default '00:00:00', - PRIMARY KEY (`id_aam`) +CREATE TABLE tnotification ( + `id` int(11) unsigned NOT NULL auto_increment, + `name` varchar(255) default '', + `description` varchar(255) default '', + `id_alerta` int(11) NOT NULL default '0', + `id_agent` int(11) NOT NULL default '0', + `al_f1` varchar(255) default '', + `al_f2` mediumtext NOT NULL, + `al_f3` mediumtext NOT NULL, + `alrec_f1` varchar(255) default '', + `alrec_f2` mediumtext NOT NULL, + `alrec_f3` mediumtext NOT NULL, + `recovery_notify` tinyint(3) default '0', + `disabled` tinyint(3) default '0', + `last_fired` datetime NOT NULL default '0000-00-00 00:00:00', + PRIMARY KEY (`id_aam`), + KEY `tnotif_indx_1` (`id_alerta`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `tnotification_component` ( + `id` int(11) unsigned NOT NULL auto_increment, + `id_notification` int(11) NOT NULL default '0', + `id_agente_modulo` int(11) NOT NULL default '0', + `dis_max` double(18,2) default NULL, + `dis_min` double(18,2) default NULL, + `alert_text` varchar(255) default '', + `time_threshold` int(11) NOT NULL default '0', + `last_fired` datetime NOT NULL default '0000-00-00 00:00:00', + `max_alerts` int(4) NOT NULL default '1', + `times_fired` int(11) NOT NULL default '0', + `module_type` int(11) NOT NULL default '0', + `min_alerts` int(4) NOT NULL default '0', + `internal_counter` int(4) default '0', + `disabled` int(4) default '0', + `time_from` TIME default '00:00:00', + `time_to` TIME default '00:00:00', + PRIMARY KEY (`id_aam`), + KEY `tnotifcom_indx_1` (`id_notification`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `tattachment` ( `id_attachment` bigint(20) unsigned NOT NULL auto_increment, diff --git a/pandora_console/pandoradb_13_to_14.sql b/pandora_console/pandoradb_13_to_14.sql new file mode 100644 index 0000000000..959608acb5 --- /dev/null +++ b/pandora_console/pandoradb_13_to_14.sql @@ -0,0 +1,72 @@ + +---------------------------------------------------------------------- +-- Database schema modifications to upgrade from 1.3 to 1.4 version +---------------------------------------------------------------------- + +-- Old tables deteled + +--DROP TABLE tmodule; +--DROP TABLE talerta_agente_modulo; +-- There is not migration code yet, do not delete without make backup ! + + +-- New tables + +CREATE TABLE `tagent_data_image` ( + `id` bigint(20) unsigned NOT NULL auto_increment, + `id_agente_modulo` mediumint(8) unsigned NOT NULL default '0', + `blob` blob NOT NULL, + `filename` varchar(255) default '', + `timestamp` datetime NOT NULL default '0000-00-00 00:00:00', + `id_agente` mediumint(8) unsigned NOT NULL default '0', + `utimestamp` int(10) unsigned default '0', + PRIMARY KEY (`id`), + KEY `img_idx2` (`id_agente`,`id_agente_modulo`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE tnotification ( + `id` int(11) unsigned NOT NULL auto_increment, + `name` varchar(255) default '', + `description` varchar(255) default '', + `id_alerta` int(11) NOT NULL default '0', + `id_agent` int(11) NOT NULL default '0', + `al_f1` varchar(255) default '', + `al_f2` mediumtext NOT NULL, + `al_f3` mediumtext NOT NULL, + `alrec_f1` varchar(255) default '', + `alrec_f2` mediumtext NOT NULL, + `alrec_f3` mediumtext NOT NULL, + `recovery_notify` tinyint(3) default '0', + `disabled` tinyint(3) default '0', + `last_fired` datetime NOT NULL default '0000-00-00 00:00:00', + PRIMARY KEY (`id_aam`), + KEY `tnotif_indx_1` (`id_alerta`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `tnotification_component` ( + `id` int(11) unsigned NOT NULL auto_increment, + `id_notification` int(11) NOT NULL default '0', + `id_agente_modulo` int(11) NOT NULL default '0', + `dis_max` double(18,2) default NULL, + `dis_min` double(18,2) default NULL, + `alert_text` varchar(255) default '', + `time_threshold` int(11) NOT NULL default '0', + `last_fired` datetime NOT NULL default '0000-00-00 00:00:00', + `max_alerts` int(4) NOT NULL default '1', + `min_alerts` int(4) NOT NULL default '0', + `logical_type` tinyint(3) NOT NULL default '0', +-- 0 OR, 1 AND, 2 NOT + `internal_counter` int(4) default '0', + `times_fired` int(11) NOT NULL default '0', + `disabled` int(4) default '0', + `time_from` TIME default '00:00:00', + `time_to` TIME default '00:00:00', + PRIMARY KEY (`id_aam`), + KEY `tnotifcom_indx_1` (`id_notification`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- Updated tables + +ALTER TABLE tagente_modulo ADD COLUMN `disable` tinyint(3) unsigned NULL default 0; +ALTER TABLE tagente_modulo ADD COLUMN `export` tinyint(3) unsigned default '0'; +ALTER TABLE tagente ADD COLUMN `id_parent` mediumint(8) unsigned default '0'; diff --git a/pandora_console/pandoradb_data.sql b/pandora_console/pandoradb_data.sql index 7353ac5a69..0c9c38cf81 100644 --- a/pandora_console/pandoradb_data.sql +++ b/pandora_console/pandoradb_data.sql @@ -161,7 +161,7 @@ INSERT INTO `torigen` VALUES ('Operating System event'),('IDS events'),('Firewal -- Dumping data for table `ttipo_modulo` -- -INSERT INTO `ttipo_modulo` VALUES (1,'generic_data',0,'Generic module to adquire numeric data','mod_data.png'),(2,'generic_proc',1,'Generic module to adquire boolean data','mod_proc.png'),(3,'generic_data_string',0,'Generic module to adquire alphanumeric data','mod_string.png'),(4,'generic_data_inc',0,'Generic module to adquire numeric incremental data','mod_data_inc.png'),(6,'remote_icmp_proc',3,'Remote ICMP network agent, boolean data','mod_icmp_proc.png'),(7,'remote_icmp',2,'Remote ICMP network agent (latency)','mod_icmp_data.png'),(8,'remote_tcp',2,'Remote TCP network agent, numeric data','mod_tcp_data.png'),(9,'remote_tcp_proc',3,'Remote TCP network agent, boolean data','mod_tcp_proc.png'),(10,'remote_tcp_string',2,'Remote TCP network agent, alphanumeric data','mod_tcp_string.png'),(11,'remote_tcp_inc',2,'Remote TCP network agent, incremental data','mod_tcp_inc.png'),(15,'remote_snmp',2,'Remote SNMP network agent, numeric data','mod_snmp_data.png'),(16,'remote_snmp_inc',2,'Remote SNMP network agent, incremental data','mod_snmp_inc.png'),(17,'remote_snmp_string',2,'Remote SNMP network agent, alphanumeric data','mod_snmp_string.png'),(18,'remote_snmp_proc',1,'Remote SNMP network agent, boolean data','mod_snmp_proc.png'), (100,'keep_alive',-1,'KeepAlive','mod_keepalive.png'); +INSERT INTO `ttipo_modulo` VALUES (1,'generic_data',0,'Generic module to adquire numeric data','mod_data.png'),(2,'generic_proc',1,'Generic module to adquire boolean data','mod_proc.png'),(3,'generic_data_string',0,'Generic module to adquire alphanumeric data','mod_string.png'),(4,'generic_data_inc',0,'Generic module to adquire numeric incremental data','mod_data_inc.png'),(6,'remote_icmp_proc',3,'Remote ICMP network agent, boolean data','mod_icmp_proc.png'),(7,'remote_icmp',2,'Remote ICMP network agent (latency)','mod_icmp_data.png'),(8,'remote_tcp',2,'Remote TCP network agent, numeric data','mod_tcp_data.png'),(9,'remote_tcp_proc',3,'Remote TCP network agent, boolean data','mod_tcp_proc.png'),(10,'remote_tcp_string',2,'Remote TCP network agent, alphanumeric data','mod_tcp_string.png'),(11,'remote_tcp_inc',2,'Remote TCP network agent, incremental data','mod_tcp_inc.png'),(15,'remote_snmp',2,'Remote SNMP network agent, numeric data','mod_snmp_data.png'),(16,'remote_snmp_inc',2,'Remote SNMP network agent, incremental data','mod_snmp_inc.png'),(17,'remote_snmp_string',2,'Remote SNMP network agent, alphanumeric data','mod_snmp_string.png'),(18,'remote_snmp_proc',1,'Remote SNMP network agent, boolean data','mod_snmp_proc.png'), (100,'keep_alive',-1,'KeepAlive','mod_keepalive.png'), (19, 'image_jpg',4,'Image JPG data', 'mod_image_jpg.png'), (20, 'image_png',4,'Image PNG data', 'mod_image_png.png'), (21, 'async_proc', 5, 'Asyncronous proc data', 'mod_async_proc.png'), (22, 'async_data', 5, 'Asyncronous numeric data', 'mod_async_data.png'), (23, 'async_string', 5, 'Asyncronous string data', 'mod_async_string.png'); -- -- Dumping data for table `tusuario` diff --git a/pandora_console/pandoradbdata_13_to_14.sql b/pandora_console/pandoradbdata_13_to_14.sql new file mode 100644 index 0000000000..0c38e13102 --- /dev/null +++ b/pandora_console/pandoradbdata_13_to_14.sql @@ -0,0 +1,12 @@ + + +-- New data + +UPDATE tconfig SET value = '1.4dev' WHERE token = 'db_scheme_version'; +UPDATE tconfig SET value = '1.4dev' WHERE token = 'db_scheme_build'; + +INSERT INTO `ttipo_modulo` VALUES (100,'keep_alive',-1,'KeepAlive','mod_keepalive.png'), (19, 'image_jpg',4,'Image JPG data', 'mod_image_jpg.png'), (20, 'image_png',4,'Image PNG data', 'mod_image_png.png'), (21, 'async_proc', 5, 'Asyncronous proc data', 'mod_async_proc.png'), (22, 'async_data', 5, 'Asyncronous numeric data', 'mod_async_data.png'), (23, 'async_string', 5, 'Asyncronous string data', 'mod_async_string.png'); + +INSERT INTO tconfig (token, value) VALUES ('string_days_purge','7'); +INSERT INTO tconfig (token, value) VALUES ('image_days_purge','2'); +