Built motion from commit (unavailable).|2.5.21
[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 _0x372d=['handleImapEnd','error','connected','messages','total','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','lastName','then','catch','send','verifySmtp','Smtp','lastSync','verify','verified','exports','lodash','moment','bluebird','ioredis','../../../config/environment','../../../config/logger','email','redis','defaults','localhost','socket.io-emitter','./imap','info','start\x20email\x20channel','mailAccounts','smtp','prototype','emit','name','active','status','Imap','messageStatus','isNil','stringify','md5','mailAccount:update','refresh','hasOwnProperty','imapAccounts','box','handleImapBox','bind','handleImapEmail','end'];(function(_0x17f416,_0x133746){var _0x1f11de=function(_0x499b0b){while(--_0x499b0b){_0x17f416['push'](_0x17f416['shift']());}};_0x1f11de(++_0x133746);}(_0x372d,0x10f));var _0xd372=function(_0x3c3ab0,_0x1fa5fa){_0x3c3ab0=_0x3c3ab0-0x0;var _0x55db80=_0x372d[_0x3c3ab0];return _0x55db80;};'use strict';var _=require(_0xd372('0x0'));var moment=require(_0xd372('0x1'));var BPromise=require(_0xd372('0x2'));var md5=require('md5');var Redis=require(_0xd372('0x3'));var config=require(_0xd372('0x4'));var logger=require(_0xd372('0x5'))(_0xd372('0x6'));config[_0xd372('0x7')]=_[_0xd372('0x8')](config['redis'],{'host':_0xd372('0x9'),'port':0x18eb});var io=require(_0xd372('0xa'))(new Redis(config['redis']));var EmailImap=require(_0xd372('0xb'));var EmailSmtp=require('./smtp');var mailAccount=require('../rpc/mailAccount');var md5Accounts={};function EmailChannel(_0x576c4f){logger[_0xd372('0xc')](_0xd372('0xd'));this[_0xd372('0xe')]=_0x576c4f[_0xd372('0xe')];this['imapAccounts']={};this[_0xd372('0xf')]=new EmailSmtp();}EmailChannel[_0xd372('0x10')][_0xd372('0x11')]=function(_0x5d03b8){var _0x21c395=this[_0xd372('0xe')][_0x5d03b8];var _0x474556={'id':_0x21c395['id'],'name':_0x21c395[_0xd372('0x12')],'key':_0x21c395['key'],'active':_0x21c395[_0xd372('0x13')],'Imap':{'status':_0x21c395['Imap'][_0xd372('0x14')],'messageStatus':_0x21c395[_0xd372('0x15')][_0xd372('0x16')],'total':_0x21c395[_0xd372('0x15')]['total']}};if(_[_0xd372('0x17')](md5Accounts[_0x5d03b8])){md5Accounts[_0x5d03b8]={};}var _0x580d40=md5(JSON[_0xd372('0x18')](_0x474556));if(md5Accounts[_0x5d03b8][_0xd372('0x19')]!==_0x580d40){md5Accounts[_0x5d03b8][_0xd372('0x19')]=_0x580d40;io['emit'](_0xd372('0x1a'),_0x474556);}};EmailChannel['prototype'][_0xd372('0x1b')]=function(_0x1699de){for(var _0x141ab8 in _0x1699de){if(_0x1699de[_0xd372('0x1c')](_0x141ab8)){if(_0x1699de[_0x141ab8][_0xd372('0x15')]&&_0x1699de[_0x141ab8][_0xd372('0x13')]){var _0x4e5fc8=_0x1699de[_0x141ab8][_0xd372('0x15')];if(!this[_0xd372('0x1d')][_0xd372('0x1c')](_0x4e5fc8['id'])){this['imapAccounts'][_0x4e5fc8['id']]=new EmailImap(_0x4e5fc8,_0x1699de[_0x141ab8]['email']);this['imapAccounts'][_0x4e5fc8['id']]['on'](_0xd372('0x1e'),this[_0xd372('0x1f')][_0xd372('0x20')](this,_0x141ab8));this['imapAccounts'][_0x4e5fc8['id']]['on'](_0xd372('0x6'),this[_0xd372('0x21')]['bind'](this,_0x141ab8));this[_0xd372('0x1d')][_0x4e5fc8['id']]['on'](_0xd372('0x22'),this[_0xd372('0x23')]['bind'](this,_0x141ab8));this[_0xd372('0x1d')][_0x4e5fc8['id']]['on'](_0xd372('0x24'),this['handleImapError'][_0xd372('0x20')](this,_0x141ab8));}}else{if(_[_0xd372('0x17')](this[_0xd372('0xe')][_0x141ab8][_0xd372('0x15')])){this[_0xd372('0xe')][_0x141ab8][_0xd372('0x15')]={};}this[_0xd372('0xe')][_0x141ab8][_0xd372('0x15')][_0xd372('0x14')]='disabled';this[_0xd372('0xe')][_0x141ab8]['Imap'][_0xd372('0x16')]='';this[_0xd372('0x11')](_0x141ab8);}}}};EmailChannel[_0xd372('0x10')][_0xd372('0x1f')]=function(_0x6112ce,_0x84359f){if(this[_0xd372('0xe')][_0x6112ce]){this[_0xd372('0xe')][_0x6112ce]['Imap'][_0xd372('0x14')]=_0xd372('0x25');this['mailAccounts'][_0x6112ce][_0xd372('0x15')][_0xd372('0x16')]=_0x84359f['name'];if(_0x84359f[_0xd372('0x26')]){this[_0xd372('0xe')][_0x6112ce][_0xd372('0x15')][_0xd372('0x27')]=_0x84359f[_0xd372('0x26')][_0xd372('0x27')];}return this[_0xd372('0x11')](_0x6112ce);}};EmailChannel[_0xd372('0x10')][_0xd372('0x21')]=function(_0xe8b3d5,_0x34a038){logger[_0xd372('0xc')](_0xd372('0x28'),_0x34a038['firstName'],_0x34a038[_0xd372('0x29')],_0x34a038['from'],_0xe8b3d5);if(this[_0xd372('0xe')][_0xe8b3d5]){return mailAccount['notify'](_0xe8b3d5,_0x34a038)[_0xd372('0x2a')](function(_0x4b7bf9){if(_0x4b7bf9){logger[_0xd372('0xc')]('Mail\x20accepted\x20from\x20routing');}})[_0xd372('0x2b')](function(_0x1e99e9){logger['error']('Mail\x20not\x20accepted\x20from\x20routing\x20%s',JSON['stringify'](_0x1e99e9));});}};EmailChannel[_0xd372('0x10')]['handleImapEnd']=function(_0x45a70f){if(this[_0xd372('0xe')][_0x45a70f]&&this[_0xd372('0xe')][_0x45a70f][_0xd372('0x15')]){if(this[_0xd372('0x1d')][this[_0xd372('0xe')][_0x45a70f][_0xd372('0x15')]['id']]){delete this[_0xd372('0x1d')][this[_0xd372('0xe')][_0x45a70f][_0xd372('0x15')]['id']];}this[_0xd372('0xe')][_0x45a70f]['Imap']['lastSync']=moment();this[_0xd372('0x11')](_0x45a70f);}};EmailChannel[_0xd372('0x10')]['handleImapError']=function(_0x5f3796,_0x265058){if(this['mailAccounts'][_0x5f3796]){this[_0xd372('0xe')][_0x5f3796][_0xd372('0x15')][_0xd372('0x14')]=_0xd372('0x24');this[_0xd372('0xe')][_0x5f3796][_0xd372('0x15')][_0xd372('0x16')]=_0x265058;return this[_0xd372('0x11')](_0x5f3796);}};EmailChannel['prototype']['sendMail']=function(_0x3b693d,_0x1dec60){return this[_0xd372('0xf')][_0xd372('0x2c')](_0x3b693d,_0x1dec60);};EmailChannel['prototype'][_0xd372('0x2d')]=function(_0x24873a){var _0x1a669b=this;if(this[_0xd372('0xe')][_0x24873a['id']]){if(_[_0xd372('0x17')](this[_0xd372('0xe')][_0x24873a['id']][_0xd372('0x2e')])){this['mailAccounts'][_0x24873a['id']][_0xd372('0x2e')]={};}this[_0xd372('0xe')][_0x24873a['id']]['Smtp'][_0xd372('0x2f')]=moment();return new BPromise(function(_0x4d38d6,_0x22a685){return _0x1a669b[_0xd372('0xf')][_0xd372('0x30')](_0x24873a)[_0xd372('0x2a')](function(_0x1b6d9c){_0x1a669b[_0xd372('0xe')][_0x24873a['id']][_0xd372('0x2e')]['status']=_0xd372('0x31');_0x1a669b[_0xd372('0xe')][_0x24873a['id']][_0xd372('0x2e')][_0xd372('0x16')]='';_0x1a669b[_0xd372('0x11')](_0x24873a['id']);_0x4d38d6(_0x1b6d9c);})[_0xd372('0x2b')](function(_0x3cee29){_0x1a669b[_0xd372('0xe')][_0x24873a['id']][_0xd372('0x2e')][_0xd372('0x14')]='error';_0x1a669b['mailAccounts'][_0x24873a['id']][_0xd372('0x2e')][_0xd372('0x16')]=_0x3cee29;_0x1a669b[_0xd372('0x11')](_0x24873a['id']);_0x22a685(_0x3cee29);});});}return this[_0xd372('0xf')][_0xd372('0x30')](_0x24873a);};module[_0xd372('0x32')]=EmailChannel;