Skip to content
Snippets Groups Projects
Commit 697a22dd authored by Tomáš Plesník's avatar Tomáš Plesník
Browse files

pridana funkce sendMsg a pouzita misto write2log + die; odstranena funkce...

pridana funkce sendMsg a pouzita misto write2log + die; odstranena funkce write2log; pridana validace polozek prichozi udalosti
parent da12678c
No related branches found
No related tags found
No related merge requests found
...@@ -56,18 +56,27 @@ our $DBH = DBI->connect("DBI:mysql:database=$DB_NAME;host=$DB_HOST", $DB_USER, $ ...@@ -56,18 +56,27 @@ our $DBH = DBI->connect("DBI:mysql:database=$DB_NAME;host=$DB_HOST", $DB_USER, $
################################################################################ ################################################################################
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
# write2log - writing message to syslog # sendMsg - sent message to syslog (SYS::Syslog) and to client (SOAP::Fault)
#
# Args: (SYSLOG severity, SYSLOG msg, SOAP msg)
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
sub write2log sub sendMsg
{ {
my $priority = shift; my $severity = shift;
my $msg = shift; my $syslog_msg = shift;
my $filename = File::Basename::basename($0); my $soap_msg = shift;
my $filename = File::Basename::basename($0);
if (defined $severity && defined $syslog_msg) {
Sys::Syslog::openlog($filename, "cons,pid", $FACILITY);
Sys::Syslog::syslog("$severity", "$syslog_msg");
Sys::Syslog::closelog();
}
Sys::Syslog::openlog($filename, "cons,pid", $FACILITY); if (defined $soap_msg) {
Sys::Syslog::syslog("$priority", "$msg"); die SOAP::Fault->faultstring($soap_msg);
Sys::Syslog::closelog(); }
} # End of write2log } # End of sendMsg
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
...@@ -115,13 +124,16 @@ sub authorizeClient ...@@ -115,13 +124,16 @@ sub authorizeClient
ORDER BY SUBSTRING_INDEX(ip_net_client,'/', -1) DESC;"); ORDER BY SUBSTRING_INDEX(ip_net_client,'/', -1) DESC;");
} }
if (!defined $sth) { die("Cannot prepare authorization statement in $function_name: $DBH->errstr\n")} if (!defined $sth) {
sendMsg("err",
"Cannot prepare authorization statement in $function_name: $DBH->errstr",
"Internal 'prepare' server error")
}
$sth->execute($service_type, $client_type); $sth->execute($service_type, $client_type);
my ($an, $cidr, $receive_own, $cidr_list); my ($an, $cidr, $receive_own, $cidr_list);
my $correct_ip_source = 0; my $correct_ip_source = 0;
my %ret; my %ret;
while(($an, $cidr, $receive_own) = $sth->fetchrow()) { while(($an, $cidr, $receive_own) = $sth->fetchrow()) {
my $cidr_list = Net::CIDR::Lite-> new -> add($cidr); my $cidr_list = Net::CIDR::Lite-> new -> add($cidr);
...@@ -137,15 +149,17 @@ sub authorizeClient ...@@ -137,15 +149,17 @@ sub authorizeClient
# check if client is registered # check if client is registered
if ($sth->rows == 0) { if ($sth->rows == 0) {
write2log ("err", "Unauthorized access to '$function_name' from: '$ip'; CN(AN): $alt_names; used service: '$service_type' - client is not registered"); sendMsg("err",
die("Access denied - client is not registered at warden server!"); "Unauthorized access to function '$function_name' from: '$ip'; CN(AN): $alt_names; used service: '$service_type' - client is not registered",
"Access denied - client is not registered at warden server");
return undef; return undef;
} }
# check if client has IP from registered CIDR # check if client has IP from registered CIDR
if (!$correct_ip_source) { if (!$correct_ip_source) {
write2log ("err", "Unauthorized access to '$function_name' from: '$ip'; CN(AN): $alt_names; used service: '$service_type' - access from bad subnet: Registered subnet '" . $ret{'cidr'} . "'"); sendMsg ("err",
die("Access denied - access from unauthorized subnet!"); "Unauthorized access to function '$function_name' from: '$ip'; CN(AN): $alt_names; used service: '$service_type' - access from bad subnet: Registered subnet '$ret{'cidr'}'",
"Access denied - access from unauthorized subnet");
return undef; return undef;
} }
...@@ -191,16 +205,44 @@ sub saveNewEvent ...@@ -191,16 +205,44 @@ sub saveNewEvent
my %client = authorizeClient($alt_names, $ip, $service, $client_type, $function_name); my %client = authorizeClient($alt_names, $ip, $service, $client_type, $function_name);
if(defined %client) { if(defined %client) {
if (!(exists $VALID_STRINGS{'type'} && grep $type eq $_, @{$VALID_STRINGS{'type'}})) {
# if validator is configured, check validity of event attributes - TYPE sendMsg("err",
if (!exists $VALID_STRINGS{'type'} or grep $type eq $_, @{$VALID_STRINGS{'type'}}) { "Unknown event type - client from: '$ip'; CN(AN): $alt_names; used type: '$type'",
"Unknown event type '$type'");
} elsif (!(exists $VALID_STRINGS{'source_type'} && grep $source_type eq $_, @{$VALID_STRINGS{'source_type'}})) {
sendMsg("err",
"Unknown source type - client from: '$ip'; CN(AN): $alt_names; used source_type: '$source_type'",
"Unknown source type '$source_type'");
# http://my.safaribooksonline.com/book/programming/regular-expressions/9780596802837/4dot-validation-and-formatting/id2983571
} elsif ($detected !~ /^((?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[0-1]|0[1-9]|[1-2][0-9])T(2[0-3]|[0-1][0-9]):([0-5][0-9]):([0-5][0-9])(\.[0-9]+)?(Z|[+-](?:2[0-3]|[0-1][0-9]):[0-5][0-9])?/) {
sendMsg("err",
"Unknown detected time format - client from: '$ip'; CN(AN): $alt_names; used detected: '$detected'",
"Unknown detected time format '$detected'");
} elsif ($target_port !~ /^\d+\z/ && defined $target_port) {
sendMsg("err",
"Unknown target port - client from: '$ip'; CN(AN): $alt_names; used target_port: '$target_port'",
"Unknown target port '$target_port'");
} elsif ($attack_scale !~ /^\d+\z/ && defined $attack_scale) {
sendMsg("err",
"Unknown attack scale - client from: '$ip'; CN(AN): $alt_names; used attack_scale: '$attack_scale'",
"Unknown attack scale '$attack_scale'");
} elsif ($priority !~ /^\d+\z/ && defined $priority) {
sendMsg("err",
"Unknown priority - client from: '$ip'; CN(AN): $alt_names; used priority: '$priority'",
"Unknown priority '$priority'");
} elsif ($timeout !~ /^\d+\z/ && defined $timeout) {
sendMsg("err",
"Unknown timeout - client from: '$ip'; CN(AN): $alt_names; used timeout: '$timeout'",
"Unknown timeout '$timeout'");
} else {
$sth=$DBH->prepare("INSERT INTO events VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);"); $sth=$DBH->prepare("INSERT INTO events VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);");
if (!defined $sth) { die("Cannot do insert statement in $function_name: $DBH->errstr\n") } if (!defined $sth) {
sendMsg("err",
"Cannot prepare statement in function '$function_name': $DBH->errstr",
"Internal 'prepare' server error");
}
$sth->execute(undef, $client{'dns'}, $service, $detected, $received, $type, $source_type, $source, $target_proto, $target_port, $attack_scale, $note, $priority, $timeout, $valid); $sth->execute(undef, $client{'dns'}, $service, $detected, $received, $type, $source_type, $source, $target_proto, $target_port, $attack_scale, $note, $priority, $timeout, $valid);
return 1; return 1;
} else {
write2log ("err", "Unknown event type - client from: '$ip'; CN(AN): $alt_names; used type: '$type'");
die("Unknown event type - client sent event with unknown type '$type'!");
} }
} }
} # END of saveNewEvent } # END of saveNewEvent
...@@ -241,23 +283,39 @@ sub getNewEvents ...@@ -241,23 +283,39 @@ sub getNewEvents
if ($client{'receive_own'} eq 't') { if ($client{'receive_own'} eq 't') {
if ($requested_type eq '_any_') { if ($requested_type eq '_any_') {
$sth = $DBH->prepare("SELECT * FROM events WHERE type != 'test' AND id > ? AND valid = 't' ORDER BY id ASC LIMIT ?;"); $sth = $DBH->prepare("SELECT * FROM events WHERE type != 'test' AND id > ? AND valid = 't' ORDER BY id ASC LIMIT ?;");
if (!defined $sth) {die("Cannot prepare ROE-ANY statement in $function_name: $DBH->errstr\n")} if (!defined $sth) {
sendMsg("err",
"Cannot prepare ROE-ANY statement in function '$function_name': $DBH->errstr",
"Internal 'prepare' server error");
}
$sth->execute($last_id, $used_limit); $sth->execute($last_id, $used_limit);
} else { } else {
$sth = $DBH->prepare("SELECT * FROM events WHERE type != 'test' AND id > ? AND type = ? AND valid = 't' ORDER BY id ASC LIMIT ?;"); $sth = $DBH->prepare("SELECT * FROM events WHERE type != 'test' AND id > ? AND type = ? AND valid = 't' ORDER BY id ASC LIMIT ?;");
if (!defined $sth) {die("Cannot prepare ROE statement in $function_name: $DBH->errstr\n")} if (!defined $sth) {
sendMsg("err",
"Cannot prepare ROE statement in function '$function_name': $DBH->errstr",
"Internal 'prepare' server error");
}
$sth->execute($last_id, $requested_type, $used_limit); $sth->execute($last_id, $requested_type, $used_limit);
} }
} else { } else {
if ($requested_type eq '_any_') { if ($requested_type eq '_any_') {
$sth = $DBH->prepare("SELECT * FROM events WHERE type != 'test' AND id > ? AND valid = 't' AND hostname NOT LIKE ? ORDER BY id ASC LIMIT ?;"); $sth = $DBH->prepare("SELECT * FROM events WHERE type != 'test' AND id > ? AND valid = 't' AND hostname NOT LIKE ? ORDER BY id ASC LIMIT ?;");
if (!defined $sth) {die("Cannot prepare ANY statement in $function_name: $DBH->errstr\n")} if (!defined $sth) {
sendMsg("err",
"Cannot prepare ANY statement in function '$function_name': $DBH->errstr",
"Internal 'prepare' server error");
}
my ($domain) = $cn =~ /([^\.]+\.[^\.]+)$/; my ($domain) = $cn =~ /([^\.]+\.[^\.]+)$/;
$domain = '\%' . $domain; $domain = '\%' . $domain;
$sth->execute($last_id, $domain, $used_limit); $sth->execute($last_id, $domain, $used_limit);
} else { } else {
$sth = $DBH->prepare("SELECT * FROM events WHERE type != 'test' AND id > ? AND type = ? AND valid = 't' AND hostname NOT LIKE ? ORDER BY id ASC LIMIT ?;"); $sth = $DBH->prepare("SELECT * FROM events WHERE type != 'test' AND id > ? AND type = ? AND valid = 't' AND hostname NOT LIKE ? ORDER BY id ASC LIMIT ?;");
if (!defined $sth) {die("Cannot prepare statement in $function_name: $DBH->errstr\n")} if (!defined $sth) {
sendMsg("err",
"Cannot prepare statement in function '$function_name': $DBH->errstr\n",
"Internal 'prepare' server error");
}
my ($domain) = $cn =~ /([^\.]+\.[^\.]+)$/; my ($domain) = $cn =~ /([^\.]+\.[^\.]+)$/;
$domain = '\%' . $domain; $domain = '\%' . $domain;
$sth->execute($last_id, $requested_type, $domain, $used_limit); $sth->execute($last_id, $requested_type, $domain, $used_limit);
...@@ -303,9 +361,13 @@ sub getNewEvents ...@@ -303,9 +361,13 @@ sub getNewEvents
# log sent ID of events # log sent ID of events
if (scalar @events != 0) { if (scalar @events != 0) {
if (scalar @ids == 1) { if (scalar @ids == 1) {
write2log("info", "Sent 1 event [#$ids[0]] to '$ip' (CN(AN): $alt_names) with client limit '$max_rcv_events_limit' events"); sendMsg("info",
"Sent 1 event [#$ids[0]] to '$ip' (CN(AN): $alt_names) with client limit '$max_rcv_events_limit' events",
undef);
} else { } else {
write2log("info", "Sent " . scalar @ids . " events [#$ids[0] - #$ids[-1]] to '$ip' (CN(AN): $alt_names) with client limit '$max_rcv_events_limit' events"); sendMsg("info",
"Sent " . scalar @ids . " events [#$ids[0] - #$ids[-1]] to '$ip' (CN(AN): $alt_names) with client limit '$max_rcv_events_limit' events",
undef);
} }
} }
return @events; return @events;
...@@ -322,7 +384,11 @@ sub getLastId ...@@ -322,7 +384,11 @@ sub getLastId
my $function_name = 'getLastId'; my $function_name = 'getLastId';
my $sth = $DBH->prepare("SELECT max(id) FROM events;"); my $sth = $DBH->prepare("SELECT max(id) FROM events;");
if ( !defined $sth ) { die("Cannot prepare statement in '$function_name': $DBH->errstr\n") } if ( !defined $sth ) {
sendMsg("err",
"Cannot prepare statement in function '$function_name': $DBH->errstr",
"Internal 'prepare' server error");
}
$sth->execute; $sth->execute;
my $result = $sth->fetchrow(); my $result = $sth->fetchrow();
...@@ -346,8 +412,9 @@ sub registerSender ...@@ -346,8 +412,9 @@ sub registerSender
my $function_name = 'registerSender'; my $function_name = 'registerSender';
if ($local_ip ne $ip) { if ($local_ip ne $ip) {
write2log ("err", "Unauthorized access to '$function_name' from: '$ip' ('$cn') - access allowed only from localhost"); sendMsg("err",
die("Access denied - access allowed only from localhost!"); "Unauthorized access to function '$function_name' from: '$ip' ('$cn') - access allowed only from localhost",
"Access denied - access allowed only from localhost");
} else { } else {
# defined variables by method # defined variables by method
my $client_type = "s"; my $client_type = "s";
...@@ -364,28 +431,39 @@ sub registerSender ...@@ -364,28 +431,39 @@ sub registerSender
# check if sender has been already registered # check if sender has been already registered
$sth = $DBH->prepare("SELECT registered FROM clients WHERE hostname = ? AND requestor = ? AND service = ? AND client_type = ? AND type = ? AND receive_own_events = ? AND description_tags = ? AND ip_net_client = ? LIMIT 1;"); $sth = $DBH->prepare("SELECT registered FROM clients WHERE hostname = ? AND requestor = ? AND service = ? AND client_type = ? AND type = ? AND receive_own_events = ? AND description_tags = ? AND ip_net_client = ? LIMIT 1;");
if (!defined $sth) {die("Cannot prepare check statement in '$function_name': $DBH->errstr\n")} if (!defined $sth) {
sendMsg("err",
"Cannot prepare statement in function '$function_name': $DBH->errstr",
"Internal 'prepare' server error");
}
$sth->execute($hostname, $requestor, $service, $client_type, $type, $receive_own_events, $description_tags, $ip_net_client); $sth->execute($hostname, $requestor, $service, $client_type, $type, $receive_own_events, $description_tags, $ip_net_client);
my $result = $sth->fetchrow(); my $result = $sth->fetchrow();
# register new sender # register new sender
if (defined $result) { if (defined $result) {
write2log ("err", "Attempt to re-register the sender"); sendMsg("err",
die("Error - sender has already been registered at '$result'"); "Attempt to re-register the sender '$hostname', '$requestor', '$service', '$client_type', '$type', '$receive_own_events', '$description_tags', '$ip_net_client'",
"Sender has been already registered at '$result'");
} else { } else {
$sth = $DBH->prepare("INSERT INTO clients VALUES (?,?,?,?,?,?,?,?,?,?);"); $sth = $DBH->prepare("INSERT INTO clients VALUES (?,?,?,?,?,?,?,?,?,?);");
if (!defined $sth) {die("Cannot do statement in '$function_name': $DBH->errstr\n")} if (!defined $sth) {
sendMsg("err",
"Cannot prepare statement in function '$function_name': $DBH->errstr",
"Internal 'prepare' server error");
}
$sth->execute(undef, $hostname, $registered, $requestor, $service, $client_type, $type, $receive_own_events, $description_tags, $ip_net_client); $sth->execute(undef, $hostname, $registered, $requestor, $service, $client_type, $type, $receive_own_events, $description_tags, $ip_net_client);
write2log("info", "New sender '$hostname' (service: '$service', cidr: '$ip_net_client') was registered"); sendMsg("info",
"New sender '$hostname' (service: '$service', cidr: '$ip_net_client') was registered",
undef);
return 1; return 1;
} }
} }
} # END of registerSender } # END of registerSender
##----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
## registerReceiver - register new receiver # registerReceiver - register new receiver
##----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
sub registerReceiver sub registerReceiver
{ {
my ($class, $data) = @_; my ($class, $data) = @_;
...@@ -399,8 +477,9 @@ sub registerReceiver ...@@ -399,8 +477,9 @@ sub registerReceiver
my $function_name = 'registerReceiver'; my $function_name = 'registerReceiver';
if ($local_ip ne $ip) { if ($local_ip ne $ip) {
write2log ("err", "Unauthorized access to '$function_name' from: '$ip' ('$cn') - access allowed only from localhost"); sendMsg("err",
die("Access denied - access allowed only from localhost!"); "Unauthorized access to function '$function_name' from: '$ip' ('$cn') - access allowed only from localhost",
"Access denied - access allowed only from localhost");
} else { } else {
# variables defined by method # variables defined by method
my $client_type = "r"; my $client_type = "r";
...@@ -417,19 +496,30 @@ sub registerReceiver ...@@ -417,19 +496,30 @@ sub registerReceiver
# check if receiver has been already registered # check if receiver has been already registered
$sth = $DBH->prepare("SELECT registered FROM clients WHERE hostname = ? AND requestor = ? AND service = ? AND client_type = ? AND type = ? AND receive_own_events = ? AND description_tags = ? AND ip_net_client = ? LIMIT 1;"); $sth = $DBH->prepare("SELECT registered FROM clients WHERE hostname = ? AND requestor = ? AND service = ? AND client_type = ? AND type = ? AND receive_own_events = ? AND description_tags = ? AND ip_net_client = ? LIMIT 1;");
if (!defined $sth) {die("Cannot prepare check statement in '$function_name': $DBH->errstr\n")} if (!defined $sth) {
sendMsg("err",
"Cannot prepare statement in function '$function_name': $DBH->errstr",
"Internal 'prepare' server error");
}
$sth->execute($hostname, $requestor, $service, $client_type, $type, $receive_own_events, $description_tags, $ip_net_client); $sth->execute($hostname, $requestor, $service, $client_type, $type, $receive_own_events, $description_tags, $ip_net_client);
my $result = $sth->fetchrow(); my $result = $sth->fetchrow();
# register new receiver # register new receiver
if (defined $result) { if (defined $result) {
write2log ("err", "Attempt to re-register the receiver"); sendMsg("err",
die("Error - receiver has already been registered at '$result'"); "Attempt to re-register the receiver '$hostname', '$requestor', '$service', '$client_type', '$type', '$receive_own_events', '$description_tags', '$ip_net_client'",
"Receiver has already been registered at '$result'");
} else { } else {
$sth = $DBH->prepare("INSERT INTO clients VALUES (?,?,?,?,?,?,?,?,?,?);"); $sth = $DBH->prepare("INSERT INTO clients VALUES (?,?,?,?,?,?,?,?,?,?);");
if (!defined($sth)) {die("Cannot do statement in '$function_name': $DBH->errstr\n")} if (!defined($sth)) {
sendMsg("err",
"Cannot prepare statement in function '$function_name': $DBH->errstr",
"Internal 'prepare' server error");
}
$sth->execute(undef, $hostname, $registered, $requestor, $service, $client_type, $type, $receive_own_events, $description_tags, $ip_net_client); $sth->execute(undef, $hostname, $registered, $requestor, $service, $client_type, $type, $receive_own_events, $description_tags, $ip_net_client);
write2log("info", "New receiver '$hostname' (type: '$type', cidr: '$ip_net_client', receive_own_events: '$receive_own_events') was registered"); sendMsg("info",
"New receiver '$hostname' (type: '$type', cidr: '$ip_net_client', receive_own_events: '$receive_own_events') was registered",
undef);
return 1; return 1;
} }
} }
...@@ -452,40 +542,60 @@ sub unregisterClient ...@@ -452,40 +542,60 @@ sub unregisterClient
my $function_name = 'unregisterClient'; my $function_name = 'unregisterClient';
if ($local_ip ne $ip) { if ($local_ip ne $ip) {
write2log ("err", "Unauthorized access to '$function_name' from: '$ip' ('$cn') - access allowed only from localhost"); sendMsg("err",
die("Access denied - access allowed only from localhost!"); "Unauthorized access to function '$function_name' from: '$ip' ('$cn') - access allowed only from localhost",
"Access denied - access allowed only from localhost");
} else { } else {
# parse SOAP data oject # parse SOAP data oject
my $client_id = $data->{'CLIENT_ID'}; my $client_id = $data->{'CLIENT_ID'};
# check if receiver has been already registered # check if receiver has been already registered
$sth = $DBH->prepare("SELECT client_id, hostname, service, client_type FROM clients WHERE client_id = ? LIMIT 1;"); $sth = $DBH->prepare("SELECT client_id, hostname, service, client_type FROM clients WHERE client_id = ? LIMIT 1;");
if (!defined $sth) {die("Cannot prepare check statement in '$function_name': $DBH->errstr\n")} if (!defined $sth) {
sendMsg("err",
"Cannot prepare statement in function '$function_name': $DBH->errstr",
"Internal 'prepare' server error");
}
$sth->execute($client_id); $sth->execute($client_id);
my ($id, $hostname, $service, $client_type) = $sth->fetchrow(); my ($id, $hostname, $service, $client_type) = $sth->fetchrow();
# delete registered client # delete registered client
if (!defined $id) { if (!defined $id) {
write2log ("err", "Attempt to delete unregister client"); sendMsg("err",
die("Error - client (#$client_id) is not registered"); "Attempt to delete unregister client '$id', '$hostname', '$service', '$client_type'",
"Client (#$client_id) is not registered");
} else { } else {
if ($client_type eq 's') { if ($client_type eq 's') {
$sth = $DBH->prepare("DELETE FROM clients WHERE client_id = ?;"); $sth = $DBH->prepare("DELETE FROM clients WHERE client_id = ?;");
if (!defined $sth) {die("Cannot do delete statement of sender in '$function_name': $DBH->errstr\n")} if (!defined $sth) {
sendMsg("err",
"Cannot prepare statement in function '$function_name': $DBH->errstr",
"Internal 'prepare' server error");
}
$sth->execute($client_id); $sth->execute($client_id);
$sth = $DBH->prepare("UPDATE events SET valid = 'f' where hostname = ? AND service = ?;"); $sth = $DBH->prepare("UPDATE events SET valid = 'f' where hostname = ? AND service = ?;");
if (!defined $sth) {die("Cannot do unvalidation statement in '$function_name': $DBH->errstr\n")} if (!defined $sth) {
sendMsg("err",
"Cannot prepare statement in function '$function_name': $DBH->errstr",
"Internal 'prepare' server error");
}
$sth->execute($hostname, $service); $sth->execute($hostname, $service);
sendMsg("info",
write2log("info", "Sender '$hostname' (client_id: '$client_id', service: '$service') was deleted and its data were invalidated" ); "Sender '$hostname' (client_id: '$client_id', service: '$service') was deleted and its data were invalidated",
undef);
return 1; return 1;
} else { } else {
$sth = $DBH->prepare("DELETE FROM clients WHERE client_id = ?;"); $sth = $DBH->prepare("DELETE FROM clients WHERE client_id = ?;");
if (!defined $sth) {die("Cannot do delete statement of receiver in '$function_name': $DBH->errstr\n")} if (!defined $sth) {
sendMsg("err",
"Cannot prepare statement in function '$function_name': $DBH->errstr",
"Internal 'prepare' server error");
}
$sth->execute($client_id); $sth->execute($client_id);
sendMsg("info",
write2log("info", "Receiver '$hostname' (client_id: '$client_id') was deleted" ); "Receiver '$hostname' (client_id: '$client_id') was deleted",
undef);
return 1; return 1;
} }
} }
...@@ -508,13 +618,18 @@ sub getClients ...@@ -508,13 +618,18 @@ sub getClients
my $function_name = 'getClients'; my $function_name = 'getClients';
if ($local_ip ne $ip) { if ($local_ip ne $ip) {
write2log ("err", "Unauthorized access to '$function_name' from: '$ip' ('$cn') - access allowed only from localhost"); sendMsg("err",
die("Access denied - access allowed only from localhost!"); "Unauthorized access to function '$function_name' from: '$ip' ('$cn') - access allowed only from localhost",
"Access denied - access allowed only from localhost");
} else { } else {
my (@clients, $client); my (@clients, $client);
my ($client_id, $hostname, $registered, $requestor, $service, $client_type, $type, $receive_own_events, $description_tags, $ip_net_client); my ($client_id, $hostname, $registered, $requestor, $service, $client_type, $type, $receive_own_events, $description_tags, $ip_net_client);
my $sth = $DBH->prepare("SELECT * FROM clients ORDER BY client_id ASC;"); my $sth = $DBH->prepare("SELECT * FROM clients ORDER BY client_id ASC;");
if (!defined $sth) { die("Cannot prepare statement in '$function_name': $DBH->errstr\n") } if (!defined $sth) {
sendMsg("err",
"Cannot prepare statement in function '$function_name': $DBH->errstr",
"Internal 'prepare' server error");
}
$sth->execute; $sth->execute;
while ( my @result = $sth->fetchrow() ) { while ( my @result = $sth->fetchrow() ) {
...@@ -544,7 +659,9 @@ sub getClients ...@@ -544,7 +659,9 @@ sub getClients
push(@clients, $client); push(@clients, $client);
} }
my $sum = scalar @clients; my $sum = scalar @clients;
write2log("info", "Sending information about '$sum' registered clients"); sendMsg("info",
"Sending information about '$sum' registered clients",
undef);
return @clients; return @clients;
} }
} # END of getClients } # END of getClients
...@@ -565,8 +682,9 @@ sub getStatus ...@@ -565,8 +682,9 @@ sub getStatus
my $function_name = 'getStatus'; my $function_name = 'getStatus';
if ($local_ip ne $ip) { if ($local_ip ne $ip) {
write2log ("err", "Unauthorized access to '$function_name' from: '$ip' ('$cn') - access allowed only from localhost"); sendMsg("err",
die("Access denied - access allowed only from localhost!"); "Unauthorized access to function '$function_name' from: '$ip' ('$cn') - access allowed only from localhost",
"Access denied - access allowed only from localhost");
} else { } else {
my ($sth, @status); my ($sth, @status);
...@@ -587,35 +705,55 @@ sub getStatus ...@@ -587,35 +705,55 @@ sub getStatus
# sum of records in table events # sum of records in table events
$sth = $DBH->prepare("SELECT count(*) FROM events WHERE valid = 't';"); $sth = $DBH->prepare("SELECT count(*) FROM events WHERE valid = 't';");
if (!defined $sth) { die("Cannot prepare statement in '$function_name': $DBH->errstr\n") } if (!defined $sth) {
sendMsg("err",
"Cannot prepare statement in function '$function_name': $DBH->errstr",
"Internal 'prepare' server error");
}
$sth->execute; $sth->execute;
my $events_sum = $sth->fetchrow(); my $events_sum = $sth->fetchrow();
if (!defined $events_sum) { $events_sum = "none" } if (!defined $events_sum) { $events_sum = "none" }
# id of last record in table events # id of last record in table events
$sth = $DBH->prepare("SELECT max(id) FROM events;"); $sth = $DBH->prepare("SELECT max(id) FROM events;");
if (!defined $sth) { die("Cannot prepare statement in '$function_name': $DBH->errstr\n") } if (!defined $sth) {
sendMsg("err",
"Cannot prepare statement in function '$function_name': $DBH->errstr",
"Internal 'prepare' server error");
}
$sth->execute; $sth->execute;
my $events_last_id = $sth->fetchrow(); my $events_last_id = $sth->fetchrow();
if (!defined $events_last_id) { $events_last_id = "none" } if (!defined $events_last_id) { $events_last_id = "none" }
# timestamp of first record in table events # timestamp of first record in table events
$sth = $DBH->prepare("SELECT received FROM events WHERE id = (SELECT min(id) FROM events);"); $sth = $DBH->prepare("SELECT received FROM events WHERE id = (SELECT min(id) FROM events);");
if (!defined $sth) { die("Cannot prepare statement in '$function_name': $DBH->errstr\n") } if (!defined $sth) {
sendMsg("err",
"Cannot prepare statement in function '$function_name': $DBH->errstr",
"Internal 'prepare' server error");
}
$sth->execute; $sth->execute;
my $events_first_timestamp = $sth->fetchrow(); my $events_first_timestamp = $sth->fetchrow();
if (!defined $events_first_timestamp) { $events_first_timestamp = "none" } if (!defined $events_first_timestamp) { $events_first_timestamp = "none" }
# timestamp of last record in table events # timestamp of last record in table events
$sth = $DBH->prepare("SELECT received FROM events WHERE id = (SELECT max(id) FROM events);"); $sth = $DBH->prepare("SELECT received FROM events WHERE id = (SELECT max(id) FROM events);");
if (!defined $sth) { die("Cannot prepare statement in '$function_name': $DBH->errstr\n") } if (!defined $sth) {
sendMsg("err",
"Cannot prepare statement in function '$function_name': $DBH->errstr",
"Internal 'prepare' server error");
}
$sth->execute; $sth->execute;
my $events_last_timestamp = $sth->fetchrow(); my $events_last_timestamp = $sth->fetchrow();
if (!defined $events_last_timestamp) { $events_last_timestamp = "none" } if (!defined $events_last_timestamp) { $events_last_timestamp = "none" }
# sum of records in table clients # sum of records in table clients
$sth = $DBH->prepare("SELECT count(*) FROM clients;"); $sth = $DBH->prepare("SELECT count(*) FROM clients;");
if (!defined $sth) { die("Cannot prepare statement in '$function_name': $DBH->errstr\n") } if (!defined $sth) {
sendMsg("err",
"Cannot prepare statement in function '$function_name': $DBH->errstr",
"Internal 'prepare' server error");
}
$sth->execute; $sth->execute;
my $clients_sum = $sth->fetchrow(); my $clients_sum = $sth->fetchrow();
if (!defined $clients_sum) { $clients_sum = "none" } if (!defined $clients_sum) { $clients_sum = "none" }
...@@ -641,7 +779,11 @@ sub getStatus ...@@ -641,7 +779,11 @@ sub getStatus
# statistics of senders # statistics of senders
if ($clients_sum != 0) { if ($clients_sum != 0) {
$sth = $DBH->prepare("SELECT client_id, hostname, service FROM clients WHERE client_type = 's' ORDER BY client_id ASC;"); $sth = $DBH->prepare("SELECT client_id, hostname, service FROM clients WHERE client_type = 's' ORDER BY client_id ASC;");
if (!defined $sth) {die("Cannot prepare statement in '$function_name': $DBH->errstr\n")} if (!defined $sth) {
sendMsg("err",
"Cannot prepare statement in function '$function_name': $DBH->errstr",
"Internal 'prepare' server error");
}
$sth->execute; $sth->execute;
my ($client_id, $hostname, $service); my ($client_id, $hostname, $service);
my $client_status; my $client_status;
...@@ -649,16 +791,26 @@ sub getStatus ...@@ -649,16 +791,26 @@ sub getStatus
my $sth2; my $sth2;
# sum of stored events # sum of stored events
$sth2 = $DBH->prepare("SELECT count(*) FROM events WHERE hostname = ? AND service = ?;"); $sth2 = $DBH->prepare("SELECT count(*) FROM events WHERE hostname = ? AND service = ?;");
if (!defined $sth2) {die("Cannot prepare statement in '$function_name': $DBH->errstr\n")} if (!defined $sth2) {
sendMsg("err",
"Cannot prepare statement in function '$function_name': $DBH->errstr",
"Internal 'prepare' server error");
}
$sth2->execute($hostname, $service); $sth2->execute($hostname, $service);
my $count = $sth2->fetchrow(); my $count = $sth2->fetchrow();
if (!defined $count) {$count = "none"} if (!defined $count) {$count = "none"}
# timestamp of last stored event # timestamp of last stored event
$sth2 = $DBH->prepare("SELECT max(received) FROM events WHERE hostname = ? AND service = ?;"); $sth2 = $DBH->prepare("SELECT max(received) FROM events WHERE hostname = ? AND service = ?;");
if (!defined $sth2) {die("Cannot prepare statement in '$function_name': $DBH->errstr\n")} if (!defined $sth2) {
sendMsg("err",
"Cannot prepare statement in function '$function_name': $DBH->errstr\n",
"Internal 'prepare' server error");
}
$sth2->execute($hostname, $service); $sth2->execute($hostname, $service);
my $timestamp = $sth2->fetchrow(); my $timestamp = $sth2->fetchrow();
if (!defined $timestamp) {$timestamp = "none"} if (!defined $timestamp) {$timestamp = "none"}
# create SOAP data object # create SOAP data object
$client_status = SOAP::Data->name(client_status => \SOAP::Data->value( $client_status = SOAP::Data->name(client_status => \SOAP::Data->value(
SOAP::Data->name(CLIENT_ID => $client_id), SOAP::Data->name(CLIENT_ID => $client_id),
...@@ -670,7 +822,9 @@ sub getStatus ...@@ -670,7 +822,9 @@ sub getStatus
push(@status, $client_status); push(@status, $client_status);
} }
} }
write2log("info", "Sent of warden server status info"); sendMsg("info",
"Sent warden server status info",
undef);
return @status; return @status;
} }
} # END of getStatus } # END of getStatus
......
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