Built motion from commit dc14b02d.|2.6.27
[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 _0x590b=['exports','lodash','moment','bluebird','md5','ioredis','email','redis','localhost','./imap','./smtp','info','mailAccounts','imapAccounts','smtp','prototype','emit','key','Imap','status','isNil','mailAccount:update','active','custom','service','provider','hasOwnProperty','box','handleImapBox','bind','end','handleImapError','disabled','messageStatus','name','messages','total','handleImapEmail','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','from','notify','then','catch','error','stringify','handleImapEnd','lastSync','sendMail','send','Smtp','verified','verify'];(function(_0x5777b7,_0x5a16f3){var _0x382792=function(_0x5743c4){while(--_0x5743c4){_0x5777b7['push'](_0x5777b7['shift']());}};_0x382792(++_0x5a16f3);}(_0x590b,0x69));var _0xb590=function(_0x2e785e,_0x232c0a){_0x2e785e=_0x2e785e-0x0;var _0x230f26=_0x590b[_0x2e785e];return _0x230f26;};'use strict';var _=require(_0xb590('0x0'));var moment=require(_0xb590('0x1'));var BPromise=require(_0xb590('0x2'));var md5=require(_0xb590('0x3'));var Redis=require(_0xb590('0x4'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0xb590('0x5'));config[_0xb590('0x6')]=_['defaults'](config['redis'],{'host':_0xb590('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb590('0x6')]));var EmailImap=require(_0xb590('0x8'));var EmailSmtp=require(_0xb590('0x9'));var mailAccount=require('../rpc/mailAccount');var md5Accounts={};function EmailChannel(_0x5a99ba){logger[_0xb590('0xa')]('start\x20email\x20channel');this['mailAccounts']=_0x5a99ba[_0xb590('0xb')];this[_0xb590('0xc')]={};this[_0xb590('0xd')]=new EmailSmtp();}EmailChannel[_0xb590('0xe')][_0xb590('0xf')]=function(_0x5e3e57){var _0x45764c=this[_0xb590('0xb')][_0x5e3e57];var _0x15af19={'id':_0x45764c['id'],'name':_0x45764c['name'],'key':_0x45764c[_0xb590('0x10')],'active':_0x45764c['active'],'Imap':{'status':_0x45764c[_0xb590('0x11')][_0xb590('0x12')],'messageStatus':_0x45764c[_0xb590('0x11')]['messageStatus'],'total':_0x45764c['Imap']['total']}};if(_[_0xb590('0x13')](md5Accounts[_0x5e3e57])){md5Accounts[_0x5e3e57]={};}var _0x5ad717=md5(JSON['stringify'](_0x15af19));if(md5Accounts[_0x5e3e57][_0xb590('0x3')]!==_0x5ad717){md5Accounts[_0x5e3e57][_0xb590('0x3')]=_0x5ad717;io[_0xb590('0xf')](_0xb590('0x14'),_0x15af19);}};EmailChannel['prototype']['refresh']=function(_0x53abb4){for(var _0x539459 in _0x53abb4){if(_0x53abb4['hasOwnProperty'](_0x539459)){if(_0x53abb4[_0x539459][_0xb590('0x11')]&&_0x53abb4[_0x539459][_0xb590('0x15')]){var _0x4a52b2=_0x53abb4[_0x539459]['Imap'];if(!_0x4a52b2['service']&&_0x53abb4[_0x539459]['provider']!==_0xb590('0x16'))_0x4a52b2[_0xb590('0x17')]=_0x53abb4[_0x539459][_0xb590('0x18')];if(!this[_0xb590('0xc')][_0xb590('0x19')](_0x4a52b2['id'])){this[_0xb590('0xc')][_0x4a52b2['id']]=new EmailImap(_0x4a52b2,_0x53abb4[_0x539459]['email']);this['imapAccounts'][_0x4a52b2['id']]['on'](_0xb590('0x1a'),this[_0xb590('0x1b')][_0xb590('0x1c')](this,_0x539459));this['imapAccounts'][_0x4a52b2['id']]['on']('email',this['handleImapEmail']['bind'](this,_0x539459));this[_0xb590('0xc')][_0x4a52b2['id']]['on'](_0xb590('0x1d'),this['handleImapEnd'][_0xb590('0x1c')](this,_0x539459));this[_0xb590('0xc')][_0x4a52b2['id']]['on']('error',this[_0xb590('0x1e')][_0xb590('0x1c')](this,_0x539459));}}else{if(_[_0xb590('0x13')](this[_0xb590('0xb')][_0x539459]['Imap'])){this['mailAccounts'][_0x539459][_0xb590('0x11')]={};}this[_0xb590('0xb')][_0x539459]['Imap'][_0xb590('0x12')]=_0xb590('0x1f');this[_0xb590('0xb')][_0x539459]['Imap'][_0xb590('0x20')]='';this['emit'](_0x539459);}}}};EmailChannel[_0xb590('0xe')]['handleImapBox']=function(_0x42ee09,_0x34c974){if(this[_0xb590('0xb')][_0x42ee09]){this[_0xb590('0xb')][_0x42ee09]['Imap']['status']='connected';this[_0xb590('0xb')][_0x42ee09][_0xb590('0x11')][_0xb590('0x20')]=_0x34c974[_0xb590('0x21')];if(_0x34c974[_0xb590('0x22')]){this[_0xb590('0xb')][_0x42ee09][_0xb590('0x11')]['total']=_0x34c974['messages'][_0xb590('0x23')];}return this['emit'](_0x42ee09);}};EmailChannel[_0xb590('0xe')][_0xb590('0x24')]=function(_0x4395b7,_0x216400){logger[_0xb590('0xa')](_0xb590('0x25'),_0x216400['firstName'],_0x216400['lastName'],_0x216400[_0xb590('0x26')],_0x4395b7);if(this['mailAccounts'][_0x4395b7]){return mailAccount[_0xb590('0x27')](_0x4395b7,_0x216400)[_0xb590('0x28')](function(_0x5f39ab){if(_0x5f39ab){logger[_0xb590('0xa')]('Mail\x20accepted\x20from\x20routing');}})[_0xb590('0x29')](function(_0x49de33){logger[_0xb590('0x2a')]('Mail\x20not\x20accepted\x20from\x20routing\x20%s',JSON[_0xb590('0x2b')](_0x49de33));});}};EmailChannel[_0xb590('0xe')][_0xb590('0x2c')]=function(_0x2e53c2){if(this[_0xb590('0xb')][_0x2e53c2]&&this[_0xb590('0xb')][_0x2e53c2]['Imap']){if(this['imapAccounts'][this[_0xb590('0xb')][_0x2e53c2][_0xb590('0x11')]['id']]){delete this[_0xb590('0xc')][this[_0xb590('0xb')][_0x2e53c2][_0xb590('0x11')]['id']];}this[_0xb590('0xb')][_0x2e53c2]['Imap'][_0xb590('0x2d')]=moment();this[_0xb590('0xf')](_0x2e53c2);}};EmailChannel['prototype'][_0xb590('0x1e')]=function(_0x403703,_0x533d76){if(this[_0xb590('0xb')][_0x403703]){this[_0xb590('0xb')][_0x403703][_0xb590('0x11')][_0xb590('0x12')]=_0xb590('0x2a');this[_0xb590('0xb')][_0x403703][_0xb590('0x11')][_0xb590('0x20')]=_0x533d76;return this[_0xb590('0xf')](_0x403703);}};EmailChannel[_0xb590('0xe')][_0xb590('0x2e')]=function(_0x1040bc,_0x425159){return this[_0xb590('0xd')][_0xb590('0x2f')](_0x1040bc,_0x425159);};EmailChannel[_0xb590('0xe')]['verifySmtp']=function(_0x59c5d9){var _0x23df7f=this;if(this[_0xb590('0xb')][_0x59c5d9['id']]){if(_[_0xb590('0x13')](this['mailAccounts'][_0x59c5d9['id']]['Smtp'])){this['mailAccounts'][_0x59c5d9['id']][_0xb590('0x30')]={};}this['mailAccounts'][_0x59c5d9['id']][_0xb590('0x30')][_0xb590('0x2d')]=moment();return new BPromise(function(_0x2a9b9c,_0x219a59){return _0x23df7f[_0xb590('0xd')]['verify'](_0x59c5d9)['then'](function(_0x136893){_0x23df7f['mailAccounts'][_0x59c5d9['id']][_0xb590('0x30')][_0xb590('0x12')]=_0xb590('0x31');_0x23df7f[_0xb590('0xb')][_0x59c5d9['id']][_0xb590('0x30')][_0xb590('0x20')]='';_0x23df7f[_0xb590('0xf')](_0x59c5d9['id']);_0x2a9b9c(_0x136893);})[_0xb590('0x29')](function(_0x57ab54){_0x23df7f[_0xb590('0xb')][_0x59c5d9['id']]['Smtp']['status']='error';_0x23df7f['mailAccounts'][_0x59c5d9['id']][_0xb590('0x30')][_0xb590('0x20')]=_0x57ab54;_0x23df7f[_0xb590('0xf')](_0x59c5d9['id']);_0x219a59(_0x57ab54);});});}return this[_0xb590('0xd')][_0xb590('0x32')](_0x59c5d9);};module[_0xb590('0x33')]=EmailChannel;