Skip to content
Snippets Groups Projects
Commit 57c407e3 authored by Jan Soukal's avatar Jan Soukal
Browse files

doplnena funkcionalita logovani a backtracingu.

parent a2fe1079
No related branches found
No related tags found
No related merge requests found
...@@ -18,7 +18,7 @@ use Sys::Syslog; ...@@ -18,7 +18,7 @@ use Sys::Syslog;
our $VERSION = "2.0"; our $VERSION = "2.0";
#----- global configuration variables ----------------------------------------- #----- global configuration variables - default initialization -----------------
our $LOG_STDERR = 1; our $LOG_STDERR = 1;
our $LOG_SYSLOG = 0; our $LOG_SYSLOG = 0;
...@@ -87,9 +87,6 @@ sub c2s ...@@ -87,9 +87,6 @@ sub c2s
# deserialized response from server -> create SOAP envelope and data object # deserialized response from server -> create SOAP envelope and data object
my $response; my $response;
# test
errMsg("test error in c2s()");
eval { eval {
$response = $soap->deserializer->deserialize($result); $response = $soap->deserializer->deserialize($result);
} or errMsg($@ . "Received data: " . $result); } or errMsg($@ . "Received data: " . $result);
...@@ -121,9 +118,6 @@ sub getNewEvents ...@@ -121,9 +118,6 @@ sub getNewEvents
my ($uri, $ssl_key_file, $ssl_cert_file, $ssl_ca_file, $max_rcv_events_limit); my ($uri, $ssl_key_file, $ssl_cert_file, $ssl_ca_file, $max_rcv_events_limit);
($uri, $ssl_key_file, $ssl_cert_file, $ssl_ca_file, $max_rcv_events_limit, $LOG_STDERR, $LOG_SYSLOG, $LOG_SYSLOG_FACILITY, $LOG_VERBOSE) = WardenClientConf::loadConf($conf_file); ($uri, $ssl_key_file, $ssl_cert_file, $ssl_ca_file, $max_rcv_events_limit, $LOG_STDERR, $LOG_SYSLOG, $LOG_SYSLOG_FACILITY, $LOG_VERBOSE) = WardenClientConf::loadConf($conf_file);
# test
# errMsg("testovaci error\n");
# set name of ID file for each client aplication # set name of ID file for each client aplication
my $caller_name = $FindBin::Script; my $caller_name = $FindBin::Script;
my $id_file = $vardir . $caller_name . ".id"; my $id_file = $vardir . $caller_name . ".id";
...@@ -141,7 +135,7 @@ sub getNewEvents ...@@ -141,7 +135,7 @@ sub getNewEvents
} else { } else {
my $response = c2s($uri, $ssl_key_file, $ssl_cert_file, $ssl_ca_file, "getLastId"); my $response = c2s($uri, $ssl_key_file, $ssl_cert_file, $ssl_ca_file, "getLastId");
$last_id = $response->result; $last_id = $response->result;
open(ID, "> $id_file") || die ("Cannot open ID file $id_file: $!"); open(ID, "> $id_file") || errMsg("Cannot open ID file $id_file: $!");
print ID $last_id; print ID $last_id;
close ID; close ID;
} }
...@@ -163,7 +157,6 @@ sub getNewEvents ...@@ -163,7 +157,6 @@ sub getNewEvents
# parse returned SOAP data object # parse returned SOAP data object
my ($id, $hostname, $service, $detected, $type, $source_type, $source, $target_proto, $target_port, $attack_scale, $note, $priority, $timeout); my ($id, $hostname, $service, $detected, $type, $source_type, $source, $target_proto, $target_port, $attack_scale, $note, $priority, $timeout);
# my @events;
my @response_list = $response->valueof('/Envelope/Body/getNewEventsResponse/event/'); my @response_list = $response->valueof('/Envelope/Body/getNewEventsResponse/event/');
while (scalar @response_list) { while (scalar @response_list) {
my $response_data = shift(@response_list); my $response_data = shift(@response_list);
...@@ -196,7 +189,7 @@ sub getNewEvents ...@@ -196,7 +189,7 @@ sub getNewEvents
# write last return ID # write last return ID
if (defined $last_id) { # must be defined for first check ID if (defined $last_id) { # must be defined for first check ID
open(ID, "> $id_file") || die ("Cannot open ID file $id_file: $!"); open(ID, "> $id_file") || errMsg("Cannot open ID file $id_file: $!");
print ID $last_id; print ID $last_id;
close ID; close ID;
} }
...@@ -204,16 +197,13 @@ sub getNewEvents ...@@ -204,16 +197,13 @@ sub getNewEvents
or do { or do {
if ($LOG_STDERR) { if ($LOG_STDERR) {
print STDERR "(STDERR)Warden-client unexpected end in eval block.\n" . $@ . "\n"; print STDERR "Warden-client unexpected end in eval block.\n" . $@ . "\n";
} }
if ($LOG_SYSLOG) { if ($LOG_SYSLOG) {
#TODO: zapis do syslogu, ne STDERR openlog("Warden:", "pid", "$LOG_SYSLOG_FACILITY");
print STDERR "(SYSLOG)Warden-client unexpected end in eval block.\n" . $@ . "\n"; syslog("err|$LOG_SYSLOG_FACILITY", "Warden-client unexpected end in eval block.\n" . $@ . "\n");
closelog();
# openlog("Warden:", "pid", "$LOG_SYSLOG_FACILITY");
# syslog("err|$LOG_SYSLOG_FACILITY", "Warden-client unexpected end in eval block.\n" . $@ . "\n");
# closelog();
} }
return; return;
}; };
......
...@@ -12,16 +12,31 @@ use strict; ...@@ -12,16 +12,31 @@ use strict;
use SOAP::Lite; use SOAP::Lite;
use IO::Socket::SSL qw(debug1); use IO::Socket::SSL qw(debug1);
use SOAP::Transport::HTTP; use SOAP::Transport::HTTP;
use Carp;
use Sys::Syslog;
our $VERSION = "2.0"; our $VERSION = "2.0"; #first iteration after 'port to Apache'
#----- global configuration variables - default initialization -----------------
our $LOG_STDERR = 1;
our $LOG_SYSLOG = 0;
our $LOG_SYSLOG_FACILITY;
our $LOG_VERBOSE = 0;
#----- end of configuration variables ------------------------------------------
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
# errMsg - print error message and die # errMsg - print error message and die
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
sub errMsg sub errMsg
{ {
my $msg = shift; my $msg = "Error message: " . shift;
if ($LOG_VERBOSE) { # user wants to log debug information
$msg .= "\nStack info: " . Carp::longmess();
}
die($msg . "\n"); die($msg . "\n");
} # End of errMsg } # End of errMsg
...@@ -31,12 +46,12 @@ sub errMsg ...@@ -31,12 +46,12 @@ sub errMsg
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
sub c2s sub c2s
{ {
my $uri = shift; my $uri = shift;
my $ssl_key_file = shift; my $ssl_key_file = shift;
my $ssl_cert_file = shift; my $ssl_cert_file = shift;
my $ssl_ca_file = shift; my $ssl_ca_file = shift;
my $method = shift; my $method = shift;
my $data = shift; my $data = shift;
my ($server, $port, $service) = $uri =~ /https:\/\/(.+)\:(\d+)\/(.+)/; my ($server, $port, $service) = $uri =~ /https:\/\/(.+)\:(\d+)\/(.+)/;
...@@ -44,7 +59,7 @@ sub c2s ...@@ -44,7 +59,7 @@ sub c2s
if (!($client = SOAP::Transport::HTTP::Client->new())) { if (!($client = SOAP::Transport::HTTP::Client->new())) {
errMsg("Sorry, unable to create socket: " . &SOAP::Transport::HTTP::Client::errstr) errMsg("Sorry, unable to create socket: " . &SOAP::Transport::HTTP::Client::errstr)
} }
$client->timeout(10); $client->timeout(60);
$client->ssl_opts(verify_hostname => 1, $client->ssl_opts(verify_hostname => 1,
SSL_use_cert => 1, SSL_use_cert => 1,
SSL_verify_mode => 0x02, SSL_verify_mode => 0x02,
...@@ -67,10 +82,7 @@ sub c2s ...@@ -67,10 +82,7 @@ sub c2s
errMsg("Error: server returned empty response." . "\n" . "Problem with used SSL ceritificates or Warden server at $server:$port is down."); errMsg("Error: server returned empty response." . "\n" . "Problem with used SSL ceritificates or Warden server at $server:$port is down.");
} else { } else {
# deserialized response from server -> create SOAP envelope and data object # deserialized response from server -> create SOAP envelope and data object
my $response; my $response = $soap->deserializer->deserialize($result);
eval {
$response = $soap->deserializer->deserialize($result);
} or errMsg($@ . "Received data: " . $result);
# check SOAP fault status # check SOAP fault status
$response->fault ? errMsg("Server sent error message:: " . $response->faultstring) : return 1; $response->fault ? errMsg("Server sent error message:: " . $response->faultstring) : return 1;
} }
...@@ -83,6 +95,7 @@ sub c2s ...@@ -83,6 +95,7 @@ sub c2s
sub saveNewEvent sub saveNewEvent
{ {
my $result; my $result;
eval { eval {
my $warden_path = shift; my $warden_path = shift;
my $event_ref = shift; my $event_ref = shift;
...@@ -93,7 +106,8 @@ sub saveNewEvent ...@@ -93,7 +106,8 @@ sub saveNewEvent
# read the config file # read the config file
require $libdir . "WardenClientConf.pm"; require $libdir . "WardenClientConf.pm";
my $conf_file = $etcdir . "warden-client.conf"; my $conf_file = $etcdir . "warden-client.conf";
my ($uri, $ssl_key_file, $ssl_cert_file, $ssl_ca_file) = WardenClientConf::loadConf($conf_file); my ($uri, $ssl_key_file, $ssl_cert_file, $ssl_ca_file, $max_rcv_events_limit);
($uri, $ssl_key_file, $ssl_cert_file, $ssl_ca_file, $max_rcv_events_limit, $LOG_STDERR, $LOG_SYSLOG, $LOG_SYSLOG_FACILITY, $LOG_VERBOSE) = WardenClientConf::loadConf($conf_file);
# prepare variables of event # prepare variables of event
my @event = @{$event_ref}; my @event = @{$event_ref};
...@@ -112,31 +126,38 @@ sub saveNewEvent ...@@ -112,31 +126,38 @@ sub saveNewEvent
# create SOAP data object # create SOAP data object
my $event = SOAP::Data->name( my $event = SOAP::Data->name(
event => \SOAP::Data->value( event => \SOAP::Data->value(
SOAP::Data->name(SERVICE => $service), SOAP::Data->name(SERVICE => $service),
SOAP::Data->name(DETECTED => $detected), SOAP::Data->name(DETECTED => $detected),
SOAP::Data->name(TYPE => $type), SOAP::Data->name(TYPE => $type),
SOAP::Data->name(SOURCE_TYPE => $source_type), SOAP::Data->name(SOURCE_TYPE => $source_type),
SOAP::Data->name(SOURCE => $source), SOAP::Data->name(SOURCE => $source),
SOAP::Data->name(TARGET_PROTO => $target_proto), SOAP::Data->name(TARGET_PROTO => $target_proto),
SOAP::Data->name(TARGET_PORT => $target_port), SOAP::Data->name(TARGET_PORT => $target_port),
SOAP::Data->name(ATTACK_SCALE => $attack_scale), SOAP::Data->name(ATTACK_SCALE => $attack_scale),
SOAP::Data->name(NOTE => $note), SOAP::Data->name(NOTE => $note),
SOAP::Data->name(PRIORITY => $priority), SOAP::Data->name(PRIORITY => $priority),
SOAP::Data->name(TIMEOUT => $timeout) SOAP::Data->name(TIMEOUT => $timeout)
) )
); );
$result = c2s($uri, $ssl_key_file, $ssl_cert_file, $ssl_ca_file, "saveNewEvent", $event); $result = c2s($uri, $ssl_key_file, $ssl_cert_file, $ssl_ca_file, "saveNewEvent", $event);
#$result ? return 1 : return 0; } # End of eval block
}; #end of eval block or do {
if ($@) { if ($LOG_STDERR) {
print STDERR "Warden-client unexpected end in eval block: " . $@ . "\n"; print STDERR "Warden-client unexpected end in eval block.\n" . $@ . "\n";
return 0; }
}
else { if ($LOG_SYSLOG) {
$result ? return 1 : return 0; openlog("Warden-client:", "pid", "$LOG_SYSLOG_FACILITY");
syslog("err|$LOG_SYSLOG_FACILITY", "Warden-client unexpected end in eval block.\n" . $@ . "\n");
closelog();
} }
return 0;
};
$result ? return 1 : return 0;
} # End of saveNewEvent } # End of saveNewEvent
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment