Bugfix: domain disabled wildcard failed

This commit is contained in:
the-djmaze 2022-06-08 13:08:00 +02:00
parent df80ff9533
commit 2b3a18c629
3 changed files with 22 additions and 37 deletions

View file

@ -160,8 +160,7 @@ class ChangePasswordPlugin extends \RainLoop\Plugins\AbstractPlugin
$bResult = false;
$oConfig = $this->Config();
foreach ($this->getSupportedDrivers() as $name => $class) {
$sFoundedValue = '';
if (\RainLoop\Plugins\Helper::ValidateWildcardValues($oAccount->Email(), $oConfig->Get('plugin', "driver_{$name}_allowed_emails"), $sFoundedValue)) {
if (\RainLoop\Plugins\Helper::ValidateWildcardValues($oAccount->Email(), $oConfig->Get('plugin', "driver_{$name}_allowed_emails"))) {
$name = $class::NAME;
$oLogger = $oActions->Logger();
try

View file

@ -9,45 +9,35 @@ class Helper
$sFoundValue = '';
$sString = \trim($sString);
if ('' === $sString)
{
if ('' === $sString) {
return false;
}
$sWildcardValues = \trim($sWildcardValues);
if ('' === $sWildcardValues)
{
if ('' === $sWildcardValues) {
return true;
}
if ('*' === $sWildcardValues)
{
if ('*' === $sWildcardValues) {
$sFoundValue = '*';
return true;
}
$sWildcardValues = \preg_replace('/[*]+/', '*', \preg_replace('/[\s,;]+/', ' ', $sWildcardValues));
$aWildcardValues = \explode(' ', $sWildcardValues);
$aWildcardValues = \preg_split('/[\\s,;]+/', \preg_replace('/\\*+/', '*', $sWildcardValues));
foreach ($aWildcardValues as $sItem)
{
if (false === \strpos($sItem, '*'))
{
if ($sString === $sItem)
{
foreach ($aWildcardValues as $sItem) {
if (false === \strpos($sItem, '*')) {
if ($sString === $sItem) {
$sFoundValue = $sItem;
return true;
}
}
else
{
} else {
$aItem = \explode('*', $sItem);
$aItem = \array_map(function ($sItem) {
return \preg_quote($sItem, '/');
}, $aItem);
if (\preg_match('/'.\implode('.*', $aItem).'/', $sString))
{
if (\preg_match('/'.\implode('.*', $aItem).'/', $sString)) {
$sFoundValue = $sItem;
return true;
}

View file

@ -82,18 +82,18 @@ class DefaultDomain implements DomainInterface
{
$mResult = null;
$sDisabled = '';
$aDisabled = [];
$sFoundValue = '';
$sRealFileName = $this->codeFileName($sName);
if (\file_exists($this->sDomainPath.'/disabled'))
{
$sDisabled = \file_get_contents($this->sDomainPath.'/disabled');
if (\file_exists($this->sDomainPath.'/disabled')) {
$aDisabled = \explode(',', \file_get_contents($this->sDomainPath.'/disabled'));
}
$bCheckDisabled = $bCheckDisabled && 0 < \count($aDisabled);
if (\file_exists($this->sDomainPath.'/'.$sRealFileName.'.ini') &&
(!$bCheckDisabled || 0 === \strlen($sDisabled) || false === \strpos(','.$sDisabled.',', ','.\MailSo\Base\Utils::IdnToAscii($sName, true).',')))
(!$bCheckDisabled || !\in_array(\MailSo\Base\Utils::IdnToAscii($sName, true), $aDisabled)))
{
$aDomain = \parse_ini_file($this->sDomainPath.'/'.$sRealFileName.'.ini') ?: array();
// if ($bCheckAliases && !empty($aDomain['alias']))
@ -109,7 +109,7 @@ class DefaultDomain implements DomainInterface
$mResult = \RainLoop\Model\Domain::NewInstanceFromDomainConfigArray($sName, $aDomain);
}
else if ($bCheckAliases && \file_exists($this->sDomainPath.'/'.$sRealFileName.'.alias') &&
(!$bCheckDisabled || 0 === \strlen($sDisabled) || false === \strpos(','.$sDisabled.',', ','.\MailSo\Base\Utils::IdnToAscii($sName, true).',')))
(!$bCheckDisabled || !\in_array(\MailSo\Base\Utils::IdnToAscii($sName, true), $aDisabled)))
{
$sAlias = \trim(\file_get_contents($this->sDomainPath.'/'.$sRealFileName.'.alias'));
if (!empty($sAlias))
@ -126,16 +126,12 @@ class DefaultDomain implements DomainInterface
else if ($bFindWithWildCard)
{
$sNames = $this->getWildcardDomainsLine();
if (\strlen($sNames))
{
if (\RainLoop\Plugins\Helper::ValidateWildcardValues(
\MailSo\Base\Utils::IdnToUtf8($sName, true), $sNames, $sFoundValue) && \strlen($sFoundValue))
{
if (!$bCheckDisabled || 0 === \strlen($sDisabled) || false === \strpos(','.$sDisabled.',', ','.$sFoundValue.','))
{
$mResult = $this->Load($sFoundValue, false);
}
}
if (\strlen($sNames)
&& \RainLoop\Plugins\Helper::ValidateWildcardValues(\MailSo\Base\Utils::IdnToUtf8($sName, true), $sNames, $sFoundValue)
&& \strlen($sFoundValue)
&& (!$bCheckDisabled || !\in_array($sFoundValue, $aDisabled))
) {
$mResult = $this->Load($sFoundValue, false);
}
}