Built motion from commit 37e1ed56.|2.6.29
[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 _0x4226=['lastSync','status','sendMail','Smtp','verify','exports','lodash','bluebird','md5','ioredis','../../../config/environment','../../../config/logger','email','redis','localhost','socket.io-emitter','./imap','./smtp','../rpc/mailAccount','info','start\x20email\x20channel','mailAccounts','smtp','prototype','emit','name','key','active','Imap','messageStatus','total','stringify','mailAccount:update','refresh','hasOwnProperty','service','custom','provider','imapAccounts','handleImapBox','bind','handleImapEmail','end','handleImapError','disabled','connected','messages','firstName','lastName','from','notify','then','Mail\x20accepted\x20from\x20routing','catch','error'];(function(_0x5b069c,_0x4b88cf){var _0x4313aa=function(_0x5b075f){while(--_0x5b075f){_0x5b069c['push'](_0x5b069c['shift']());}};_0x4313aa(++_0x4b88cf);}(_0x4226,0x150));var _0x6422=function(_0x577a84,_0x2560b1){_0x577a84=_0x577a84-0x0;var _0x27d196=_0x4226[_0x577a84];return _0x27d196;};'use strict';var _=require(_0x6422('0x0'));var moment=require('moment');var BPromise=require(_0x6422('0x1'));var md5=require(_0x6422('0x2'));var Redis=require(_0x6422('0x3'));var config=require(_0x6422('0x4'));var logger=require(_0x6422('0x5'))(_0x6422('0x6'));config[_0x6422('0x7')]=_['defaults'](config['redis'],{'host':_0x6422('0x8'),'port':0x18eb});var io=require(_0x6422('0x9'))(new Redis(config[_0x6422('0x7')]));var EmailImap=require(_0x6422('0xa'));var EmailSmtp=require(_0x6422('0xb'));var mailAccount=require(_0x6422('0xc'));var md5Accounts={};function EmailChannel(_0x1b880c){logger[_0x6422('0xd')](_0x6422('0xe'));this[_0x6422('0xf')]=_0x1b880c['mailAccounts'];this['imapAccounts']={};this[_0x6422('0x10')]=new EmailSmtp();}EmailChannel[_0x6422('0x11')][_0x6422('0x12')]=function(_0x400fb4){var _0x2e5f23=this[_0x6422('0xf')][_0x400fb4];var _0x4316bd={'id':_0x2e5f23['id'],'name':_0x2e5f23[_0x6422('0x13')],'key':_0x2e5f23[_0x6422('0x14')],'active':_0x2e5f23[_0x6422('0x15')],'Imap':{'status':_0x2e5f23[_0x6422('0x16')]['status'],'messageStatus':_0x2e5f23[_0x6422('0x16')][_0x6422('0x17')],'total':_0x2e5f23[_0x6422('0x16')][_0x6422('0x18')]}};if(_['isNil'](md5Accounts[_0x400fb4])){md5Accounts[_0x400fb4]={};}var _0x511afb=md5(JSON[_0x6422('0x19')](_0x4316bd));if(md5Accounts[_0x400fb4]['md5']!==_0x511afb){md5Accounts[_0x400fb4][_0x6422('0x2')]=_0x511afb;io['emit'](_0x6422('0x1a'),_0x4316bd);}};EmailChannel[_0x6422('0x11')][_0x6422('0x1b')]=function(_0x55813b){for(var _0x417257 in _0x55813b){if(_0x55813b[_0x6422('0x1c')](_0x417257)){if(_0x55813b[_0x417257][_0x6422('0x16')]&&_0x55813b[_0x417257][_0x6422('0x15')]){var _0x1d5aa2=_0x55813b[_0x417257]['Imap'];if(!_0x1d5aa2[_0x6422('0x1d')]&&_0x55813b[_0x417257]['provider']!==_0x6422('0x1e'))_0x1d5aa2[_0x6422('0x1d')]=_0x55813b[_0x417257][_0x6422('0x1f')];if(!this[_0x6422('0x20')][_0x6422('0x1c')](_0x1d5aa2['id'])){this[_0x6422('0x20')][_0x1d5aa2['id']]=new EmailImap(_0x1d5aa2,_0x55813b[_0x417257]['email']);this[_0x6422('0x20')][_0x1d5aa2['id']]['on']('box',this[_0x6422('0x21')][_0x6422('0x22')](this,_0x417257));this[_0x6422('0x20')][_0x1d5aa2['id']]['on'](_0x6422('0x6'),this[_0x6422('0x23')]['bind'](this,_0x417257));this[_0x6422('0x20')][_0x1d5aa2['id']]['on'](_0x6422('0x24'),this['handleImapEnd'][_0x6422('0x22')](this,_0x417257));this[_0x6422('0x20')][_0x1d5aa2['id']]['on']('error',this[_0x6422('0x25')][_0x6422('0x22')](this,_0x417257));}}else{if(_['isNil'](this['mailAccounts'][_0x417257][_0x6422('0x16')])){this[_0x6422('0xf')][_0x417257][_0x6422('0x16')]={};}this['mailAccounts'][_0x417257][_0x6422('0x16')]['status']=_0x6422('0x26');this[_0x6422('0xf')][_0x417257][_0x6422('0x16')][_0x6422('0x17')]='';this['emit'](_0x417257);}}}};EmailChannel['prototype']['handleImapBox']=function(_0x17a48b,_0x125464){if(this['mailAccounts'][_0x17a48b]){this[_0x6422('0xf')][_0x17a48b]['Imap']['status']=_0x6422('0x27');this[_0x6422('0xf')][_0x17a48b][_0x6422('0x16')][_0x6422('0x17')]=_0x125464[_0x6422('0x13')];if(_0x125464[_0x6422('0x28')]){this['mailAccounts'][_0x17a48b]['Imap'][_0x6422('0x18')]=_0x125464[_0x6422('0x28')][_0x6422('0x18')];}return this[_0x6422('0x12')](_0x17a48b);}};EmailChannel[_0x6422('0x11')][_0x6422('0x23')]=function(_0x5d9917,_0x3e0c9e){logger[_0x6422('0xd')]('New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s',_0x3e0c9e[_0x6422('0x29')],_0x3e0c9e[_0x6422('0x2a')],_0x3e0c9e[_0x6422('0x2b')],_0x5d9917);if(this[_0x6422('0xf')][_0x5d9917]){return mailAccount[_0x6422('0x2c')](_0x5d9917,_0x3e0c9e)[_0x6422('0x2d')](function(_0x281a10){if(_0x281a10){logger['info'](_0x6422('0x2e'));}})[_0x6422('0x2f')](function(_0x2cd9fa){logger[_0x6422('0x30')]('Mail\x20not\x20accepted\x20from\x20routing\x20%s',JSON[_0x6422('0x19')](_0x2cd9fa));});}};EmailChannel[_0x6422('0x11')]['handleImapEnd']=function(_0xbf3229){if(this[_0x6422('0xf')][_0xbf3229]&&this['mailAccounts'][_0xbf3229]['Imap']){if(this['imapAccounts'][this[_0x6422('0xf')][_0xbf3229][_0x6422('0x16')]['id']]){delete this['imapAccounts'][this['mailAccounts'][_0xbf3229][_0x6422('0x16')]['id']];}this['mailAccounts'][_0xbf3229][_0x6422('0x16')][_0x6422('0x31')]=moment();this['emit'](_0xbf3229);}};EmailChannel[_0x6422('0x11')][_0x6422('0x25')]=function(_0x1d6f3f,_0x518e10){if(this['mailAccounts'][_0x1d6f3f]){this[_0x6422('0xf')][_0x1d6f3f][_0x6422('0x16')][_0x6422('0x32')]=_0x6422('0x30');this['mailAccounts'][_0x1d6f3f][_0x6422('0x16')][_0x6422('0x17')]=_0x518e10;return this[_0x6422('0x12')](_0x1d6f3f);}};EmailChannel[_0x6422('0x11')][_0x6422('0x33')]=function(_0x4f4097,_0xbe0cb0){return this[_0x6422('0x10')]['send'](_0x4f4097,_0xbe0cb0);};EmailChannel[_0x6422('0x11')]['verifySmtp']=function(_0x25bac7){var _0x1353df=this;if(this[_0x6422('0xf')][_0x25bac7['id']]){if(_['isNil'](this['mailAccounts'][_0x25bac7['id']]['Smtp'])){this[_0x6422('0xf')][_0x25bac7['id']][_0x6422('0x34')]={};}this[_0x6422('0xf')][_0x25bac7['id']]['Smtp'][_0x6422('0x31')]=moment();return new BPromise(function(_0x392e4b,_0x5765bd){return _0x1353df[_0x6422('0x10')]['verify'](_0x25bac7)[_0x6422('0x2d')](function(_0x344d12){_0x1353df[_0x6422('0xf')][_0x25bac7['id']][_0x6422('0x34')]['status']='verified';_0x1353df[_0x6422('0xf')][_0x25bac7['id']][_0x6422('0x34')]['messageStatus']='';_0x1353df[_0x6422('0x12')](_0x25bac7['id']);_0x392e4b(_0x344d12);})['catch'](function(_0x20cb33){_0x1353df[_0x6422('0xf')][_0x25bac7['id']]['Smtp'][_0x6422('0x32')]=_0x6422('0x30');_0x1353df[_0x6422('0xf')][_0x25bac7['id']][_0x6422('0x34')][_0x6422('0x17')]=_0x20cb33;_0x1353df['emit'](_0x25bac7['id']);_0x5765bd(_0x20cb33);});});}return this[_0x6422('0x10')][_0x6422('0x35')](_0x25bac7);};module[_0x6422('0x36')]=EmailChannel;