summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/managesieve/Changelog1
-rw-r--r--plugins/managesieve/config.inc.php.dist12
-rw-r--r--plugins/managesieve/lib/Roundcube/rcube_sieve.php5
-rw-r--r--plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php4
4 files changed, 19 insertions, 3 deletions
diff --git a/plugins/managesieve/Changelog b/plugins/managesieve/Changelog
index 856b8acf4..37550845f 100644
--- a/plugins/managesieve/Changelog
+++ b/plugins/managesieve/Changelog
@@ -2,6 +2,7 @@
- Fix disabled "create filter" action
- Fix enotify/notify extension handling
- Improved UI accessibility
+- Added option to specify connection socket parameters - managesieve_conn_options
* version 7.2 [2014-02-14]
-----------------------------------------------------------
diff --git a/plugins/managesieve/config.inc.php.dist b/plugins/managesieve/config.inc.php.dist
index 14123c110..1f20b5ae4 100644
--- a/plugins/managesieve/config.inc.php.dist
+++ b/plugins/managesieve/config.inc.php.dist
@@ -28,6 +28,18 @@ $config['managesieve_auth_pw'] = null;
// Note: tls:// prefix in managesieve_host is also supported
$config['managesieve_usetls'] = false;
+// Connection scket context options
+// See http://php.net/manual/en/context.ssl.php
+// The example below enables server certificate validation
+//$config['imap_conn_options'] = array(
+// 'ssl' => array(
+// 'verify_peer' => true,
+// 'verify_depth' => 3,
+// 'cafile' => '/etc/openssl/certs/ca.crt',
+// ),
+// );
+$config['managesieve_conn_options'] = null;
+
// default contents of filters script (eg. default spam filter)
$config['managesieve_default'] = '/etc/dovecot/sieve/global';
diff --git a/plugins/managesieve/lib/Roundcube/rcube_sieve.php b/plugins/managesieve/lib/Roundcube/rcube_sieve.php
index 3bd2978da..a8e29d77c 100644
--- a/plugins/managesieve/lib/Roundcube/rcube_sieve.php
+++ b/plugins/managesieve/lib/Roundcube/rcube_sieve.php
@@ -57,10 +57,11 @@ class rcube_sieve
* @param boolean Enable/disable debugging
* @param string Proxy authentication identifier
* @param string Proxy authentication password
+ * @param array List of options to pass to stream_context_create().
*/
public function __construct($username, $password='', $host='localhost', $port=2000,
$auth_type=null, $usetls=true, $disabled=array(), $debug=false,
- $auth_cid=null, $auth_pw=null)
+ $auth_cid=null, $auth_pw=null, $options=array())
{
$this->sieve = new Net_Sieve();
@@ -68,7 +69,7 @@ class rcube_sieve
$this->sieve->setDebug(true, array($this, 'debug_handler'));
}
- if (PEAR::isError($this->sieve->connect($host, $port, null, $usetls))) {
+ if (PEAR::isError($this->sieve->connect($host, $port, $options, $usetls))) {
return $this->_set_error(SIEVE_ERROR_CONNECTION);
}
diff --git a/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php b/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php
index 9900f16b5..3e3b9becc 100644
--- a/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php
+++ b/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php
@@ -122,6 +122,7 @@ class rcube_sieve_engine
'debug' => $this->rc->config->get('managesieve_debug', false),
'auth_cid' => $this->rc->config->get('managesieve_auth_cid'),
'auth_pw' => $this->rc->config->get('managesieve_auth_pw'),
+ 'socket_options' => $this->rc->config->get('managesieve_conn_options'),
));
// try to connect to managesieve server and to fetch the script
@@ -135,7 +136,8 @@ class rcube_sieve_engine
$plugin['disabled'],
$plugin['debug'],
$plugin['auth_cid'],
- $plugin['auth_pw']
+ $plugin['auth_pw'],
+ $plugin['socket_options']
);
if (!($error = $this->sieve->error())) {