From 76573685d953e89aa1e5c773ddb485af9845c8c9 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Sat, 11 Apr 2015 14:31:27 +0200 Subject: Enigma: Added user preferences to disable plugin features --- plugins/enigma/lib/enigma_engine.php | 38 +++++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 7 deletions(-) (limited to 'plugins/enigma/lib/enigma_engine.php') diff --git a/plugins/enigma/lib/enigma_engine.php b/plugins/enigma/lib/enigma_engine.php index 6c5ee3cc9..0111d9388 100644 --- a/plugins/enigma/lib/enigma_engine.php +++ b/plugins/enigma/lib/enigma_engine.php @@ -26,15 +26,13 @@ class enigma_engine private $enigma; private $pgp_driver; private $smime_driver; + private $password_time; public $decryptions = array(); public $signatures = array(); public $signed_parts = array(); public $encrypted_parts = array(); - - const PASSWORD_TIME = 120; - const SIGN_MODE_BODY = 1; const SIGN_MODE_SEPARATE = 2; const SIGN_MODE_MIME = 3; @@ -51,8 +49,12 @@ class enigma_engine $this->rc = rcmail::get_instance(); $this->enigma = $enigma; + $this->password_time = $this->rc->config->get('enigma_password_time'); + // this will remove passwords from session after some time - $this->get_passwords(); + if ($this->password_time) { + $this->get_passwords(); + } } /** @@ -445,7 +447,9 @@ class enigma_engine // Verify signature if ($this->rc->action == 'show' || $this->rc->action == 'preview') { - $sig = $this->pgp_verify($body); + if ($this->rc->config->get('enigma_signatures', true)) { + $sig = $this->pgp_verify($body); + } } // @TODO: Handle big bodies using (temp) files @@ -495,6 +499,10 @@ class enigma_engine */ private function parse_pgp_signed(&$p) { + if (!$this->rc->config->get('enigma_signatures', true)) { + return; + } + // Verify signature if ($this->rc->action == 'show' || $this->rc->action == 'preview') { $this->load_pgp_driver(); @@ -536,6 +544,10 @@ class enigma_engine { return; // @TODO + if (!$this->rc->config->get('enigma_signatures', true)) { + return; + } + // Verify signature if ($this->rc->action == 'show' || $this->rc->action == 'preview') { $this->load_smime_driver(); @@ -568,6 +580,10 @@ class enigma_engine */ private function parse_plain_encrypted(&$p, $body) { + if (!$this->rc->config->get('enigma_decryption', true)) { + return; + } + $this->load_pgp_driver(); $part = $p['structure']; @@ -642,6 +658,10 @@ class enigma_engine */ private function parse_pgp_encrypted(&$p) { + if (!$this->rc->config->get('enigma_decryption', true)) { + return; + } + $this->load_pgp_driver(); $struct = $p['structure']; @@ -682,6 +702,10 @@ class enigma_engine */ private function parse_smime_encrypted(&$p) { + if (!$this->rc->config->get('enigma_decryption', true)) { + return; + } + // $this->load_smime_driver(); } @@ -982,12 +1006,12 @@ class enigma_engine $config = @unserialize($config); } - $threshold = time() - self::PASSWORD_TIME; + $threshold = time() - $this->password_time; $keys = array(); // delete expired passwords foreach ((array) $config as $key => $value) { - if ($value[1] < $threshold) { + if ($pass_time && $value[1] < $threshold) { unset($config[$key]); $modified = true; } -- cgit v1.2.3