From 8a3b80d394bade585cc47478f523456ffb36ae23 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Mon, 30 May 2016 11:07:58 +0200 Subject: [PATCH] Enigma: Fix keys import from inside of an encrypted message (#5285) --- CHANGELOG | 1 + plugins/enigma/enigma.js | 23 ++++++++---- plugins/enigma/enigma.php | 4 +-- plugins/enigma/lib/enigma_engine.php | 31 ++-------------- plugins/enigma/lib/enigma_ui.php | 53 +++++++++++++++++++++++++++- 5 files changed, 74 insertions(+), 38 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index e2c2dd7c3..6e7739fdf 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -11,6 +11,7 @@ CHANGELOG Roundcube Webmail - Fix bug where multi-folder search could choose a wrong folder in "this and subfolders" scope (#5282) - Fix bug where multi-folder search didn't work for unsubscribed INBOX (#5259) - Fix bug where "no body" alert could be displayed when sending mailvelope email +- Enigma: Fix keys import from inside of an encrypted message (#5285) RELEASE 1.2.0 ------------- diff --git a/plugins/enigma/enigma.js b/plugins/enigma/enigma.js index 1f1a3e024..1318a4352 100644 --- a/plugins/enigma/enigma.js +++ b/plugins/enigma/enigma.js @@ -446,17 +446,26 @@ rcube_webmail.prototype.enigma_password_submit = function(data) return this.enigma_password_compose_submit(data); } - var lock = this.set_busy(true, 'loading'); - - // message preview - var form = $('
').attr({method: 'post', action: location.href, style: 'display:none'}) + var lock = this.set_busy(true, 'loading'), + form = $('').attr({method: 'post', action: data.action || location.href, style: 'display:none'}) .append($('').attr({type: 'hidden', name: '_keyid', value: data.key})) .append($('').attr({type: 'hidden', name: '_passwd', value: data.password})) .append($('').attr({type: 'hidden', name: '_token', value: this.env.request_token})) - .append($('').attr({type: 'hidden', name: '_unlock', value: lock})) - .appendTo(document.body); + .append($('').attr({type: 'hidden', name: '_unlock', value: lock})); + + // Additional form fields for request parameters + $.each(data, function(i, v) { + if (i.indexOf('input') == 0) + form.append($('').attr({type: 'hidden', name: i.substring(5), value: v})) + }); + + if (data.iframe) { + var name = 'enigma_frame_' + (new Date()).getTime(), + frame = $('