Skip to content

Commit

Permalink
Merge pull request #35355 from nextcloud/artonge/feat/ldap_connection…
Browse files Browse the repository at this point in the history
…_timeout

Allow to set a custom timeout for ldap connections
  • Loading branch information
blizzz authored Nov 30, 2022
2 parents 415e68f + a781ae3 commit b16c983
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 0 deletions.
3 changes: 3 additions & 0 deletions apps/user_ldap/lib/Configuration.php
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ class Configuration {
'ldapDefaultPPolicyDN' => null,
'ldapExtStorageHomeAttribute' => null,
'ldapMatchingRuleInChainState' => self::LDAP_SERVER_FEATURE_UNKNOWN,
'ldapConnectionTimeout' => 15,
];

public function __construct(string $configPrefix, bool $autoRead = true) {
Expand Down Expand Up @@ -463,6 +464,7 @@ public function getDefaults(): array {
'ldap_user_avatar_rule' => 'default',
'ldap_ext_storage_home_attribute' => '',
'ldap_matching_rule_in_chain_state' => self::LDAP_SERVER_FEATURE_UNKNOWN,
'ldap_connection_timeout' => 15,
];
}

Expand Down Expand Up @@ -526,6 +528,7 @@ public function getConfigTranslationArray(): array {
'ldap_ext_storage_home_attribute' => 'ldapExtStorageHomeAttribute',
'ldap_matching_rule_in_chain_state' => 'ldapMatchingRuleInChainState',
'ldapIgnoreNamingRules' => 'ldapIgnoreNamingRules', // sysconfig
'ldap_connection_timeout' => 'ldapConnectionTimeout',
];
return $array;
}
Expand Down
4 changes: 4 additions & 0 deletions apps/user_ldap/lib/Connection.php
Original file line number Diff line number Diff line change
Expand Up @@ -654,6 +654,10 @@ private function doConnect($host, $port) {
throw new ServerNotAvailableException('Could not disable LDAP referrals.');
}

if (!$this->ldap->setOption($this->ldapConnectionRes, LDAP_OPT_NETWORK_TIMEOUT, $this->configuration->ldapConnectionTimeout)) {
throw new ServerNotAvailableException('Could not set network timeout');
}

if ($this->configuration->ldapTLS) {
if (!$this->ldap->startTls($this->ldapConnectionRes)) {
throw new ServerNotAvailableException('Start TLS failed, when connecting to LDAP host ' . $host . '.');
Expand Down

0 comments on commit b16c983

Please sign in to comment.