index 4b69675660732eef7304095320d3bba188811708..08c8689357e994930ba38f38eac978b39723abd0 100644 (file)
&main::daemon_log("0 ERROR: ClientPackages - $log_line", 1);
}
}
+# build vice versa event_hash, event_name => module
+my $event2module_hash = {};
+while (my ($module, $mod_events) = each %$event_hash) {
+ while (my ($event_name, $nothing) = each %$mod_events) {
+ $event2module_hash->{$event_name} = $module;
+ }
+
+}
# Unit tag can be defined in config
if((not defined($main::gosa_unit_tag)) || length($main::gosa_unit_tag) == 0) {
sub get_module_info {
my @info = ($server_address,
$ClientPackages_key,
+ $event_hash,
);
return \@info;
}
@out_msg_l = &here_i_am($msg, $msg_hash, $session_id)
} else {
# a event exists with the header as name
- if( exists $event_hash->{$header} ) {
- &main::daemon_log("$session_id INFO: found event '$header' at event-module '".$event_hash->{$header}."'", 5);
+ if( exists $event2module_hash->{$header} ) {
+ &main::daemon_log("$session_id INFO: found event '$header' at event-module '".$event2module_hash->{$header}."'", 5);
no strict 'refs';
- @out_msg_l = &{$event_hash->{$header}."::$header"}($msg, $msg_hash, $session_id);
+ @out_msg_l = &{$event2module_hash->{$header}."::$header"}($msg, $msg_hash, $session_id);
# if no event handler is implemented
} else {
}
my $entry= $ldap_res->entry(0);
- my $dn = &Net::LDAP::Util::escape_dn_value($entry->dn);
+ my $filter_dn = &Net::LDAP::Util::escape_filter_value($entry->dn);
my $syslog_server = $entry->get_value("gotoSyslogServer");
# If no syslog server is specified at host, just have a look at the object group of the host
my $ldap_res = $ldap_handle->search( base => $ldap_base,
scope => 'sub',
attrs => ['gotoSyslogServer'],
- filter => "(&(objectClass=gosaGroupOfNames)(member=$dn))");
+ filter => "(&(objectClass=gosaGroupOfNames)(member=$filter_dn))");
if($ldap_res->code) {
&main::daemon_log("$session_id ".$ldap_res->error, 1);
return;
"\n\tbase: $ldap_base".
"\n\tscope: sub".
"\n\tattrs: gotoSyslogServer".
- "\n\tfilter: (&(objectClass=gosaGroupOfNames)(member=$dn))", 1);
+ "\n\tfilter: (&(objectClass=gosaGroupOfNames)(member=$filter_dn))", 1);
return;
}
&main::daemon_log("$session_id WARNING: no syslog server specified for this host '$mac_address'", 3);
return;
}
+
# Add syslog server to 'syslog_config' message
my $syslog_msg_hash = &create_xml_hash("new_syslog_config", $server_address, $mac_address);
}
my $entry= $ldap_res->entry(0);
- my $dn = &Net::LDAP::Util::escape_dn_value($entry->dn);
+ my $filter_dn = &Net::LDAP::Util::escape_filter_value($entry->dn);
my @ntp_servers= $entry->get_value("gotoNtpServer");
# If no ntp server is specified at host, just have a look at the object group of the host
my $ldap_res = $ldap_handle->search( base => $ldap_base,
scope => 'sub',
attrs => ['gotoNtpServer'],
- filter => "(&(objectClass=gosaGroupOfNames)(member=$dn))");
+ filter => "(&(objectClass=gosaGroupOfNames)(member=$filter_dn))");
if($ldap_res->code) {
&main::daemon_log("$session_id ".$ldap_res->error, 1);
return;
"\n\tbase: $ldap_base".
"\n\tscope: sub".
"\n\tattrs: gotoNtpServer".
- "\n\tfilter: (&(objectClass=gosaGroupOfNames)(member=$dn))", 1);
+ "\n\tfilter: (&(objectClass=gosaGroupOfNames)(member=$filter_dn))", 1);
return;
}
my $hit_counter = keys %{$res};
if( not $hit_counter == 1 ) {
&main::daemon_log("$session_id ERROR: more or no hit found in known_clients_db by query '$sql_statement'", 1);
+ return;
}
$address = $res->{1}->{hostname};
# Sanity check
if ($mesg->count != 1) {
- &main::daemon_log("$session_id WARNING: client with mac address $macaddress not found/unique/active - not sending ldap config".
+ &main::daemon_log("$session_id ERROR: client with mac address $macaddress not found/unique/active - not sending ldap config".
"\n\tbase: $ldap_base".
"\n\tscope: sub".
"\n\tattrs: dn, gotoLdapServer".
}
my $entry= $mesg->entry(0);
- my $dn= $entry->dn;
+ my $filter_dn= &Net::LDAP::Util::escape_filter_value($entry->dn);
my @servers= $entry->get_value("gotoLdapServer");
my $unit_tag= $entry->get_value("gosaUnitTag");
my @ldap_uris;
my $server;
my $base;
my $release;
+ my $dn= $entry->dn;
# Fill release if available
my $FAIclass= $entry->get_value("FAIclass");
# Do we need to look at an object class?
if (not @servers){
- my $escaped_dn = &Net::LDAP::Util::escape_dn_value($dn);
$mesg = $ldap_handle->search( base => $ldap_base,
scope => 'sub',
attrs => ['dn', 'gotoLdapServer', 'FAIclass'],
- filter => "(&(objectClass=gosaGroupOfNames)(member=$escaped_dn))");
+ filter => "(&(objectClass=gosaGroupOfNames)(member=$filter_dn))");
if($mesg->code) {
- &main::daemon_log("$session_id ERROR: unable to search for '(&(objectClass=gosaGroupOfNames)(member=$dn))': ".$mesg->error, 1);
+ &main::daemon_log("$session_id ERROR: unable to search for '(&(objectClass=gosaGroupOfNames)(member=$filter_dn))': ".$mesg->error, 1);
return;
}
"\n\tbase: $ldap_base".
"\n\tscope: sub".
"\n\tattrs: dn, gotoLdapServer, FAIclass".
- "\n\tfilter: (&(objectClass=gosaGroupOfNames)(member=$escaped_dn))", 1);
+ "\n\tfilter: (&(objectClass=gosaGroupOfNames)(member=$filter_dn))", 1);
return;
}
} else {
my $entry= $mesg->entry(0);
- my $dn= $entry->dn;
if (defined($entry->get_value("gotoHardwareChecksum"))) {
if (! $entry->get_value("gotoHardwareChecksum") eq $gotoHardwareChecksum) {
$entry->replace(gotoHardwareChecksum => $gotoHardwareChecksum);