Built motion from commit c671bd6.|0.0.103
[motion.git] / server / config / imap / imap.js
index 4a8d77d..435bbad 100644 (file)
@@ -1,299 +1 @@
-'use strict';
-
-var _ = require('lodash');
-var path = require('path');
-var config = require('../environment');
-var ImapListener = require("mail-listener2");
-var MailServerIn = require('../../models').MailServerIn;
-var MailMessage = require('../../models').MailMessage;
-var MailRoom = require('../../models').MailRoom;
-var Contact = require('../../models').Contact;
-var ContactEmail = require('../../models').ContactEmail;
-
-function Imap(doc) {
-  console.log('New Imap Instance...');
-
-  this.imap = new ImapListener({
-    username: doc.username,
-    password: doc.password,
-    host: doc.host,
-    port: doc.port,
-    tls: doc.ssl,
-    tlsOptions: {
-      rejectUnauthorized: false
-    },
-    mailbox: doc.mailbox, // mailbox to monitor
-    searchFilter: [doc.filter], // the search filter being used after an IDLE notification has been retrieved
-    markSeen: true, // all fetched email willbe marked as seen and not fetched next time
-    fetchUnreadOnStart: true, // use it only if you want to get all unread email on lib start. Default is `false`,,
-    mailParserOptions: {
-      streamAttachments: true
-    }, // options to be passed to mailParser lib.
-    attachments: true, // download attachments as they are encountered to the project directory
-    attachmentOptions: {
-      directory: path.join(config.root, 'server', 'files', 'attachments', '/')
-    } // specify a download directory for attachments
-  });
-
-  this.imap.on("server:connected", function() {
-    console.log("[MAIL - Account #" + doc.MailAccountId + "] IMAP CONNECTED");
-    // SETUP CONNECTED STATUS
-    MailServerIn
-      .findById(doc.id)
-      .then(function(msi) {
-        msi
-          .updateAttributes({
-            state: 'CONNECTED'
-          });
-      })
-      .catch(function(err) {
-        console.error(err);
-      });
-  });
-
-  this.imap.on("server:disconnected", function() {
-    console.log("[MAIL - Account #" + doc.MailAccountId + "] IMAP DISCONNECTED");
-    MailServerIn
-      .findById(doc.id)
-      .then(function(msi) {
-        msi
-          .updateAttributes({
-            state: 'DISCONNECTED'
-          });
-      })
-      .catch(function(err) {
-        console.error(err);
-      });
-  });
-
-  this.imap.on("error", function(err) {
-    console.log("[MAIL - Account #" + doc.MailAccountId + "] IMAP ERROR", err);
-    MailServerIn
-      .findById(doc.id)
-      .then(function(msi) {
-        msi
-          .updateAttributes({
-            state: 'ERROR',
-            source: err.source
-          });
-      })
-      .catch(function(err) {
-        console.error(err);
-      });
-  });
-
-  this.imap.on("mail", function(msg, seqno, attributes) {
-    var mMessage;
-    var mRoom;
-
-    function createMailMessage(mailRoom) {
-      mRoom = mailRoom;
-
-      return MailMessage
-        .create({
-          messageId: msg.messageId,
-          subject: msg.subject,
-          from: _.pluck(msg.from, 'address').join(';'),
-          to: msg.to ? _.pluck(msg.to, 'address').join(';') : null,
-          cc: msg.cc ? _.pluck(msg.cc, 'address').join(';') : null,
-          bcc: msg.cc ? _.pluck(msg.bcc, 'address').join(';') : null,
-          status: 'RECEIVED',
-          html: msg.html || null,
-          text: msg.text || null,
-          MailAttachments: msg.attachments || [],
-          MailRoomId: mailRoom.id,
-        });
-    }
-
-    function createFrom(mailMessage) {
-      mMessage = mailMessage;
-
-      return Contact
-        .findOrCreate({
-          where: {},
-          include: [{
-            model: ContactEmail,
-            as: 'Emails',
-            where: {
-              email: mMessage.from
-            }
-          }],
-          defaults: {
-            Emails: [{
-              email: mMessage.from
-            }]
-          }
-        });
-    }
-
-    function setFrom(contact, created) {
-      // CONTACT -> TO
-      var promises = [];
-      var tos = msg.to ? _.pluck(msg.to, 'address') : [];
-
-      mMessage
-        .setFrom(contact);
-
-      tos.forEach(function(email) {
-        promises.push(Contact
-          .findOrCreate({
-            where: {},
-            include: [{
-              model: ContactEmail,
-              as: 'Emails',
-              where: {
-                email: email
-              }
-            }],
-            defaults: {
-              Emails: [{
-                email: email
-              }]
-            }
-          }));
-      });
-
-      return promises;
-    }
-
-    function setTo(contacts) {
-      // CONTACTS -> CC
-      var tos = _.map(contacts, function(elm) {
-        return elm[0];
-      });
-
-      mMessage
-        .setTo(tos);
-
-      var promises = [];
-      var ccs = msg.cc ? _.pluck(msg.cc, 'address') : [];
-
-      ccs.forEach(function(email) {
-        promises.push(Contact
-          .findOrCreate({
-            where: {},
-            include: [{
-              model: ContactEmail,
-              as: 'Emails',
-              where: {
-                email: email
-              }
-            }],
-            defaults: {
-              Emails: [{
-                email: email
-              }]
-            }
-          }));
-      });
-
-      return promises;
-    }
-
-    function setCc(contacts) {
-      // CONTACTS -> BCC
-      var ccs = _.map(contacts, function(elm) {
-        return elm[0];
-      });
-
-      mMessage
-        .setCc(ccs);
-
-      var promises = [];
-      var bccs = msg.bcc ? _.pluck(msg.bcc, 'address') : [];
-
-      bccs.forEach(function(email) {
-        promises.push(Contact
-          .findOrCreate({
-            where: {},
-            include: [{
-              model: ContactEmail,
-              as: 'Emails',
-              where: {
-                email: email
-              }
-            }],
-            defaults: {
-              Emails: [{
-                email: email
-              }]
-            }
-          }));
-      });
-
-      return promises;
-    }
-
-    function setBcc(contacts) {
-      // CONTACTS -> BCC
-      var bccs = _.map(contacts, function(elm) {
-        return elm[0];
-      });
-
-      mMessage
-        .setBcc(bccs);
-    }
-
-    if (msg.inReplyTo) {
-      console.log('msg', msg);
-      return MailMessage
-        .findOne({
-          where: {
-            messageId: msg.inReplyTo[0]
-          },
-          include: [{
-            all: true
-          }]
-        })
-        .then(function(mailMessageParent) {
-          return mailMessageParent
-            .getMailRoom();
-        })
-        .then(createMailMessage)
-        .then(createFrom)
-        .spread(setFrom)
-        .all()
-        .then(setTo)
-        .all()
-        .then(setCc)
-        .all()
-        .then(setBcc)
-        .catch(function(err) {
-          console.error('err', err);
-        });
-
-    } else {
-      return MailRoom
-        .create({
-          roomId: msg.messageId,
-          subject: msg.subject,
-          from: _.pluck(msg.from, 'address').join(';'),
-          MailAccountId: doc.MailAccountId
-        })
-        .then(createMailMessage)
-        .then(createFrom)
-        .spread(setFrom)
-        .all()
-        .then(setTo)
-        .all()
-        .then(setCc)
-        .all()
-        .then(setBcc)
-        .catch(function(err) {
-          console.error('err', err);
-        });
-    }
-  });
-
-  this.imap.on("attachment", function(attachment) {});
-}
-
-Imap.prototype.start = function() {
-  this.imap.start();
-};
-
-Imap.prototype.stop = function() {
-  this.imap.stop();
-};
-
-module.exports = Imap;
+var _0x4fd0=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x75\x74\x69\x6C","\x70\x61\x74\x68","\x6C\x6F\x64\x61\x73\x68","\x62\x6C\x75\x65\x62\x69\x72\x64","\x6D\x61\x69\x6C\x2D\x6C\x69\x73\x74\x65\x6E\x65\x72\x32","\x77\x72\x69\x74\x65\x46\x69\x6C\x65","\x66\x73","\x70\x72\x6F\x6D\x69\x73\x69\x66\x79","\x2E\x2E\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x49\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x4D\x61\x69\x6C\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x65\x72\x72\x6F\x72","\x6F\x6E","\x63\x6C\x6F\x73\x65","\x49\x4D\x41\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x45\x58\x49\x54\x45\x44\x20\x57\x49\x54\x48\x20\x43\x4F\x44\x45\x20\x25\x73\x2C\x20\x50\x52\x4F\x43\x45\x53\x53\x20\x49\x44\x3A\x20\x25\x73\x20","\x61\x72\x67\x76","\x70\x69\x64","\x66\x6F\x72\x6D\x61\x74","\x6C\x6F\x67","\x49\x4D\x41\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x53\x54\x41\x52\x54\x49\x4E\x47\x2C\x20\x50\x52\x4F\x43\x45\x53\x53\x20\x49\x44\x3A\x20\x25\x73\x20","\x73\x74\x61\x74\x65","\x43\x4F\x4E\x4E\x45\x43\x54\x49\x4E\x47","\x73\x65\x6E\x64","\x6D\x61\x69\x6C","\x49\x4D\x41\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x4E\x45\x57\x20\x4D\x53\x47\x20\x46\x52\x4F\x4D\x20\x25\x73\x20","\x3B","\x6A\x6F\x69\x6E","\x66\x72\x6F\x6D","\x61\x64\x64\x72\x65\x73\x73","\x6D\x61\x70","\x74\x79\x70\x65","\x6D\x73\x67","\x6D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x49\x6E\x49\x64","\x6D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x49\x4D\x41\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x45\x52\x52\x52\x4F\x52\x2C\x20\x50\x52\x4F\x43\x45\x53\x53\x20\x49\x44\x3A\x20\x25\x73\x20","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x45\x52\x52\x4F\x52","\x73\x74\x72\x69\x6E\x67\x69\x66\x79","\x73\x65\x72\x76\x65\x72\x3A\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74\x65\x64","\x49\x4D\x41\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x44\x49\x53\x43\x4F\x4E\x4E\x45\x43\x54\x45\x44\x2C\x20\x50\x52\x4F\x43\x45\x53\x53\x20\x49\x44\x3A\x20\x25\x73\x20","\x73\x74\x6F\x70","\x44\x49\x53\x43\x4F\x4E\x4E\x45\x43\x54\x45\x44","\x73\x65\x72\x76\x65\x72\x3A\x63\x6F\x6E\x6E\x65\x63\x74\x65\x64","\x49\x4D\x41\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x43\x4F\x4E\x4E\x45\x43\x54\x45\x44\x2C\x20\x50\x52\x4F\x43\x45\x53\x53\x20\x49\x44\x3A\x20\x25\x73\x20","\x43\x4F\x4E\x4E\x45\x43\x54\x45\x44","\x70\x61\x73\x73\x77\x6F\x72\x64","\x68\x6F\x73\x74","\x70\x6F\x72\x74","\x73\x73\x6C","\x6D\x61\x69\x6C\x62\x6F\x78","\x66\x69\x6C\x74\x65\x72","\x63\x6F\x6E\x6E\x54\x69\x6D\x65\x6F\x75\x74","\x61\x75\x74\x68\x54\x69\x6D\x65\x6F\x75\x74","\x6B\x65\x65\x70\x61\x6C\x69\x76\x65","\x69\x64","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x73\x74\x61\x72\x74","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x42\x79\x49\x64"];_0x4fd0[0];var util=require(_0x4fd0[1]);var path=require(_0x4fd0[2]);var _=require(_0x4fd0[3]);var Promise=require(_0x4fd0[4]);var ImapListener=require(_0x4fd0[5]);var writeFile=Promise[_0x4fd0[8]](require(_0x4fd0[7])[_0x4fd0[6]]);var config=require(_0x4fd0[9]);var Server=require(_0x4fd0[11])[_0x4fd0[10]];var Room=require(_0x4fd0[11])[_0x4fd0[12]];var Message=require(_0x4fd0[11])[_0x4fd0[13]];var Account=require(_0x4fd0[11])[_0x4fd0[14]];var Attachment=require(_0x4fd0[11])[_0x4fd0[15]];var imap;var timeout;process[_0x4fd0[17]](_0x4fd0[18],function(_0x24a5x10){console[_0x4fd0[23]](util[_0x4fd0[22]](_0x4fd0[19],process[_0x4fd0[20]][3],_0x24a5x10,process[_0x4fd0[21]]))})[_0x4fd0[17]](_0x4fd0[16],function(_0x24a5xf){console[_0x4fd0[16]](_0x24a5xf)});console[_0x4fd0[23]](util[_0x4fd0[22]](_0x4fd0[24],process[_0x4fd0[20]][3],process[_0x4fd0[21]]));process[_0x4fd0[27]]({type:_0x4fd0[25],state:_0x4fd0[26]});function onSave(_0x24a5x12){imap= new ImapListener({username:_0x24a5x12[_0x4fd0[40]],password:_0x24a5x12[_0x4fd0[50]],host:_0x24a5x12[_0x4fd0[51]],port:_0x24a5x12[_0x4fd0[52]],tls:_0x24a5x12[_0x4fd0[53]],tlsOptions:{rejectUnauthorized:false},mailbox:_0x24a5x12[_0x4fd0[54]],searchFilter:[_0x24a5x12[_0x4fd0[55]]],markSeen:true,fetchUnreadOnStart:true,connTimeout:_0x24a5x12[_0x4fd0[56]],authTimeout:_0x24a5x12[_0x4fd0[57]],keepalive:_0x24a5x12[_0x4fd0[58]]})[_0x4fd0[17]](_0x4fd0[47],function(){console[_0x4fd0[23]](util[_0x4fd0[22]](_0x4fd0[48],_0x24a5x12[_0x4fd0[40]],process[_0x4fd0[21]]));process[_0x4fd0[27]]({type:_0x4fd0[25],state:_0x4fd0[49]})})[_0x4fd0[17]](_0x4fd0[43],function(){console[_0x4fd0[23]](util[_0x4fd0[22]](_0x4fd0[44],_0x24a5x12[_0x4fd0[40]],process[_0x4fd0[21]]));imap[_0x4fd0[45]]();imap=null;process[_0x4fd0[27]]({type:_0x4fd0[25],state:_0x4fd0[46]})})[_0x4fd0[17]](_0x4fd0[16],function(_0x24a5xf){console[_0x4fd0[23]](util[_0x4fd0[22]](_0x4fd0[39],_0x24a5x12[_0x4fd0[40]],process[_0x4fd0[21]]));process[_0x4fd0[27]]({type:_0x4fd0[25],state:_0x4fd0[41],source:JSON[_0x4fd0[42]](_0x24a5xf)})})[_0x4fd0[17]](_0x4fd0[28],function(_0x24a5x13,_0x24a5x14,_0x24a5x15){console[_0x4fd0[23]](util[_0x4fd0[22]](_0x4fd0[29],process[_0x4fd0[20]][3],_[_0x4fd0[34]](_0x24a5x13[_0x4fd0[32]],_0x4fd0[33])[_0x4fd0[31]](_0x4fd0[30])));_0x24a5x13[_0x4fd0[35]]=_0x4fd0[36];_0x24a5x13[_0x4fd0[37]]=imap[_0x4fd0[37]];_0x24a5x13[_0x4fd0[38]]=imap[_0x4fd0[38]];process[_0x4fd0[27]](_0x24a5x13)});imap[_0x4fd0[37]]=_0x24a5x12[_0x4fd0[59]];imap[_0x4fd0[38]]=_0x24a5x12[_0x4fd0[60]];imap[_0x4fd0[61]]()}Server[_0x4fd0[64]](process[_0x4fd0[20]][2])[_0x4fd0[63]](function(_0x24a5x12){onSave(_0x24a5x12)})[_0x4fd0[62]](function(_0x24a5xf){console[_0x4fd0[16]](_0x24a5xf)})
\ No newline at end of file