Lines 20-26
Link Here
|
20 |
require_once ('Net/LDAP2.php'); |
20 |
require_once ('Net/LDAP2.php'); |
21 |
// Building user DN |
21 |
// Building user DN |
22 |
- $userDN = str_replace('%login', $_SESSION['username'], $rcmail->config->get('password_ldap_userDN_mask')); |
22 |
- $userDN = str_replace('%login', $_SESSION['username'], $rcmail->config->get('password_ldap_userDN_mask')); |
23 |
+ if (strstr($rcmail->config->get('password_ldap_userDN_mask'), '*')){ |
23 |
+ if (strstr($rcmail->config->get('password_ldap_userDN_mask'), '*')){ |
24 |
+ if ($rcmail->config->get('password_ldap_host') == NULL){ |
24 |
+ if ($rcmail->config->get('password_ldap_host') == NULL){ |
25 |
+ $ldapHost = "localhost"; |
25 |
+ $ldapHost = "localhost"; |
26 |
+ } else { |
26 |
+ } else { |
27 |
+ $ldapHost = $rcmail->config->get('password_ldap_host'); |
27 |
+ $ldapHost = $rcmail->config->get('password_ldap_host'); |
28 |
+ } |
28 |
+ } |
29 |
+ if ($rcmail->config->get('password_ldap_port') == NULL){ |
29 |
+ if ($rcmail->config->get('password_ldap_port') == NULL){ |
30 |
+ $ldapPort = 389; |
30 |
+ $ldapPort = 389; |
31 |
+ } else { |
31 |
+ } else { |
32 |
+ $ldapPort = $rcmail->config->get('password_ldap_port'); |
32 |
+ $ldapPort = $rcmail->config->get('password_ldap_port'); |
33 |
+ } |
33 |
+ } |
34 |
+ $ds = ldap_connect($ldapHost, $ldapPort); |
34 |
+ $ds = ldap_connect($ldapHost, $ldapPort); |
35 |
+ if (!$ds){ |
35 |
+ if (!$ds){ |
36 |
+ return PASSWORD_CONNECT_ERROR; |
36 |
+ return PASSWORD_CONNECT_ERROR; |
37 |
+ } |
37 |
+ } |
38 |
+ $br = ldap_bind($ds); |
38 |
+ $br = ldap_bind($ds); |
39 |
+ if (!$br){ |
39 |
+ if (!$br){ |
40 |
+ return PASSWORD_CONNECT_ERROR; |
40 |
+ return PASSWORD_CONNECT_ERROR; |
41 |
+ } |
41 |
+ } |
42 |
+ $nameParts = explode('@', $_SESSION['username']); |
42 |
+ $nameParts = explode('@', $_SESSION['username']); |
43 |
+ $ldapFilter = "(uid=$nameParts[0])"; |
43 |
+ $ldapFilter = "(uid=$nameParts[0])"; |
44 |
+ $ldapAttr = array("dn"); |
44 |
+ $ldapAttr = array("dn"); |
45 |
+ $sr = ldap_search($ds, $rcmail->config->get('password_ldap_basedn'), $ldapFilter, $ldapAttr); |
45 |
+ $sr = ldap_search($ds, $rcmail->config->get('password_ldap_basedn'), $ldapFilter, $ldapAttr); |
46 |
+ if ($sr){ |
46 |
+ if ($sr){ |
47 |
+ $ldapRes = ldap_get_entries($ds, $sr); |
47 |
+ $ldapRes = ldap_get_entries($ds, $sr); |
48 |
+ $userDN = $ldapRes[0]["dn"]; |
48 |
+ $userDN = $ldapRes[0]["dn"]; |
49 |
+ } else { |
49 |
+ } else { |
50 |
+ return PASSWORD_CONNECT_ERROR; |
50 |
+ return PASSWORD_CONNECT_ERROR; |
51 |
+ } |
51 |
+ } |
52 |
+ ldap_close($ds); |
52 |
+ ldap_close($ds); |
53 |
+ } else { |
53 |
+ } else { |
54 |
+ $userDN = str_replace('%login', $_SESSION['username'], $rcmail->config->get('password_ldap_userDN_mask')); |
54 |
+ $userDN = str_replace('%login', $_SESSION['username'], $rcmail->config->get('password_ldap_userDN_mask')); |
55 |
+ } |
55 |
+ } |
56 |
$parts = explode('@', $_SESSION['username']); |
56 |
$parts = explode('@', $_SESSION['username']); |
57 |
if (count($parts) == 2) |
57 |
if (count($parts) == 2) |