index 5ce0d368fc429a0d9661857f1952bbafb510f8e3..6d7c808b512dd3794b70d8acc62c2b64f9b2d382 100755 (executable)
return 1;
}
-sub sig_die_handler
-{
- my @loc = caller(0);
- daemon_log( "SIGDIE line " . $loc[2] . ": " . $_[0], 1 );
- clean_shutdown();
- return 1;
-}
-
$SIG{'INT'} = \&sig_int_or_term_handler;
$SIG{'TERM'} = \&sig_int_or_term_handler;
$SIG{'__WARN__'} = \&sig_warn_handler;
-$SIG{'__DIE__'} = \&sig_die_handler;
$SIG{'USR1'} = 'IGNORE';
$SIG{'USR2'} = 'IGNORE';
if ($REGISTERED == 1) {
$REGISTERED = 0; # if server is not available, cause reregistering
daemon_log("INFO: cause reregistering at gosa-si-server", 5);
+ sleep(2);
$global_kernel->post('client_session', 'register_at_gosa_si_server');
}
# append shifted gosa-si-server at the end of @servers, so looking for servers never stop if
# a registration never occured
my $server = shift(@servers);
+ &main::daemon_log("INFO: Trying to register with server $server", 3);
push(@servers, $server);
($server_ip = $server) =~ s/:.*$//;
$server_address = $server;
# if delivery of registration msg succeed
if(defined($res) and $res eq "0") {
- # reset try_to_register
- $REGISTRATION_TRIES = 0;
# Set fixed client address and mac address
$client_ip= &get_local_ip_for_remote_ip(sprintf("%s", $server =~ /^([0-9\.]*?):.*$/));
} # end of while
# one circle through all servers finished and no registration succeed
if ( $REGISTRATION_TRIES >= (scalar(@servers)) ) {
+ $REGISTRATION_TRIES = 0;
&write_to_file("gosa-si-no-server-available", $fai_logpath);
- $kernel->delay_set('register_at_gosa_si_server', $delay_set_time);
+ daemon_log("WARNING: Could not register with any of the servers, waiting $delay_set_time seconds",3);
+ sleep($delay_set_time);
+ $kernel->post('client_session', 'register_at_gosa_si_server');
# delivery of registraion msg succeed, waiting for server response
} else {
my $msg_hash;
eval{
$msg = &decrypt_msg($crypted_msg, $module_key);
+ if ($msg !~ /^<xml>/i ) {
+ die 'could not decrypt message';
+ }
&main::daemon_log("decrypted_msg: \n$msg", 9);
$msg_hash = $xml->XMLin($msg, ForceArray=>1);
my $remote_ip = $heap->{'remote_ip'},
my $error = 0;
my $answer;
+ my $msg;
+ my $msg_hash;
daemon_log("INFO: Incoming msg from '$remote_ip'", 5);
daemon_log("DEBUG: Incoming msg:\n$input\n", 9);
- my ($msg, $msg_hash) = &check_key_and_xml_validity($input, $server_key);
+ if (not "$remote_ip" eq "$server_ip") {
+ daemon_log("INFO: Incoming msg not from server, ignoring", 5);
+ $error++;
+ } else {
+ ($msg, $msg_hash) = &check_key_and_xml_validity($input, $server_key);
if( (!$msg) || (!$msg_hash) ) {
daemon_log("WARNING: Deciphering of incoming msg failed", 3);
if($server_address =~ /$remote_ip/) {
}
$FAILED_CRYPTO++;
$REGISTERED = 0;
+ sleep(2);
$kernel->post('client_session', 'register_at_gosa_si_server');
}
}
$error++;
}
-
+ }
######################
# process incoming msg