Built motion from commit (unavailable).|2.6.0
[motion2.git] / server / services / email / lib / email.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0x248d=['prototype','emit','name','key','active','Imap','status','messageStatus','total','isNil','stringify','mailAccount:update','refresh','hasOwnProperty','handleImapBox','handleImapEmail','bind','end','error','connected','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','lastName','from','then','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','handleImapEnd','sendMail','smtp','Smtp','lastSync','verify','verified','exports','moment','bluebird','md5','ioredis','../../../config/environment','email','defaults','redis','localhost','socket.io-emitter','./smtp','info','start\x20email\x20channel','mailAccounts','imapAccounts'];(function(_0x49d19d,_0x245cf5){var _0x4ebef1=function(_0xf0a4e6){while(--_0xf0a4e6){_0x49d19d['push'](_0x49d19d['shift']());}};_0x4ebef1(++_0x245cf5);}(_0x248d,0xf0));var _0xd248=function(_0x827fcf,_0x2c7735){_0x827fcf=_0x827fcf-0x0;var _0x353cbc=_0x248d[_0x827fcf];return _0x353cbc;};'use strict';var _=require('lodash');var moment=require(_0xd248('0x0'));var BPromise=require(_0xd248('0x1'));var md5=require(_0xd248('0x2'));var Redis=require(_0xd248('0x3'));var config=require(_0xd248('0x4'));var logger=require('../../../config/logger')(_0xd248('0x5'));config['redis']=_[_0xd248('0x6')](config[_0xd248('0x7')],{'host':_0xd248('0x8'),'port':0x18eb});var io=require(_0xd248('0x9'))(new Redis(config[_0xd248('0x7')]));var EmailImap=require('./imap');var EmailSmtp=require(_0xd248('0xa'));var mailAccount=require('../rpc/mailAccount');var md5Accounts={};function EmailChannel(_0x38d105){logger[_0xd248('0xb')](_0xd248('0xc'));this[_0xd248('0xd')]=_0x38d105['mailAccounts'];this[_0xd248('0xe')]={};this['smtp']=new EmailSmtp();}EmailChannel[_0xd248('0xf')][_0xd248('0x10')]=function(_0x708180){var _0x416961=this[_0xd248('0xd')][_0x708180];var _0x175590={'id':_0x416961['id'],'name':_0x416961[_0xd248('0x11')],'key':_0x416961[_0xd248('0x12')],'active':_0x416961[_0xd248('0x13')],'Imap':{'status':_0x416961[_0xd248('0x14')][_0xd248('0x15')],'messageStatus':_0x416961['Imap'][_0xd248('0x16')],'total':_0x416961[_0xd248('0x14')][_0xd248('0x17')]}};if(_[_0xd248('0x18')](md5Accounts[_0x708180])){md5Accounts[_0x708180]={};}var _0x3e9eab=md5(JSON[_0xd248('0x19')](_0x175590));if(md5Accounts[_0x708180][_0xd248('0x2')]!==_0x3e9eab){md5Accounts[_0x708180][_0xd248('0x2')]=_0x3e9eab;io[_0xd248('0x10')](_0xd248('0x1a'),_0x175590);}};EmailChannel[_0xd248('0xf')][_0xd248('0x1b')]=function(_0x4689e5){for(var _0x338ccc in _0x4689e5){if(_0x4689e5[_0xd248('0x1c')](_0x338ccc)){if(_0x4689e5[_0x338ccc][_0xd248('0x14')]&&_0x4689e5[_0x338ccc][_0xd248('0x13')]){var _0x293b10=_0x4689e5[_0x338ccc]['Imap'];if(!this[_0xd248('0xe')]['hasOwnProperty'](_0x293b10['id'])){this[_0xd248('0xe')][_0x293b10['id']]=new EmailImap(_0x293b10,_0x4689e5[_0x338ccc]['email']);this['imapAccounts'][_0x293b10['id']]['on']('box',this[_0xd248('0x1d')]['bind'](this,_0x338ccc));this[_0xd248('0xe')][_0x293b10['id']]['on'](_0xd248('0x5'),this[_0xd248('0x1e')][_0xd248('0x1f')](this,_0x338ccc));this[_0xd248('0xe')][_0x293b10['id']]['on'](_0xd248('0x20'),this['handleImapEnd'][_0xd248('0x1f')](this,_0x338ccc));this[_0xd248('0xe')][_0x293b10['id']]['on'](_0xd248('0x21'),this['handleImapError'][_0xd248('0x1f')](this,_0x338ccc));}}else{if(_['isNil'](this[_0xd248('0xd')][_0x338ccc]['Imap'])){this[_0xd248('0xd')][_0x338ccc][_0xd248('0x14')]={};}this[_0xd248('0xd')][_0x338ccc][_0xd248('0x14')][_0xd248('0x15')]='disabled';this[_0xd248('0xd')][_0x338ccc]['Imap'][_0xd248('0x16')]='';this['emit'](_0x338ccc);}}}};EmailChannel['prototype'][_0xd248('0x1d')]=function(_0xe79247,_0x5b98e1){if(this['mailAccounts'][_0xe79247]){this[_0xd248('0xd')][_0xe79247][_0xd248('0x14')]['status']=_0xd248('0x22');this[_0xd248('0xd')][_0xe79247][_0xd248('0x14')][_0xd248('0x16')]=_0x5b98e1[_0xd248('0x11')];if(_0x5b98e1['messages']){this['mailAccounts'][_0xe79247][_0xd248('0x14')]['total']=_0x5b98e1[_0xd248('0x23')][_0xd248('0x17')];}return this[_0xd248('0x10')](_0xe79247);}};EmailChannel['prototype'][_0xd248('0x1e')]=function(_0x19baa7,_0xdeb04b){logger[_0xd248('0xb')](_0xd248('0x24'),_0xdeb04b[_0xd248('0x25')],_0xdeb04b[_0xd248('0x26')],_0xdeb04b[_0xd248('0x27')],_0x19baa7);if(this[_0xd248('0xd')][_0x19baa7]){return mailAccount['notify'](_0x19baa7,_0xdeb04b)[_0xd248('0x28')](function(_0x4ee74d){if(_0x4ee74d){logger[_0xd248('0xb')]('Mail\x20accepted\x20from\x20routing');}})[_0xd248('0x29')](function(_0x35b8b0){logger[_0xd248('0x21')](_0xd248('0x2a'),JSON[_0xd248('0x19')](_0x35b8b0));});}};EmailChannel[_0xd248('0xf')][_0xd248('0x2b')]=function(_0x5a9560){if(this[_0xd248('0xd')][_0x5a9560]&&this[_0xd248('0xd')][_0x5a9560][_0xd248('0x14')]){if(this[_0xd248('0xe')][this[_0xd248('0xd')][_0x5a9560]['Imap']['id']]){delete this[_0xd248('0xe')][this[_0xd248('0xd')][_0x5a9560]['Imap']['id']];}this[_0xd248('0xd')][_0x5a9560]['Imap']['lastSync']=moment();this[_0xd248('0x10')](_0x5a9560);}};EmailChannel[_0xd248('0xf')]['handleImapError']=function(_0x26b7ff,_0x789a49){if(this[_0xd248('0xd')][_0x26b7ff]){this[_0xd248('0xd')][_0x26b7ff][_0xd248('0x14')][_0xd248('0x15')]=_0xd248('0x21');this[_0xd248('0xd')][_0x26b7ff]['Imap'][_0xd248('0x16')]=_0x789a49;return this[_0xd248('0x10')](_0x26b7ff);}};EmailChannel[_0xd248('0xf')][_0xd248('0x2c')]=function(_0x2e0306,_0x267c0f){return this[_0xd248('0x2d')]['send'](_0x2e0306,_0x267c0f);};EmailChannel[_0xd248('0xf')]['verifySmtp']=function(_0x1012a4){var _0x2ac498=this;if(this[_0xd248('0xd')][_0x1012a4['id']]){if(_['isNil'](this['mailAccounts'][_0x1012a4['id']][_0xd248('0x2e')])){this[_0xd248('0xd')][_0x1012a4['id']][_0xd248('0x2e')]={};}this[_0xd248('0xd')][_0x1012a4['id']][_0xd248('0x2e')][_0xd248('0x2f')]=moment();return new BPromise(function(_0x4a705d,_0x468f83){return _0x2ac498[_0xd248('0x2d')][_0xd248('0x30')](_0x1012a4)[_0xd248('0x28')](function(_0x40b922){_0x2ac498[_0xd248('0xd')][_0x1012a4['id']][_0xd248('0x2e')]['status']=_0xd248('0x31');_0x2ac498[_0xd248('0xd')][_0x1012a4['id']][_0xd248('0x2e')]['messageStatus']='';_0x2ac498['emit'](_0x1012a4['id']);_0x4a705d(_0x40b922);})[_0xd248('0x29')](function(_0x89f560){_0x2ac498[_0xd248('0xd')][_0x1012a4['id']][_0xd248('0x2e')][_0xd248('0x15')]='error';_0x2ac498[_0xd248('0xd')][_0x1012a4['id']]['Smtp'][_0xd248('0x16')]=_0x89f560;_0x2ac498[_0xd248('0x10')](_0x1012a4['id']);_0x468f83(_0x89f560);});});}return this[_0xd248('0x2d')][_0xd248('0x30')](_0x1012a4);};module[_0xd248('0x32')]=EmailChannel;