mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-13 03:27:39 +03:00
Prepared ldap query to optionally read mail addresses
for main account and additional accounts
This commit is contained in:
parent
30e3a8cc0f
commit
424c1ff90a
3 changed files with 41 additions and 7 deletions
|
|
@ -84,7 +84,11 @@ class LdapMailAccounts
|
||||||
$this->config->objectclass,
|
$this->config->objectclass,
|
||||||
$this->config->field_name,
|
$this->config->field_name,
|
||||||
$this->config->field_username,
|
$this->config->field_username,
|
||||||
$this->config->field_domain
|
$this->config->field_domain,
|
||||||
|
$this->config->bool_overwrite_mail_address_main_account,
|
||||||
|
$this->config->field_mail_address_main_account,
|
||||||
|
$this->config->bool_overwrite_mail_address_additional_account,
|
||||||
|
$this->config->field_mail_address_additional_account
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
catch (LdapMailAccountsException $e) {
|
catch (LdapMailAccountsException $e) {
|
||||||
|
|
@ -264,6 +268,10 @@ class LdapMailAccounts
|
||||||
* @param string $nameField
|
* @param string $nameField
|
||||||
* @param string $usernameField
|
* @param string $usernameField
|
||||||
* @param string $domainField
|
* @param string $domainField
|
||||||
|
* @param bool $overwriteMailMainAccount
|
||||||
|
* @param string $mailAddressFieldMainAccount
|
||||||
|
* @param bool $overwriteMailAdditionalAccount
|
||||||
|
* @param string $mailAddressFieldAdditionalAccount
|
||||||
* @return LdapMailAccountResult[]
|
* @return LdapMailAccountResult[]
|
||||||
* @throws LdapMailAccountsException
|
* @throws LdapMailAccountsException
|
||||||
*/
|
*/
|
||||||
|
|
@ -274,7 +282,11 @@ class LdapMailAccounts
|
||||||
string $objectClass,
|
string $objectClass,
|
||||||
string $nameField,
|
string $nameField,
|
||||||
string $usernameField,
|
string $usernameField,
|
||||||
string $domainField): array
|
string $domainField,
|
||||||
|
bool $overwriteMailMainAccount,
|
||||||
|
string $mailAddressFieldMainAccount,
|
||||||
|
bool $overwriteMailAdditionalAccount,
|
||||||
|
string $mailAddressFieldAdditionalAccount): array
|
||||||
{
|
{
|
||||||
$this->EnsureBound();
|
$this->EnsureBound();
|
||||||
$nameField = strtolower($nameField);
|
$nameField = strtolower($nameField);
|
||||||
|
|
@ -284,7 +296,20 @@ class LdapMailAccounts
|
||||||
$filter = "(&(objectclass=$objectClass)($searchField=$searchString))";
|
$filter = "(&(objectclass=$objectClass)($searchField=$searchString))";
|
||||||
$this->logger->Write("Used ldap filter to search for additional mail accounts: $filter", \LOG_NOTICE, self::LOG_KEY);
|
$this->logger->Write("Used ldap filter to search for additional mail accounts: $filter", \LOG_NOTICE, self::LOG_KEY);
|
||||||
|
|
||||||
$ldapResult = @ldap_search($this->ldap, $searchBase, $filter, ['dn', $usernameField, $nameField, $domainField]);
|
//Set together the attributes to search inside the LDAP
|
||||||
|
$ldapAttributes = ['dn', $usernameField, $nameField, $domainField];
|
||||||
|
if ($overwriteMailMainAccount)
|
||||||
|
{
|
||||||
|
\array_push($ldapAttributes, $mailAddressFieldMainAccount);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($overwriteMailAdditionalAccount)
|
||||||
|
{
|
||||||
|
\array_push($ldapAttributes, $mailAddressFieldAdditionalAccount);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$ldapResult = @ldap_search($this->ldap, $searchBase, $filter, $ldapAttributes);
|
||||||
if (!$ldapResult) {
|
if (!$ldapResult) {
|
||||||
$this->HandleLdapError("Fetch $objectClass");
|
$this->HandleLdapError("Fetch $objectClass");
|
||||||
return [];
|
return [];
|
||||||
|
|
@ -311,6 +336,9 @@ class LdapMailAccounts
|
||||||
$result->domain = $this->LdapGetAttribute($entry, $domainField, true, true);
|
$result->domain = $this->LdapGetAttribute($entry, $domainField, true, true);
|
||||||
$result->domain = $this->RemoveEventualLocalPart($result->domain);
|
$result->domain = $this->RemoveEventualLocalPart($result->domain);
|
||||||
|
|
||||||
|
$result->mailMainAccount = $this->LdapGetAttribute($entry, $mailAddressFieldMainAccount, true, $overwriteMailMainAccount);
|
||||||
|
$result->mailAdditionalAccount = $this->LdapGetAttribute($entry, $mailAddressFieldAdditionalAccount, true, $overwriteMailAdditionalAccount);
|
||||||
|
|
||||||
$results[] = $result;
|
$results[] = $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -407,4 +435,10 @@ class LdapMailAccountResult
|
||||||
|
|
||||||
/** @var string */
|
/** @var string */
|
||||||
public $domain;
|
public $domain;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
public $mailMainAccount;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
public $mailAdditionalAccount;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,10 +18,10 @@ class LdapMailAccountsConfig
|
||||||
public const CONFIG_FIELD_USERNAME = "field_username";
|
public const CONFIG_FIELD_USERNAME = "field_username";
|
||||||
public const CONFIG_SEARCH_STRING = "search_string";
|
public const CONFIG_SEARCH_STRING = "search_string";
|
||||||
public const CONFIG_FIELD_MAIL_DOMAIN = "field_domain";
|
public const CONFIG_FIELD_MAIL_DOMAIN = "field_domain";
|
||||||
public const CONFIG_FIELD_MAIL_ADDRESS_MAIN_ACCOUNT = "field_mail_address_main_account";
|
|
||||||
public const CONFIG_FIELD_MAIL_ADDRESS_ADDITIONAL_ACCOUNT = "field_mail_address_additional_account";
|
|
||||||
public const CONFIG_BOOL_OVERWRITE_MAIL_ADDRESS_MAIN_ACCOUNT = "bool_overwrite_mail_address_main_account";
|
public const CONFIG_BOOL_OVERWRITE_MAIL_ADDRESS_MAIN_ACCOUNT = "bool_overwrite_mail_address_main_account";
|
||||||
|
public const CONFIG_FIELD_MAIL_ADDRESS_MAIN_ACCOUNT = "field_mail_address_main_account";
|
||||||
public const CONFIG_BOOL_OVERWRITE_MAIL_ADDRESS_ADDITIONAL_ACCOUNT = "bool_overwrite_mail_address_additional_account";
|
public const CONFIG_BOOL_OVERWRITE_MAIL_ADDRESS_ADDITIONAL_ACCOUNT = "bool_overwrite_mail_address_additional_account";
|
||||||
|
public const CONFIG_FIELD_MAIL_ADDRESS_ADDITIONAL_ACCOUNT = "field_mail_address_additional_account";
|
||||||
|
|
||||||
public $server;
|
public $server;
|
||||||
public $protocol;
|
public $protocol;
|
||||||
|
|
|
||||||
|
|
@ -12,11 +12,11 @@ class LdapMailAccountsPlugin extends AbstractPlugin
|
||||||
{
|
{
|
||||||
const
|
const
|
||||||
NAME = 'LDAP Mail Accounts',
|
NAME = 'LDAP Mail Accounts',
|
||||||
VERSION = '1.1',
|
VERSION = '2.0.0',
|
||||||
AUTHOR = 'cm-schl',
|
AUTHOR = 'cm-schl',
|
||||||
URL = 'https://github.com/cm-sch',
|
URL = 'https://github.com/cm-sch',
|
||||||
RELEASE = '2022-12-08',
|
RELEASE = '2022-12-08',
|
||||||
REQUIRED = '2.23.0',
|
REQUIRED = '2.25.4',
|
||||||
CATEGORY = 'Accounts',
|
CATEGORY = 'Accounts',
|
||||||
DESCRIPTION = 'Add additional mail accounts the SnappyMail user has access to by a LDAP query. Basing on the work of FWest98 (https://github.com/FWest98).';
|
DESCRIPTION = 'Add additional mail accounts the SnappyMail user has access to by a LDAP query. Basing on the work of FWest98 (https://github.com/FWest98).';
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue