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 @@
-