write2log("err","Unauthorized access to $function_name from: $ip(CN(AN): $alt_names), used service '$service_type' - client is not registered");
write2log("err","Unauthorized access to $function_name from: $ip; CN(AN): $alt_names; used service: '$service_type' - client is not registered");
die("Access denied - client is not registered at warden server!");
returnundef;
}
# check if client has IP from registered CIDR
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'}."'");
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'}."'");
die("Access denied - access from unauthorized subnet!");
returnundef;
}
...
...
@@ -198,8 +200,9 @@ sub saveNewEvent
my$ip=$ENV{'REMOTE_ADDR'};
# variables defined by server
my$client_type="s";# incoming client MUST be sender
my$valid="t";# registered sender has valid events
my$function_name='saveNewEvent';
my$client_type='s';# incoming client MUST be sender
my$valid='t';# registered sender has valid events
my$received=DateTime->now;# time of event delivery (UTC)
if($client{'receive_own'}eq't'){# check if client want your own events or not
if($requested_typeeq'_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 $MAX_EVENT_LIMIT;");
if(!defined$sth){die("Cannot prepare ROE-ANY statement in getNewEvents: $DBI::errstr\n")}
if(!defined$sth){die("Cannot prepare ROE-ANY statement in $function_name: $DBI::errstr\n")}
$sth->execute($last_id);
}else{
$sth=$DBH->prepare("SELECT * FROM events WHERE type != 'test' AND id > ? AND type = ? AND valid = 't' ORDER BY id ASC limit $MAX_EVENT_LIMIT;");
if(!defined$sth){die("Cannot prepare ROE statement in getNewEvents: $DBI::errstr\n")}
if(!defined$sth){die("Cannot prepare ROE statement in $function_name: $DBI::errstr\n")}
$sth->execute($last_id,$requested_type);
}
}else{
if($requested_typeeq'_any_'){
$sth=$DBH->prepare("SELECT * FROM events WHERE type != 'test' AND id > ? AND valid = 't' AND hostname NOT LIKE ? ORDER BY id ASC limit $MAX_EVENT_LIMIT;");
if(!defined$sth){die("Cannot prepare ANY statement in getNewEvents: $DBI::errstr\n")}
if(!defined$sth){die("Cannot prepare ANY statement in $function_name: $DBI::errstr\n")}
my($domain)=$cn=~/([^\.]+\.[^\.]+)$/;
$domain='\%'.$domain;
$sth->execute($last_id,$domain);
}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 $MAX_EVENT_LIMIT;");
if(!defined$sth){die("Cannot prepare statement in getNewEvents: $DBI::errstr\n")}
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);
...
...
@@ -328,9 +342,10 @@ sub getNewEvents
sub getLastId
{
my($class,$arg)=@_;
my$function_name='getLastId';
my$sth=$DBH->prepare("SELECT max(id) FROM events;");
if(!defined$sth){die("Cannot prepare statement in getLastId: $DBI::errstr\n")}
if(!defined$sth){die("Cannot prepare statement in $function_name: $DBI::errstr\n")}
$sth->execute;
my$result=$sth->fetchrow();
...
...
@@ -351,8 +366,10 @@ sub registerSender
my$ip=$ENV{'REMOTE_ADDR'};
my$local_ip=$ENV{'SERVER_ADDR'};
my$function_name='registerSender';
if($local_ipne$ip){
write2log("err","Unauthorized access to registerSender from: $ip ($cn) - access allowed only from localhost");
write2log("err","Unauthorized access to $function_name from: $ip ($cn) - access allowed only from localhost");
die("Access denied - access allowed only from localhost!");
}else{
# defined variables by method
...
...
@@ -370,7 +387,7 @@ sub registerSender
# 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;");
if(!defined$sth){die("Cannot prepare check statement in registerSender: $DBI::errstr\n")}
if(!defined$sth){die("Cannot prepare check statement in $function_name: $DBI::errstr\n")}
write2log("info","New sender $hostname (service: $service, cidr: $ip_net_client) was registered");
return1;
...
...
@@ -402,8 +419,10 @@ sub registerReceiver
my$ip=$ENV{'REMOTE_ADDR'};
my$local_ip=$ENV{'SERVER_ADDR'};
my$function_name='registerReceiver';
if($local_ipne$ip){
write2log("err","Unauthorized access to registerReceiver from: $ip ($cn) - access allowed only from localhost");
write2log("err","Unauthorized access to $function_name from: $ip ($cn) - access allowed only from localhost");
die("Access denied - access allowed only from localhost!");
}else{
# variables defined by method
...
...
@@ -421,7 +440,7 @@ sub registerReceiver
# 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;");
if(!defined$sth){die("Cannot prepare check statement in registerReceiver: $DBI::errstr\n")}
if(!defined$sth){die("Cannot prepare check statement in $function_name: $DBI::errstr\n")}