index 19a4dfcac8e74cbea03a628f789abfddc6eb8aa5..cbd1026ad6201c2f275dd73198f9a1266ca83f58 100644 (file)
use Net::LDAP;
use Socket;
use Net::hostent;
-use Net::DNS;
use utf8;
my $event_dir = "/usr/lib/gosa-si/server/events";
$header =~ s/^CLMSG_//;
&main::daemon_log("DEBUG: SIPackages: msg to process: $header", 7);
- &main::daemon_log("$msg", 8);
if( 0 == length @target_l){
&main::daemon_log("ERROR: no target specified for msg $header", 1);
# if delivery not possible raise error and return
if( not @out_msg_l ) {
- &main::daemon_log("WARNING: SIPackages got not answer from event handler '$header'", 3);
+ &main::daemon_log("WARNING: SIPackages got no answer from event handler '$header'", 3);
} elsif( 0 == @out_msg_l) {
&main::daemon_log("ERROR: SIPackages: no event handler or core function defined for '$header'", 1);
}
# return acknowledgement to client
$out_hash = &create_xml_hash("registered", $server_address, $source);
- my $register_out = &create_xml_string($out_hash);
- push(@out_msg_l, $register_out);
# notify registered client to bus
if( $bus_activ eq "on") {
&add_content2xml_hash($out_hash, "timestamp", $act_timestamp);
my $new_client_out = &create_xml_string($out_hash);
push(@out_msg_l, $new_client_out);
- &main::daemon_log("INFO: send bus msg that client '$source' has registerd at server '$server_address'", 5);
+ &main::daemon_log("INFO: send bus msg that client '$source' has registered at server '$server_address'", 5);
}
# give the new client his ldap config
+ # Workaround: Send within the registration response, if the client will get an ldap config later
my $new_ldap_config_out = &new_ldap_config($source);
if( $new_ldap_config_out ) {
- push(@out_msg_l, $new_ldap_config_out);
+ &add_content2xml_hash($out_hash, "ldap_available", "true");
+ }
+ my $register_out = &create_xml_string($out_hash);
+ push(@out_msg_l, $register_out);
+
+ # Really send the ldap config
+ if( $new_ldap_config_out ) {
+ push(@out_msg_l, $new_ldap_config_out);
}
my $hardware_config_out = &hardware_config($source, $gotoHardwareChecksum);
print "\ngot msg $header:\nserver $source has client with $search_param $search_value\n";
}
+
#=== FUNCTION ================================================================
# NAME: new_ldap_config
# PARAMETERS: address - string - ip address and port of a host
-# RETURNS: nothing
+# RETURNS: gosa-si conform message
# DESCRIPTION: send to address the ldap configuration found for dn gotoLdapServer
#===============================================================================
sub new_ldap_config {
$mesg = $main::ldap_handle->search( base => $ldap_base,
scope => 'sub',
attrs => ['dn', 'gotoLdapServer', 'gosaUnitTag', 'FAIclass'],
- filter => "(&(objectClass=GOhard)(macaddress=$macaddress))");
+ filter => "(&(objectClass=GOhard)(macaddress=$macaddress)(gotoLdapServer=*))");
#$mesg->code && die $mesg->error;
if($mesg->code) {
&main::daemon_log($mesg->error, 1);
# Sanity check
if ($mesg->count != 1) {
- &main::daemon_log("WARNING: client mac address $macaddress not found/not unique in ldap search", 1);
+ &main::daemon_log("WARNING: client with mac address $macaddress not found/unique/active - not sending ldap config", 1);
&main::daemon_log("\tbase: $ldap_base", 1);
&main::daemon_log("\tscope: sub", 1);
&main::daemon_log("\tattrs: dn, gotoLdapServer", 1);
- &main::daemon_log("\tfilter: (&(objectClass=GOhard)(macaddress=$macaddress))", 1);
+ &main::daemon_log("\tfilter: (&(objectClass=GOhard)(macaddress=$macaddress)(gotoLdapServer=*))", 1);
return;
}
foreach $server (@servers){
# Conversation for backward compatibility
if (not $server =~ /^\d+:[^:]+:ldap[^:]*:\/\// ) {
- if ($server =~ /^([^:]+):(.*)$/ ) {
+ if ($server =~ /^([^:]+):([^:]+)$/ ) {
$server= "1:dummy:ldap://$1/$2";
+ } elsif ($server =~ /^(\d+):([^:]+):(.*)$/ ) {
+ $server= "$1:dummy:ldap://$2/$3";
}
}