diff --git a/rainloop/v/0.0.0/app/libraries/MailSo/Imap/ImapClient.php b/rainloop/v/0.0.0/app/libraries/MailSo/Imap/ImapClient.php
index 1701edb05..e6bd969cd 100644
--- a/rainloop/v/0.0.0/app/libraries/MailSo/Imap/ImapClient.php
+++ b/rainloop/v/0.0.0/app/libraries/MailSo/Imap/ImapClient.php
@@ -126,7 +126,7 @@ class ImapClient extends \MailSo\Net\NetClient
* @param string $sServerName
* @param int $iPort = 143
* @param int $iSecurityType = \MailSo\Net\Enumerations\ConnectionSecurityType::AUTO_DETECT
- * @param bool $bVerifySsl = false
+ * @param bool $bVerifySsl = true
*
* @return \MailSo\Imap\ImapClient
*
@@ -135,7 +135,7 @@ class ImapClient extends \MailSo\Net\NetClient
* @throws \MailSo\Imap\Exceptions\Exception
*/
public function Connect($sServerName, $iPort = 143,
- $iSecurityType = \MailSo\Net\Enumerations\ConnectionSecurityType::AUTO_DETECT, $bVerifySsl = false)
+ $iSecurityType = \MailSo\Net\Enumerations\ConnectionSecurityType::AUTO_DETECT, $bVerifySsl = true)
{
$this->aTagTimeouts['*'] = \microtime(true);
diff --git a/rainloop/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php b/rainloop/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php
index 11d97b931..abdc104d2 100644
--- a/rainloop/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php
+++ b/rainloop/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php
@@ -49,6 +49,7 @@ class MailClient
* @param string $sServerName
* @param int $iPort = 143
* @param int $iSecurityType = \MailSo\Net\Enumerations\ConnectionSecurityType::AUTO_DETECT
+ * @param bool $bVerifySsl = true
*
* @return \MailSo\Mail\MailClient
*
@@ -57,9 +58,9 @@ class MailClient
* @throws \MailSo\Imap\Exceptions\Exception
*/
public function Connect($sServerName, $iPort = 143,
- $iSecurityType = \MailSo\Net\Enumerations\ConnectionSecurityType::AUTO_DETECT)
+ $iSecurityType = \MailSo\Net\Enumerations\ConnectionSecurityType::AUTO_DETECT, $bVerifySsl = true)
{
- $this->oImapClient->Connect($sServerName, $iPort, $iSecurityType);
+ $this->oImapClient->Connect($sServerName, $iPort, $iSecurityType, $bVerifySsl);
return $this;
}
diff --git a/rainloop/v/0.0.0/app/libraries/MailSo/Net/NetClient.php b/rainloop/v/0.0.0/app/libraries/MailSo/Net/NetClient.php
index a32afcfb4..8822fce10 100644
--- a/rainloop/v/0.0.0/app/libraries/MailSo/Net/NetClient.php
+++ b/rainloop/v/0.0.0/app/libraries/MailSo/Net/NetClient.php
@@ -185,7 +185,7 @@ abstract class NetClient
* @param string $sServerName
* @param int $iPort
* @param int $iSecurityType = \MailSo\Net\Enumerations\ConnectionSecurityType::AUTO_DETECT
- * @param bool $bVerifySsl = false
+ * @param bool $bVerifySsl = true
*
* @return void
*
@@ -194,7 +194,7 @@ abstract class NetClient
* @throws \MailSo\Net\Exceptions\SocketCanNotConnectToHostException
*/
public function Connect($sServerName, $iPort,
- $iSecurityType = \MailSo\Net\Enumerations\ConnectionSecurityType::AUTO_DETECT, $bVerifySsl = false)
+ $iSecurityType = \MailSo\Net\Enumerations\ConnectionSecurityType::AUTO_DETECT, $bVerifySsl = true)
{
if (!\MailSo\Base\Validator::NotEmptyString($sServerName, true) || !\MailSo\Base\Validator::PortInt($iPort))
{
diff --git a/rainloop/v/0.0.0/app/libraries/MailSo/Pop3/Pop3Client.php b/rainloop/v/0.0.0/app/libraries/MailSo/Pop3/Pop3Client.php
index 85a722bc1..d1bb7835f 100644
--- a/rainloop/v/0.0.0/app/libraries/MailSo/Pop3/Pop3Client.php
+++ b/rainloop/v/0.0.0/app/libraries/MailSo/Pop3/Pop3Client.php
@@ -53,6 +53,7 @@ class Pop3Client extends \MailSo\Net\NetClient
* @param string $sServerName
* @param int $iPort = 110
* @param int $iSecurityType = \MailSo\Net\Enumerations\ConnectionSecurityType::AUTO_DETECT
+ * @param bool $bVerifySsl = true
*
* @return \MailSo\Pop3\Pop3Client
*
@@ -61,11 +62,11 @@ class Pop3Client extends \MailSo\Net\NetClient
* @throws \MailSo\Pop3\Exceptions\ResponseException
*/
public function Connect($sServerName, $iPort = 110,
- $iSecurityType = \MailSo\Net\Enumerations\ConnectionSecurityType::AUTO_DETECT)
+ $iSecurityType = \MailSo\Net\Enumerations\ConnectionSecurityType::AUTO_DETECT, $bVerifySsl = true)
{
$this->iRequestTime = microtime(true);
- parent::Connect($sServerName, $iPort, $iSecurityType);
+ parent::Connect($sServerName, $iPort, $iSecurityType, $bVerifySsl);
$this->validateResponse();
if (\MailSo\Net\Enumerations\ConnectionSecurityType::UseStartTLS(
diff --git a/rainloop/v/0.0.0/app/libraries/MailSo/Poppassd/PoppassdClient.php b/rainloop/v/0.0.0/app/libraries/MailSo/Poppassd/PoppassdClient.php
index ed6d4fe11..563de5141 100644
--- a/rainloop/v/0.0.0/app/libraries/MailSo/Poppassd/PoppassdClient.php
+++ b/rainloop/v/0.0.0/app/libraries/MailSo/Poppassd/PoppassdClient.php
@@ -41,6 +41,7 @@ class PoppassdClient extends \MailSo\Net\NetClient
* @param string $sServerName
* @param int $iPort = 106
* @param int $iSecurityType = \MailSo\Net\Enumerations\ConnectionSecurityType::AUTO_DETECT
+ * @param bool $bVerifySsl = true
*
* @return \MailSo\Poppassd\PoppassdClient
*
@@ -49,11 +50,11 @@ class PoppassdClient extends \MailSo\Net\NetClient
* @throws \MailSo\Poppassd\Exceptions\ResponseException
*/
public function Connect($sServerName, $iPort = 106,
- $iSecurityType = \MailSo\Net\Enumerations\ConnectionSecurityType::AUTO_DETECT)
+ $iSecurityType = \MailSo\Net\Enumerations\ConnectionSecurityType::AUTO_DETECT, $bVerifySsl = true)
{
$this->iRequestTime = \microtime(true);
- parent::Connect($sServerName, $iPort, $iSecurityType);
+ parent::Connect($sServerName, $iPort, $iSecurityType, $bVerifySsl);
$this->validateResponse();
return $this;
diff --git a/rainloop/v/0.0.0/app/libraries/MailSo/Sieve/ManageSieveClient.php b/rainloop/v/0.0.0/app/libraries/MailSo/Sieve/ManageSieveClient.php
index 72c0ce0d8..431c22853 100644
--- a/rainloop/v/0.0.0/app/libraries/MailSo/Sieve/ManageSieveClient.php
+++ b/rainloop/v/0.0.0/app/libraries/MailSo/Sieve/ManageSieveClient.php
@@ -78,6 +78,7 @@ class ManageSieveClient extends \MailSo\Net\NetClient
* @param string $sServerName
* @param int $iPort
* @param int $iSecurityType = \MailSo\Net\Enumerations\ConnectionSecurityType::AUTO_DETECT
+ * @param bool $bVerifySsl = true
*
* @return \MailSo\Sieve\ManageSieveClient
*
@@ -86,11 +87,11 @@ class ManageSieveClient extends \MailSo\Net\NetClient
* @throws \MailSo\Sieve\Exceptions\ResponseException
*/
public function Connect($sServerName, $iPort,
- $iSecurityType = \MailSo\Net\Enumerations\ConnectionSecurityType::AUTO_DETECT)
+ $iSecurityType = \MailSo\Net\Enumerations\ConnectionSecurityType::AUTO_DETECT, $bVerifySsl = true)
{
$this->iRequestTime = microtime(true);
- parent::Connect($sServerName, $iPort, $iSecurityType);
+ parent::Connect($sServerName, $iPort, $iSecurityType, $bVerifySsl);
$mResponse = $this->parseResponse();
$this->validateResponse($mResponse);
diff --git a/rainloop/v/0.0.0/app/libraries/MailSo/Smtp/SmtpClient.php b/rainloop/v/0.0.0/app/libraries/MailSo/Smtp/SmtpClient.php
index 9a33fc272..f66a8eb7a 100644
--- a/rainloop/v/0.0.0/app/libraries/MailSo/Smtp/SmtpClient.php
+++ b/rainloop/v/0.0.0/app/libraries/MailSo/Smtp/SmtpClient.php
@@ -141,7 +141,7 @@ class SmtpClient extends \MailSo\Net\NetClient
* @param int $iPort = 25
* @param string $sEhloHost = '[127.0.0.1]'
* @param int $iSecurityType = \MailSo\Net\Enumerations\ConnectionSecurityType::AUTO_DETECT
- * @param bool $bVerifySsl = false
+ * @param bool $bVerifySsl = true
*
* @return \MailSo\Smtp\SmtpClient
*
@@ -150,7 +150,7 @@ class SmtpClient extends \MailSo\Net\NetClient
* @throws \MailSo\Smtp\Exceptions\ResponseException
*/
public function Connect($sServerName, $iPort = 25, $sEhloHost = '[127.0.0.1]',
- $iSecurityType = \MailSo\Net\Enumerations\ConnectionSecurityType::AUTO_DETECT, $bVerifySsl = false)
+ $iSecurityType = \MailSo\Net\Enumerations\ConnectionSecurityType::AUTO_DETECT, $bVerifySsl = true)
{
$this->iRequestTime = microtime(true);
diff --git a/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php b/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php
index 2c34ca08f..b7c4ed9f1 100644
--- a/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php
+++ b/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php
@@ -1373,7 +1373,8 @@ class Actions
{
$this->MailClient()
->Connect($oAccount->Domain()->IncHost(\MailSo\Base\Utils::GetDomainFromEmail($oAccount->Email())),
- $oAccount->Domain()->IncPort(), $oAccount->Domain()->IncSecure())
+ $oAccount->Domain()->IncPort(), $oAccount->Domain()->IncSecure(),
+ $oAccount->Domain()->IncVerifySsl(!!$this->Config()->Get('labs', 'verify_ssl_certificate')))
->Login($oAccount->IncLogin(), $oAccount->Password())
;
}
@@ -2784,7 +2785,7 @@ class Actions
$iTime = \microtime(true);
$oImapClient->Connect($oDomain->IncHost($oDomain->Name()), $oDomain->IncPort(),
- $oDomain->IncSecure(), $oDomain->IncVerifySsl());
+ $oDomain->IncSecure(), $oDomain->IncVerifySsl(!!$this->Config()->Get('labs', 'verify_ssl_certificate')));
$iImapTime = \microtime(true) - $iTime;
$oImapClient->Disconnect();
@@ -2812,7 +2813,7 @@ class Actions
$iTime = \microtime(true);
$oSmtpClient->Connect($oDomain->OutHost($oDomain->Name()), $oDomain->OutPort(), '127.0.0.1',
- $oDomain->OutSecure(), $oDomain->OutVerifySsl());
+ $oDomain->OutSecure(), $oDomain->OutVerifySsl(!!$this->Config()->Get('labs', 'verify_ssl_certificate')));
$iSmtpTime = \microtime(true) - $iTime;
$oSmtpClient->Disconnect();
@@ -4651,6 +4652,15 @@ class Actions
return $this->DefaultResponse(__FUNCTION__, $mResult);
}
+ /**
+ *
+ * @param \RainLoop\Account $oAccount
+ * @param type $oMessage
+ * @param type $rMessageStream
+ * @param type $bAddHiddenRcpt
+ * @throws \RainLoop\Exceptions\ClientException
+ * @throws \MailSo\Net\Exceptions\ConnectionException
+ */
private function smtpSendMessage($oAccount, $oMessage, $rMessageStream, $bAddHiddenRcpt = true)
{
$oRcpt = $oMessage->GetRcpt();
@@ -4674,6 +4684,7 @@ class Actions
'From' => empty($sFrom) ? $oAccount->Email() : $sFrom,
'Login' => $oAccount->OutLogin(),
'Password' => $oAccount->Password(),
+ 'VerifySsl' => $oAccount->Domain()->OutVerifySsl(!!$this->Config()->Get('labs', 'verify_ssl_certificate')),
'HiddenRcpt' => array()
);
@@ -4692,7 +4703,7 @@ class Actions
if (!$bHookConnect)
{
$oSmtpClient->Connect($aSmtpCredentials['Host'], $aSmtpCredentials['Port'],
- $aSmtpCredentials['Ehlo'], $aSmtpCredentials['Secure']);
+ $aSmtpCredentials['Ehlo'], $aSmtpCredentials['Secure'], $aSmtpCredentials['VerifySsl']);
}
if (!$bHookAuth)
@@ -5442,10 +5453,6 @@ class Actions
if ($oAddressBookProvider && $oAddressBookProvider->IsActive() && 0 < \strlen($sRequestUid))
{
$sUid = \trim($this->GetActionParam('Uid', ''));
- $sTags = \trim($this->GetActionParam('Tags', ''));
- $aTags = \explode(',', $sTags);
- $aTags = \array_map('trim', $aTags);
- $aTags = \array_unique($aTags);
$oContact = null;
if (0 < \strlen($sUid))
@@ -5462,7 +5469,6 @@ class Actions
}
}
- $oContact->Tags = $aTags;
$oContact->Properties = array();
$aProperties = $this->GetActionParam('Properties', array());
if (\is_array($aProperties))
@@ -6654,7 +6660,8 @@ class Actions
{
$this->MailClient()
->Connect($oAccount->Domain()->IncHost(\MailSo\Base\Utils::GetDomainFromEmail($oAccount->Email())),
- $oAccount->Domain()->IncPort(), $oAccount->Domain()->IncSecure())
+ $oAccount->Domain()->IncPort(), $oAccount->Domain()->IncSecure(),
+ $oAccount->Domain()->IncVerifySsl(!!$this->Config()->Get('labs', 'verify_ssl_certificate')))
->Login($oAccount->IncLogin(), $oAccount->Password(), !!$this->Config()->Get('labs', 'use_imap_auth_plain'))
;
}
@@ -7543,7 +7550,6 @@ class Actions
'Display' => \MailSo\Base\Utils::Utf8Clear($mResponse->Display),
'ReadOnly' => $mResponse->ReadOnly,
'IdPropertyFromSearch' => $mResponse->IdPropertyFromSearch,
- 'Tags' => $this->responseObject($mResponse->Tags, $sParent, $aParameters),
'Properties' => $this->responseObject($mResponse->Properties, $sParent, $aParameters)
));
}
diff --git a/rainloop/v/0.0.0/app/libraries/RainLoop/Config/Application.php b/rainloop/v/0.0.0/app/libraries/RainLoop/Config/Application.php
index 6e3df80b4..317d16cb1 100644
--- a/rainloop/v/0.0.0/app/libraries/RainLoop/Config/Application.php
+++ b/rainloop/v/0.0.0/app/libraries/RainLoop/Config/Application.php
@@ -101,6 +101,7 @@ class Application extends \RainLoop\Config\AbstractConfig
'Enable CSRF protection (http://en.wikipedia.org/wiki/Cross-site_request_forgery)'),
'custom_server_signature' => array('RainLoop'),
+ 'x_frame_options_header' => array('SAMEORIGIN'),
'openpgp' => array(false),
'use_rsa_encryption' => array(false),
'admin_login' => array('admin', 'Login and password for web admin panel'),
@@ -248,6 +249,7 @@ Enables caching in the system'),
'imap_message_list_date_filter' => array(0),
'imap_large_thread_limit' => array(100),
'smtp_show_server_errors' => array(false),
+ 'verify_ssl_certificate' => array(true),
'curl_proxy' => array(''),
'curl_proxy_auth' => array(''),
'in_iframe' => array(false),
diff --git a/rainloop/v/0.0.0/app/libraries/RainLoop/Domain.php b/rainloop/v/0.0.0/app/libraries/RainLoop/Domain.php
index 7f945dc2e..fe9ef7923 100644
--- a/rainloop/v/0.0.0/app/libraries/RainLoop/Domain.php
+++ b/rainloop/v/0.0.0/app/libraries/RainLoop/Domain.php
@@ -338,11 +338,13 @@ class Domain
}
/**
+ * @param bool|null $bGlobalVerify = null
+ *
* @return bool
*/
- public function IncVerifySsl()
+ public function IncVerifySsl($bGlobalVerify = null)
{
- return $this->bIncVerifySsl;
+ return null === $bGlobalVerify ? $this->bIncVerifySsl : !!$bGlobalVerify;
}
/**
@@ -379,11 +381,13 @@ class Domain
}
/**
+ * @param bool|null $bGlobalVerify = null
+ *
* @return bool
*/
- public function OutVerifySsl()
+ public function OutVerifySsl($bGlobalVerify = null)
{
- return $this->bOutVerifySsl;
+ return null === $bGlobalVerify ? $this->bOutVerifySsl : !!$bGlobalVerify;
}
/**
diff --git a/rainloop/v/0.0.0/app/libraries/RainLoop/Service.php b/rainloop/v/0.0.0/app/libraries/RainLoop/Service.php
index ae6942445..9cd84de65 100644
--- a/rainloop/v/0.0.0/app/libraries/RainLoop/Service.php
+++ b/rainloop/v/0.0.0/app/libraries/RainLoop/Service.php
@@ -42,6 +42,12 @@ class Service
{
@\header('Server: '.$sServer, true);
}
+
+ $sXFrameOptionsHeader = \trim($this->oActions->Config()->Get('security', 'x_frame_options_header', ''));
+ if (0 < \strlen($sXFrameOptionsHeader))
+ {
+ @\header('X-Frame-Options: '.$sXFrameOptionsHeader, true);
+ }
if ($this->oActions->Config()->Get('labs', 'force_https', false) && !$this->oHttp->IsSecure())
{
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 73f2b1b6b..e4e5e0aa8 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
@@ -48,7 +48,7 @@
-