aboutsummaryrefslogtreecommitdiffstats
path: root/apps/user_ldap/lib
diff options
context:
space:
mode:
Diffstat (limited to 'apps/user_ldap/lib')
-rw-r--r--apps/user_ldap/lib/Access.php8
-rw-r--r--apps/user_ldap/lib/AccessFactory.php1
-rw-r--r--apps/user_ldap/lib/AppInfo/Application.php1
-rw-r--r--apps/user_ldap/lib/Command/ResetGroup.php1
-rw-r--r--apps/user_ldap/lib/Command/ResetUser.php1
-rw-r--r--apps/user_ldap/lib/Command/Search.php3
-rw-r--r--apps/user_ldap/lib/Command/SetConfig.php4
-rw-r--r--apps/user_ldap/lib/Command/TestUserSettings.php6
-rw-r--r--apps/user_ldap/lib/Connection.php8
-rw-r--r--apps/user_ldap/lib/ConnectionFactory.php1
-rw-r--r--apps/user_ldap/lib/Controller/ConfigAPIController.php1
-rw-r--r--apps/user_ldap/lib/Controller/RenewPasswordController.php1
-rw-r--r--apps/user_ldap/lib/Exceptions/AttributeNotSet.php1
-rw-r--r--apps/user_ldap/lib/Exceptions/ConstraintViolationException.php1
-rw-r--r--apps/user_ldap/lib/Exceptions/NotOnLDAP.php1
-rw-r--r--apps/user_ldap/lib/GroupPluginManager.php1
-rw-r--r--apps/user_ldap/lib/Group_LDAP.php14
-rw-r--r--apps/user_ldap/lib/Handler/ExtStorageConfigHandler.php1
-rw-r--r--apps/user_ldap/lib/Helper.php96
-rw-r--r--apps/user_ldap/lib/IGroupLDAP.php1
-rw-r--r--apps/user_ldap/lib/ILDAPGroupPlugin.php1
-rw-r--r--apps/user_ldap/lib/ILDAPUserPlugin.php1
-rw-r--r--apps/user_ldap/lib/IUserLDAP.php5
-rw-r--r--apps/user_ldap/lib/Jobs/CleanUp.php6
-rw-r--r--apps/user_ldap/lib/LDAP.php46
-rw-r--r--apps/user_ldap/lib/Migration/UUIDFix.php1
-rw-r--r--apps/user_ldap/lib/Migration/UUIDFixGroup.php1
-rw-r--r--apps/user_ldap/lib/Migration/UUIDFixInsert.php1
-rw-r--r--apps/user_ldap/lib/Migration/UUIDFixUser.php1
-rw-r--r--apps/user_ldap/lib/Notification/Notifier.php1
-rw-r--r--apps/user_ldap/lib/Settings/Admin.php5
-rw-r--r--apps/user_ldap/lib/Settings/Section.php1
-rw-r--r--apps/user_ldap/lib/User/DeletedUsersIndex.php1
-rw-r--r--apps/user_ldap/lib/User/User.php10
-rw-r--r--apps/user_ldap/lib/UserPluginManager.php1
-rw-r--r--apps/user_ldap/lib/User_LDAP.php12
-rw-r--r--apps/user_ldap/lib/User_Proxy.php10
-rw-r--r--apps/user_ldap/lib/Wizard.php8
-rw-r--r--apps/user_ldap/lib/WizardResult.php2
39 files changed, 159 insertions, 107 deletions
diff --git a/apps/user_ldap/lib/Access.php b/apps/user_ldap/lib/Access.php
index ff9ed6d7747..9fe0aa64268 100644
--- a/apps/user_ldap/lib/Access.php
+++ b/apps/user_ldap/lib/Access.php
@@ -341,8 +341,8 @@ class Access extends LDAPUtility {
$cr = $this->connection->getConnectionResource();
try {
// try PASSWD extended operation first
- return @$this->invokeLDAPMethod('exopPasswd', $userDN, '', $password) ||
- @$this->invokeLDAPMethod('modReplace', $userDN, $password);
+ return @$this->invokeLDAPMethod('exopPasswd', $userDN, '', $password)
+ || @$this->invokeLDAPMethod('modReplace', $userDN, $password);
} catch (ConstraintViolationException $e) {
throw new HintException('Password change rejected.', Util::getL10N('user_ldap')->t('Password change rejected. Hint: %s', $e->getMessage()), (int)$e->getCode());
}
@@ -1811,8 +1811,8 @@ class Access extends LDAPUtility {
* user. Instead we write a log message.
*/
$this->logger->info(
- 'Passed string does not resemble a valid GUID. Known UUID ' .
- '({uuid}) probably does not match UUID configuration.',
+ 'Passed string does not resemble a valid GUID. Known UUID '
+ . '({uuid}) probably does not match UUID configuration.',
['app' => 'user_ldap', 'uuid' => $guid]
);
return $guid;
diff --git a/apps/user_ldap/lib/AccessFactory.php b/apps/user_ldap/lib/AccessFactory.php
index c5c8ca17e41..da114c467a7 100644
--- a/apps/user_ldap/lib/AccessFactory.php
+++ b/apps/user_ldap/lib/AccessFactory.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/AppInfo/Application.php b/apps/user_ldap/lib/AppInfo/Application.php
index 01ffbc5b853..70b7920f7ab 100644
--- a/apps/user_ldap/lib/AppInfo/Application.php
+++ b/apps/user_ldap/lib/AppInfo/Application.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/Command/ResetGroup.php b/apps/user_ldap/lib/Command/ResetGroup.php
index 89d3f31f69d..5833ca980f2 100644
--- a/apps/user_ldap/lib/Command/ResetGroup.php
+++ b/apps/user_ldap/lib/Command/ResetGroup.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/Command/ResetUser.php b/apps/user_ldap/lib/Command/ResetUser.php
index 58dfbf68519..1409806e4ac 100644
--- a/apps/user_ldap/lib/Command/ResetUser.php
+++ b/apps/user_ldap/lib/Command/ResetUser.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/Command/Search.php b/apps/user_ldap/lib/Command/Search.php
index ad13c94c84a..85906b20e9a 100644
--- a/apps/user_ldap/lib/Command/Search.php
+++ b/apps/user_ldap/lib/Command/Search.php
@@ -12,7 +12,6 @@ use OCA\User_LDAP\Helper;
use OCA\User_LDAP\LDAP;
use OCA\User_LDAP\User_Proxy;
use OCP\IConfig;
-use OCP\IDBConnection;
use OCP\Server;
use Symfony\Component\Console\Command\Command;
@@ -83,7 +82,7 @@ class Search extends Command {
}
protected function execute(InputInterface $input, OutputInterface $output): int {
- $helper = new Helper($this->ocConfig, Server::get(IDBConnection::class));
+ $helper = Server::get(Helper::class);
$configPrefixes = $helper->getServerConfigurationPrefixes(true);
$ldapWrapper = new LDAP();
diff --git a/apps/user_ldap/lib/Command/SetConfig.php b/apps/user_ldap/lib/Command/SetConfig.php
index 5a0b65a2c3e..7e9efcf34d0 100644
--- a/apps/user_ldap/lib/Command/SetConfig.php
+++ b/apps/user_ldap/lib/Command/SetConfig.php
@@ -11,8 +11,6 @@ use OCA\User_LDAP\Configuration;
use OCA\User_LDAP\ConnectionFactory;
use OCA\User_LDAP\Helper;
use OCA\User_LDAP\LDAP;
-use OCP\IConfig;
-use OCP\IDBConnection;
use OCP\Server;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
@@ -43,7 +41,7 @@ class SetConfig extends Command {
}
protected function execute(InputInterface $input, OutputInterface $output): int {
- $helper = new Helper(Server::get(IConfig::class), Server::get(IDBConnection::class));
+ $helper = Server::get(Helper::class);
$availableConfigs = $helper->getServerConfigurationPrefixes();
$configID = $input->getArgument('configID');
if (!in_array($configID, $availableConfigs)) {
diff --git a/apps/user_ldap/lib/Command/TestUserSettings.php b/apps/user_ldap/lib/Command/TestUserSettings.php
index 51cf7c06473..12690158f98 100644
--- a/apps/user_ldap/lib/Command/TestUserSettings.php
+++ b/apps/user_ldap/lib/Command/TestUserSettings.php
@@ -91,9 +91,9 @@ class TestUserSettings extends Command {
if (!$access->isDNPartOfBase($knownDn, $access->getConnection()->ldapBaseUsers)) {
$output->writeln(
- "User <info>$knownDn</info> is not in one of the configured user bases: <info>" .
- implode(',', $access->getConnection()->ldapBaseUsers) .
- '</info>.'
+ "User <info>$knownDn</info> is not in one of the configured user bases: <info>"
+ . implode(',', $access->getConnection()->ldapBaseUsers)
+ . '</info>.'
);
}
diff --git a/apps/user_ldap/lib/Connection.php b/apps/user_ldap/lib/Connection.php
index 78a5f93d29e..336179ac341 100644
--- a/apps/user_ldap/lib/Connection.php
+++ b/apps/user_ldap/lib/Connection.php
@@ -11,8 +11,6 @@ use OC\ServerNotAvailableException;
use OCA\User_LDAP\Exceptions\ConfigurationIssueException;
use OCP\ICache;
use OCP\ICacheFactory;
-use OCP\IConfig;
-use OCP\IDBConnection;
use OCP\IL10N;
use OCP\Server;
use OCP\Util;
@@ -156,7 +154,7 @@ class Connection extends LDAPUtility {
if ($memcache->isAvailable()) {
$this->cache = $memcache->createDistributed();
}
- $helper = new Helper(Server::get(IConfig::class), Server::get(IDBConnection::class));
+ $helper = Server::get(Helper::class);
$this->doNotValidate = !in_array($this->configPrefix,
$helper->getServerConfigurationPrefixes());
$this->logger = Server::get(LoggerInterface::class);
@@ -663,8 +661,8 @@ class Connection extends LDAPUtility {
$this->doConnect($this->configuration->ldapBackupHost ?? '', $this->configuration->ldapBackupPort ?? '');
$this->bindResult = [];
$bindStatus = $this->bind();
- $error = $this->ldap->isResource($this->ldapConnectionRes) ?
- $this->ldap->errno($this->ldapConnectionRes) : -1;
+ $error = $this->ldap->isResource($this->ldapConnectionRes)
+ ? $this->ldap->errno($this->ldapConnectionRes) : -1;
if ($bindStatus && $error === 0 && !$forceBackupHost) {
//when bind to backup server succeeded and failed to main server,
//skip contacting it for 15min
diff --git a/apps/user_ldap/lib/ConnectionFactory.php b/apps/user_ldap/lib/ConnectionFactory.php
index fbc30f6b73f..dd0ad31920a 100644
--- a/apps/user_ldap/lib/ConnectionFactory.php
+++ b/apps/user_ldap/lib/ConnectionFactory.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/Controller/ConfigAPIController.php b/apps/user_ldap/lib/Controller/ConfigAPIController.php
index 0a019312e35..d98e6d41b52 100644
--- a/apps/user_ldap/lib/Controller/ConfigAPIController.php
+++ b/apps/user_ldap/lib/Controller/ConfigAPIController.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/Controller/RenewPasswordController.php b/apps/user_ldap/lib/Controller/RenewPasswordController.php
index 275e2671bf7..8389a362b8f 100644
--- a/apps/user_ldap/lib/Controller/RenewPasswordController.php
+++ b/apps/user_ldap/lib/Controller/RenewPasswordController.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/Exceptions/AttributeNotSet.php b/apps/user_ldap/lib/Exceptions/AttributeNotSet.php
index 35df63518b4..4d6053eda66 100644
--- a/apps/user_ldap/lib/Exceptions/AttributeNotSet.php
+++ b/apps/user_ldap/lib/Exceptions/AttributeNotSet.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/Exceptions/ConstraintViolationException.php b/apps/user_ldap/lib/Exceptions/ConstraintViolationException.php
index f468abd2282..d0d384c31de 100644
--- a/apps/user_ldap/lib/Exceptions/ConstraintViolationException.php
+++ b/apps/user_ldap/lib/Exceptions/ConstraintViolationException.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/Exceptions/NotOnLDAP.php b/apps/user_ldap/lib/Exceptions/NotOnLDAP.php
index 8f3d8fc3499..cd74e918829 100644
--- a/apps/user_ldap/lib/Exceptions/NotOnLDAP.php
+++ b/apps/user_ldap/lib/Exceptions/NotOnLDAP.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/GroupPluginManager.php b/apps/user_ldap/lib/GroupPluginManager.php
index 6bdb5559a02..9e8ae6805a4 100644
--- a/apps/user_ldap/lib/GroupPluginManager.php
+++ b/apps/user_ldap/lib/GroupPluginManager.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/Group_LDAP.php b/apps/user_ldap/lib/Group_LDAP.php
index 85c71fc5fd8..271cc96afbd 100644
--- a/apps/user_ldap/lib/Group_LDAP.php
+++ b/apps/user_ldap/lib/Group_LDAP.php
@@ -1019,9 +1019,9 @@ class Group_LDAP extends ABackend implements GroupInterface, IGroupLDAP, IGetDis
return $groupUsers;
}
$search = $this->access->escapeFilterPart($search, true);
- $isMemberUid =
- ($this->ldapGroupMemberAssocAttr === 'memberuid' ||
- $this->ldapGroupMemberAssocAttr === 'zimbramailforwardingaddress');
+ $isMemberUid
+ = ($this->ldapGroupMemberAssocAttr === 'memberuid'
+ || $this->ldapGroupMemberAssocAttr === 'zimbramailforwardingaddress');
//we need to apply the search filter
//alternatives that need to be checked:
@@ -1199,10 +1199,10 @@ class Group_LDAP extends ABackend implements GroupInterface, IGroupLDAP, IGetDis
* compared with GroupInterface::CREATE_GROUP etc.
*/
public function implementsActions($actions): bool {
- return (bool)((GroupInterface::COUNT_USERS |
- GroupInterface::DELETE_GROUP |
- GroupInterface::IS_ADMIN |
- $this->groupPluginManager->getImplementedActions()) & $actions);
+ return (bool)((GroupInterface::COUNT_USERS
+ | GroupInterface::DELETE_GROUP
+ | GroupInterface::IS_ADMIN
+ | $this->groupPluginManager->getImplementedActions()) & $actions);
}
/**
diff --git a/apps/user_ldap/lib/Handler/ExtStorageConfigHandler.php b/apps/user_ldap/lib/Handler/ExtStorageConfigHandler.php
index d4a8f332362..8b63d54aa66 100644
--- a/apps/user_ldap/lib/Handler/ExtStorageConfigHandler.php
+++ b/apps/user_ldap/lib/Handler/ExtStorageConfigHandler.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/Helper.php b/apps/user_ldap/lib/Helper.php
index 27c19e6c4f5..d3abf04fd1e 100644
--- a/apps/user_ldap/lib/Helper.php
+++ b/apps/user_ldap/lib/Helper.php
@@ -9,7 +9,7 @@ namespace OCA\User_LDAP;
use OCP\Cache\CappedMemoryCache;
use OCP\DB\QueryBuilder\IQueryBuilder;
-use OCP\IConfig;
+use OCP\IAppConfig;
use OCP\IDBConnection;
use OCP\Server;
@@ -18,7 +18,7 @@ class Helper {
protected CappedMemoryCache $sanitizeDnCache;
public function __construct(
- private IConfig $config,
+ private IAppConfig $appConfig,
private IDBConnection $connection,
) {
$this->sanitizeDnCache = new CappedMemoryCache(10000);
@@ -45,21 +45,37 @@ class Helper {
* except the default (first) server shall be connected to.
*
*/
- public function getServerConfigurationPrefixes($activeConfigurations = false): array {
+ public function getServerConfigurationPrefixes(bool $activeConfigurations = false): array {
+ $all = $this->getAllServerConfigurationPrefixes();
+ if (!$activeConfigurations) {
+ return $all;
+ }
+ return array_values(array_filter(
+ $all,
+ fn (string $prefix): bool => ($this->appConfig->getValueString('user_ldap', $prefix . 'ldap_configuration_active') === '1')
+ ));
+ }
+
+ protected function getAllServerConfigurationPrefixes(): array {
+ $unfilled = ['UNFILLED'];
+ $prefixes = $this->appConfig->getValueArray('user_ldap', 'configuration_prefixes', $unfilled);
+ if ($prefixes !== $unfilled) {
+ return $prefixes;
+ }
+
+ /* Fallback to browsing key for migration from Nextcloud<32 */
$referenceConfigkey = 'ldap_configuration_active';
$keys = $this->getServersConfig($referenceConfigkey);
$prefixes = [];
foreach ($keys as $key) {
- if ($activeConfigurations && $this->config->getAppValue('user_ldap', $key, '0') !== '1') {
- continue;
- }
-
$len = strlen($key) - strlen($referenceConfigkey);
$prefixes[] = substr($key, 0, $len);
}
- asort($prefixes);
+ sort($prefixes);
+
+ $this->appConfig->setValueArray('user_ldap', 'configuration_prefixes', $prefixes);
return $prefixes;
}
@@ -68,46 +84,45 @@ class Helper {
*
* determines the host for every configured connection
*
- * @return array an array with configprefix as keys
+ * @return array<string,string> an array with configprefix as keys
*
*/
- public function getServerConfigurationHosts() {
- $referenceConfigkey = 'ldap_host';
-
- $keys = $this->getServersConfig($referenceConfigkey);
+ public function getServerConfigurationHosts(): array {
+ $prefixes = $this->getServerConfigurationPrefixes();
+ $referenceConfigkey = 'ldap_host';
$result = [];
- foreach ($keys as $key) {
- $len = strlen($key) - strlen($referenceConfigkey);
- $prefix = substr($key, 0, $len);
- $result[$prefix] = $this->config->getAppValue('user_ldap', $key);
+ foreach ($prefixes as $prefix) {
+ $result[$prefix] = $this->appConfig->getValueString('user_ldap', $prefix . $referenceConfigkey);
}
return $result;
}
/**
- * return the next available configuration prefix
- *
- * @return string
+ * return the next available configuration prefix and register it as used
*/
- public function getNextServerConfigurationPrefix() {
- $serverConnections = $this->getServerConfigurationPrefixes();
-
- if (count($serverConnections) === 0) {
- return 's01';
+ public function getNextServerConfigurationPrefix(): string {
+ $prefixes = $this->getServerConfigurationPrefixes();
+
+ if (count($prefixes) === 0) {
+ $prefix = 's01';
+ } else {
+ sort($prefixes);
+ $lastKey = array_pop($prefixes);
+ $lastNumber = (int)str_replace('s', '', $lastKey);
+ $prefix = 's' . str_pad((string)($lastNumber + 1), 2, '0', STR_PAD_LEFT);
}
- sort($serverConnections);
- $lastKey = array_pop($serverConnections);
- $lastNumber = (int)str_replace('s', '', $lastKey);
- return 's' . str_pad((string)($lastNumber + 1), 2, '0', STR_PAD_LEFT);
+ $prefixes[] = $prefix;
+ $this->appConfig->setValueArray('user_ldap', 'configuration_prefixes', $prefixes);
+ return $prefix;
}
private function getServersConfig(string $value): array {
$regex = '/' . $value . '$/S';
- $keys = $this->config->getAppKeys('user_ldap');
+ $keys = $this->appConfig->getKeys('user_ldap');
$result = [];
foreach ($keys as $key) {
if (preg_match($regex, $key) === 1) {
@@ -125,7 +140,9 @@ class Helper {
* @return bool true on success, false otherwise
*/
public function deleteServerConfiguration($prefix) {
- if (!in_array($prefix, self::getServerConfigurationPrefixes())) {
+ $prefixes = $this->getServerConfigurationPrefixes();
+ $index = array_search($prefix, $prefixes);
+ if ($index === false) {
return false;
}
@@ -144,7 +161,11 @@ class Helper {
$query->andWhere($query->expr()->notLike('configkey', $query->createNamedParameter('s%')));
}
- $deletedRows = $query->execute();
+ $deletedRows = $query->executeStatement();
+
+ unset($prefixes[$index]);
+ $this->appConfig->setValueArray('user_ldap', 'configuration_prefixes', array_values($prefixes));
+
return $deletedRows !== 0;
}
@@ -152,10 +173,13 @@ class Helper {
* checks whether there is one or more disabled LDAP configurations
*/
public function haveDisabledConfigurations(): bool {
- $all = $this->getServerConfigurationPrefixes(false);
- $active = $this->getServerConfigurationPrefixes(true);
-
- return count($all) !== count($active) || count($all) === 0;
+ $all = $this->getServerConfigurationPrefixes();
+ foreach ($all as $prefix) {
+ if ($this->appConfig->getValueString('user_ldap', $prefix . 'ldap_configuration_active') !== '1') {
+ return true;
+ }
+ }
+ return false;
}
/**
diff --git a/apps/user_ldap/lib/IGroupLDAP.php b/apps/user_ldap/lib/IGroupLDAP.php
index 764e0c88e64..667eb421004 100644
--- a/apps/user_ldap/lib/IGroupLDAP.php
+++ b/apps/user_ldap/lib/IGroupLDAP.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/ILDAPGroupPlugin.php b/apps/user_ldap/lib/ILDAPGroupPlugin.php
index d601e3a6548..261b9383dc1 100644
--- a/apps/user_ldap/lib/ILDAPGroupPlugin.php
+++ b/apps/user_ldap/lib/ILDAPGroupPlugin.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/ILDAPUserPlugin.php b/apps/user_ldap/lib/ILDAPUserPlugin.php
index 3dbda1f6a99..80437bef452 100644
--- a/apps/user_ldap/lib/ILDAPUserPlugin.php
+++ b/apps/user_ldap/lib/ILDAPUserPlugin.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/IUserLDAP.php b/apps/user_ldap/lib/IUserLDAP.php
index 6fcd68c0c01..5e8e29c3adf 100644
--- a/apps/user_ldap/lib/IUserLDAP.php
+++ b/apps/user_ldap/lib/IUserLDAP.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -8,14 +9,14 @@ namespace OCA\User_LDAP;
interface IUserLDAP {
//Functions used by LDAPProvider
-
+
/**
* Return access for LDAP interaction.
* @param string $uid
* @return Access instance of Access for LDAP interaction
*/
public function getLDAPAccess($uid);
-
+
/**
* Return a new LDAP connection for the specified user.
* @param string $uid
diff --git a/apps/user_ldap/lib/Jobs/CleanUp.php b/apps/user_ldap/lib/Jobs/CleanUp.php
index 7cfc473c950..76277b43c0b 100644
--- a/apps/user_ldap/lib/Jobs/CleanUp.php
+++ b/apps/user_ldap/lib/Jobs/CleanUp.php
@@ -67,7 +67,7 @@ class CleanUp extends TimedJob {
if (isset($arguments['helper'])) {
$this->ldapHelper = $arguments['helper'];
} else {
- $this->ldapHelper = new Helper(Server::get(IConfig::class), Server::get(IDBConnection::class));
+ $this->ldapHelper = Server::get(Helper::class);
}
if (isset($arguments['ocConfig'])) {
@@ -179,8 +179,8 @@ class CleanUp extends TimedJob {
* @param bool $reset whether the offset should be set to 0
*/
public function setOffset(bool $reset = false): void {
- $newOffset = $reset ? 0 :
- $this->getOffset() + $this->getChunkSize();
+ $newOffset = $reset ? 0
+ : $this->getOffset() + $this->getChunkSize();
$this->ocConfig->setAppValue('user_ldap', 'cleanUpJobOffset', (string)$newOffset);
}
diff --git a/apps/user_ldap/lib/LDAP.php b/apps/user_ldap/lib/LDAP.php
index 50af2556c72..1cf20c4b939 100644
--- a/apps/user_ldap/lib/LDAP.php
+++ b/apps/user_ldap/lib/LDAP.php
@@ -11,6 +11,7 @@ use OC\ServerNotAvailableException;
use OCA\User_LDAP\DataCollector\LdapDataCollector;
use OCA\User_LDAP\Exceptions\ConstraintViolationException;
use OCP\IConfig;
+use OCP\ILogger;
use OCP\Profiler\IProfiler;
use OCP\Server;
use Psr\Log\LoggerInterface;
@@ -18,6 +19,7 @@ use Psr\Log\LoggerInterface;
class LDAP implements ILDAPWrapper {
protected array $curArgs = [];
protected LoggerInterface $logger;
+ protected IConfig $config;
private ?LdapDataCollector $dataCollector = null;
@@ -32,6 +34,7 @@ class LDAP implements ILDAPWrapper {
}
$this->logger = Server::get(LoggerInterface::class);
+ $this->config = Server::get(IConfig::class);
}
/**
@@ -291,6 +294,21 @@ class LDAP implements ILDAPWrapper {
return null;
}
+ /**
+ * Turn resources into string, and removes potentially problematic cookie string to avoid breaking logfiles
+ */
+ private function sanitizeFunctionParameters(array $args): array {
+ return array_map(function ($item) {
+ if ($this->isResource($item)) {
+ return '(resource)';
+ }
+ if (isset($item[0]['value']['cookie']) && $item[0]['value']['cookie'] !== '') {
+ $item[0]['value']['cookie'] = '*opaque cookie*';
+ }
+ return $item;
+ }, $args);
+ }
+
private function preFunctionCall(string $functionName, array $args): void {
$this->curArgs = $args;
if (strcasecmp($functionName, 'ldap_bind') === 0 || strcasecmp($functionName, 'ldap_exop_passwd') === 0) {
@@ -301,32 +319,24 @@ class LDAP implements ILDAPWrapper {
$args[2] = IConfig::SENSITIVE_VALUE;
}
- $this->logger->debug('Calling LDAP function {func} with parameters {args}', [
- 'app' => 'user_ldap',
- 'func' => $functionName,
- 'args' => json_encode($args),
- ]);
+ if ($this->config->getSystemValue('loglevel') === ILogger::DEBUG) {
+ /* Only running this if debug loglevel is on, to avoid processing parameters on production */
+ $this->logger->debug('Calling LDAP function {func} with parameters {args}', [
+ 'app' => 'user_ldap',
+ 'func' => $functionName,
+ 'args' => $this->sanitizeFunctionParameters($args),
+ ]);
+ }
if ($this->dataCollector !== null) {
- $args = array_map(function ($item) {
- if ($this->isResource($item)) {
- return '(resource)';
- }
- if (isset($item[0]['value']['cookie']) && $item[0]['value']['cookie'] !== '') {
- $item[0]['value']['cookie'] = '*opaque cookie*';
- }
- return $item;
- }, $this->curArgs);
-
$backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
- $this->dataCollector->startLdapRequest($functionName, $args, $backtrace);
+ $this->dataCollector->startLdapRequest($functionName, $this->sanitizeFunctionParameters($args), $backtrace);
}
if ($this->logFile !== '' && is_writable(dirname($this->logFile)) && (!file_exists($this->logFile) || is_writable($this->logFile))) {
- $args = array_map(fn ($item) => (!$this->isResource($item) ? $item : '(resource)'), $this->curArgs);
file_put_contents(
$this->logFile,
- $functionName . '::' . json_encode($args) . "\n",
+ $functionName . '::' . json_encode($this->sanitizeFunctionParameters($args)) . "\n",
FILE_APPEND
);
}
diff --git a/apps/user_ldap/lib/Migration/UUIDFix.php b/apps/user_ldap/lib/Migration/UUIDFix.php
index 309910cdf0c..e853f3bba66 100644
--- a/apps/user_ldap/lib/Migration/UUIDFix.php
+++ b/apps/user_ldap/lib/Migration/UUIDFix.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/Migration/UUIDFixGroup.php b/apps/user_ldap/lib/Migration/UUIDFixGroup.php
index 4d039a72ebc..3924c91e7ba 100644
--- a/apps/user_ldap/lib/Migration/UUIDFixGroup.php
+++ b/apps/user_ldap/lib/Migration/UUIDFixGroup.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/Migration/UUIDFixInsert.php b/apps/user_ldap/lib/Migration/UUIDFixInsert.php
index de777f6f010..bb92314d93a 100644
--- a/apps/user_ldap/lib/Migration/UUIDFixInsert.php
+++ b/apps/user_ldap/lib/Migration/UUIDFixInsert.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/Migration/UUIDFixUser.php b/apps/user_ldap/lib/Migration/UUIDFixUser.php
index 0c292a2c2ae..71c3f638095 100644
--- a/apps/user_ldap/lib/Migration/UUIDFixUser.php
+++ b/apps/user_ldap/lib/Migration/UUIDFixUser.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/Notification/Notifier.php b/apps/user_ldap/lib/Notification/Notifier.php
index 8d8bc8be5a3..0195cb9e65b 100644
--- a/apps/user_ldap/lib/Notification/Notifier.php
+++ b/apps/user_ldap/lib/Notification/Notifier.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/Settings/Admin.php b/apps/user_ldap/lib/Settings/Admin.php
index 014210ca8f0..89fb063265b 100644
--- a/apps/user_ldap/lib/Settings/Admin.php
+++ b/apps/user_ldap/lib/Settings/Admin.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -8,8 +9,6 @@ namespace OCA\User_LDAP\Settings;
use OCA\User_LDAP\Configuration;
use OCA\User_LDAP\Helper;
use OCP\AppFramework\Http\TemplateResponse;
-use OCP\IConfig;
-use OCP\IDBConnection;
use OCP\IL10N;
use OCP\Server;
use OCP\Settings\IDelegatedSettings;
@@ -26,7 +25,7 @@ class Admin implements IDelegatedSettings {
* @return TemplateResponse
*/
public function getForm() {
- $helper = new Helper(Server::get(IConfig::class), Server::get(IDBConnection::class));
+ $helper = Server::get(Helper::class);
$prefixes = $helper->getServerConfigurationPrefixes();
if (count($prefixes) === 0) {
$newPrefix = $helper->getNextServerConfigurationPrefix();
diff --git a/apps/user_ldap/lib/Settings/Section.php b/apps/user_ldap/lib/Settings/Section.php
index 6e342279f46..3b95e25513d 100644
--- a/apps/user_ldap/lib/Settings/Section.php
+++ b/apps/user_ldap/lib/Settings/Section.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/User/DeletedUsersIndex.php b/apps/user_ldap/lib/User/DeletedUsersIndex.php
index 9ce78f15d8b..f57f71a9d47 100644
--- a/apps/user_ldap/lib/User/DeletedUsersIndex.php
+++ b/apps/user_ldap/lib/User/DeletedUsersIndex.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
* SPDX-License-Identifier: AGPL-3.0-only
diff --git a/apps/user_ldap/lib/User/User.php b/apps/user_ldap/lib/User/User.php
index f97867e98d4..590cd6708b6 100644
--- a/apps/user_ldap/lib/User/User.php
+++ b/apps/user_ldap/lib/User/User.php
@@ -175,9 +175,9 @@ class User {
$cacheKey = 'getUserProfile-' . $username;
$profileCached = $this->connection->getFromCache($cacheKey);
// honoring profile disabled in config.php and check if user profile was refreshed
- if ($this->config->getSystemValueBool('profile.enabled', true) &&
- ($profileCached === null) && // no cache or TTL not expired
- !$this->wasRefreshed('profile')) {
+ if ($this->config->getSystemValueBool('profile.enabled', true)
+ && ($profileCached === null) // no cache or TTL not expired
+ && !$this->wasRefreshed('profile')) {
// check current data
$profileValues = [];
//User Profile Field - Phone number
@@ -515,7 +515,7 @@ class User {
* fetch all the user's attributes in one call and use the fetched values in this function.
* The expected value for that parameter is a string describing the quota for the user. Valid
* values are 'none' (unlimited), 'default' (the Nextcloud's default quota), '1234' (quota in
- * bytes), '1234 MB' (quota in MB - check the \OC_Helper::computerFileSize method for more info)
+ * bytes), '1234 MB' (quota in MB - check the \OCP\Util::computerFileSize method for more info)
*
* fetches the quota from LDAP and stores it as Nextcloud user value
* @param ?string $valueFromLDAP the quota attribute's value can be passed,
@@ -563,7 +563,7 @@ class User {
}
private function verifyQuotaValue(string $quotaValue): bool {
- return $quotaValue === 'none' || $quotaValue === 'default' || \OC_Helper::computerFileSize($quotaValue) !== false;
+ return $quotaValue === 'none' || $quotaValue === 'default' || Util::computerFileSize($quotaValue) !== false;
}
/**
diff --git a/apps/user_ldap/lib/UserPluginManager.php b/apps/user_ldap/lib/UserPluginManager.php
index bbcf4157016..ed87fea6fde 100644
--- a/apps/user_ldap/lib/UserPluginManager.php
+++ b/apps/user_ldap/lib/UserPluginManager.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/User_LDAP.php b/apps/user_ldap/lib/User_LDAP.php
index 6a648b2624c..c3f56f5ff9b 100644
--- a/apps/user_ldap/lib/User_LDAP.php
+++ b/apps/user_ldap/lib/User_LDAP.php
@@ -119,8 +119,8 @@ class User_LDAP extends BackendUtility implements IUserBackend, UserInterface, I
$attrs = $this->access->userManager->getAttributes();
$users = $this->access->fetchUsersByLoginName($loginName, $attrs);
if (count($users) < 1) {
- throw new NotOnLDAP('No user available for the given login name on ' .
- $this->access->connection->ldapHost . ':' . $this->access->connection->ldapPort);
+ throw new NotOnLDAP('No user available for the given login name on '
+ . $this->access->connection->ldapHost . ':' . $this->access->connection->ldapPort);
}
return $users[0];
}
@@ -142,8 +142,8 @@ class User_LDAP extends BackendUtility implements IUserBackend, UserInterface, I
if (!$user instanceof User) {
$this->logger->warning(
- 'LDAP Login: Could not get user object for DN ' . $dn .
- '. Maybe the LDAP entry has no set display name attribute?',
+ 'LDAP Login: Could not get user object for DN ' . $dn
+ . '. Maybe the LDAP entry has no set display name attribute?',
['app' => 'user_ldap']
);
return false;
@@ -177,8 +177,8 @@ class User_LDAP extends BackendUtility implements IUserBackend, UserInterface, I
$user = $this->access->userManager->get($uid);
if (!$user instanceof User) {
- throw new \Exception('LDAP setPassword: Could not get user object for uid ' . $uid .
- '. Maybe the LDAP entry has no set display name attribute?');
+ throw new \Exception('LDAP setPassword: Could not get user object for uid ' . $uid
+ . '. Maybe the LDAP entry has no set display name attribute?');
}
if ($user->getUsername() !== false && $this->access->setPassword($user->getDN(), $password)) {
$ldapDefaultPPolicyDN = $this->access->connection->ldapDefaultPPolicyDN;
diff --git a/apps/user_ldap/lib/User_Proxy.php b/apps/user_ldap/lib/User_Proxy.php
index 2739cdeba67..0d41f495ce9 100644
--- a/apps/user_ldap/lib/User_Proxy.php
+++ b/apps/user_ldap/lib/User_Proxy.php
@@ -415,11 +415,11 @@ class User_Proxy extends Proxy implements IUserBackend, UserInterface, IUserLDAP
if ($search !== '') {
$disabledUsers = array_filter(
$disabledUsers,
- fn (OfflineUser $user): bool =>
- mb_stripos($user->getOCName(), $search) !== false ||
- mb_stripos($user->getUID(), $search) !== false ||
- mb_stripos($user->getDisplayName(), $search) !== false ||
- mb_stripos($user->getEmail(), $search) !== false,
+ fn (OfflineUser $user): bool
+ => mb_stripos($user->getOCName(), $search) !== false
+ || mb_stripos($user->getUID(), $search) !== false
+ || mb_stripos($user->getDisplayName(), $search) !== false
+ || mb_stripos($user->getEmail(), $search) !== false,
);
}
return array_map(
diff --git a/apps/user_ldap/lib/Wizard.php b/apps/user_ldap/lib/Wizard.php
index 6fe6c0c2906..15a9f9cb212 100644
--- a/apps/user_ldap/lib/Wizard.php
+++ b/apps/user_ldap/lib/Wizard.php
@@ -260,8 +260,8 @@ class Wizard extends LDAPUtility {
$this->applyFind('ldap_email_attr', $winner);
if ($writeLog) {
$this->logger->info(
- 'The mail attribute has automatically been reset, ' .
- 'because the original value did not return any results.',
+ 'The mail attribute has automatically been reset, '
+ . 'because the original value did not return any results.',
['app' => 'user_ldap']
);
}
@@ -1209,8 +1209,8 @@ class Wizard extends LDAPUtility {
//When looking for objectclasses, testing few entries is sufficient,
$dig = 3;
- $availableFeatures =
- $this->cumulativeSearchOnAttribute($objectclasses, $attr,
+ $availableFeatures
+ = $this->cumulativeSearchOnAttribute($objectclasses, $attr,
$dig, $maxEntryObjC);
if (is_array($availableFeatures)
&& count($availableFeatures) > 0) {
diff --git a/apps/user_ldap/lib/WizardResult.php b/apps/user_ldap/lib/WizardResult.php
index 09aadd2b781..d6fd67d4204 100644
--- a/apps/user_ldap/lib/WizardResult.php
+++ b/apps/user_ldap/lib/WizardResult.php
@@ -20,7 +20,7 @@ class WizardResult {
$this->changes[$key] = $value;
}
-
+
public function markChange() {
$this->markedChange = true;
}