Code

Added more checks.
[gosa.git] / gosa-si / server / events / siTriggered.pm
index 88cc39f1b1ce1605278dc00fa9a64140aa6a9ce8..6d80ba94459925d65a30d7b29a58b512ffd8cf11 100644 (file)
@@ -5,6 +5,7 @@ my @events = (
     "got_ping",
     "detected_hardware",
     "trigger_wake",
+    "reload_ldap_config",
     );
 @EXPORT = @events;
 
@@ -24,7 +25,6 @@ my $ldap_uri;
 my $ldap_base;
 my $ldap_admin_dn;
 my $ldap_admin_password;
-my $gosa_unit_tag;
 
 my %cfg_defaults = (
 "server" => {
@@ -32,7 +32,6 @@ my %cfg_defaults = (
     "ldap-base" => [\$ldap_base, ""],
     "ldap-admin-dn" => [\$ldap_admin_dn, ""],
     "ldap-admin-password" => [\$ldap_admin_password, ""],
-       "gosa-unit-tag" => [\$gosa_unit_tag, ""],
     },
 );
 &read_configfile($main::cfg_file, %cfg_defaults);
@@ -64,6 +63,18 @@ sub read_configfile {
     }
 }
 
+
+sub reload_ldap_config {
+    my ($msg, $msg_hash, $session_id) = @_;
+    my $header = @{$msg_hash->{header}}[0];
+    my $target = @{$msg_hash->{$header}}[0];
+
+    my $out_msg = &SIPackages::new_ldap_config($target);
+    my @out_msg_l = ( $out_msg );
+    return @out_msg_l;
+}
+
+
 sub got_ping {
     my ($msg, $msg_hash, $session_id) = @_;
 
@@ -151,7 +162,12 @@ sub detected_hardware {
                my $resolver=Net::DNS::Resolver->new;
                my $ipaddress= $1 if $address =~ /^([0-9\.]*?):.*$/;
                my $dnsresult= $resolver->search($ipaddress);
-               my $dnsname= (defined($dnsresult))?$dnsresult->{answer}[0]->{ptrdname}:$ipaddress;
+               my $dnsname= (
+                       defined($dnsresult) && 
+                       defined($dnsresult->{answer} &&
+                       defined($dnsresult->{answer}[0] &&
+                       defined($dnsresult->{answer}[0]->{ptrdname}
+               )?$dnsresult->{answer}[0]->{ptrdname}:$ipaddress;
                my $cn = (($dnsname =~ /^(\d){1,3}\.(\d){1,3}\.(\d){1,3}\.(\d){1,3}/) ? $dnsname : sprintf "%s", $dnsname =~ /([^\.]+)\.?/);
                my $dn = "cn=$cn,ou=incoming,$ldap_base";
                &main::daemon_log("INFO: Creating entry for $dn",5);
@@ -163,9 +179,9 @@ sub detected_hardware {
                $entry->add("gotomode" => "locked");
                $entry->add("gotoSysStatus" => "new-system");
                $entry->add("ipHostNumber" => $ipaddress);
-               if(defined($gosa_unit_tag) && length($gosa_unit_tag) > 0) {
-                       $entry->add("objectClass" => "gosaAdministrativeUnit");
-                       $entry->add("gosaUnitTag" => $gosa_unit_tag);
+               if(defined($main::gosa_unit_tag) && length($main::gosa_unit_tag) > 0) {
+                       $entry->add("objectClass" => "gosaAdministrativeUnitTag");
+                       $entry->add("gosaUnitTag" => $main::gosa_unit_tag);
                }
                my $res=$entry->update($ldap);
                if(defined($res->{'errorMessage'}) &&