Built motion from commit 1fd437e9.|2.6.19
[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 _0x30aa=['name','Imap','messageStatus','total','isNil','mailAccount:update','hasOwnProperty','active','service','provider','custom','box','bind','handleImapEmail','end','handleImapEnd','error','handleImapError','status','disabled','handleImapBox','connected','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','lastName','from','then','Mail\x20accepted\x20from\x20routing','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','stringify','sendMail','send','verifySmtp','Smtp','lastSync','verify','exports','moment','bluebird','md5','../../../config/environment','../../../config/logger','email','redis','defaults','localhost','socket.io-emitter','./imap','../rpc/mailAccount','info','mailAccounts','imapAccounts','smtp','prototype','emit'];(function(_0xb8b43f,_0x32f81f){var _0x1f9efa=function(_0x4b4bac){while(--_0x4b4bac){_0xb8b43f['push'](_0xb8b43f['shift']());}};_0x1f9efa(++_0x32f81f);}(_0x30aa,0x10b));var _0xa30a=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x30aa[_0x4cf98e];return _0x1623ac;};'use strict';var _=require('lodash');var moment=require(_0xa30a('0x0'));var BPromise=require(_0xa30a('0x1'));var md5=require(_0xa30a('0x2'));var Redis=require('ioredis');var config=require(_0xa30a('0x3'));var logger=require(_0xa30a('0x4'))(_0xa30a('0x5'));config[_0xa30a('0x6')]=_[_0xa30a('0x7')](config[_0xa30a('0x6')],{'host':_0xa30a('0x8'),'port':0x18eb});var io=require(_0xa30a('0x9'))(new Redis(config[_0xa30a('0x6')]));var EmailImap=require(_0xa30a('0xa'));var EmailSmtp=require('./smtp');var mailAccount=require(_0xa30a('0xb'));var md5Accounts={};function EmailChannel(_0xd948bf){logger[_0xa30a('0xc')]('start\x20email\x20channel');this[_0xa30a('0xd')]=_0xd948bf['mailAccounts'];this[_0xa30a('0xe')]={};this[_0xa30a('0xf')]=new EmailSmtp();}EmailChannel[_0xa30a('0x10')][_0xa30a('0x11')]=function(_0x38c5c8){var _0x39a6ab=this[_0xa30a('0xd')][_0x38c5c8];var _0x4aa572={'id':_0x39a6ab['id'],'name':_0x39a6ab[_0xa30a('0x12')],'key':_0x39a6ab['key'],'active':_0x39a6ab['active'],'Imap':{'status':_0x39a6ab[_0xa30a('0x13')]['status'],'messageStatus':_0x39a6ab[_0xa30a('0x13')][_0xa30a('0x14')],'total':_0x39a6ab[_0xa30a('0x13')][_0xa30a('0x15')]}};if(_[_0xa30a('0x16')](md5Accounts[_0x38c5c8])){md5Accounts[_0x38c5c8]={};}var _0x4eab01=md5(JSON['stringify'](_0x4aa572));if(md5Accounts[_0x38c5c8][_0xa30a('0x2')]!==_0x4eab01){md5Accounts[_0x38c5c8][_0xa30a('0x2')]=_0x4eab01;io[_0xa30a('0x11')](_0xa30a('0x17'),_0x4aa572);}};EmailChannel[_0xa30a('0x10')]['refresh']=function(_0x49ee2b){for(var _0x9deae3 in _0x49ee2b){if(_0x49ee2b[_0xa30a('0x18')](_0x9deae3)){if(_0x49ee2b[_0x9deae3][_0xa30a('0x13')]&&_0x49ee2b[_0x9deae3][_0xa30a('0x19')]){var _0x42cd00=_0x49ee2b[_0x9deae3][_0xa30a('0x13')];if(!_0x42cd00[_0xa30a('0x1a')]&&_0x49ee2b[_0x9deae3][_0xa30a('0x1b')]!==_0xa30a('0x1c'))_0x42cd00[_0xa30a('0x1a')]=_0x49ee2b[_0x9deae3][_0xa30a('0x1b')];if(!this[_0xa30a('0xe')][_0xa30a('0x18')](_0x42cd00['id'])){this[_0xa30a('0xe')][_0x42cd00['id']]=new EmailImap(_0x42cd00,_0x49ee2b[_0x9deae3][_0xa30a('0x5')]);this['imapAccounts'][_0x42cd00['id']]['on'](_0xa30a('0x1d'),this['handleImapBox'][_0xa30a('0x1e')](this,_0x9deae3));this['imapAccounts'][_0x42cd00['id']]['on'](_0xa30a('0x5'),this[_0xa30a('0x1f')][_0xa30a('0x1e')](this,_0x9deae3));this[_0xa30a('0xe')][_0x42cd00['id']]['on'](_0xa30a('0x20'),this[_0xa30a('0x21')][_0xa30a('0x1e')](this,_0x9deae3));this[_0xa30a('0xe')][_0x42cd00['id']]['on'](_0xa30a('0x22'),this[_0xa30a('0x23')][_0xa30a('0x1e')](this,_0x9deae3));}}else{if(_[_0xa30a('0x16')](this[_0xa30a('0xd')][_0x9deae3][_0xa30a('0x13')])){this[_0xa30a('0xd')][_0x9deae3]['Imap']={};}this['mailAccounts'][_0x9deae3][_0xa30a('0x13')][_0xa30a('0x24')]=_0xa30a('0x25');this[_0xa30a('0xd')][_0x9deae3]['Imap']['messageStatus']='';this[_0xa30a('0x11')](_0x9deae3);}}}};EmailChannel[_0xa30a('0x10')][_0xa30a('0x26')]=function(_0x58a22d,_0x2cb3cd){if(this[_0xa30a('0xd')][_0x58a22d]){this['mailAccounts'][_0x58a22d][_0xa30a('0x13')][_0xa30a('0x24')]=_0xa30a('0x27');this['mailAccounts'][_0x58a22d]['Imap']['messageStatus']=_0x2cb3cd[_0xa30a('0x12')];if(_0x2cb3cd[_0xa30a('0x28')]){this[_0xa30a('0xd')][_0x58a22d][_0xa30a('0x13')][_0xa30a('0x15')]=_0x2cb3cd[_0xa30a('0x28')][_0xa30a('0x15')];}return this[_0xa30a('0x11')](_0x58a22d);}};EmailChannel[_0xa30a('0x10')][_0xa30a('0x1f')]=function(_0x4d6f2d,_0x3d8077){logger[_0xa30a('0xc')](_0xa30a('0x29'),_0x3d8077[_0xa30a('0x2a')],_0x3d8077[_0xa30a('0x2b')],_0x3d8077[_0xa30a('0x2c')],_0x4d6f2d);if(this[_0xa30a('0xd')][_0x4d6f2d]){return mailAccount['notify'](_0x4d6f2d,_0x3d8077)[_0xa30a('0x2d')](function(_0x1a8f41){if(_0x1a8f41){logger[_0xa30a('0xc')](_0xa30a('0x2e'));}})[_0xa30a('0x2f')](function(_0x589840){logger[_0xa30a('0x22')](_0xa30a('0x30'),JSON[_0xa30a('0x31')](_0x589840));});}};EmailChannel[_0xa30a('0x10')]['handleImapEnd']=function(_0x5eeded){if(this[_0xa30a('0xd')][_0x5eeded]&&this['mailAccounts'][_0x5eeded][_0xa30a('0x13')]){if(this[_0xa30a('0xe')][this[_0xa30a('0xd')][_0x5eeded][_0xa30a('0x13')]['id']]){delete this[_0xa30a('0xe')][this[_0xa30a('0xd')][_0x5eeded][_0xa30a('0x13')]['id']];}this[_0xa30a('0xd')][_0x5eeded][_0xa30a('0x13')]['lastSync']=moment();this[_0xa30a('0x11')](_0x5eeded);}};EmailChannel['prototype']['handleImapError']=function(_0x5af2a6,_0x38a167){if(this[_0xa30a('0xd')][_0x5af2a6]){this['mailAccounts'][_0x5af2a6][_0xa30a('0x13')][_0xa30a('0x24')]=_0xa30a('0x22');this[_0xa30a('0xd')][_0x5af2a6][_0xa30a('0x13')]['messageStatus']=_0x38a167;return this[_0xa30a('0x11')](_0x5af2a6);}};EmailChannel[_0xa30a('0x10')][_0xa30a('0x32')]=function(_0x5815b5,_0x244f51){return this['smtp'][_0xa30a('0x33')](_0x5815b5,_0x244f51);};EmailChannel['prototype'][_0xa30a('0x34')]=function(_0x58ffa5){var _0x1223b2=this;if(this['mailAccounts'][_0x58ffa5['id']]){if(_[_0xa30a('0x16')](this[_0xa30a('0xd')][_0x58ffa5['id']][_0xa30a('0x35')])){this[_0xa30a('0xd')][_0x58ffa5['id']]['Smtp']={};}this[_0xa30a('0xd')][_0x58ffa5['id']][_0xa30a('0x35')][_0xa30a('0x36')]=moment();return new BPromise(function(_0x52bafa,_0x54e106){return _0x1223b2[_0xa30a('0xf')][_0xa30a('0x37')](_0x58ffa5)[_0xa30a('0x2d')](function(_0x18345b){_0x1223b2[_0xa30a('0xd')][_0x58ffa5['id']]['Smtp'][_0xa30a('0x24')]='verified';_0x1223b2[_0xa30a('0xd')][_0x58ffa5['id']][_0xa30a('0x35')]['messageStatus']='';_0x1223b2[_0xa30a('0x11')](_0x58ffa5['id']);_0x52bafa(_0x18345b);})[_0xa30a('0x2f')](function(_0x30ce0b){_0x1223b2[_0xa30a('0xd')][_0x58ffa5['id']][_0xa30a('0x35')][_0xa30a('0x24')]=_0xa30a('0x22');_0x1223b2['mailAccounts'][_0x58ffa5['id']][_0xa30a('0x35')][_0xa30a('0x14')]=_0x30ce0b;_0x1223b2[_0xa30a('0x11')](_0x58ffa5['id']);_0x54e106(_0x30ce0b);});});}return this[_0xa30a('0xf')]['verify'](_0x58ffa5);};module[_0xa30a('0x38')]=EmailChannel;