> 
> You wrote (18. Mai 2004 06:21):
> > I have included a diff file that contains the modifications made to 
> > each file.  The basic idea is a foreach loop that loops 
> through a list 
> > of servers looking for a valid host.  The loop quits as  
> soon as the 
> > first active host is found.  The list is passed in from 
> Config.pm via 
> > a reference to a regular array.
> 
> I cannot open your file, could you please resend it to me inline?
> 

Here it is.


Index: Kernel/System/CustomerAuth/LDAP.pm
===================================================================
--- Kernel/System/CustomerAuth/LDAP.pm  (revision 15)
+++ Kernel/System/CustomerAuth/LDAP.pm  (revision 16)
@@ -100,14 +100,25 @@
     # --
     # ldap connect and bind (maybe with SearchUserDN and SearchUserPw)
     # --
-    my $LDAP = Net::LDAP->new($Self->{Host}) or die "$@";
-    if (!$LDAP->bind(dn => $Self->{SearchUserDN}, password =>
$Self->{SearchUserPw})) {
-        $Self->{LogObject}->Log(
-          Priority => 'error',
-          Message => "First bind failed!",
-        );
-        return;
-    }
+       my $LDAP;
+       my $Host;
+       foreach $Host (@{$Self->{Host}}) {
+       $LDAP = Net::LDAP->new($Host) or next;
+               if ($Self->{Debug} > 0) {
+                       $Self->{LogObject}->Log(
+                               Priority => 'notice',
+                               Message => "Found an active LDAP server at:
$Host",
+                       );
+               }
+               last;
+       }
+       if (!$LDAP->bind(dn => $Self->{SearchUserDN}, password =>
$Self->{SearchUserPw})) {
+               $Self->{LogObject}->Log(
+               Priority => 'error',
+               Message => "First bind failed against $Host!",
+               );
+               return;
+       }
     # --
     # perform user search
     # --
Index: Kernel/System/CustomerUser/LDAP.pm
===================================================================
--- Kernel/System/CustomerUser/LDAP.pm  (revision 15)
+++ Kernel/System/CustomerUser/LDAP.pm  (revision 16)
@@ -49,14 +49,25 @@
      || die "Need CustomerUser->CustomerID in Kernel/Config.pm";
 
     # ldap connect and bind (maybe with SearchUserDN and SearchUserPw)
-    $Self->{LDAP} = Net::LDAP->new($Self->{Host}) or die "$@";
-    if (!$Self->{LDAP}->bind(dn => $Self->{SearchUserDN}, password =>
$Self->{SearchUserPw})) {
-        $Self->{LogObject}->Log(
-          Priority => 'error',
-          Message => "First bind failed!",
-        );
-        return;
-    }
+
+       my $Host;
+       foreach $Host (@{$Self->{Host}}) {
+       $Self->{LDAP} = Net::LDAP->new($Host) or next;
+               if ($Self->{Debug} > 0) {
+                       $Self->{LogObject}->Log(
+                               Priority => 'notice',
+                               Message => "Found an active LDAP server at:
$Host",
+                       );
+               }
+               last;
+       }
+       if (!$Self->{LDAP}->bind(dn => $Self->{SearchUserDN}, password =>
$Self->{SearchUserPw})) {
+               $Self->{LogObject}->Log(
+               Priority => 'error',
+               Message => "First bind failed against $Host!",
+               );
+               return;
+       }
     return $Self;
 }
 # --
Index: Kernel/System/Auth/LDAP.pm
===================================================================
--- Kernel/System/Auth/LDAP.pm  (revision 15)
+++ Kernel/System/Auth/LDAP.pm  (revision 16)
@@ -106,14 +106,25 @@
     # --
     # ldap connect and bind (maybe with SearchUserDN and SearchUserPw)
     # --
-    my $LDAP = Net::LDAP->new($Self->{Host}) or die "$@";
-    if (!$LDAP->bind(dn => $Self->{SearchUserDN}, password =>
$Self->{SearchUserPw})) {
-        $Self->{LogObject}->Log(
-          Priority => 'error',
-          Message => "First bind failed!",
-        );
-        return;
-    }
+       my $LDAP;
+       my $Host;
+       foreach $Host (@{$Self->{Host}}) {
+       $LDAP = Net::LDAP->new($Host) or next;
+               if ($Self->{Debug} > 0) {
+                       $Self->{LogObject}->Log(
+                               Priority => 'notice',
+                               Message => "Found an active LDAP server at:
$Host",
+                       );
+               }
+               last;
+       }
+       if (!$LDAP->bind(dn => $Self->{SearchUserDN}, password =>
$Self->{SearchUserPw})) {
+               $Self->{LogObject}->Log(
+               Priority => 'error',
+               Message => "First bind failed against $Host!",
+               );
+               return;
+       }
     # --
     # perform user search
     # --
_______________________________________________
OTRS mailing list: dev - Webpage: http://otrs.org/
Archive: http://lists.otrs.org/pipermail/dev
To unsubscribe: http://lists.otrs.org/cgi-bin/listinfo/dev

Reply via email to