diff --git a/src/warden-server/doc/CHANGELOG b/src/warden-server/doc/CHANGELOG index d72926ebf2f1a9cb76499c317be122dbc71fc6ca..7abfe60d716619fa6c26e6b19db67b8e4315b117 100644 --- a/src/warden-server/doc/CHANGELOG +++ b/src/warden-server/doc/CHANGELOG @@ -1,8 +1,10 @@ 2012-00-00 v2.1 stable version ------------------------------ -- add limit of events that can be downloaded from server to client -- add receiving of all types of events -- add validation of types of received events +- added limit of events that can be downloaded from server to client +- added receiving of all types of events +- added validation of types of received events +- added support for client maximum received events limit option + (for more information see client documentation) 2012-07-27 v2.0 stable version diff --git a/src/warden-server/lib/Warden.pm b/src/warden-server/lib/Warden.pm index e210653eaf0691bb9f640cd0a040e07438ae94b1..d2409a9dbf56ba22d004948c3d88953c08942f20 100755 --- a/src/warden-server/lib/Warden.pm +++ b/src/warden-server/lib/Warden.pm @@ -255,6 +255,7 @@ sub getNewEvents # parse SOAP data object my $requested_type = $data->{'REQUESTED_TYPE'}; my $last_id = $data->{'LAST_ID'}; + my $max_rcv_events_limit = $data->{'MAX_RCV_EVENTS_LIMIT'}; my %client = authorizeClient($alt_names, $ip, $requested_type, $client_type, $function_name); if(defined %client) { @@ -262,11 +263,11 @@ sub getNewEvents if ($requested_type eq '_any_') { # check if client want each or only one type of messages $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: $DBI::errstr\n")} - $sth->execute($last_id, $MAX_EVENTS_LIMIT); + ($max_rcv_events_limit < $MAX_EVENTS_LIMIT) ? $sth->execute($last_id, $max_rcv_events_limit) : $sth->execute($last_id, $MAX_EVENTS_LIMIT); } else { $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: $DBI::errstr\n")} - $sth->execute($last_id, $requested_type, $MAX_EVENTS_LIMIT); + ($max_rcv_events_limit < $MAX_EVENTS_LIMIT) ? $sth->execute($last_id, $requested_type, $max_rcv_events_limit) : $sth->execute($last_id, $requested_type, $MAX_EVENTS_LIMIT); } } else { if ($requested_type eq '_any_') { @@ -274,13 +275,13 @@ sub getNewEvents if (!defined $sth) {die("Cannot prepare ANY statement in $function_name: $DBI::errstr\n")} my ($domain) = $cn =~ /([^\.]+\.[^\.]+)$/; $domain = '\%' . $domain; - $sth->execute($last_id, $domain, $MAX_EVENTS_LIMIT); + ($max_rcv_events_limit < $MAX_EVENTS_LIMIT) ? $sth->execute($last_id, $domain, $max_rcv_events_limit) : $sth->execute($last_id, $domain, $MAX_EVENTS_LIMIT); } 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 ?;"); if (!defined $sth) {die("Cannot prepare statement in $function_name: $DBI::errstr\n")} my ($domain) = $cn =~ /([^\.]+\.[^\.]+)$/; $domain = '\%' . $domain; - $sth->execute($last_id, $requested_type, $domain, $MAX_EVENTS_LIMIT); + ($max_rcv_events_limit < $MAX_EVENTS_LIMIT) ? $sth->execute($last_id, $requested_type, $domain, $max_rcv_events_limit) : $sth->execute($last_id, $requested_type, $domain, $MAX_EVENTS_LIMIT); } } @@ -323,9 +324,9 @@ sub getNewEvents # log sent ID of events if (scalar @events != 0) { if (scalar @ids == 1) { - write2log("info", "Sent 1 events [#$ids[0]] to $ip (CN(AN): $alt_names)"); + write2log("info", "Sent 1 event [#$ids[0]] to $ip (CN(AN): $alt_names) with client limit $max_rcv_events_limit events"); } else { - write2log("info", "Sent " . scalar @ids . " events [#$ids[0] - #$ids[-1]] to $ip (CN(AN): $alt_names)"); + write2log("info", "Sent " . scalar @ids . " events [#$ids[0] - #$ids[-1]] to $ip (CN(AN): $alt_names) with client limit $max_rcv_events_limit events"); } } return @events; diff --git a/src/warden-server/lib/WardenConf.pm b/src/warden-server/lib/WardenConf.pm index 68103e459944098b7415a443724d5827a724f0e8..1d1ad54c2f656c2cef3e3122ac78a33ad91daf94 100755 --- a/src/warden-server/lib/WardenConf.pm +++ b/src/warden-server/lib/WardenConf.pm @@ -20,10 +20,10 @@ sub loadConf my $conf_file = shift; # preset of default variables - our $URI = undef; - our $SSL_KEY_FILE = undef; - our $SSL_CERT_FILE = undef; - our $SSL_CA_FILE = undef; + our $URI = undef; + our $SSL_KEY_FILE = undef; + our $SSL_CERT_FILE = undef; + our $SSL_CA_FILE = undef; # read config file if ( ! open( TMP, $conf_file) ) {