bb3636411629d028f8d9efdfa744ff3970635352
[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 _0xcbbd=['moment','bluebird','md5','../../../config/environment','../../../config/logger','email','redis','defaults','localhost','socket.io-emitter','../rpc/mailAccount','start\x20email\x20channel','mailAccounts','imapAccounts','prototype','key','active','Imap','status','messageStatus','total','isNil','stringify','emit','mailAccount:update','hasOwnProperty','provider','custom','service','box','handleImapBox','handleImapEmail','bind','end','handleImapEnd','handleImapError','disabled','connected','name','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','lastName','notify','then','info','Mail\x20accepted\x20from\x20routing','catch','error','Mail\x20not\x20accepted\x20from\x20routing\x20%s','lastSync','sendMail','smtp','send','verifySmtp','Smtp','verify','verified','exports','lodash'];(function(_0x4be800,_0x170c92){var _0x27fcba=function(_0x3c4e95){while(--_0x3c4e95){_0x4be800['push'](_0x4be800['shift']());}};_0x27fcba(++_0x170c92);}(_0xcbbd,0xef));var _0xdcbb=function(_0x50cfc3,_0x526cc6){_0x50cfc3=_0x50cfc3-0x0;var _0x5c11ef=_0xcbbd[_0x50cfc3];return _0x5c11ef;};'use strict';var _=require(_0xdcbb('0x0'));var moment=require(_0xdcbb('0x1'));var BPromise=require(_0xdcbb('0x2'));var md5=require(_0xdcbb('0x3'));var Redis=require('ioredis');var config=require(_0xdcbb('0x4'));var logger=require(_0xdcbb('0x5'))(_0xdcbb('0x6'));config[_0xdcbb('0x7')]=_[_0xdcbb('0x8')](config[_0xdcbb('0x7')],{'host':_0xdcbb('0x9'),'port':0x18eb});var io=require(_0xdcbb('0xa'))(new Redis(config[_0xdcbb('0x7')]));var EmailImap=require('./imap');var EmailSmtp=require('./smtp');var mailAccount=require(_0xdcbb('0xb'));var md5Accounts={};function EmailChannel(_0x3fc452){logger['info'](_0xdcbb('0xc'));this['mailAccounts']=_0x3fc452[_0xdcbb('0xd')];this[_0xdcbb('0xe')]={};this['smtp']=new EmailSmtp();}EmailChannel[_0xdcbb('0xf')]['emit']=function(_0x3a57ca){var _0x3bf0a3=this[_0xdcbb('0xd')][_0x3a57ca];var _0x375fce={'id':_0x3bf0a3['id'],'name':_0x3bf0a3['name'],'key':_0x3bf0a3[_0xdcbb('0x10')],'active':_0x3bf0a3[_0xdcbb('0x11')],'Imap':{'status':_0x3bf0a3[_0xdcbb('0x12')][_0xdcbb('0x13')],'messageStatus':_0x3bf0a3[_0xdcbb('0x12')][_0xdcbb('0x14')],'total':_0x3bf0a3[_0xdcbb('0x12')][_0xdcbb('0x15')]}};if(_[_0xdcbb('0x16')](md5Accounts[_0x3a57ca])){md5Accounts[_0x3a57ca]={};}var _0x1517ea=md5(JSON[_0xdcbb('0x17')](_0x375fce));if(md5Accounts[_0x3a57ca][_0xdcbb('0x3')]!==_0x1517ea){md5Accounts[_0x3a57ca]['md5']=_0x1517ea;io[_0xdcbb('0x18')](_0xdcbb('0x19'),_0x375fce);}};EmailChannel[_0xdcbb('0xf')]['refresh']=function(_0x5b9325){for(var _0x3c92ba in _0x5b9325){if(_0x5b9325[_0xdcbb('0x1a')](_0x3c92ba)){if(_0x5b9325[_0x3c92ba][_0xdcbb('0x12')]&&_0x5b9325[_0x3c92ba]['active']){var _0xd2a7a1=_0x5b9325[_0x3c92ba][_0xdcbb('0x12')];if(!_0xd2a7a1['service']&&_0x5b9325[_0x3c92ba][_0xdcbb('0x1b')]!==_0xdcbb('0x1c'))_0xd2a7a1[_0xdcbb('0x1d')]=_0x5b9325[_0x3c92ba]['provider'];if(!this[_0xdcbb('0xe')][_0xdcbb('0x1a')](_0xd2a7a1['id'])){this[_0xdcbb('0xe')][_0xd2a7a1['id']]=new EmailImap(_0xd2a7a1,_0x5b9325[_0x3c92ba][_0xdcbb('0x6')]);this[_0xdcbb('0xe')][_0xd2a7a1['id']]['on'](_0xdcbb('0x1e'),this[_0xdcbb('0x1f')]['bind'](this,_0x3c92ba));this['imapAccounts'][_0xd2a7a1['id']]['on']('email',this[_0xdcbb('0x20')][_0xdcbb('0x21')](this,_0x3c92ba));this[_0xdcbb('0xe')][_0xd2a7a1['id']]['on'](_0xdcbb('0x22'),this[_0xdcbb('0x23')][_0xdcbb('0x21')](this,_0x3c92ba));this[_0xdcbb('0xe')][_0xd2a7a1['id']]['on']('error',this[_0xdcbb('0x24')][_0xdcbb('0x21')](this,_0x3c92ba));}}else{if(_[_0xdcbb('0x16')](this[_0xdcbb('0xd')][_0x3c92ba][_0xdcbb('0x12')])){this['mailAccounts'][_0x3c92ba][_0xdcbb('0x12')]={};}this[_0xdcbb('0xd')][_0x3c92ba][_0xdcbb('0x12')][_0xdcbb('0x13')]=_0xdcbb('0x25');this[_0xdcbb('0xd')][_0x3c92ba]['Imap'][_0xdcbb('0x14')]='';this[_0xdcbb('0x18')](_0x3c92ba);}}}};EmailChannel[_0xdcbb('0xf')][_0xdcbb('0x1f')]=function(_0x1c2a8e,_0x195e33){if(this['mailAccounts'][_0x1c2a8e]){this[_0xdcbb('0xd')][_0x1c2a8e][_0xdcbb('0x12')][_0xdcbb('0x13')]=_0xdcbb('0x26');this[_0xdcbb('0xd')][_0x1c2a8e][_0xdcbb('0x12')][_0xdcbb('0x14')]=_0x195e33[_0xdcbb('0x27')];if(_0x195e33['messages']){this['mailAccounts'][_0x1c2a8e]['Imap']['total']=_0x195e33[_0xdcbb('0x28')][_0xdcbb('0x15')];}return this['emit'](_0x1c2a8e);}};EmailChannel[_0xdcbb('0xf')]['handleImapEmail']=function(_0x47ef2c,_0x144537){logger['info'](_0xdcbb('0x29'),_0x144537[_0xdcbb('0x2a')],_0x144537[_0xdcbb('0x2b')],_0x144537['from'],_0x47ef2c);if(this[_0xdcbb('0xd')][_0x47ef2c]){return mailAccount[_0xdcbb('0x2c')](_0x47ef2c,_0x144537)[_0xdcbb('0x2d')](function(_0x155e2){if(_0x155e2){logger[_0xdcbb('0x2e')](_0xdcbb('0x2f'));}})[_0xdcbb('0x30')](function(_0x306573){logger[_0xdcbb('0x31')](_0xdcbb('0x32'),JSON[_0xdcbb('0x17')](_0x306573));});}};EmailChannel[_0xdcbb('0xf')][_0xdcbb('0x23')]=function(_0x19f11d){if(this[_0xdcbb('0xd')][_0x19f11d]&&this[_0xdcbb('0xd')][_0x19f11d][_0xdcbb('0x12')]){if(this['imapAccounts'][this[_0xdcbb('0xd')][_0x19f11d][_0xdcbb('0x12')]['id']]){delete this[_0xdcbb('0xe')][this['mailAccounts'][_0x19f11d]['Imap']['id']];}this[_0xdcbb('0xd')][_0x19f11d]['Imap'][_0xdcbb('0x33')]=moment();this[_0xdcbb('0x18')](_0x19f11d);}};EmailChannel[_0xdcbb('0xf')][_0xdcbb('0x24')]=function(_0x3753c0,_0x51669e){if(this[_0xdcbb('0xd')][_0x3753c0]){this[_0xdcbb('0xd')][_0x3753c0][_0xdcbb('0x12')][_0xdcbb('0x13')]=_0xdcbb('0x31');this['mailAccounts'][_0x3753c0][_0xdcbb('0x12')][_0xdcbb('0x14')]=_0x51669e;return this[_0xdcbb('0x18')](_0x3753c0);}};EmailChannel['prototype'][_0xdcbb('0x34')]=function(_0x20dd9e,_0x3901f0){return this[_0xdcbb('0x35')][_0xdcbb('0x36')](_0x20dd9e,_0x3901f0);};EmailChannel[_0xdcbb('0xf')][_0xdcbb('0x37')]=function(_0x264844){var _0x2a90c9=this;if(this[_0xdcbb('0xd')][_0x264844['id']]){if(_[_0xdcbb('0x16')](this['mailAccounts'][_0x264844['id']][_0xdcbb('0x38')])){this[_0xdcbb('0xd')][_0x264844['id']]['Smtp']={};}this[_0xdcbb('0xd')][_0x264844['id']]['Smtp'][_0xdcbb('0x33')]=moment();return new BPromise(function(_0x12d384,_0x59e393){return _0x2a90c9[_0xdcbb('0x35')][_0xdcbb('0x39')](_0x264844)[_0xdcbb('0x2d')](function(_0x382fa3){_0x2a90c9[_0xdcbb('0xd')][_0x264844['id']][_0xdcbb('0x38')][_0xdcbb('0x13')]=_0xdcbb('0x3a');_0x2a90c9[_0xdcbb('0xd')][_0x264844['id']][_0xdcbb('0x38')][_0xdcbb('0x14')]='';_0x2a90c9[_0xdcbb('0x18')](_0x264844['id']);_0x12d384(_0x382fa3);})[_0xdcbb('0x30')](function(_0x328a5b){_0x2a90c9[_0xdcbb('0xd')][_0x264844['id']][_0xdcbb('0x38')]['status']=_0xdcbb('0x31');_0x2a90c9[_0xdcbb('0xd')][_0x264844['id']]['Smtp']['messageStatus']=_0x328a5b;_0x2a90c9[_0xdcbb('0x18')](_0x264844['id']);_0x59e393(_0x328a5b);});});}return this[_0xdcbb('0x35')][_0xdcbb('0x39')](_0x264844);};module[_0xdcbb('0x3b')]=EmailChannel;