2012-01-24 Ramon Novoa <rnovoa@artica.es>

* include/functions_config.php,
	  include/functions_netflow.php,
	  pandoradb.sql,
	  pandoradb.postgreSQL.sql,
	  pandoradb.oracle.sql,
	  operation/netflow/nf_live_view.php,
	  extras/pandoradb_migrate_4.0.x_to_4.1.mysql.sql,
	  extras/pandoradb_migrate_4.0.x_to_4.1.oracle.sql,
	  extras/pandoradb_migrate_4.0.x_to_4.1.postgreSQL.sql,
	  godmode/agentes/module_manager_editor_prediction.php,
	  godmode/agentes/configurar_agente.php,
	  godmode/menu.php,
	  godmode/netflow/nf_edit_form.php: Added support for enterprise
	  netflow modules.

	* godmode/netflow/nf_manage.php: Moved to
	  godmode/setup/setup_netflow.php.

	* godmode/netflow/nf_option_form.php: Removed from repository. Not used.



git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@5416 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
This commit is contained in:
ramonn 2012-01-24 17:11:12 +00:00
parent ac3c96cab4
commit 037c9c54a9
16 changed files with 131 additions and 194 deletions

View File

@ -1,3 +1,25 @@
2012-01-24 Ramon Novoa <rnovoa@artica.es>
* include/functions_config.php,
include/functions_netflow.php,
pandoradb.sql,
pandoradb.postgreSQL.sql,
pandoradb.oracle.sql,
operation/netflow/nf_live_view.php,
extras/pandoradb_migrate_4.0.x_to_4.1.mysql.sql,
extras/pandoradb_migrate_4.0.x_to_4.1.oracle.sql,
extras/pandoradb_migrate_4.0.x_to_4.1.postgreSQL.sql,
godmode/agentes/module_manager_editor_prediction.php,
godmode/agentes/configurar_agente.php,
godmode/menu.php,
godmode/netflow/nf_edit_form.php: Added support for enterprise
netflow modules.
* godmode/netflow/nf_manage.php: Moved to
godmode/setup/setup_netflow.php.
* godmode/netflow/nf_option_form.php: Removed from repository. Not used.
2010-01-24 Javier Lanz <javier.lanz@artica.es>
* godmode/massive/massive_delete_modules.php: Fixed a small entities
bug. Added io_safe_output

View File

@ -4,12 +4,14 @@
CREATE TABLE IF NOT EXISTS `tnetflow_filter` (
`id_sg` int(10) unsigned NOT NULL auto_increment,
`id_name` varchar(60) NOT NULL default '0',
`id_name` varchar(600) NOT NULL default '0',
`id_group` int(10),
`ip_dst` varchar(100),
`ip_src` varchar(100),
`dst_port` varchar(100),
`src_port` varchar(100),
`ip_dst` TEXT NOT NULL,
`ip_src` TEXT NOT NULL,
`dst_port` TEXT NOT NULL,
`src_port` TEXT NOT NULL,
`advanced_filter` TEXT NOT NULL,
`filter_args` TEXT NOT NULL,
`aggregate` varchar(60),
`output` varchar(60),
PRIMARY KEY (`id_sg`)
@ -34,7 +36,7 @@ PRIMARY KEY(`id_report`)
CREATE TABLE IF NOT EXISTS `tnetflow_report_content` (
`id_rc` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`id_report` INTEGER UNSIGNED NOT NULL default 0,
`id_filter` INTEGER UNSIGNED NOT NULL default 0,
`id_filter` INTEGER UNSIGNED NOT NULL default 0,
`date` bigint(20) NOT NULL default '0',
`period` int(11) NOT NULL default 0,
`max` int (11) NOT NULL default 0,
@ -42,10 +44,10 @@ CREATE TABLE IF NOT EXISTS `tnetflow_report_content` (
`order` int (11) NOT NULL default 0,
PRIMARY KEY(`id_rc`),
FOREIGN KEY (`id_report`) REFERENCES tnetflow_report(`id_report`)
ON UPDATE CASCADE ON DELETE CASCADE,
ON DELETE CASCADE,
FOREIGN KEY (`id_filter`) REFERENCES tnetflow_filter(`id_sg`)
ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET=utf8;
) ENGINE = InnoDB DEFAULT CHARSET=utf8
-- -----------------------------------------------------
-- Table `tusuario`

View File

@ -10,12 +10,14 @@ alter table tusuario add (disabled NUMBER(10,0) default 0 NOT NULL);
CREATE TABLE tnetflow_filter (
id_sg NUMBER(10, 0) NOT NULL PRIMARY KEY,
id_name VARCHAR2(100) NOT NULL,
id_name VARCHAR2(600) NOT NULL,
id_group NUMBER(10, 0),
ip_dst VARCHAR2(100),
ip_src VARCHAR2(100),
dst_port VARCHAR2(100),
src_port VARCHAR2(100),
ip_dst CLOB NOT NULL,
ip_src CLOB NOT NULL,
dst_port CLOB NOT NULL,
src_port CLOB NOT NULL,
advanced_filter CLOB NOT NULL,
filter_args CLOB NOT NULL,
aggregate VARCHAR2(60),
output VARCHAR2(60)
);

View File

@ -9,12 +9,14 @@ ALTER TABLE "tusuario" ADD COLUMN "disabled" INTEGER NOT NULL DEFAULT 0;
-- -----------------------------------------------------
CREATE TABLE "tnetflow_filter" (
"id_sg" SERIAL NOT NULL PRIMARY KEY,
"id_name" varchar(60) NOT NULL default '',
"id_name" varchar(600) NOT NULL default '',
"id_group" INTEGER,
"ip_dst" varchar(100),
"ip_src" varchar(100),
"dst_port" varchar(100),
"src_port" varchar(100),
"ip_dst" TEXT NOT NULL,
"ip_src" TEXT NOT NULL,
"dst_port" TEXT NOT NULL,
"src_port" TEXT NOT NULL,
"advanced_filter" TEXT NOT NULL,
"filter_args" TEXT NOT NULL,
"aggregate" varchar(60),
"output" varchar(60)
);

View File

@ -706,7 +706,7 @@ if ($update_module || $create_module) {
$id_tag = (array) get_parameter('id_tag_selected');
$serialize_ops = (string) get_parameter('serialize_ops');
if($prediction_module < 3) {
if($prediction_module != 3) {
unset($serialize_ops);
enterprise_hook('modules_delete_synthetic_operations', array($id_agent_module));
}

View File

@ -28,6 +28,7 @@ $row = db_get_row_sql($sql);
$is_service = false;
$is_synthetic = false;
$is_synthetic_avg = false;
$is_netflow = false;
$ops = false;
if ($row !== false && is_array($row)) {
$prediction_module = $row['prediction_module'];
@ -56,6 +57,10 @@ if ($row !== false && is_array($row)) {
$custom_integer_1 = 0;
$custom_integer_2 = 0;
break;
case 4:
$is_netflow = true;
$custom_integer_2 = 0;
break;
default:
$prediction_module = $custom_integer_1;
}
@ -79,7 +84,7 @@ $data[0] = __('Source module');
$data[0] .= ui_print_help_icon ('prediction_source_module', true);
$data[1] = '';
// Services and Synthetic are an Enterprise feature.
$module_service_synthetic_selector = enterprise_hook('get_module_service_synthetic_selector', array($is_service, $is_synthetic, $is_synthetic_avg));
$module_service_synthetic_selector = enterprise_hook('get_module_service_synthetic_selector', array($is_service, $is_synthetic, $is_synthetic_avg, $is_netflow));
if ($module_service_synthetic_selector !== ENTERPRISE_NOT_HOOK) {
$data[1] = $module_service_synthetic_selector;
@ -145,6 +150,18 @@ if ($synthetic_module_form !== ENTERPRISE_NOT_HOOK) {
push_table_simple ($data, 'synthetic_module');
}
// Netflow modules are an Enterprise feature.
$netflow_module_form = enterprise_hook ('get_netflow_module_form', array($custom_integer_1));
if ($netflow_module_form !== ENTERPRISE_NOT_HOOK) {
$data = array();
$data[0] = '';
$data[1] = $netflow_module_form;
$table_simple->colspan['netflow_module_form'][1] = 3;
push_table_simple ($data, 'netflow_module');
}
/* Removed common useless parameter */
unset ($table_advanced->data[3]);
unset ($table_advanced->data[2][2]);
@ -154,7 +171,7 @@ unset ($table_advanced->data[2][3]);
$(document).ready(function() {
agent_module_autocomplete ("#text_agent_name", "#id_agente", "#prediction_module");
<?php
enterprise_hook('setup_services_synth', array($is_service, $is_synthetic, $is_synthetic_avg, $ops));
enterprise_hook('setup_services_synth', array($is_service, $is_synthetic, $is_synthetic_avg, $is_netflow, $ops));
?>
});

View File

@ -212,7 +212,7 @@ if (check_acl ($config['id_user'], 0, "PM")) {
$sub["godmode/setup/setup_visuals"]["text"] = __('Visual styles');
$sub["godmode/setup/file_manager"]["text"] = __('File manager');
if ($config['activate_netflow'])
$sub["godmode/netflow/nf_manage"]["text"] = __('Netflow');
$sub["godmode/setup/setup_netflow"]["text"] = __('Netflow');
if ($config['activate_gis'])
$sub["godmode/setup/gis"]["text"] = __('Map conections GIS');
$sub["godmode/setup/links"]["text"] = __('Links');

View File

@ -93,18 +93,22 @@ if ($update) {
if ($name == '') {
ui_print_error_message (__('Not updated. Blank name'));
} else {
$result = db_process_sql_update ('tnetflow_filter',
array ('id_sg' => $id,
'id_name' => $name,
'id_group' => $assign_group,
'aggregate' => $aggregate,
'ip_dst' => $ip_dst,
'ip_src' => $ip_src,
'dst_port' => $dst_port,
'src_port' => $src_port,
'advanced_filter' => $advanced_filter,
'output' => $output),
array ('id_sg' => $id));
$values = array ('id_sg' => $id,
'id_name' => $name,
'id_group' => $assign_group,
'aggregate' => $aggregate,
'ip_dst' => $ip_dst,
'ip_src' => $ip_src,
'dst_port' => $dst_port,
'src_port' => $src_port,
'advanced_filter' => $advanced_filter,
'output' => $output
);
// Save filter args
$values['filter_args'] = netflow_get_filter_arguments ($values);
$result = db_process_sql_update ('tnetflow_filter', $values, array ('id_sg' => $id));
ui_print_result_message ($result,
__('Successfully updated'),
@ -134,6 +138,9 @@ if ($create){
'advanced_filter'=>$advanced_filter,
'output'=>$output
);
// Save filter args
$values['filter_args'] = netflow_get_filter_arguments ($values);
$id = db_process_sql_insert('tnetflow_filter', $values);
if ($id === false) {

View File

@ -1,143 +0,0 @@
<?php
// Pandora FMS - http://pandorafms.com
// ==================================================
// Copyright (c) 2005-2011 Artica Soluciones Tecnologicas
// Please see http://pandorafms.org 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
// 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.
global $config;
include_once("include/functions_ui.php");
include_once("include/functions_netflow.php");
include_once ("include/functions_users.php");
include_once ("include/functions_groups.php");
check_login ();
if (! check_acl ($config["id_user"], 0, "AW")) {
db_pandora_audit("ACL Violation",
"Trying to access event viewer");
require ("general/noaccess.php");
return;
}
$id = (int) get_parameter ('id');
//$name = db_get_value('id_name', 'tnetflow_filter', 'id_sg', $id);
$update = (string)get_parameter('update', 0);
$create = (string)get_parameter('create', 0);
$buttons['edit'] = '<a href="index.php?sec=netf&sec2=godmode/netflow/nf_manage">'
. html_print_image ("images/edit.png", true, array ("title" => __('Option list')))
. '</a>';
//Header
ui_print_page_header (__('Netflow Options'), "images/networkmap/so_cisco_new.png", false, "", true, $buttons);
if ($id) {
$option = netflow_options_get_options ($id);
$name = $option['id_name'];
$description = $option['description'];
$path = $option['path'];
$port = $option['port'];
} else {
$name = '';
$description = '';
$path = '';
$port = '';
}
if ($update) {
$name = (string) get_parameter ('name');
$description = (int) get_parameter ('description','');
$path = get_parameter('path','');
$port = get_parameter('port','');
if ($name == '') {
ui_print_error_message (__('Not updated. Blank name'));
} else {
$result = db_process_sql_update ('tnetflow_options',
array ('id_option' => $id,
'id_name' => $name,
'description' => $description,
'path' => $path,
'port' => $port
),
array ('id_option' => $id));
ui_print_result_message ($result,
__('Successfully updated'),
__('Not updated. Error updating data'));
}
}
if ($create){
$name = (string) get_parameter ('name');
$description = (string) get_parameter ('description','');
$path = get_parameter('path','');
$port = get_parameter('port','');
if($name == db_get_value('id_name', 'tnetflow_options', 'id_name', $name)){
$result = false;
} else {
$values = array (
'id_name'=>$name,
'description' => $description,
'path'=>$path,
'port'=>$port
);
$result = db_process_sql_insert('tnetflow_options', $values);
}
if ($result === false)
echo '<h3 class="error">'.__ ('Error creating filter').'</h3>';
else
echo '<h3 class="suc">'.__ ('Option created successfully').'</h3>';
}
$table->width = '80%';
$table->border = 0;
$table->cellspacing = 3;
$table->cellpadding = 5;
$table->class = "databox_color";
$table->style[0] = 'vertical-align: top;';
$table->data = array ();
$table->data[0][0] = '<b>'.__('Name').'</b>';
$table->data[0][1] = html_print_input_text ('name', $name, false, 50, 80, true);
$table->data[1][0] = '<b>'.__('Description').'</b>';
$table->data[1][1] = html_print_textarea ('description', 2, 65, $description, '', true);
$table->data[2][0] = '<b>'.__('Path').'</b>';
//$table->data[2][1] = html_print_input_text ('path', $config['netflow_path'], false, 50, 200, true);
$table->data[2][1] = html_print_input_text ('path', $path, false, 50, 200, true);
$table->data[3][0] = '<b>'.__('Port').'</b>';
$table->data[3][1] = html_print_input_text ('port', $port, false, 10, 80, true);
echo '<form method="post" action="index.php?sec=netf&sec2=godmode/netflow/nf_option_form">';
html_print_table ($table);
echo '<div class="action-buttons" style="width: '.$table->width.'">';
if ($id) {
html_print_input_hidden ('update', 1);
html_print_input_hidden ('id', $id);
html_print_submit_button (__('Update'), 'crt', false, 'class="sub upd"');
} else {
html_print_input_hidden ('create', 1);
html_print_submit_button (__('Create'), 'crt', false, 'class="sub wand"');
}
echo '</div>';
echo '</form>';
?>

View File

@ -35,17 +35,6 @@ ui_print_page_header (__('Netflow Manager'), "images/networkmap/so_cisco_new.png
$update = (bool) get_parameter ("update");
if ($update) {
$config['netflow_path'] = (string)get_parameter('netflow_path');
$config['netflow_interval'] = (int)get_parameter('netflow_interval');
$config['netflow_daemon'] = (string)get_parameter('netflow_daemon');
db_process_sql_update ('tconfig', array ('value' => $config['netflow_path']), array ('token' => 'netflow_path'));
db_process_sql_update ('tconfig', array ('value' => $config['netflow_interval']), array ('token' => 'netflow_interval'));
db_process_sql_update ('tconfig', array ('value' => $config['netflow_daemon']), array ('token' => 'netflow_daemon'));
}
$table->width = '70%';
$table->border = 0;
$table->cellspacing = 3;
@ -68,7 +57,7 @@ html_print_table ($table);
// Update button
echo '<div class="action-buttons" style="width:70%;">';
html_print_input_hidden ('update', 1);
html_print_input_hidden ('update_config', 1);
html_print_submit_button (__('Update'), 'upd_button', false, 'class="sub upd"');
echo '</div></form>';

View File

@ -185,6 +185,9 @@ function config_update_config () {
config_update_value ('timezone', (string) get_parameter ('timezone', $config['timezone']));
config_update_value ('activate_gis', (bool) get_parameter ('activate_gis', $config['activate_gis']));
config_update_value ('activate_netflow', (bool) get_parameter ('activate_netflow', $config['activate_netflow']));
config_update_value ('netflow_path', get_parameter ('netflow_path', $config['netflow_path']));
config_update_value ('netflow_interval', get_parameter ('netflow_interval', $config['netflow_interval']));
config_update_value ('netflow_daemon', get_parameter ('netflow_daemon', $config['netflow_daemon']));
config_update_value ('stats_interval', get_parameter ('stats_interval', $config['stats_interval']));
config_update_value ('realtimestats', get_parameter ('realtimestats', $config['realtimestats']));
config_update_value ('event_purge', get_parameter ('event_purge', $config['event_purge']));
@ -482,6 +485,18 @@ function config_process_config () {
config_update_value ( 'activate_netflow', 0);
}
if (!isset ($config['netflow_path'])) {
config_update_value ( 'netflow_path', '/var/spool/pandora/data_in/netflow');
}
if (!isset ($config['netflow_interval'])) {
config_update_value ( 'netflow_interval', 300);
}
if (!isset ($config['netflow_daemon'])) {
config_update_value ( 'netflow_daemon', '/usr/bin/nfcapd');
}
if (!isset ($config['auth'])) {
config_update_value ( 'auth', 'mysql');
}

View File

@ -448,12 +448,27 @@ function netflow_get_command ($filter) {
$command .= ' -R '.$config['netflow_path'];
}
// Filter options
$command .= netflow_get_filter_arguments ($filter);
return $command;
}
/**
* Returns the nfdump command line arguments that match the given filter.
*
* @param array filter Netflow filter.
*
* @return Command line argument string.
*
*/
function netflow_get_filter_arguments ($filter) {
// Advanced filter
$filter_args = '';
if ($filter['advanced_filter'] != '') {
$filter_args = preg_replace('/["\r\n]/','', io_safe_output ($filter['advanced_filter']));
$command .= ' "(' . $filter_args . ')"';
return $command;
return ' "(' . $filter_args . ')"';
}
// Normal filter
@ -524,11 +539,10 @@ function netflow_get_command ($filter) {
$filter_args .= ')';
}
if ($filter_args != '') {
$filter_args .= '"';
$command .= $filter_args;
$filter_args .= '"';
}
return $command;
return $filter_args;
}

View File

@ -67,6 +67,10 @@ ui_print_page_header (__('Netflow live view'), "images/networkmap/so_cisco_new.p
// Save user defined filter
if ($save != '') {
// Save filter args
$filter['filter_args'] = netflow_get_filter_arguments ($filter);
$filter_id = db_process_sql_insert ('tnetflow_filter', $filter);
if ($filter_id === false) {
$filter_id = 0;
@ -81,6 +85,9 @@ else if ($update != '' && $filter_id > 0) {
$filter_copy = $filter;
unset ($filter_copy['id_name']);
unset ($filter_copy['id_group']);
// Save filter args
$filter_copy['filter_args'] = netflow_get_filter_arguments ($filter_copy);
$result = db_process_sql_update ('tnetflow_filter', $filter_copy, array ('id_sg' => $filter_id));
ui_print_result_message ($result, __('Filter updated successfully'), __('Error updating filter'));

View File

@ -1491,6 +1491,7 @@ ip_src CLOB NOT NULL,
dst_port CLOB NOT NULL,
src_port CLOB NOT NULL,
advanced_filter CLOB NOT NULL,
filter_args CLOB NOT NULL,
aggregate VARCHAR2(60),
output VARCHAR2(60)
);

View File

@ -1204,6 +1204,7 @@ CREATE TABLE "tnetflow_filter" (
"dst_port" TEXT NOT NULL,
"src_port" TEXT NOT NULL,
"advanced_filter" TEXT NOT NULL,
"filter_args" TEXT NOT NULL,
"aggregate" varchar(60),
"output" varchar(60)
);

View File

@ -1295,6 +1295,7 @@ CREATE TABLE IF NOT EXISTS `tnetflow_filter` (
`dst_port` TEXT NOT NULL,
`src_port` TEXT NOT NULL,
`advanced_filter` TEXT NOT NULL,
`filter_args` TEXT NOT NULL,
`aggregate` varchar(60),
`output` varchar(60),
PRIMARY KEY (`id_sg`)