Added: Plugin: Contacts suggestion from ldap

Added: Custom favicon setting
+ Small fixes
This commit is contained in:
RainLoop Team 2015-09-08 00:15:39 +03:00
parent d6d19c99bf
commit 7312b2854b
25 changed files with 526 additions and 25 deletions

View file

@ -7,6 +7,11 @@ class ChangePasswordLdapDriver implements \RainLoop\Providers\ChangePassword\Cha
*/
private $sHostName = '127.0.0.1';
/**
* @var int
*/
private $iHostPort = 389;
/**
* @var string
*/
@ -34,15 +39,17 @@ class ChangePasswordLdapDriver implements \RainLoop\Providers\ChangePassword\Cha
/**
* @param string $sHostName
* @param int $iHostPort
* @param string $sUserDnFormat
* @param string $sPasswordField
* @param string $sPasswordEncType
*
* @return \ChangePasswordLdapDriver
*/
public function SetConfig($sHostName, $sUserDnFormat, $sPasswordField, $sPasswordEncType)
public function SetConfig($sHostName, $iHostPort, $sUserDnFormat, $sPasswordField, $sPasswordEncType)
{
$this->sHostName = $sHostName;
$this->iHostPort = $iHostPort;
$this->sUserDnFormat = $sUserDnFormat;
$this->sPasswordField = $sPasswordField;
$this->sPasswordEncType = $sPasswordEncType;
@ -114,7 +121,7 @@ class ChangePasswordLdapDriver implements \RainLoop\Providers\ChangePassword\Cha
'{imap:port}' => $oAccount->DomainIncPort()
));
$oCon = @\ldap_connect($this->sHostName);
$oCon = @\ldap_connect($this->sHostName, $this->iHostPort);
if ($oCon)
{
@\ldap_set_option($oCon, LDAP_OPT_PROTOCOL_VERSION, 3);
@ -133,22 +140,31 @@ class ChangePasswordLdapDriver implements \RainLoop\Providers\ChangePassword\Cha
return false;
}
}
else
{
return false;
}
$sSshaSalt = '';
$sShaPrefix = '{SHA}';
$sEncodedNewPassword = $sNewPassword;
switch (\strtolower($this->sPasswordEncType))
{
case 'ssha':
$sSshaSalt = $this->getSalt(4);
$sShaPrefix = '{SSHA}';
case 'sha':
switch (true)
{
default:
case \function_exists('sha1'):
$sEncodedNewPassword = '{SHA}'.\base64_encode(\pack('H*', \sha1($sNewPassword)));
$sEncodedNewPassword = $sShaPrefix.\base64_encode(\sha1($sNewPassword.$sSshaSalt, true).$sSshaSalt);
break;
case \function_exists('hash'):
$sEncodedNewPassword = '{SHA}'.\base64_encode(\hash('sha1', $sNewPassword, true));
$sEncodedNewPassword = $sShaPrefix.\base64_encode(\hash('sha1', $sNewPassword, true).$sSshaSalt);
break;
case \function_exists('mhash') && defined('MHASH_SHA1'):
$sEncodedNewPassword = '{SHA}'.\base64_encode(\mhash(MHASH_SHA1, $sNewPassword));
$sEncodedNewPassword = $sShaPrefix.\base64_encode(\mhash(MHASH_SHA1, $sNewPassword).$sSshaSalt);
break;
}
break;

View file

@ -1 +1 @@
1.0
1.1

View file

@ -31,18 +31,19 @@ class LdapChangePasswordPlugin extends \RainLoop\Plugins\AbstractPlugin
case 'change-password':
$sHostName = \trim($this->Config()->Get('plugin', 'hostname', ''));
$iHostPort = (int) $this->Config()->Get('plugin', 'port', 389);
$sUserDnFormat = \trim($this->Config()->Get('plugin', 'user_dn_format', ''));
$sPasswordField = \trim($this->Config()->Get('plugin', 'password_field', ''));
$sPasswordEncType = \trim($this->Config()->Get('plugin', 'password_enc_type', ''));
if (!empty($sHostName) && !empty($sUserDnFormat) && !empty($sPasswordField) && !empty($sPasswordEncType))
if (!empty($sHostName) && 0 < $iHostPort && !empty($sUserDnFormat) && !empty($sPasswordField) && !empty($sPasswordEncType))
{
include_once __DIR__.'/ChangePasswordLdapDriver.php';
$oProvider = new \ChangePasswordLdapDriver();
$oProvider
->SetConfig($sHostName, $sUserDnFormat, $sPasswordField, $sPasswordEncType)
->SetConfig($sHostName, $iHostPort, $sUserDnFormat, $sPasswordField, $sPasswordEncType)
->SetAllowedEmails(\strtolower(\trim($this->Config()->Get('plugin', 'allowed_emails', ''))))
->SetLogger($this->Manager()->Actions()->Logger())
;
@ -59,6 +60,9 @@ class LdapChangePasswordPlugin extends \RainLoop\Plugins\AbstractPlugin
return array(
\RainLoop\Plugins\Property::NewInstance('hostname')->SetLabel('LDAP hostname')
->SetDefaultValue('127.0.0.1'),
\RainLoop\Plugins\Property::NewInstance('port')->SetLabel('LDAP port')
->SetType(\RainLoop\Enumerations\PluginPropertyType::INT)
->SetDefaultValue(389),
\RainLoop\Plugins\Property::NewInstance('user_dn_format')->SetLabel('User DN format')
->SetDescription('LDAP user dn format. Supported tokens: {email}, {login}, {domain}, {domain:dc}, {imap:login}, {imap:host}, {imap:port}')
->SetDefaultValue('uid={imap:login},ou=Users,{domain:dc}'),
@ -66,7 +70,7 @@ class LdapChangePasswordPlugin extends \RainLoop\Plugins\AbstractPlugin
->SetDefaultValue('userPassword'),
\RainLoop\Plugins\Property::NewInstance('password_enc_type')->SetLabel('Encryption type')
->SetType(\RainLoop\Enumerations\PluginPropertyType::SELECTION)
->SetDefaultValue(array('SHA', 'MD5', 'Crypt', 'Clear')),
->SetDefaultValue(array('SHA', 'SSHA', 'MD5', 'Crypt', 'Clear')),
\RainLoop\Plugins\Property::NewInstance('allowed_emails')->SetLabel('Allowed emails')
->SetDescription('Allowed emails, space as delimiter, wildcard supported. Example: user1@domain1.net user2@domain1.net *@domain2.net')
->SetDefaultValue('*')