On 05/05/2017 08:13 PM, sebb wrote: > On 5 May 2017 at 19:01, <[email protected]> wrote: >> Repository: incubator-ponymail >> Updated Branches: >> refs/heads/master 2b8b5b0da -> c4e38edb4 >> >> >> Detect and convert base64 blobs >> >> If the archiver has saved a source blob as base64, >> detect it and convert back to plain text when displaying. >> This addresses issue #371. > > -1 > > This should be unnecessary, because the base64 is already decoded in > elastic.lua, see:
Apologies, I was unaware that this had changed. It would perhaps be prudent with a heads up to dev@ when major internal changes like this happen. I don't read all commits done. There are a few not optimal design choices in elastic.lua for detecting base64, I'll take a look at those instead. With regards, Daniel. > > https://github.com/apache/incubator-ponymail/blob/master/site/api/lib/elastic.lua#L116 > > If that is not working, it should be fixed. > > In any case, fixing source.lua is insufficient because mbox.lua also > reads mbox_source. > > That is why the fix was added to elastic.lua instead. > >> >> Project: http://git-wip-us.apache.org/repos/asf/incubator-ponymail/repo >> Commit: >> http://git-wip-us.apache.org/repos/asf/incubator-ponymail/commit/c4e38edb >> Tree: http://git-wip-us.apache.org/repos/asf/incubator-ponymail/tree/c4e38edb >> Diff: http://git-wip-us.apache.org/repos/asf/incubator-ponymail/diff/c4e38edb >> >> Branch: refs/heads/master >> Commit: c4e38edb4032d1613fcff161be0a3bd201986a4a >> Parents: 2b8b5b0 >> Author: Daniel Gruno <[email protected]> >> Authored: Fri May 5 20:01:28 2017 +0200 >> Committer: Daniel Gruno <[email protected]> >> Committed: Fri May 5 20:01:28 2017 +0200 >> >> ---------------------------------------------------------------------- >> site/api/source.lua | 16 ++++++++++++++++ >> 1 file changed, 16 insertions(+) >> ---------------------------------------------------------------------- >> >> >> http://git-wip-us.apache.org/repos/asf/incubator-ponymail/blob/c4e38edb/site/api/source.lua >> ---------------------------------------------------------------------- >> diff --git a/site/api/source.lua b/site/api/source.lua >> index 5de4dec..95dcc5f 100644 >> --- a/site/api/source.lua >> +++ b/site/api/source.lua >> @@ -23,6 +23,18 @@ local user = require 'lib/user' >> local cross = require 'lib/cross' >> local utils = require 'lib/utils' >> >> +function is_base64(msg) >> + -- base64 is always a multiple of 4 >> + if #msg % 4 == 0 then >> + -- base64 only has a-zA-Z0-9+=/ in it >> + if not msg:match("([^a-zA-Z0-9+=/])") then >> + -- very likely base64 :) >> + return true >> + end >> + end >> + return false >> +end >> + >> function handle(r) >> -- content is currently utf-8, see #367 >> cross.contentType(r, "text/plain; charset=utf-8") >> @@ -46,6 +58,10 @@ function handle(r) >> if aaa.canAccessDoc(r, doc, account) then >> local doc_raw = elastic.get('mbox_source', doc.request_id) >> if doc_raw then >> + -- If this could be base64, try to convert it. >> + if is_base64(doc_raw.source) then >> + pcall(function() doc_raw.source = >> r:base64_decode(doc_raw.source) end) >> + end >> r:puts(doc_raw.source) >> else >> r:puts("Could not find the email source, sorry!") >>
