From b76f8e5e26f638ecbe5bdcb58b6792ce05dabd86 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Mon, 16 Jun 2014 15:12:27 +0200 Subject: Added option to specify connection socket parameters - managesieve_conn_options --- plugins/managesieve/Changelog | 1 + plugins/managesieve/config.inc.php.dist | 12 ++++++++++++ plugins/managesieve/lib/Roundcube/rcube_sieve.php | 5 +++-- plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php | 4 +++- 4 files changed, 19 insertions(+), 3 deletions(-) (limited to 'plugins/managesieve') 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())) { -- cgit v1.2.3