|
|
@ -15,6 +15,9 @@ |
|
|
|
*/ |
|
|
|
|
|
|
|
var { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm"); |
|
|
|
var { MailServices } = ChromeUtils.import("resource:///modules/MailServices.jsm"); |
|
|
|
var { fixIterator } = ChromeUtils.import("resource:///modules/iteratorUtils.jsm"); |
|
|
|
|
|
|
|
const EXPORTED_SYMBOLS = ["pEp"]; |
|
|
|
|
|
|
|
const DIR_INCOMING = 0; |
|
|
@ -57,6 +60,21 @@ class pEp { |
|
|
|
// pEp.instance = null;
|
|
|
|
} |
|
|
|
|
|
|
|
check_myself(id) { |
|
|
|
this.log.debug("check myself() for", id && id.address); |
|
|
|
if (!(id && id.address)) return; |
|
|
|
|
|
|
|
// Copied from `isOwnIdentity()`.
|
|
|
|
const emailToLower = id.address.toLowerCase(); |
|
|
|
for (let identity of fixIterator(MailServices.accounts.allIdentities, Ci.nsIMsgIdentity)) { |
|
|
|
if (identity.email.toLowerCase() == emailToLower) return; |
|
|
|
} |
|
|
|
if (this.log.level >= 3) { |
|
|
|
let win = Services.wm.getMostRecentWindow("mail:3pane"); |
|
|
|
win.alert(`Myself for ${id.address} which is NOT an own identity`); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
async serverVersion() { |
|
|
|
this.log.info("pEp: serverVersion()"); |
|
|
|
return this.adapter.serverVersion(); |
|
|
@ -66,6 +84,7 @@ class pEp { |
|
|
|
* Function called on send mail |
|
|
|
*/ |
|
|
|
async cache_encrypt_message(message, encodingFormat = ENC_FORMAT_PEP, isDraftOrTemplate = false) { |
|
|
|
this.check_myself(message.from); |
|
|
|
message.dir = DIR_OUTGOING; |
|
|
|
message.enc_format = encodingFormat; |
|
|
|
let encryptedMessage = await this.adapter.cache_encrypt_message(message, isDraftOrTemplate); |
|
|
@ -76,6 +95,7 @@ class pEp { |
|
|
|
* Function called on open mail |
|
|
|
*/ |
|
|
|
async cache_decrypt_message(message) { |
|
|
|
this.check_myself(message.recv_by); |
|
|
|
message.dir = DIR_INCOMING; |
|
|
|
let decryptedMessage = await this.adapter.cache_decrypt_message(message); |
|
|
|
return pEp.Message.fromJSON(decryptedMessage); |
|
|
@ -112,6 +132,7 @@ class pEp { |
|
|
|
} |
|
|
|
|
|
|
|
async myself(identity) { |
|
|
|
this.check_myself(identity); |
|
|
|
this.log.info("pEp: myself()"); |
|
|
|
// Workaround for ENGINE-753.
|
|
|
|
// Code was: return this.adapter.myself(identity);
|
|
|
|