Package: smbldap-tools
Version: 0.9.5-1
Severity: important
Tags: patch squeeze sid
Hi,
I'm using slapd via ldaps://. smbldap-tools work fine as far as operation from
an account with access to smbldap_bind.conf is concerned. However users can't
change their own passwords since the bind operation in the perl package is
implemented only for TLS but not for SSL. The attached patch fixes that, works
for me.
Cheers
Daniel
-- System Information:
Debian Release: 6.0.3
APT prefers stable
APT policy: (990, 'stable'), (500, 'stable-updates')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.32-5-dhr-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Versions of packages smbldap-tools depends on:
ii libcrypt-smbhash-perl 0.12-3 generate LM/NT hash of a password
ii libdigest-sha1-perl 2.13-1 NIST SHA-1 message digest algorith
ii libio-socket-ssl-perl 1.33-1+squeeze1 Perl module implementing object or
ii libnet-ldap-perl 1:0.4001-2 client interface to LDAP servers
ii libunicode-maputf8-per 1.11-2 Perl module for conversing between
ii perl 5.10.1-17squeeze2 Larry Wall's Practical Extraction
smbldap-tools recommends no packages.
smbldap-tools suggests no packages.
-- no debconf information
--- /usr/share/perl5/smbldap_tools.pm-orig 2011-11-06 23:44:19.295629801
+0100
+++ /usr/share/perl5/smbldap_tools.pm 2011-11-06 23:55:47.547629647 +0100
@@ -529,23 +529,38 @@
# try to bind with user dn and password to validate current password
sub is_user_valid {
my ( $user, $dn, $pass ) = @_;
- my $userLdap = Net::LDAP->new(
- "$config{slaveLDAP}",
- port => "$config{slavePort}",
- version => 3,
- timeout => 60
- )
- or warn
-"erreur LDAP: Can't contact slave ldap server ($@)\n=>trying to contact the
master server\n";
+ my $userLdap;
+ if ( $config{ldapSSL} ) {
+ $userLdap = Net::LDAP->new(
+ "ldaps://$config{slaveLDAP}:$config{slavePort}",
+ verify => "$config{verify}",
+ cafile => "$config{cafile}"
+ ) or warn "LDAP error: Can't contact slave ldap server with SSL
($@)\n=>trying to contact the master server\n";
+ } else {
+ $userLdap = Net::LDAP->new(
+ "$config{slaveLDAP}",
+ port => "$config{slavePort}",
+ version => 3,
+ timeout => 60,
+ ) or warn "LDAP error: Can't contact slave ldap server ($@)\n=>trying
to contact the master server\n";
+ }
if ( !$userLdap ) {
# connection to the slave failed: trying to contact the master ...
- $userLdap = Net::LDAP->new(
- "$config{masterLDAP}",
- port => "$config{masterPort}",
- version => 3,
- timeout => 60
- ) or die "erreur LDAP: Can't contact master ldap server ($@)\n";
+ if ( $config{ldapSSL} ) {
+ $userLdap = Net::LDAP->new(
+ "ldaps://$config{masterLDAP}:$config{masterPort}",
+ verify => "$config{verify}",
+ cafile => "$config{cafile}"
+ ) or die "erreur LDAP: Can't contact master ldap server with SSL
($@)\n";
+ } else {
+ $userLdap = Net::LDAP->new(
+ "$config{masterLDAP}",
+ port => "$config{masterPort}",
+ version => 3,
+ timeout => 60,
+ ) or die "erreur LDAP: Can't contact master ldap server ($@)\n";
+ }
}
if ($userLdap) {
if ( $config{ldapTLS} == 1 ) {