mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
Initial import of svn+ssh:://svn.icir.org/bro/trunk/bro as of r7088
This commit is contained in:
commit
61757ac78b
1383 changed files with 380824 additions and 0 deletions
120
scripts/perl/lib/Bro/Config.pm
Normal file
120
scripts/perl/lib/Bro/Config.pm
Normal file
|
@ -0,0 +1,120 @@
|
|||
package Bro::Config;
|
||||
|
||||
use strict;
|
||||
use Config::General;
|
||||
require Exporter;
|
||||
|
||||
use vars qw( $VERSION
|
||||
$DEBUG
|
||||
@ISA
|
||||
@EXPORT_OK
|
||||
%DEFAULTS
|
||||
$DEFAULT_CONFIG_FILE
|
||||
$BRO_CONFIG );
|
||||
|
||||
# $Id: Config.pm 987 2005-01-08 01:04:43Z rwinslow $
|
||||
$VERSION = 1.20;
|
||||
$DEBUG = 0;
|
||||
|
||||
@ISA = ( 'Exporter' );
|
||||
@EXPORT_OK = qw( $BRO_CONFIG );
|
||||
%DEFAULTS = ( BROHOME => '/usr/local/bro',
|
||||
BRO_POLICY_SUFFIX => '.bro',
|
||||
BRO_SIG_SUFFIX => '.sig',
|
||||
META_DATA_PREFIX => '.',
|
||||
);
|
||||
|
||||
$DEFAULTS{CONFIG_FILE} = $DEFAULTS{BROHOME} . '/etc/bro.cfg';
|
||||
|
||||
sub parse
|
||||
{
|
||||
my $sub_name = 'parse';
|
||||
|
||||
my %args = @_;
|
||||
my $config_file;
|
||||
my $brohome;
|
||||
my $conf;
|
||||
my $ret_hash;
|
||||
|
||||
# Check for a config-path that may override the default
|
||||
if( exists( $args{'File'} ) )
|
||||
{
|
||||
$config_file = $args{'File'};
|
||||
}
|
||||
else
|
||||
{
|
||||
$config_file = $DEFAULT_CONFIG_FILE;
|
||||
}
|
||||
|
||||
# Check for the existance and readability of the config file
|
||||
if( !( -f $config_file and -r $config_file ) )
|
||||
{
|
||||
warn( __PACKAGE__ . "::$sub_name, The Bro config file at $config_file is not readable\n" );
|
||||
return( undef );
|
||||
}
|
||||
|
||||
$conf = Config::General->new( -ConfigFile => $config_file,
|
||||
-MergeDuplicateOptions => 1,
|
||||
-AutoTrue => 1,
|
||||
);
|
||||
%{$ret_hash} = $conf->getall;
|
||||
|
||||
return( $ret_hash );
|
||||
}
|
||||
|
||||
sub Configure
|
||||
{
|
||||
my $sub_name = 'Configure';
|
||||
|
||||
my %args = @_;
|
||||
|
||||
if( exists( $args{File} ) )
|
||||
{
|
||||
if( $args{File} !~ m/[\;\|\?\*\&\{\}]/ and $args{File} =~ m/^([[:print:]]+)$/ )
|
||||
{
|
||||
my $clean_name = $1;
|
||||
if( -f $clean_name and -r $clean_name )
|
||||
{
|
||||
$DEFAULT_CONFIG_FILE = $clean_name;
|
||||
}
|
||||
else
|
||||
{
|
||||
warn( __PACKAGE__ . "::$sub_name, Unable to read config file at $clean_name\n" );
|
||||
return( undef );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
warn( __PACKAGE__ . "::$sub_name, Filename contains invalid characters\n" );
|
||||
return( undef );
|
||||
}
|
||||
}
|
||||
|
||||
$BRO_CONFIG = parse();
|
||||
|
||||
# Set other defaults that have been omitted or don't exist in the config file
|
||||
setdefaults();
|
||||
|
||||
return( 1 );
|
||||
}
|
||||
|
||||
sub setdefaults
|
||||
{
|
||||
my $sub_name = 'setdefaults';
|
||||
|
||||
my $override = $_[0] || 0;
|
||||
my @variables_changed;
|
||||
|
||||
foreach my $key( keys( %DEFAULTS ) )
|
||||
{
|
||||
if( $override or !( exists( $BRO_CONFIG->{$key} ) ) )
|
||||
{
|
||||
$BRO_CONFIG->{$key} = $DEFAULTS{$key};
|
||||
push( @variables_changed, $key )
|
||||
}
|
||||
}
|
||||
|
||||
return( @variables_changed );
|
||||
}
|
||||
|
||||
1;
|
Loading…
Add table
Add a link
Reference in a new issue