Built motion from commit (unavailable).|2.5.10
[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 _0x00a2=['exports','lodash','bluebird','ioredis','../../../config/environment','../../../config/logger','email','redis','localhost','socket.io-emitter','./imap','../rpc/mailAccount','info','start\x20email\x20channel','mailAccounts','imapAccounts','smtp','prototype','name','active','Imap','isNil','stringify','md5','emit','hasOwnProperty','box','handleImapEmail','bind','handleImapEnd','error','handleImapError','disabled','messageStatus','status','connected','messages','total','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','lastName','from','notify','then','Mail\x20not\x20accepted\x20from\x20routing\x20%s','lastSync','sendMail','send','verifySmtp','Smtp','verify','verified','catch'];(function(_0x1f60bf,_0x47f670){var _0x276a3d=function(_0x4973b1){while(--_0x4973b1){_0x1f60bf['push'](_0x1f60bf['shift']());}};_0x276a3d(++_0x47f670);}(_0x00a2,0xd1));var _0x200a=function(_0x305f89,_0x2a1b84){_0x305f89=_0x305f89-0x0;var _0x39a103=_0x00a2[_0x305f89];return _0x39a103;};'use strict';var _=require(_0x200a('0x0'));var moment=require('moment');var BPromise=require(_0x200a('0x1'));var md5=require('md5');var Redis=require(_0x200a('0x2'));var config=require(_0x200a('0x3'));var logger=require(_0x200a('0x4'))(_0x200a('0x5'));config[_0x200a('0x6')]=_['defaults'](config[_0x200a('0x6')],{'host':_0x200a('0x7'),'port':0x18eb});var io=require(_0x200a('0x8'))(new Redis(config[_0x200a('0x6')]));var EmailImap=require(_0x200a('0x9'));var EmailSmtp=require('./smtp');var mailAccount=require(_0x200a('0xa'));var md5Accounts={};function EmailChannel(_0xf9d79d){logger[_0x200a('0xb')](_0x200a('0xc'));this[_0x200a('0xd')]=_0xf9d79d['mailAccounts'];this[_0x200a('0xe')]={};this[_0x200a('0xf')]=new EmailSmtp();}EmailChannel[_0x200a('0x10')]['emit']=function(_0x30a218){var _0x129dc1=this[_0x200a('0xd')][_0x30a218];var _0x4fbe39={'id':_0x129dc1['id'],'name':_0x129dc1[_0x200a('0x11')],'key':_0x129dc1['key'],'active':_0x129dc1[_0x200a('0x12')],'Imap':{'status':_0x129dc1['Imap']['status'],'messageStatus':_0x129dc1[_0x200a('0x13')]['messageStatus'],'total':_0x129dc1[_0x200a('0x13')]['total']}};if(_[_0x200a('0x14')](md5Accounts[_0x30a218])){md5Accounts[_0x30a218]={};}var _0x4eb313=md5(JSON[_0x200a('0x15')](_0x4fbe39));if(md5Accounts[_0x30a218][_0x200a('0x16')]!==_0x4eb313){md5Accounts[_0x30a218][_0x200a('0x16')]=_0x4eb313;io[_0x200a('0x17')]('mailAccount:update',_0x4fbe39);}};EmailChannel[_0x200a('0x10')]['refresh']=function(_0x21c9d5){for(var _0x368c7d in _0x21c9d5){if(_0x21c9d5[_0x200a('0x18')](_0x368c7d)){if(_0x21c9d5[_0x368c7d][_0x200a('0x13')]&&_0x21c9d5[_0x368c7d][_0x200a('0x12')]){var _0x3d1a6f=_0x21c9d5[_0x368c7d][_0x200a('0x13')];if(!this[_0x200a('0xe')][_0x200a('0x18')](_0x3d1a6f['id'])){this[_0x200a('0xe')][_0x3d1a6f['id']]=new EmailImap(_0x3d1a6f,_0x21c9d5[_0x368c7d][_0x200a('0x5')]);this[_0x200a('0xe')][_0x3d1a6f['id']]['on'](_0x200a('0x19'),this['handleImapBox']['bind'](this,_0x368c7d));this['imapAccounts'][_0x3d1a6f['id']]['on']('email',this[_0x200a('0x1a')][_0x200a('0x1b')](this,_0x368c7d));this[_0x200a('0xe')][_0x3d1a6f['id']]['on']('end',this[_0x200a('0x1c')][_0x200a('0x1b')](this,_0x368c7d));this[_0x200a('0xe')][_0x3d1a6f['id']]['on'](_0x200a('0x1d'),this[_0x200a('0x1e')][_0x200a('0x1b')](this,_0x368c7d));}}else{if(_['isNil'](this[_0x200a('0xd')][_0x368c7d][_0x200a('0x13')])){this[_0x200a('0xd')][_0x368c7d][_0x200a('0x13')]={};}this[_0x200a('0xd')][_0x368c7d]['Imap']['status']=_0x200a('0x1f');this[_0x200a('0xd')][_0x368c7d][_0x200a('0x13')][_0x200a('0x20')]='';this[_0x200a('0x17')](_0x368c7d);}}}};EmailChannel['prototype']['handleImapBox']=function(_0x4b7810,_0x19d753){if(this[_0x200a('0xd')][_0x4b7810]){this['mailAccounts'][_0x4b7810][_0x200a('0x13')][_0x200a('0x21')]=_0x200a('0x22');this[_0x200a('0xd')][_0x4b7810][_0x200a('0x13')][_0x200a('0x20')]=_0x19d753[_0x200a('0x11')];if(_0x19d753[_0x200a('0x23')]){this[_0x200a('0xd')][_0x4b7810][_0x200a('0x13')][_0x200a('0x24')]=_0x19d753[_0x200a('0x23')][_0x200a('0x24')];}return this['emit'](_0x4b7810);}};EmailChannel[_0x200a('0x10')][_0x200a('0x1a')]=function(_0x52461a,_0x3c5f34){logger[_0x200a('0xb')](_0x200a('0x25'),_0x3c5f34['firstName'],_0x3c5f34[_0x200a('0x26')],_0x3c5f34[_0x200a('0x27')],_0x52461a);if(this[_0x200a('0xd')][_0x52461a]){return mailAccount[_0x200a('0x28')](_0x52461a,_0x3c5f34)[_0x200a('0x29')](function(_0xffe5fa){if(_0xffe5fa){logger[_0x200a('0xb')]('Mail\x20accepted\x20from\x20routing');}})['catch'](function(_0x1f1ee7){logger['error'](_0x200a('0x2a'),JSON[_0x200a('0x15')](_0x1f1ee7));});}};EmailChannel[_0x200a('0x10')][_0x200a('0x1c')]=function(_0xcc7416){if(this[_0x200a('0xd')][_0xcc7416]&&this[_0x200a('0xd')][_0xcc7416][_0x200a('0x13')]){if(this['imapAccounts'][this['mailAccounts'][_0xcc7416][_0x200a('0x13')]['id']]){delete this[_0x200a('0xe')][this['mailAccounts'][_0xcc7416][_0x200a('0x13')]['id']];}this[_0x200a('0xd')][_0xcc7416][_0x200a('0x13')][_0x200a('0x2b')]=moment();this[_0x200a('0x17')](_0xcc7416);}};EmailChannel['prototype'][_0x200a('0x1e')]=function(_0x4d7878,_0x50109c){if(this[_0x200a('0xd')][_0x4d7878]){this['mailAccounts'][_0x4d7878]['Imap'][_0x200a('0x21')]=_0x200a('0x1d');this[_0x200a('0xd')][_0x4d7878][_0x200a('0x13')][_0x200a('0x20')]=_0x50109c;return this[_0x200a('0x17')](_0x4d7878);}};EmailChannel[_0x200a('0x10')][_0x200a('0x2c')]=function(_0x56954f,_0x2f8e45){return this[_0x200a('0xf')][_0x200a('0x2d')](_0x56954f,_0x2f8e45);};EmailChannel[_0x200a('0x10')][_0x200a('0x2e')]=function(_0x9e28db){var _0x55c21c=this;if(this['mailAccounts'][_0x9e28db['id']]){if(_[_0x200a('0x14')](this[_0x200a('0xd')][_0x9e28db['id']][_0x200a('0x2f')])){this[_0x200a('0xd')][_0x9e28db['id']][_0x200a('0x2f')]={};}this['mailAccounts'][_0x9e28db['id']][_0x200a('0x2f')]['lastSync']=moment();return new BPromise(function(_0x1bf220,_0x3a16df){return _0x55c21c[_0x200a('0xf')][_0x200a('0x30')](_0x9e28db)[_0x200a('0x29')](function(_0x4e89e7){_0x55c21c['mailAccounts'][_0x9e28db['id']][_0x200a('0x2f')][_0x200a('0x21')]=_0x200a('0x31');_0x55c21c[_0x200a('0xd')][_0x9e28db['id']][_0x200a('0x2f')][_0x200a('0x20')]='';_0x55c21c[_0x200a('0x17')](_0x9e28db['id']);_0x1bf220(_0x4e89e7);})[_0x200a('0x32')](function(_0x1710f5){_0x55c21c[_0x200a('0xd')][_0x9e28db['id']][_0x200a('0x2f')][_0x200a('0x21')]=_0x200a('0x1d');_0x55c21c[_0x200a('0xd')][_0x9e28db['id']]['Smtp'][_0x200a('0x20')]=_0x1710f5;_0x55c21c[_0x200a('0x17')](_0x9e28db['id']);_0x3a16df(_0x1710f5);});});}return this[_0x200a('0xf')][_0x200a('0x30')](_0x9e28db);};module[_0x200a('0x33')]=EmailChannel;