From 6c97affba1a44798f89fda18297da7e3388bb52a Mon Sep 17 00:00:00 2001 From: Chris Fuertes Date: Mon, 14 Jan 2019 16:04:25 +0100 Subject: [PATCH] Read files from imap server using streams --- .hgignore | 168 +++++++++++++ README.md | 5 +- chrome/content/modules/pEpAdapter.js | 13 +- chrome/content/pepmsghdrview.js | 349 ++++++++++++++++----------- 4 files changed, 389 insertions(+), 146 deletions(-) create mode 100644 .hgignore diff --git a/.hgignore b/.hgignore new file mode 100644 index 0000000..2f24a50 --- /dev/null +++ b/.hgignore @@ -0,0 +1,168 @@ +build + +# Created by .ignore support plugin (hsz.mobi) +syntax: glob + +### Node template +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# next.js build output +.next + +# nuxt.js build output +.nuxt + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless +### JetBrains template +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/modules.xml +# .idea/*.iml +# .idea/modules + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests +### macOS template +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + diff --git a/README.md b/README.md index ba6d8cc..e6af090 100644 --- a/README.md +++ b/README.md @@ -4,4 +4,7 @@ Using docker ```docker build -t . && docker run -v build:/usr/src/app/build ``` - \ No newline at end of file + +Using bash + +```zip -r build/p4t.xpi chrome``` \ No newline at end of file diff --git a/chrome/content/modules/pEpAdapter.js b/chrome/content/modules/pEpAdapter.js index be20513..2e086f0 100644 --- a/chrome/content/modules/pEpAdapter.js +++ b/chrome/content/modules/pEpAdapter.js @@ -9,7 +9,7 @@ const DIR_OUTGOING = 1; const ENC_FORMAT_PEP = 4; const PEP_PREFIX = "pEp-"; -const RATING_COLOR_GREY = "grey"; +const RATING_COLOR_NO_COLOR = "no_color"; const RATING_COLOR_RED = "red"; const RATING_COLOR_GREEN = "green"; const RATING_COLOR_YELLOW = "yellow"; @@ -64,10 +64,7 @@ class pEpAdapter { message.reply_to = replyTo; } - //message.longmsg = ""; - // message.addAttachment(btoa(body), body.length); - - + //message.addAttachment(body, body.length); let params = [ message, @@ -145,15 +142,15 @@ class pEpAdapter { async color_from_rating(rating) { - let color = RATING_COLOR_GREY; + let color = RATING_COLOR_NO_COLOR; if (rating === -2 || rating === 2) { - color = RATING_COLOR_GREY; + color = RATING_COLOR_NO_COLOR; } else if (rating < 0) { color = RATING_COLOR_RED; } else if (rating < 6) { - color = RATING_COLOR_GREY; + color = RATING_COLOR_NO_COLOR; } else if (rating >= 7) { color = RATING_COLOR_GREEN; diff --git a/chrome/content/pepmsghdrview.js b/chrome/content/pepmsghdrview.js index 0669216..96d081e 100644 --- a/chrome/content/pepmsghdrview.js +++ b/chrome/content/pepmsghdrview.js @@ -18,7 +18,7 @@ let onLoadListener = (event) => { console.log("pepmsghdrview.js: onLoadListener()"); let onStartHeadersMessageListener = () => { - let messagePanelFrame = getPanel("messagepane", window); + let messagePanelFrame = window.GetMessagePaneFrame(); console.log("pepmsghdrview.js: onLoadMsgPanelFrameListener(), frame: ", messagePanelFrame); if (messagePanelFrame != null) { console.log("pepmsghdrview.js: onLoadListener() added listener"); @@ -48,10 +48,11 @@ let onLoadMsgPanelFrameListener = (event) => { function updateBody(newBody) { //TODO Not implemented yet - let bodyElement = getPanel("messagepane", window).document.getElementsByTagName("body")[0]; + let panel = window.GetMessagePaneFrame(); + let bodyElement = panel.document.getElementsByTagName("body")[0]; let node = bodyElement.firstChild; while (node) { - if(node.nodeName === "DIV" || node.nodeName === "PRE") { + if (node.nodeName === "DIV" || node.nodeName === "PRE") { if (node.textContent.indexOf("-----BEGIN PGP")) { node.innerHTML = newBody; return; @@ -67,148 +68,222 @@ let onLoadMsgPanelFrameListener = (event) => { } + let messageString; console.log("pepmsghdrview.js: onLoadMsgPanelFrameListener()"); // read email from tb // TODO decrypt mail - let messageString = "-----BEGIN PGP MESSAGE-----\n" + - "\n" + - "hQEMA3nTjPcdpPimAQgA2yAWJ7f3UdRvL/D8PI6KgAExPnQ4g8bEOUpwOgmo435x\n" + - "rEKlkP/QMGUWZfliDlhTAugaxqAxzVE4+rfyp9OqQUSj9S5xToIj0/qMa3ae4wLF\n" + - "WUxPksBVbb0r8nPQgGP9cpWa0+MWi3vUWeEvdcpcPCGsgmTKkxOKbqDAOD5GEKxX\n" + - "xj7iodBCevzf+nFtrHoMU56qkdreY/Pw1BTCFUPAUB8cEfqIp58CAfwP+WJUM2LM\n" + - "uMkZ4tq+F+bT5Q6oZUVqwdWeARlD6lu6LYFM/MQTBwHL9vVtpz35e7/yYa0O7lMB\n" + - "ev9ccn2a2qPaCdQt3tGfKREluT4GBhljxR5Oe55SUdJHASOnYNeFd48wfToxkXkv\n" + - "j1urYFxRZmq9atq0upqd2EnWlxq2OitrcG0PM4uuLKsw+vGjkElAqotLxdQqwXMJ\n" + - "jkogthSisZ8=\n" + - "=dTBg\n" + - "-----END PGP MESSAGE-----"; - - /* - let messageString = "-----BEGIN PGP MESSAGE-----\n" + - "\n" + - "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\n" + - "Sr2kl6sMaEtqKsmobd9KXjgjMZ5iV4v7EDloeBo=\n" + - "=xc3m\n" + - "-----END PGP MESSAGE-----"; - */ - - pep.decryptMail(messageString, currentHeaderData).then((message) => { - // replace encrypted mail with decrypted from pEpAdapter - updateSubject(message.shortmsg); - updateBody(message.longmsg); - - pep.getPrivacyColorFromRating(message.rating).then( - (rating) => updatePrivacy(rating) + let messageStringPlainPGP = `-----BEGIN PGP MESSAGE----- + +hQEMA3nTjPcdpPimAQgA2yAWJ7f3UdRvL/D8PI6KgAExPnQ4g8bEOUpwOgmo435x +rEKlkP/QMGUWZfliDlhTAugaxqAxzVE4+rfyp9OqQUSj9S5xToIj0/qMa3ae4wLF +WUxPksBVbb0r8nPQgGP9cpWa0+MWi3vUWeEvdcpcPCGsgmTKkxOKbqDAOD5GEKxX +xj7iodBCevzf+nFtrHoMU56qkdreY/Pw1BTCFUPAUB8cEfqIp58CAfwP+WJUM2LM +uMkZ4tq+F+bT5Q6oZUVqwdWeARlD6lu6LYFM/MQTBwHL9vVtpz35e7/yYa0O7lMB +ev9ccn2a2qPaCdQt3tGfKREluT4GBhljxR5Oe55SUdJHASOnYNeFd48wfToxkXkv +j1urYFxRZmq9atq0upqd2EnWlxq2OitrcG0PM4uuLKsw+vGjkElAqotLxdQqwXMJ +jkogthSisZ8= +=dTBg +-----END PGP MESSAGE-----`; + + let messageStringpEpEncrypted = `-----BEGIN PGP MESSAGE----- + +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 +=xc3m +-----END PGP MESSAGE-----`; + + let currentUri = getCurrentMessageURI(); + + if (currentUri !== null) { + + try { + messageString = readMailFromUri(currentUri); + } + catch (e) { + console.debug("Errors while reading message from uri", e); + } + + pep.decryptMail(messageString, currentHeaderData).then((message) => { + // replace encrypted mail with decrypted from pEpAdapter + updateSubject(message.shortmsg); + updateBody(message.longmsg); + + pep.getPrivacyColorFromRating(message.rating).then( + (rating) => updatePrivacy(rating) + ); + }); + } + +}; + +let readMailFromUri = (msgUri) => { + let msgWindow = Cc["@mozilla.org/messenger/msgwindow;1"].createInstance(); + msgWindow = msgWindow.QueryInterface(Ci.nsIMsgWindow); + + let msgStream = Cc["@mozilla.org/network/sync-stream-listener;1"].createInstance(); + msgStream = msgStream.QueryInterface(Ci.nsIInputStream); + + let messenger = Cc["@mozilla.org/messenger;1"].getService(Ci.nsIMessenger); + let msgService = messenger.messageServiceFromURI(msgUri); + + let scriptInputStream = Cc["@mozilla.org/scriptableinputstream;1"].createInstance(); + scriptInputStream = scriptInputStream.QueryInterface(Ci.nsIScriptableInputStream); + + scriptInputStream.init(msgStream); + + try { + msgService.streamMessage(msgUri, // uri of message to stream + msgStream, // a stream listener listening to the message + msgWindow, // a nsIMsgWindow for progress and status feedback + null, // a nsIUrlListener that is notified when url starts and stops + false, // it will create a stream converter from message rfc2822 to + null // Header added to the URI. e.g., header=filter ); - }); + } catch (ex) { + console.debug("Error while reading mail from server", ex); + } + + // Get only the PGP message + let keyFound = false; + let content = ""; + let str = ""; + + const PGP_MESSAGE_HEADER = "-----BEGIN PGP MESSAGE-----"; + const PGP_MESSAGE_FOOTER = "-----END PGP MESSAGE-----"; + const INPUTSTREAM_READING_SIZE = 512; + + while (scriptInputStream.available()) { + str = scriptInputStream.read(INPUTSTREAM_READING_SIZE); + let pgpStartIndex = str.indexOf(PGP_MESSAGE_HEADER); + let pgpEndIndex = str.indexOf(PGP_MESSAGE_FOOTER); + if (pgpStartIndex >= 0) { + keyFound = true; + str = str.substring(pgpStartIndex); + } else if (pgpEndIndex >= 0) { + content += str.substring(0, pgpEndIndex + PGP_MESSAGE_FOOTER.length); + break; + } + + if (keyFound) { + content += str; + } + } + + return content; }; +let getCurrentMessageURI = () => { + if (gFolderDisplay.selectedMessages.length === 1) { + return gFolderDisplay.selectedMessageUris[0]; + } + return null; +}; window.addEventListener("load", onLoadListener, false);