Built motion from commit 6f14c8ba.|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 _0x70a9=['mailAccounts','imapAccounts','smtp','prototype','name','key','active','status','Imap','messageStatus','total','isNil','md5','mailAccount:update','refresh','hasOwnProperty','provider','custom','service','box','handleImapBox','handleImapEmail','bind','end','handleImapEnd','error','emit','messages','info','firstName','from','notify','then','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','stringify','lastSync','handleImapError','sendMail','verifySmtp','Smtp','verified','verify','exports','lodash','bluebird','ioredis','../../../config/environment','email','redis','localhost','./imap'];(function(_0x3bab09,_0x217c29){var _0x164376=function(_0x277730){while(--_0x277730){_0x3bab09['push'](_0x3bab09['shift']());}};_0x164376(++_0x217c29);}(_0x70a9,0x1cc));var _0x970a=function(_0x43ab8c,_0x5cc0dc){_0x43ab8c=_0x43ab8c-0x0;var _0x1cf3bf=_0x70a9[_0x43ab8c];return _0x1cf3bf;};'use strict';var _=require(_0x970a('0x0'));var moment=require('moment');var BPromise=require(_0x970a('0x1'));var md5=require('md5');var Redis=require(_0x970a('0x2'));var config=require(_0x970a('0x3'));var logger=require('../../../config/logger')(_0x970a('0x4'));config[_0x970a('0x5')]=_['defaults'](config[_0x970a('0x5')],{'host':_0x970a('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x970a('0x5')]));var EmailImap=require(_0x970a('0x7'));var EmailSmtp=require('./smtp');var mailAccount=require('../rpc/mailAccount');var md5Accounts={};function EmailChannel(_0xfc81db){logger['info']('start\x20email\x20channel');this[_0x970a('0x8')]=_0xfc81db[_0x970a('0x8')];this[_0x970a('0x9')]={};this[_0x970a('0xa')]=new EmailSmtp();}EmailChannel[_0x970a('0xb')]['emit']=function(_0x25e77c){var _0x54afb6=this['mailAccounts'][_0x25e77c];var _0x3d2811={'id':_0x54afb6['id'],'name':_0x54afb6[_0x970a('0xc')],'key':_0x54afb6[_0x970a('0xd')],'active':_0x54afb6[_0x970a('0xe')],'Imap':{'status':_0x54afb6['Imap'][_0x970a('0xf')],'messageStatus':_0x54afb6[_0x970a('0x10')][_0x970a('0x11')],'total':_0x54afb6['Imap'][_0x970a('0x12')]}};if(_[_0x970a('0x13')](md5Accounts[_0x25e77c])){md5Accounts[_0x25e77c]={};}var _0x4e9c63=md5(JSON['stringify'](_0x3d2811));if(md5Accounts[_0x25e77c]['md5']!==_0x4e9c63){md5Accounts[_0x25e77c][_0x970a('0x14')]=_0x4e9c63;io['emit'](_0x970a('0x15'),_0x3d2811);}};EmailChannel[_0x970a('0xb')][_0x970a('0x16')]=function(_0x29b24a){for(var _0x1b1bf9 in _0x29b24a){if(_0x29b24a[_0x970a('0x17')](_0x1b1bf9)){if(_0x29b24a[_0x1b1bf9][_0x970a('0x10')]&&_0x29b24a[_0x1b1bf9]['active']){var _0x127fef=_0x29b24a[_0x1b1bf9][_0x970a('0x10')];if(!_0x127fef['service']&&_0x29b24a[_0x1b1bf9][_0x970a('0x18')]!==_0x970a('0x19'))_0x127fef[_0x970a('0x1a')]=_0x29b24a[_0x1b1bf9][_0x970a('0x18')];if(!this[_0x970a('0x9')]['hasOwnProperty'](_0x127fef['id'])){this[_0x970a('0x9')][_0x127fef['id']]=new EmailImap(_0x127fef,_0x29b24a[_0x1b1bf9][_0x970a('0x4')]);this['imapAccounts'][_0x127fef['id']]['on'](_0x970a('0x1b'),this[_0x970a('0x1c')]['bind'](this,_0x1b1bf9));this[_0x970a('0x9')][_0x127fef['id']]['on'](_0x970a('0x4'),this[_0x970a('0x1d')][_0x970a('0x1e')](this,_0x1b1bf9));this[_0x970a('0x9')][_0x127fef['id']]['on'](_0x970a('0x1f'),this[_0x970a('0x20')][_0x970a('0x1e')](this,_0x1b1bf9));this[_0x970a('0x9')][_0x127fef['id']]['on'](_0x970a('0x21'),this['handleImapError']['bind'](this,_0x1b1bf9));}}else{if(_[_0x970a('0x13')](this[_0x970a('0x8')][_0x1b1bf9][_0x970a('0x10')])){this['mailAccounts'][_0x1b1bf9]['Imap']={};}this[_0x970a('0x8')][_0x1b1bf9][_0x970a('0x10')][_0x970a('0xf')]='disabled';this[_0x970a('0x8')][_0x1b1bf9]['Imap'][_0x970a('0x11')]='';this[_0x970a('0x22')](_0x1b1bf9);}}}};EmailChannel[_0x970a('0xb')][_0x970a('0x1c')]=function(_0x38594a,_0xbc80b7){if(this['mailAccounts'][_0x38594a]){this[_0x970a('0x8')][_0x38594a]['Imap'][_0x970a('0xf')]='connected';this[_0x970a('0x8')][_0x38594a]['Imap'][_0x970a('0x11')]=_0xbc80b7[_0x970a('0xc')];if(_0xbc80b7['messages']){this[_0x970a('0x8')][_0x38594a]['Imap'][_0x970a('0x12')]=_0xbc80b7[_0x970a('0x23')][_0x970a('0x12')];}return this[_0x970a('0x22')](_0x38594a);}};EmailChannel[_0x970a('0xb')][_0x970a('0x1d')]=function(_0x4577d0,_0x5840f2){logger[_0x970a('0x24')]('New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s',_0x5840f2[_0x970a('0x25')],_0x5840f2['lastName'],_0x5840f2[_0x970a('0x26')],_0x4577d0);if(this[_0x970a('0x8')][_0x4577d0]){return mailAccount[_0x970a('0x27')](_0x4577d0,_0x5840f2)[_0x970a('0x28')](function(_0x3e470c){if(_0x3e470c){logger['info']('Mail\x20accepted\x20from\x20routing');}})[_0x970a('0x29')](function(_0x5ec7d0){logger['error'](_0x970a('0x2a'),JSON[_0x970a('0x2b')](_0x5ec7d0));});}};EmailChannel[_0x970a('0xb')][_0x970a('0x20')]=function(_0x44fa21){if(this['mailAccounts'][_0x44fa21]&&this['mailAccounts'][_0x44fa21][_0x970a('0x10')]){if(this[_0x970a('0x9')][this[_0x970a('0x8')][_0x44fa21][_0x970a('0x10')]['id']]){delete this[_0x970a('0x9')][this[_0x970a('0x8')][_0x44fa21][_0x970a('0x10')]['id']];}this['mailAccounts'][_0x44fa21]['Imap'][_0x970a('0x2c')]=moment();this[_0x970a('0x22')](_0x44fa21);}};EmailChannel[_0x970a('0xb')][_0x970a('0x2d')]=function(_0xf51234,_0x1c64eb){if(this[_0x970a('0x8')][_0xf51234]){this[_0x970a('0x8')][_0xf51234][_0x970a('0x10')][_0x970a('0xf')]=_0x970a('0x21');this[_0x970a('0x8')][_0xf51234]['Imap'][_0x970a('0x11')]=_0x1c64eb;return this['emit'](_0xf51234);}};EmailChannel[_0x970a('0xb')][_0x970a('0x2e')]=function(_0x11987e,_0x94838a){return this['smtp']['send'](_0x11987e,_0x94838a);};EmailChannel['prototype'][_0x970a('0x2f')]=function(_0x5801db){var _0x4a8dcb=this;if(this['mailAccounts'][_0x5801db['id']]){if(_[_0x970a('0x13')](this[_0x970a('0x8')][_0x5801db['id']][_0x970a('0x30')])){this['mailAccounts'][_0x5801db['id']][_0x970a('0x30')]={};}this['mailAccounts'][_0x5801db['id']][_0x970a('0x30')]['lastSync']=moment();return new BPromise(function(_0x2f2cef,_0x26c532){return _0x4a8dcb['smtp']['verify'](_0x5801db)[_0x970a('0x28')](function(_0x5605e4){_0x4a8dcb[_0x970a('0x8')][_0x5801db['id']][_0x970a('0x30')][_0x970a('0xf')]=_0x970a('0x31');_0x4a8dcb[_0x970a('0x8')][_0x5801db['id']][_0x970a('0x30')][_0x970a('0x11')]='';_0x4a8dcb['emit'](_0x5801db['id']);_0x2f2cef(_0x5605e4);})[_0x970a('0x29')](function(_0x4b0535){_0x4a8dcb['mailAccounts'][_0x5801db['id']]['Smtp'][_0x970a('0xf')]=_0x970a('0x21');_0x4a8dcb['mailAccounts'][_0x5801db['id']]['Smtp']['messageStatus']=_0x4b0535;_0x4a8dcb['emit'](_0x5801db['id']);_0x26c532(_0x4b0535);});});}return this[_0x970a('0xa')][_0x970a('0x32')](_0x5801db);};module[_0x970a('0x33')]=EmailChannel;