Built motion from commit 5293bb2a.|2.6.30
[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 _0xaa06=['handleImapEmail','bind','end','handleImapEnd','handleImapError','isNil','disabled','handleImapBox','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','from','notify','then','Mail\x20accepted\x20from\x20routing','error','Mail\x20not\x20accepted\x20from\x20routing\x20%s','lastSync','sendMail','verifySmtp','Smtp','verify','verified','catch','lodash','bluebird','md5','ioredis','../../../config/environment','../../../config/logger','email','redis','defaults','localhost','./smtp','../rpc/mailAccount','info','start\x20email\x20channel','mailAccounts','imapAccounts','smtp','prototype','name','key','active','status','Imap','messageStatus','total','emit','mailAccount:update','refresh','service','provider','custom','hasOwnProperty','box'];(function(_0x58d5df,_0x45ee2f){var _0x16ca59=function(_0xcc5b08){while(--_0xcc5b08){_0x58d5df['push'](_0x58d5df['shift']());}};_0x16ca59(++_0x45ee2f);}(_0xaa06,0x19f));var _0x6aa0=function(_0xde924a,_0x56556e){_0xde924a=_0xde924a-0x0;var _0xa4bd7e=_0xaa06[_0xde924a];return _0xa4bd7e;};'use strict';var _=require(_0x6aa0('0x0'));var moment=require('moment');var BPromise=require(_0x6aa0('0x1'));var md5=require(_0x6aa0('0x2'));var Redis=require(_0x6aa0('0x3'));var config=require(_0x6aa0('0x4'));var logger=require(_0x6aa0('0x5'))(_0x6aa0('0x6'));config[_0x6aa0('0x7')]=_[_0x6aa0('0x8')](config[_0x6aa0('0x7')],{'host':_0x6aa0('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x6aa0('0x7')]));var EmailImap=require('./imap');var EmailSmtp=require(_0x6aa0('0xa'));var mailAccount=require(_0x6aa0('0xb'));var md5Accounts={};function EmailChannel(_0x522925){logger[_0x6aa0('0xc')](_0x6aa0('0xd'));this[_0x6aa0('0xe')]=_0x522925[_0x6aa0('0xe')];this[_0x6aa0('0xf')]={};this[_0x6aa0('0x10')]=new EmailSmtp();}EmailChannel[_0x6aa0('0x11')]['emit']=function(_0xd3f190){var _0x195702=this['mailAccounts'][_0xd3f190];var _0x3510e5={'id':_0x195702['id'],'name':_0x195702[_0x6aa0('0x12')],'key':_0x195702[_0x6aa0('0x13')],'active':_0x195702[_0x6aa0('0x14')],'Imap':{'status':_0x195702['Imap'][_0x6aa0('0x15')],'messageStatus':_0x195702[_0x6aa0('0x16')][_0x6aa0('0x17')],'total':_0x195702[_0x6aa0('0x16')][_0x6aa0('0x18')]}};if(_['isNil'](md5Accounts[_0xd3f190])){md5Accounts[_0xd3f190]={};}var _0x521676=md5(JSON['stringify'](_0x3510e5));if(md5Accounts[_0xd3f190][_0x6aa0('0x2')]!==_0x521676){md5Accounts[_0xd3f190][_0x6aa0('0x2')]=_0x521676;io[_0x6aa0('0x19')](_0x6aa0('0x1a'),_0x3510e5);}};EmailChannel[_0x6aa0('0x11')][_0x6aa0('0x1b')]=function(_0x1d8fdb){for(var _0x3251f8 in _0x1d8fdb){if(_0x1d8fdb['hasOwnProperty'](_0x3251f8)){if(_0x1d8fdb[_0x3251f8][_0x6aa0('0x16')]&&_0x1d8fdb[_0x3251f8][_0x6aa0('0x14')]){var _0x5a734d=_0x1d8fdb[_0x3251f8][_0x6aa0('0x16')];if(!_0x5a734d[_0x6aa0('0x1c')]&&_0x1d8fdb[_0x3251f8][_0x6aa0('0x1d')]!==_0x6aa0('0x1e'))_0x5a734d[_0x6aa0('0x1c')]=_0x1d8fdb[_0x3251f8]['provider'];if(!this[_0x6aa0('0xf')][_0x6aa0('0x1f')](_0x5a734d['id'])){this['imapAccounts'][_0x5a734d['id']]=new EmailImap(_0x5a734d,_0x1d8fdb[_0x3251f8][_0x6aa0('0x6')]);this['imapAccounts'][_0x5a734d['id']]['on'](_0x6aa0('0x20'),this['handleImapBox']['bind'](this,_0x3251f8));this['imapAccounts'][_0x5a734d['id']]['on']('email',this[_0x6aa0('0x21')][_0x6aa0('0x22')](this,_0x3251f8));this[_0x6aa0('0xf')][_0x5a734d['id']]['on'](_0x6aa0('0x23'),this[_0x6aa0('0x24')][_0x6aa0('0x22')](this,_0x3251f8));this[_0x6aa0('0xf')][_0x5a734d['id']]['on']('error',this[_0x6aa0('0x25')][_0x6aa0('0x22')](this,_0x3251f8));}}else{if(_[_0x6aa0('0x26')](this[_0x6aa0('0xe')][_0x3251f8][_0x6aa0('0x16')])){this[_0x6aa0('0xe')][_0x3251f8][_0x6aa0('0x16')]={};}this[_0x6aa0('0xe')][_0x3251f8][_0x6aa0('0x16')][_0x6aa0('0x15')]=_0x6aa0('0x27');this['mailAccounts'][_0x3251f8]['Imap'][_0x6aa0('0x17')]='';this[_0x6aa0('0x19')](_0x3251f8);}}}};EmailChannel[_0x6aa0('0x11')][_0x6aa0('0x28')]=function(_0x3634bc,_0x55f541){if(this['mailAccounts'][_0x3634bc]){this[_0x6aa0('0xe')][_0x3634bc][_0x6aa0('0x16')][_0x6aa0('0x15')]='connected';this[_0x6aa0('0xe')][_0x3634bc][_0x6aa0('0x16')][_0x6aa0('0x17')]=_0x55f541[_0x6aa0('0x12')];if(_0x55f541['messages']){this[_0x6aa0('0xe')][_0x3634bc][_0x6aa0('0x16')][_0x6aa0('0x18')]=_0x55f541[_0x6aa0('0x29')][_0x6aa0('0x18')];}return this['emit'](_0x3634bc);}};EmailChannel[_0x6aa0('0x11')][_0x6aa0('0x21')]=function(_0x555a37,_0x5ab35c){logger[_0x6aa0('0xc')](_0x6aa0('0x2a'),_0x5ab35c['firstName'],_0x5ab35c['lastName'],_0x5ab35c[_0x6aa0('0x2b')],_0x555a37);if(this[_0x6aa0('0xe')][_0x555a37]){return mailAccount[_0x6aa0('0x2c')](_0x555a37,_0x5ab35c)[_0x6aa0('0x2d')](function(_0x510598){if(_0x510598){logger['info'](_0x6aa0('0x2e'));}})['catch'](function(_0x5250fe){logger[_0x6aa0('0x2f')](_0x6aa0('0x30'),JSON['stringify'](_0x5250fe));});}};EmailChannel[_0x6aa0('0x11')][_0x6aa0('0x24')]=function(_0x58e7bd){if(this['mailAccounts'][_0x58e7bd]&&this[_0x6aa0('0xe')][_0x58e7bd]['Imap']){if(this[_0x6aa0('0xf')][this[_0x6aa0('0xe')][_0x58e7bd][_0x6aa0('0x16')]['id']]){delete this[_0x6aa0('0xf')][this[_0x6aa0('0xe')][_0x58e7bd][_0x6aa0('0x16')]['id']];}this[_0x6aa0('0xe')][_0x58e7bd][_0x6aa0('0x16')][_0x6aa0('0x31')]=moment();this[_0x6aa0('0x19')](_0x58e7bd);}};EmailChannel[_0x6aa0('0x11')][_0x6aa0('0x25')]=function(_0x5e0309,_0x12e51f){if(this[_0x6aa0('0xe')][_0x5e0309]){this[_0x6aa0('0xe')][_0x5e0309][_0x6aa0('0x16')][_0x6aa0('0x15')]=_0x6aa0('0x2f');this[_0x6aa0('0xe')][_0x5e0309][_0x6aa0('0x16')][_0x6aa0('0x17')]=_0x12e51f;return this[_0x6aa0('0x19')](_0x5e0309);}};EmailChannel['prototype'][_0x6aa0('0x32')]=function(_0x1e526c,_0x46559b){return this['smtp']['send'](_0x1e526c,_0x46559b);};EmailChannel[_0x6aa0('0x11')][_0x6aa0('0x33')]=function(_0x2f91bd){var _0x543931=this;if(this[_0x6aa0('0xe')][_0x2f91bd['id']]){if(_[_0x6aa0('0x26')](this['mailAccounts'][_0x2f91bd['id']]['Smtp'])){this[_0x6aa0('0xe')][_0x2f91bd['id']][_0x6aa0('0x34')]={};}this['mailAccounts'][_0x2f91bd['id']][_0x6aa0('0x34')][_0x6aa0('0x31')]=moment();return new BPromise(function(_0x56d7a0,_0x36b427){return _0x543931[_0x6aa0('0x10')][_0x6aa0('0x35')](_0x2f91bd)[_0x6aa0('0x2d')](function(_0x4b99ef){_0x543931[_0x6aa0('0xe')][_0x2f91bd['id']][_0x6aa0('0x34')][_0x6aa0('0x15')]=_0x6aa0('0x36');_0x543931[_0x6aa0('0xe')][_0x2f91bd['id']][_0x6aa0('0x34')][_0x6aa0('0x17')]='';_0x543931['emit'](_0x2f91bd['id']);_0x56d7a0(_0x4b99ef);})[_0x6aa0('0x37')](function(_0x449df5){_0x543931['mailAccounts'][_0x2f91bd['id']][_0x6aa0('0x34')][_0x6aa0('0x15')]=_0x6aa0('0x2f');_0x543931[_0x6aa0('0xe')][_0x2f91bd['id']]['Smtp'][_0x6aa0('0x17')]=_0x449df5;_0x543931[_0x6aa0('0x19')](_0x2f91bd['id']);_0x36b427(_0x449df5);});});}return this[_0x6aa0('0x10')][_0x6aa0('0x35')](_0x2f91bd);};module['exports']=EmailChannel;