Built motion from commit ba71417a.|2.6.28
[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 _0xa0bd=['custom','service','provider','box','handleImapBox','bind','handleImapEnd','handleImapError','isNil','disabled','emit','messages','handleImapEmail','firstName','from','notify','Mail\x20accepted\x20from\x20routing','catch','error','Mail\x20not\x20accepted\x20from\x20routing\x20%s','lastSync','send','verifySmtp','Smtp','verify','then','verified','exports','lodash','moment','bluebird','md5','ioredis','../../../config/environment','../../../config/logger','email','redis','defaults','localhost','socket.io-emitter','./imap','./smtp','../rpc/mailAccount','info','start\x20email\x20channel','mailAccounts','imapAccounts','smtp','prototype','name','active','status','Imap','messageStatus','total','stringify','hasOwnProperty'];(function(_0x4eb030,_0x5d6ad9){var _0x196253=function(_0x5c4bd2){while(--_0x5c4bd2){_0x4eb030['push'](_0x4eb030['shift']());}};_0x196253(++_0x5d6ad9);}(_0xa0bd,0x139));var _0xda0b=function(_0x3ce613,_0x1de3d5){_0x3ce613=_0x3ce613-0x0;var _0x2828f8=_0xa0bd[_0x3ce613];return _0x2828f8;};'use strict';var _=require(_0xda0b('0x0'));var moment=require(_0xda0b('0x1'));var BPromise=require(_0xda0b('0x2'));var md5=require(_0xda0b('0x3'));var Redis=require(_0xda0b('0x4'));var config=require(_0xda0b('0x5'));var logger=require(_0xda0b('0x6'))(_0xda0b('0x7'));config[_0xda0b('0x8')]=_[_0xda0b('0x9')](config[_0xda0b('0x8')],{'host':_0xda0b('0xa'),'port':0x18eb});var io=require(_0xda0b('0xb'))(new Redis(config[_0xda0b('0x8')]));var EmailImap=require(_0xda0b('0xc'));var EmailSmtp=require(_0xda0b('0xd'));var mailAccount=require(_0xda0b('0xe'));var md5Accounts={};function EmailChannel(_0x1e707c){logger[_0xda0b('0xf')](_0xda0b('0x10'));this['mailAccounts']=_0x1e707c[_0xda0b('0x11')];this[_0xda0b('0x12')]={};this[_0xda0b('0x13')]=new EmailSmtp();}EmailChannel[_0xda0b('0x14')]['emit']=function(_0x24a3cc){var _0x4c8fbe=this['mailAccounts'][_0x24a3cc];var _0x526dc2={'id':_0x4c8fbe['id'],'name':_0x4c8fbe[_0xda0b('0x15')],'key':_0x4c8fbe['key'],'active':_0x4c8fbe[_0xda0b('0x16')],'Imap':{'status':_0x4c8fbe['Imap'][_0xda0b('0x17')],'messageStatus':_0x4c8fbe[_0xda0b('0x18')][_0xda0b('0x19')],'total':_0x4c8fbe[_0xda0b('0x18')][_0xda0b('0x1a')]}};if(_['isNil'](md5Accounts[_0x24a3cc])){md5Accounts[_0x24a3cc]={};}var _0x27337d=md5(JSON[_0xda0b('0x1b')](_0x526dc2));if(md5Accounts[_0x24a3cc][_0xda0b('0x3')]!==_0x27337d){md5Accounts[_0x24a3cc][_0xda0b('0x3')]=_0x27337d;io['emit']('mailAccount:update',_0x526dc2);}};EmailChannel[_0xda0b('0x14')]['refresh']=function(_0x3fb5da){for(var _0x1100ca in _0x3fb5da){if(_0x3fb5da[_0xda0b('0x1c')](_0x1100ca)){if(_0x3fb5da[_0x1100ca]['Imap']&&_0x3fb5da[_0x1100ca][_0xda0b('0x16')]){var _0x1d5084=_0x3fb5da[_0x1100ca]['Imap'];if(!_0x1d5084['service']&&_0x3fb5da[_0x1100ca]['provider']!==_0xda0b('0x1d'))_0x1d5084[_0xda0b('0x1e')]=_0x3fb5da[_0x1100ca][_0xda0b('0x1f')];if(!this[_0xda0b('0x12')][_0xda0b('0x1c')](_0x1d5084['id'])){this['imapAccounts'][_0x1d5084['id']]=new EmailImap(_0x1d5084,_0x3fb5da[_0x1100ca][_0xda0b('0x7')]);this[_0xda0b('0x12')][_0x1d5084['id']]['on'](_0xda0b('0x20'),this[_0xda0b('0x21')][_0xda0b('0x22')](this,_0x1100ca));this['imapAccounts'][_0x1d5084['id']]['on']('email',this['handleImapEmail']['bind'](this,_0x1100ca));this['imapAccounts'][_0x1d5084['id']]['on']('end',this[_0xda0b('0x23')][_0xda0b('0x22')](this,_0x1100ca));this['imapAccounts'][_0x1d5084['id']]['on']('error',this[_0xda0b('0x24')][_0xda0b('0x22')](this,_0x1100ca));}}else{if(_[_0xda0b('0x25')](this[_0xda0b('0x11')][_0x1100ca]['Imap'])){this[_0xda0b('0x11')][_0x1100ca][_0xda0b('0x18')]={};}this['mailAccounts'][_0x1100ca][_0xda0b('0x18')]['status']=_0xda0b('0x26');this[_0xda0b('0x11')][_0x1100ca][_0xda0b('0x18')][_0xda0b('0x19')]='';this[_0xda0b('0x27')](_0x1100ca);}}}};EmailChannel[_0xda0b('0x14')]['handleImapBox']=function(_0x110c4e,_0x27c789){if(this[_0xda0b('0x11')][_0x110c4e]){this[_0xda0b('0x11')][_0x110c4e][_0xda0b('0x18')]['status']='connected';this[_0xda0b('0x11')][_0x110c4e][_0xda0b('0x18')][_0xda0b('0x19')]=_0x27c789['name'];if(_0x27c789['messages']){this['mailAccounts'][_0x110c4e][_0xda0b('0x18')][_0xda0b('0x1a')]=_0x27c789[_0xda0b('0x28')][_0xda0b('0x1a')];}return this[_0xda0b('0x27')](_0x110c4e);}};EmailChannel[_0xda0b('0x14')][_0xda0b('0x29')]=function(_0x4708c7,_0x2a834b){logger[_0xda0b('0xf')]('New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s',_0x2a834b[_0xda0b('0x2a')],_0x2a834b['lastName'],_0x2a834b[_0xda0b('0x2b')],_0x4708c7);if(this['mailAccounts'][_0x4708c7]){return mailAccount[_0xda0b('0x2c')](_0x4708c7,_0x2a834b)['then'](function(_0x2c6208){if(_0x2c6208){logger[_0xda0b('0xf')](_0xda0b('0x2d'));}})[_0xda0b('0x2e')](function(_0x4ec750){logger[_0xda0b('0x2f')](_0xda0b('0x30'),JSON[_0xda0b('0x1b')](_0x4ec750));});}};EmailChannel[_0xda0b('0x14')]['handleImapEnd']=function(_0x330f6a){if(this[_0xda0b('0x11')][_0x330f6a]&&this[_0xda0b('0x11')][_0x330f6a][_0xda0b('0x18')]){if(this[_0xda0b('0x12')][this['mailAccounts'][_0x330f6a][_0xda0b('0x18')]['id']]){delete this[_0xda0b('0x12')][this[_0xda0b('0x11')][_0x330f6a][_0xda0b('0x18')]['id']];}this[_0xda0b('0x11')][_0x330f6a][_0xda0b('0x18')][_0xda0b('0x31')]=moment();this[_0xda0b('0x27')](_0x330f6a);}};EmailChannel[_0xda0b('0x14')][_0xda0b('0x24')]=function(_0x3f8435,_0x1397db){if(this[_0xda0b('0x11')][_0x3f8435]){this[_0xda0b('0x11')][_0x3f8435][_0xda0b('0x18')][_0xda0b('0x17')]=_0xda0b('0x2f');this[_0xda0b('0x11')][_0x3f8435][_0xda0b('0x18')][_0xda0b('0x19')]=_0x1397db;return this[_0xda0b('0x27')](_0x3f8435);}};EmailChannel[_0xda0b('0x14')]['sendMail']=function(_0x2cb3a4,_0x915d4e){return this[_0xda0b('0x13')][_0xda0b('0x32')](_0x2cb3a4,_0x915d4e);};EmailChannel[_0xda0b('0x14')][_0xda0b('0x33')]=function(_0x4a2b0b){var _0x23e318=this;if(this[_0xda0b('0x11')][_0x4a2b0b['id']]){if(_[_0xda0b('0x25')](this[_0xda0b('0x11')][_0x4a2b0b['id']][_0xda0b('0x34')])){this[_0xda0b('0x11')][_0x4a2b0b['id']][_0xda0b('0x34')]={};}this[_0xda0b('0x11')][_0x4a2b0b['id']][_0xda0b('0x34')][_0xda0b('0x31')]=moment();return new BPromise(function(_0x554901,_0x2b88f5){return _0x23e318[_0xda0b('0x13')][_0xda0b('0x35')](_0x4a2b0b)[_0xda0b('0x36')](function(_0x1782e9){_0x23e318['mailAccounts'][_0x4a2b0b['id']]['Smtp'][_0xda0b('0x17')]=_0xda0b('0x37');_0x23e318[_0xda0b('0x11')][_0x4a2b0b['id']][_0xda0b('0x34')][_0xda0b('0x19')]='';_0x23e318[_0xda0b('0x27')](_0x4a2b0b['id']);_0x554901(_0x1782e9);})[_0xda0b('0x2e')](function(_0x513c9e){_0x23e318[_0xda0b('0x11')][_0x4a2b0b['id']][_0xda0b('0x34')][_0xda0b('0x17')]=_0xda0b('0x2f');_0x23e318['mailAccounts'][_0x4a2b0b['id']][_0xda0b('0x34')][_0xda0b('0x19')]=_0x513c9e;_0x23e318['emit'](_0x4a2b0b['id']);_0x2b88f5(_0x513c9e);});});}return this[_0xda0b('0x13')][_0xda0b('0x35')](_0x4a2b0b);};module[_0xda0b('0x38')]=EmailChannel;