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
...@@ -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};
...@@ -127,17 +141,24 @@ sub saveNewEvent ...@@ -127,17 +141,24 @@ sub saveNewEvent
); );
$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 {
$result ? return 1 : return 0; if ($LOG_SYSLOG) {
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
1; 1;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment