|
|
|
|
@ -23,24 +23,7 @@ |
|
|
|
|
|
|
|
|
|
class OC_USER_LDAP extends OC_User_Backend { |
|
|
|
|
|
|
|
|
|
protected $ds; |
|
|
|
|
protected $configured = false; |
|
|
|
|
|
|
|
|
|
// cached settings |
|
|
|
|
protected $ldap_host; |
|
|
|
|
protected $ldap_port; |
|
|
|
|
protected $ldap_dn; |
|
|
|
|
protected $ldap_password; |
|
|
|
|
protected $ldap_base; |
|
|
|
|
protected $ldap_login_filter; |
|
|
|
|
protected $ldap_userlist_filter; |
|
|
|
|
protected $ldap_tls; |
|
|
|
|
protected $ldap_nocase; |
|
|
|
|
protected $ldap_display_name; |
|
|
|
|
protected $ldap_quota; |
|
|
|
|
protected $ldap_quota_def; |
|
|
|
|
protected $ldap_email; |
|
|
|
|
|
|
|
|
|
protected $ldapUserFilter; |
|
|
|
|
protected $ldapLoginFilter; |
|
|
|
|
protected $ldapQuotaAttribute; |
|
|
|
|
@ -51,42 +34,11 @@ class OC_USER_LDAP extends OC_User_Backend { |
|
|
|
|
protected $ldap_dc = false; |
|
|
|
|
|
|
|
|
|
public function __construct() { |
|
|
|
|
$this->ldap_host = OCP\Config::getAppValue('user_ldap', 'ldap_host',''); |
|
|
|
|
$this->ldap_port = OCP\Config::getAppValue('user_ldap', 'ldap_port', OC_USER_BACKEND_LDAP_DEFAULT_PORT ); |
|
|
|
|
$this->ldap_dn = OCP\Config::getAppValue('user_ldap', 'ldap_dn',''); |
|
|
|
|
$this->ldap_password = OCP\Config::getAppValue('user_ldap', 'ldap_password',''); |
|
|
|
|
$this->ldap_base = OCP\Config::getAppValue('user_ldap', 'ldap_base',''); |
|
|
|
|
$this->ldap_login_filter = OCP\Config::getAppValue('user_ldap', 'ldap_login_filter',''); |
|
|
|
|
$this->ldap_userlist_filter = OCP\Config::getAppValue('user_ldap', 'ldap_userlist_filter','objectClass=person'); |
|
|
|
|
$this->ldap_tls = OCP\Config::getAppValue('user_ldap', 'ldap_tls', 0); |
|
|
|
|
$this->ldap_nocase = OCP\Config::getAppValue('user_ldap', 'ldap_nocase', 0); |
|
|
|
|
$this->ldap_display_name = OCP\Config::getAppValue('user_ldap', 'ldap_display_name', OC_USER_BACKEND_LDAP_DEFAULT_DISPLAY_NAME); |
|
|
|
|
$this->ldap_quota_attr = OCP\Config::getAppValue('user_ldap', 'ldap_quota_attr',''); |
|
|
|
|
$this->ldap_quota_def = OCP\Config::getAppValue('user_ldap', 'ldap_quota_def',''); |
|
|
|
|
$this->ldap_email_attr = OCP\Config::getAppValue('user_ldap', 'ldap_email_attr',''); |
|
|
|
|
|
|
|
|
|
$this->ldapUserFilter = OCP\Config::getAppValue('user_ldap', 'ldap_userlist_filter', '(objectClass=posixAccount)'); |
|
|
|
|
$this->ldapLoginFilter = OCP\Config::getAppValue('user_ldap', 'ldap_login_filter', '(uid=%uid)'); |
|
|
|
|
$this->ldapQuotaAttribute = OCP\Config::getAppValue('user_ldap', 'ldap_quota_attr', ''); |
|
|
|
|
$this->ldapQuotaDefault = OCP\Config::getAppValue('user_ldap', 'ldap_quota_def', ''); |
|
|
|
|
$this->ldapEmailAttribute = OCP\Config::getAppValue('user_ldap', 'ldap_email_attr', ''); |
|
|
|
|
|
|
|
|
|
if( !empty($this->ldap_host) |
|
|
|
|
&& !empty($this->ldap_port) |
|
|
|
|
&& ((!empty($this->ldap_dn) && !empty($this->ldap_password)) || (empty($this->ldap_dn) && empty($this->ldap_password))) |
|
|
|
|
&& !empty($this->ldap_base) |
|
|
|
|
&& !empty($this->ldap_login_filter) |
|
|
|
|
&& !empty($this->ldap_display_name) |
|
|
|
|
) |
|
|
|
|
{ |
|
|
|
|
$this->configured = true; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function __destruct() { |
|
|
|
|
// close the connection |
|
|
|
|
if( $this->ds ) |
|
|
|
|
ldap_unbind($this->ds); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private function updateQuota($dn) { |
|
|
|
|
@ -119,50 +71,6 @@ class OC_USER_LDAP extends OC_User_Backend { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//Connect to LDAP and store the resource |
|
|
|
|
private function getDs() { |
|
|
|
|
if(!$this->ds) { |
|
|
|
|
$this->ds = ldap_connect( $this->ldap_host, $this->ldap_port ); |
|
|
|
|
if(ldap_set_option($this->ds, LDAP_OPT_PROTOCOL_VERSION, 3)) |
|
|
|
|
if(ldap_set_option($this->ds, LDAP_OPT_REFERRALS, 0)) |
|
|
|
|
if($this->ldap_tls) |
|
|
|
|
ldap_start_tls($this->ds); |
|
|
|
|
} |
|
|
|
|
//TODO: Not necessary to perform a bind each time, is it? |
|
|
|
|
// login |
|
|
|
|
if(!empty($this->ldap_dn)) { |
|
|
|
|
$ldap_login = @ldap_bind( $this->ds, $this->ldap_dn, $this->ldap_password ); |
|
|
|
|
if(!$ldap_login) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return $this->ds; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private function getDc( $uid ) { |
|
|
|
|
if(!$this->configured) |
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
// connect to server |
|
|
|
|
$ds = $this->getDs(); |
|
|
|
|
if( !$ds ) |
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
// get dn |
|
|
|
|
$filter = str_replace('%uid', $uid, $this->ldap_login_filter); |
|
|
|
|
$sr = ldap_search( $this->getDs(), $this->ldap_base, $filter ); |
|
|
|
|
$entries = ldap_get_entries( $this->getDs(), $sr ); |
|
|
|
|
|
|
|
|
|
if( $entries['count'] == 0 ) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$this->ldap_dc = $entries[0]; |
|
|
|
|
|
|
|
|
|
return $this->ldap_dc; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @brief Check if the password is correct |
|
|
|
|
* @param $uid The username |
|
|
|
|
@ -214,7 +122,6 @@ class OC_USER_LDAP extends OC_User_Backend { |
|
|
|
|
return in_array($uid, self::getUsers()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
?> |
|
|
|
|
|