diff --git a/dev/Common/Consts.js b/dev/Common/Consts.js
index f5536279e..35c2dc29f 100644
--- a/dev/Common/Consts.js
+++ b/dev/Common/Consts.js
@@ -81,6 +81,12 @@
*/
Consts.Values.ImapDefaulSecurePort = 993;
+ /**
+ * @const
+ * @type {number}
+ */
+ Consts.Values.SieveDefaulPort = 2000;
+
/**
* @const
* @type {number}
diff --git a/dev/Storage/Admin/Remote.js b/dev/Storage/Admin/Remote.js
index b5ed5ce3a..11174256e 100644
--- a/dev/Storage/Admin/Remote.js
+++ b/dev/Storage/Admin/Remote.js
@@ -210,34 +210,53 @@
};
RemoteAdminStorage.prototype.createOrUpdateDomain = function (fCallback,
- bCreate, sName, sIncHost, iIncPort, sIncSecure, bIncShortLogin,
- sOutHost, iOutPort, sOutSecure, bOutShortLogin, bOutAuth, bOutPhpMail, sWhiteList)
+ bCreate, sName,
+ sIncHost, iIncPort, sIncSecure, bIncShortLogin,
+ bUseSieve, bUseImapServerForSieve, sSieveHost, iSievePort, sSieveSecure,
+ sOutHost, iOutPort, sOutSecure, bOutShortLogin, bOutAuth, bOutPhpMail,
+ sWhiteList)
{
this.defaultRequest(fCallback, 'AdminDomainSave', {
'Create': bCreate ? '1' : '0',
'Name': sName,
+
'IncHost': sIncHost,
'IncPort': iIncPort,
'IncSecure': sIncSecure,
'IncShortLogin': bIncShortLogin ? '1' : '0',
+
+ 'UseSieve': bUseSieve ? '1' : '0',
+ 'UseImapServerForSieve': bUseImapServerForSieve ? '1' : '0',
+ 'SieveHost': sSieveHost,
+ 'SievePort': iSievePort,
+ 'SieveSecure': sSieveSecure,
+
'OutHost': sOutHost,
'OutPort': iOutPort,
'OutSecure': sOutSecure,
'OutShortLogin': bOutShortLogin ? '1' : '0',
'OutAuth': bOutAuth ? '1' : '0',
'OutUsePhpMail': bOutPhpMail ? '1' : '0',
+
'WhiteList': sWhiteList
});
};
RemoteAdminStorage.prototype.testConnectionForDomain = function (fCallback, sName,
- sIncHost, iIncPort, sIncSecure, sOutHost, iOutPort, sOutSecure, bOutAuth, bOutPhpMail)
+ sIncHost, iIncPort, sIncSecure,
+ bUseSieve, bUseImapServerForSieve, sSieveHost, iSievePort, sSieveSecure,
+ sOutHost, iOutPort, sOutSecure, bOutAuth, bOutPhpMail)
{
this.defaultRequest(fCallback, 'AdminDomainTest', {
'Name': sName,
'IncHost': sIncHost,
'IncPort': iIncPort,
'IncSecure': sIncSecure,
+ 'UseSieve': bUseSieve ? '1' : '0',
+ 'UseImapServerForSieve': bUseImapServerForSieve ? '1' : '0',
+ 'SieveHost': sSieveHost,
+ 'SievePort': iSievePort,
+ 'SieveSecure': sSieveSecure,
'OutHost': sOutHost,
'OutPort': iOutPort,
'OutSecure': sOutSecure,
diff --git a/dev/Styles/AdminDomain.less b/dev/Styles/AdminDomain.less
index ce40a68ba..3cf6f0be6 100644
--- a/dev/Styles/AdminDomain.less
+++ b/dev/Styles/AdminDomain.less
@@ -20,7 +20,7 @@
height: 320px;
}
- &.domain-white-list-page .modal-body {
+ &.domain-second-page .modal-body {
left: -800px;
}
diff --git a/dev/View/Popup/Domain.js b/dev/View/Popup/Domain.js
index 0599f6108..8755f4e6c 100644
--- a/dev/View/Popup/Domain.js
+++ b/dev/View/Popup/Domain.js
@@ -28,7 +28,8 @@
this.edit = ko.observable(false);
this.saving = ko.observable(false);
this.savingError = ko.observable('');
- this.whiteListPage = ko.observable(false);
+ this.page = ko.observable('main');
+ this.sieveSettings = ko.observable(false);
this.testing = ko.observable(false);
this.testingDone = ko.observable(false);
@@ -55,15 +56,23 @@
this.testingSmtpErrorDesc = ko.observable('');
this.imapServerFocus = ko.observable(false);
+ this.sieveServerFocus = ko.observable(false);
this.smtpServerFocus = ko.observable(false);
this.name = ko.observable('');
this.name.focused = ko.observable(false);
+ this.allowSieve = ko.observable(false);
+
this.imapServer = ko.observable('');
this.imapPort = ko.observable('' + Consts.Values.ImapDefaulPort);
this.imapSecure = ko.observable(Enums.ServerSecure.None);
this.imapShortLogin = ko.observable(false);
+ this.useSieve = ko.observable(false);
+ this.useImapServerForSieve = ko.observable(true);
+ this.sieveServer = ko.observable('');
+ this.sievePort = ko.observable('' + Consts.Values.SieveDefaulPort);
+ this.sieveSecure = ko.observable(Enums.ServerSecure.None);
this.smtpServer = ko.observable('');
this.smtpPort = ko.observable('' + Consts.Values.SmtpDefaulPort);
this.smtpSecure = ko.observable(Enums.ServerSecure.None);
@@ -81,11 +90,20 @@
}, this);
this.domainIsComputed = ko.computed(function () {
- var bPhpMail = this.smtpPhpMail();
+
+ var
+ bPhpMail = this.smtpPhpMail(),
+ bAllowSieve = this.allowSieve(),
+ bUseSieve = this.useSieve(),
+ bIseImapServerForSieve = this.useImapServerForSieve()
+ ;
+
return '' !== this.name() &&
'' !== this.imapServer() &&
'' !== this.imapPort() &&
+ (bAllowSieve && bUseSieve ? (bIseImapServerForSieve ? true : ('' !== this.sieveServer() && '' !== this.sievePort())) : true) &&
(('' !== this.smtpServer() && '' !== this.smtpPort()) || bPhpMail);
+
}, this);
this.canBeTested = ko.computed(function () {
@@ -102,32 +120,53 @@
_.bind(this.onDomainCreateOrSaveResponse, this),
!this.edit(),
this.name(),
+
this.imapServer(),
Utils.pInt(this.imapPort()),
this.imapSecure(),
this.imapShortLogin(),
+
+ this.useSieve(),
+ this.useImapServerForSieve(),
+ this.sieveServer(),
+ Utils.pInt(this.sievePort()),
+ this.sieveSecure(),
+
this.smtpServer(),
Utils.pInt(this.smtpPort()),
this.smtpSecure(),
this.smtpShortLogin(),
this.smtpAuth(),
this.smtpPhpMail(),
+
this.whiteList()
);
}, this.canBeSaved);
this.testConnectionCommand = Utils.createCommand(this, function () {
- this.whiteListPage(false);
+
+ this.page('main');
+ this.sieveSettings(false);
+
this.testingDone(false);
this.testingImapError(false);
this.testingSmtpError(false);
this.testing(true);
+
Remote.testConnectionForDomain(
_.bind(this.onTestConnectionResponse, this),
this.name(),
+
this.imapServer(),
Utils.pInt(this.imapPort()),
this.imapSecure(),
+
+ this.useSieve(),
+ this.useImapServerForSieve(),
+ this.sieveServer(),
+ Utils.pInt(this.sievePort()),
+ this.sieveSecure(),
+
this.smtpServer(),
Utils.pInt(this.smtpPort()),
this.smtpSecure(),
@@ -137,9 +176,22 @@
}, this.canBeTested);
this.whiteListCommand = Utils.createCommand(this, function () {
- this.whiteListPage(!this.whiteListPage());
+ this.page('white-list');
});
+ this.backCommand = Utils.createCommand(this, function () {
+ this.page('main');
+ });
+
+ this.sieveCommand = Utils.createCommand(this, function () {
+ this.sieveSettings(!this.sieveSettings());
+ this.clearTesting();
+ });
+
+ this.page.subscribe(function () {
+ this.sieveSettings(false);
+ }, this);
+
// smart form improvements
this.imapServerFocus.subscribe(function (bValue) {
if (bValue && '' !== this.name() && '' === this.imapServer())
@@ -148,6 +200,13 @@
}
}, this);
+ this.sieveServerFocus.subscribe(function (bValue) {
+ if (bValue && '' !== this.name() && '' === this.sieveServer())
+ {
+ this.sieveServer(this.name().replace(/[.]?[*][.]?/g, ''));
+ }
+ }, this);
+
this.smtpServerFocus.subscribe(function (bValue) {
if (bValue && '' !== this.imapServer() && '' === this.smtpServer())
{
@@ -260,20 +319,29 @@
}
};
- DomainPopupView.prototype.onHide = function ()
+ DomainPopupView.prototype.clearTesting = function ()
{
- this.whiteListPage(false);
- };
-
- DomainPopupView.prototype.onShow = function (oDomain)
- {
- this.saving(false);
- this.whiteListPage(false);
-
this.testing(false);
this.testingDone(false);
this.testingImapError(false);
this.testingSmtpError(false);
+ }
+
+ DomainPopupView.prototype.onHide = function ()
+ {
+ this.page('main');
+ this.sieveSettings(false);
+ };
+
+
+ DomainPopupView.prototype.onShow = function (oDomain)
+ {
+ this.saving(false);
+
+ this.page('main');
+ this.sieveSettings(false);
+
+ this.clearTesting();
this.clearForm();
if (oDomain)
@@ -287,6 +355,11 @@
this.imapPort('' + Utils.pInt(oDomain.IncPort));
this.imapSecure(Utils.trim(oDomain.IncSecure));
this.imapShortLogin(!!oDomain.IncShortLogin);
+ this.useSieve(!!oDomain.UseSieve);
+ this.useImapServerForSieve(!!oDomain.UseImapServerForSieve);
+ this.sieveServer(Utils.trim(oDomain.SieveHost));
+ this.sievePort('' + Utils.pInt(oDomain.SievePort));
+ this.sieveSecure(Utils.trim(oDomain.SieveSecure));
this.smtpServer(Utils.trim(oDomain.OutHost));
this.smtpPort('' + Utils.pInt(oDomain.OutPort));
this.smtpSecure(Utils.trim(oDomain.OutSecure));
@@ -310,7 +383,10 @@
DomainPopupView.prototype.clearForm = function ()
{
this.edit(false);
- this.whiteListPage(false);
+
+ this.page('main');
+ this.sieveSettings(false);
+
this.enableSmartPorts(false);
this.savingError('');
@@ -322,14 +398,21 @@
this.imapPort('' + Consts.Values.ImapDefaulPort);
this.imapSecure(Enums.ServerSecure.None);
this.imapShortLogin(false);
+
+ this.useSieve(false);
+ this.useImapServerForSieve(true);
+ this.sieveServer('');
+ this.sievePort('' + Consts.Values.SieveDefaulPort);
+ this.sieveSecure(Enums.ServerSecure.None);
+
this.smtpServer('');
this.smtpPort('' + Consts.Values.SmtpDefaulPort);
this.smtpSecure(Enums.ServerSecure.None);
this.smtpShortLogin(false);
this.smtpAuth(true);
this.smtpPhpMail(false);
- this.whiteList('');
+ this.whiteList('');
this.enableSmartPorts(true);
};
diff --git a/rainloop/v/0.0.0/app/src/RainLoop/Actions.php b/rainloop/v/0.0.0/app/src/RainLoop/Actions.php
index eefaab605..c4166a772 100644
--- a/rainloop/v/0.0.0/app/src/RainLoop/Actions.php
+++ b/rainloop/v/0.0.0/app/src/RainLoop/Actions.php
@@ -2984,13 +2984,15 @@ class Actions
$iImapTime = 0;
$iSmtpTime = 0;
+ $iConnectionTimeout = 5;
+
$oDomain = $this->DomainProvider()->LoadOrCreateNewFromAction($this, 'domain-test-connection.de');
if ($oDomain)
{
try
{
$oImapClient = \MailSo\Imap\ImapClient::NewInstance()->SetLogger($this->Logger());
- $oImapClient->SetTimeOuts(5);
+ $oImapClient->SetTimeOuts($iConnectionTimeout);
$iTime = \microtime(true);
$oImapClient->Connect($oDomain->IncHost(), $oDomain->IncPort(),
@@ -3028,7 +3030,7 @@ class Actions
try
{
$oSmtpClient = \MailSo\Smtp\SmtpClient::NewInstance()->SetLogger($this->Logger());
- $oSmtpClient->SetTimeOuts(5);
+ $oSmtpClient->SetTimeOuts($iConnectionTimeout);
$iTime = \microtime(true);
$oSmtpClient->Connect($oDomain->OutHost(), $oDomain->OutPort(), '127.0.0.1',
@@ -6994,6 +6996,7 @@ class Actions
@\header('Content-Type: '.$sContentType);
echo \preg_replace('/^data:[^:]+:/', '', $sData);
unset($sData);
+
return true;
}
}
diff --git a/rainloop/v/0.0.0/app/src/RainLoop/KeyPathHelper.php b/rainloop/v/0.0.0/app/src/RainLoop/KeyPathHelper.php
index 1ff41ff5a..f4dd99fc3 100644
--- a/rainloop/v/0.0.0/app/src/RainLoop/KeyPathHelper.php
+++ b/rainloop/v/0.0.0/app/src/RainLoop/KeyPathHelper.php
@@ -152,11 +152,12 @@ class KeyPathHelper
/**
* @param string $sTheme
* @param string $sPluginsHash
+ * @param string $sPublickHash
*
* @return string
*/
- static public function CssCache($sTheme, $sPluginsHash)
+ static public function CssCache($sTheme, $sPluginsHash, $sPublickHash = '')
{
- return '/CssCache/'.$sPluginsHash.'/'.$sTheme.'/'.APP_VERSION.'/';
+ return '/CssCache/'.$sPluginsHash.'/'.$sPublickHash.'/'.$sTheme.'/'.APP_VERSION.'/';
}
}
diff --git a/rainloop/v/0.0.0/app/src/RainLoop/Model/Domain.php b/rainloop/v/0.0.0/app/src/RainLoop/Model/Domain.php
index a2c62b047..2847ac97a 100644
--- a/rainloop/v/0.0.0/app/src/RainLoop/Model/Domain.php
+++ b/rainloop/v/0.0.0/app/src/RainLoop/Model/Domain.php
@@ -63,6 +63,31 @@ class Domain
*/
private $bOutUsePhpMail;
+ /**
+ * @var bool
+ */
+ private $bUseSieve;
+
+ /**
+ * @var bool
+ */
+ private $bUseImapServerForSieve;
+
+ /**
+ * @var string
+ */
+ private $sSieveHost;
+
+ /**
+ * @var int
+ */
+ private $iSievePort;
+
+ /**
+ * @var int
+ */
+ private $iSieveSecure;
+
/**
* @var string
*/
@@ -74,6 +99,11 @@ class Domain
* @param int $iIncPort
* @param int $iIncSecure
* @param bool $bIncShortLogin
+ * @param bool $bUseSieve
+ * @param bool $bUseImapServerForSieve
+ * @param string $sSieveHost
+ * @param int $iSievePort
+ * @param int $iSieveSecure
* @param string $sOutHost
* @param int $iOutPort
* @param int $iOutSecure
@@ -82,20 +112,31 @@ class Domain
* @param bool $bOutUsePhpMail = false
* @param string $sWhiteList = ''
*/
- private function __construct($sName, $sIncHost, $iIncPort, $iIncSecure, $bIncShortLogin,
- $sOutHost, $iOutPort, $iOutSecure, $bOutShortLogin, $bOutAuth, $bOutUsePhpMail = false, $sWhiteList = '')
+ private function __construct($sName,
+ $sIncHost, $iIncPort, $iIncSecure, $bIncShortLogin,
+ $bUseSieve, $bUseImapServerForSieve, $sSieveHost, $iSievePort, $iSieveSecure,
+ $sOutHost, $iOutPort, $iOutSecure, $bOutShortLogin, $bOutAuth, $bOutUsePhpMail = false,
+ $sWhiteList = '')
{
$this->sName = $sName;
$this->sIncHost = $sIncHost;
$this->iIncPort = $iIncPort;
$this->iIncSecure = $iIncSecure;
$this->bIncShortLogin = $bIncShortLogin;
+
$this->sOutHost = $sOutHost;
$this->iOutPort = $iOutPort;
$this->iOutSecure = $iOutSecure;
$this->bOutShortLogin = $bOutShortLogin;
$this->bOutAuth = $bOutAuth;
$this->bOutUsePhpMail = $bOutUsePhpMail;
+
+ $this->bUseSieve = $bUseSieve;
+ $this->bUseImapServerForSieve = $bUseImapServerForSieve;
+ $this->sSieveHost = $sSieveHost;
+ $this->iSievePort = $iSievePort;
+ $this->iSieveSecure = $iSieveSecure;
+
$this->sWhiteList = \trim($sWhiteList);
}
@@ -105,6 +146,11 @@ class Domain
* @param int $iIncPort
* @param int $iIncSecure
* @param bool $bIncShortLogin
+ * @param bool $bUseSieve
+ * @param bool $bUseImapServerForSieve
+ * @param string $sSieveHost
+ * @param int $iSievePort
+ * @param int $iSieveSecure
* @param string $sOutHost
* @param int $iOutPort
* @param int $iOutSecure
@@ -117,11 +163,13 @@ class Domain
*/
public static function NewInstance($sName,
$sIncHost, $iIncPort, $iIncSecure, $bIncShortLogin,
+ $bUseSieve, $bUseImapServerForSieve, $sSieveHost, $iSievePort, $iSieveSecure,
$sOutHost, $iOutPort, $iOutSecure, $bOutShortLogin, $bOutAuth, $bOutUsePhpMail,
$sWhiteList = '')
{
return new self($sName,
$sIncHost, $iIncPort, $iIncSecure, $bIncShortLogin,
+ $bUseSieve, $bUseImapServerForSieve, $sSieveHost, $iSievePort, $iSieveSecure,
$sOutHost, $iOutPort, $iOutSecure, $bOutShortLogin, $bOutAuth, $bOutUsePhpMail,
$sWhiteList);
}
@@ -143,6 +191,11 @@ class Domain
$iIncSecure = self::StrConnectionSecurityTypeToCons(
!empty($aDomain['imap_secure']) ? $aDomain['imap_secure'] : '');
+ $sSieveHost = empty($aDomain['sieve_host']) ? '' : (string) $aDomain['sieve_host'];
+ $iSievePort = empty($aDomain['sieve_port']) ? 2000 : (int) $aDomain['sieve_port'];
+ $iSieveSecure = self::StrConnectionSecurityTypeToCons(
+ !empty($aDomain['sieve_secure']) ? $aDomain['sieve_secure'] : '');
+
$sOutHost = empty($aDomain['smtp_host']) ? '' : (string) $aDomain['smtp_host'];
$iOutPort = empty($aDomain['smtp_port']) ? 25 : (int) $aDomain['smtp_port'];
$iOutSecure = self::StrConnectionSecurityTypeToCons(
@@ -152,11 +205,15 @@ class Domain
$bOutUsePhpMail = isset($aDomain['smtp_php_mail']) ? (bool) $aDomain['smtp_php_mail'] : false;
$sWhiteList = (string) (isset($aDomain['white_list']) ? $aDomain['white_list'] : '');
+ $bUseSieve = isset($aDomain['sieve_use']) ? (bool) $aDomain['sieve_use'] : false;
+ $bUseImapServerForSieve = isset($aDomain['sieve_use_imap_server']) ? (bool) $aDomain['sieve_use_imap_server'] : ytir;
+
$bIncShortLogin = isset($aDomain['imap_short_login']) ? (bool) $aDomain['imap_short_login'] : false;
$bOutShortLogin = isset($aDomain['smtp_short_login']) ? (bool) $aDomain['smtp_short_login'] : false;
$oDomain = self::NewInstance($sName,
$sIncHost, $iIncPort, $iIncSecure, $bIncShortLogin,
+ $bUseSieve, $bUseImapServerForSieve, $sSieveHost, $iSievePort, $iSieveSecure,
$sOutHost, $iOutPort, $iOutSecure, $bOutShortLogin, $bOutAuth, $bOutUsePhpMail,
$sWhiteList);
}
@@ -177,6 +234,7 @@ class Domain
public function Normalize()
{
$this->sIncHost = \trim($this->sIncHost);
+ $this->sSieveHost = \trim($this->sSieveHost);
$this->sOutHost = \trim($this->sOutHost);
$this->sWhiteList = \trim($this->sWhiteList);
@@ -185,6 +243,11 @@ class Domain
$this->iIncPort = 143;
}
+ if ($this->iSievePort <= 0)
+ {
+ $this->iSievePort = 2000;
+ }
+
if ($this->iOutPort <= 0)
{
$this->iOutPort = 25;
@@ -197,11 +260,16 @@ class Domain
public function ToIniString()
{
$this->Normalize();
- return implode("\n", array(
+ return \implode("\n", array(
'imap_host = "'.$this->encodeIniString($this->sIncHost).'"',
'imap_port = '.$this->iIncPort,
'imap_secure = "'.self::ConstConnectionSecurityTypeToStr($this->iIncSecure).'"',
'imap_short_login = '.($this->bIncShortLogin ? 'On' : 'Off'),
+ 'sieve_use = '.($this->bUseSieve ? 'On' : 'Off'),
+ 'sieve_use_imap_server = '.($this->bUseImapServerForSieve ? 'On' : 'Off'),
+ 'sieve_host = "'.$this->encodeIniString($this->sSieveHost).'"',
+ 'sieve_port = '.$this->iSievePort,
+ 'sieve_secure = "'.self::ConstConnectionSecurityTypeToStr($this->iSieveSecure).'"',
'smtp_host = "'.$this->encodeIniString($this->sOutHost).'"',
'smtp_port = '.$this->iOutPort,
'smtp_secure = "'.self::ConstConnectionSecurityTypeToStr($this->iOutSecure).'"',
@@ -258,6 +326,8 @@ class Domain
* @param int $iIncPort
* @param int $iIncSecure
* @param bool $bIncShortLogin
+ * @param bool $bUseSieve
+ * @param bool $bUseImapServerForSieve
* @param string $sOutHost
* @param int $iOutPort
* @param int $iOutSecure
@@ -270,6 +340,7 @@ class Domain
*/
public function UpdateInstance(
$sIncHost, $iIncPort, $iIncSecure, $bIncShortLogin,
+ $bUseSieve, $bUseImapServerForSieve, $sSieveHost, $iSievePort, $iSieveSecure,
$sOutHost, $iOutPort, $iOutSecure, $bOutShortLogin, $bOutAuth, $bOutUsePhpMail,
$sWhiteList = '')
{
@@ -277,12 +348,20 @@ class Domain
$this->iIncPort = $iIncPort;
$this->iIncSecure = $iIncSecure;
$this->bIncShortLogin = $bIncShortLogin;
+
+ $this->bUseSieve = $bUseSieve;
+ $this->bUseImapServerForSieve = $bUseImapServerForSieve;
+ $this->sSieveHost = \MailSo\Base\Utils::IdnToAscii($sSieveHost);
+ $this->iSievePort = $iSievePort;
+ $this->iSieveSecure = $iSieveSecure;
+
$this->sOutHost = \MailSo\Base\Utils::IdnToAscii($sOutHost);
$this->iOutPort = $iOutPort;
$this->iOutSecure = $iOutSecure;
$this->bOutShortLogin = $bOutShortLogin;
$this->bOutAuth = $bOutAuth;
$this->bOutUsePhpMail = $bOutUsePhpMail;
+
$this->sWhiteList = \trim($sWhiteList);
return $this;
@@ -328,6 +407,46 @@ class Domain
return $this->bIncShortLogin;
}
+ /**
+ * @return bool
+ */
+ public function UseSieve()
+ {
+ return $this->bUseSieve;
+ }
+
+ /**
+ * @return bool
+ */
+ public function UseImapServerForSieve()
+ {
+ return $this->bUseImapServerForSieve;
+ }
+
+ /**
+ * @return string
+ */
+ public function SieveHost()
+ {
+ return $this->sSieveHost;
+ }
+
+ /**
+ * @return int
+ */
+ public function SievePort()
+ {
+ return $this->iSievePort;
+ }
+
+ /**
+ * @return int
+ */
+ public function SieveSecure()
+ {
+ return $this->iSieveSecure;
+ }
+
/**
* @return string
*/
@@ -421,6 +540,11 @@ class Domain
'IncPort' => $this->IncPort(),
'IncSecure' => $this->IncSecure(),
'IncShortLogin' => $this->IncShortLogin(),
+ 'UseSieve' => $this->UseSieve(),
+ 'UseImapServerForSieve' => $this->UseImapServerForSieve(),
+ 'SieveHost' => $bAjax ? \MailSo\Base\Utils::IdnToUtf8($this->SieveHost()) : $this->SieveHost(),
+ 'SievePort' => $this->SievePort(),
+ 'SieveSecure' => $this->SieveSecure(),
'OutHost' => $bAjax ? \MailSo\Base\Utils::IdnToUtf8($this->OutHost()) : $this->OutHost(),
'OutPort' => $this->OutPort(),
'OutSecure' => $this->OutSecure(),
diff --git a/rainloop/v/0.0.0/app/src/RainLoop/Providers/Domain.php b/rainloop/v/0.0.0/app/src/RainLoop/Providers/Domain.php
index 11b4744e6..8e27a1244 100644
--- a/rainloop/v/0.0.0/app/src/RainLoop/Providers/Domain.php
+++ b/rainloop/v/0.0.0/app/src/RainLoop/Providers/Domain.php
@@ -129,6 +129,11 @@ class Domain extends \RainLoop\Providers\AbstractProvider
$iIncPort = (int) $oActions->GetActionParam('IncPort', 143);
$iIncSecure = (int) $oActions->GetActionParam('IncSecure', \MailSo\Net\Enumerations\ConnectionSecurityType::NONE);
$bIncShortLogin = '1' === (string) $oActions->GetActionParam('IncShortLogin', '0');
+ $bUseSieve = '1' === (string) $oActions->GetActionParam('UseSieve', '0');
+ $bUseImapServerForSieve = '1' === (string) $oActions->GetActionParam('UseImapServerForSieve', '1');
+ $sSieveHost = (string) $oActions->GetActionParam('SieveHost', '');
+ $iSievePort = (int) $oActions->GetActionParam('SievePort', 2000);
+ $iSieveSecure = (int) $oActions->GetActionParam('SieveSecure', \MailSo\Net\Enumerations\ConnectionSecurityType::NONE);
$sOutHost = (string) $oActions->GetActionParam('OutHost', '');
$iOutPort = (int) $oActions->GetActionParam('OutPort', 25);
$iOutSecure = (int) $oActions->GetActionParam('OutSecure', \MailSo\Net\Enumerations\ConnectionSecurityType::NONE);
@@ -155,6 +160,7 @@ class Domain extends \RainLoop\Providers\AbstractProvider
{
$oDomain->UpdateInstance(
$sIncHost, $iIncPort, $iIncSecure, $bIncShortLogin,
+ $bUseSieve, $bUseImapServerForSieve, $sSieveHost, $iSievePort, $iSieveSecure,
$sOutHost, $iOutPort, $iOutSecure, $bOutShortLogin, $bOutAuth, $bOutUsePhpMail,
$sWhiteList);
}
@@ -163,6 +169,7 @@ class Domain extends \RainLoop\Providers\AbstractProvider
{
$oDomain = \RainLoop\Model\Domain::NewInstance(0 < strlen($sNameForTest) ? $sNameForTest : $sName,
$sIncHost, $iIncPort, $iIncSecure, $bIncShortLogin,
+ $bUseSieve, $bUseImapServerForSieve, $sSieveHost, $iSievePort, $iSieveSecure,
$sOutHost, $iOutPort, $iOutSecure, $bOutShortLogin, $bOutAuth, $bOutUsePhpMail,
$sWhiteList);
}
diff --git a/rainloop/v/0.0.0/app/templates/Views/Admin/PopupsDomain.html b/rainloop/v/0.0.0/app/templates/Views/Admin/PopupsDomain.html
index 674a1171b..f5bb0163c 100644
--- a/rainloop/v/0.0.0/app/templates/Views/Admin/PopupsDomain.html
+++ b/rainloop/v/0.0.0/app/templates/Views/Admin/PopupsDomain.html
@@ -1,5 +1,6 @@