780fcafdfd318d3bd93f69ca6a8e0154bf996458
[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 _0x435b=['bind','handleImapEmail','end','handleImapEnd','error','handleImapError','status','disabled','messageStatus','handleImapBox','connected','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','lastName','then','Mail\x20accepted\x20from\x20routing','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','sendMail','send','verifySmtp','Smtp','lastSync','verified','verify','lodash','moment','bluebird','md5','ioredis','../../../config/environment','email','redis','socket.io-emitter','./imap','info','start\x20email\x20channel','mailAccounts','smtp','prototype','emit','active','Imap','total','isNil','stringify','mailAccount:update','refresh','service','provider','custom','imapAccounts','hasOwnProperty','box'];(function(_0x91d019,_0x5223c4){var _0x19de1f=function(_0x3e1311){while(--_0x3e1311){_0x91d019['push'](_0x91d019['shift']());}};_0x19de1f(++_0x5223c4);}(_0x435b,0x85));var _0xb435=function(_0x1ed262,_0x4c6975){_0x1ed262=_0x1ed262-0x0;var _0x3a96e2=_0x435b[_0x1ed262];return _0x3a96e2;};'use strict';var _=require(_0xb435('0x0'));var moment=require(_0xb435('0x1'));var BPromise=require(_0xb435('0x2'));var md5=require(_0xb435('0x3'));var Redis=require(_0xb435('0x4'));var config=require(_0xb435('0x5'));var logger=require('../../../config/logger')(_0xb435('0x6'));config[_0xb435('0x7')]=_['defaults'](config[_0xb435('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0xb435('0x8'))(new Redis(config[_0xb435('0x7')]));var EmailImap=require(_0xb435('0x9'));var EmailSmtp=require('./smtp');var mailAccount=require('../rpc/mailAccount');var md5Accounts={};function EmailChannel(_0x45acc8){logger[_0xb435('0xa')](_0xb435('0xb'));this[_0xb435('0xc')]=_0x45acc8[_0xb435('0xc')];this['imapAccounts']={};this[_0xb435('0xd')]=new EmailSmtp();}EmailChannel[_0xb435('0xe')][_0xb435('0xf')]=function(_0x54897f){var _0x5bea5b=this['mailAccounts'][_0x54897f];var _0x5deef1={'id':_0x5bea5b['id'],'name':_0x5bea5b['name'],'key':_0x5bea5b['key'],'active':_0x5bea5b[_0xb435('0x10')],'Imap':{'status':_0x5bea5b['Imap']['status'],'messageStatus':_0x5bea5b[_0xb435('0x11')]['messageStatus'],'total':_0x5bea5b['Imap'][_0xb435('0x12')]}};if(_[_0xb435('0x13')](md5Accounts[_0x54897f])){md5Accounts[_0x54897f]={};}var _0x579c1a=md5(JSON[_0xb435('0x14')](_0x5deef1));if(md5Accounts[_0x54897f][_0xb435('0x3')]!==_0x579c1a){md5Accounts[_0x54897f][_0xb435('0x3')]=_0x579c1a;io['emit'](_0xb435('0x15'),_0x5deef1);}};EmailChannel['prototype'][_0xb435('0x16')]=function(_0x11bd36){for(var _0x1effa3 in _0x11bd36){if(_0x11bd36['hasOwnProperty'](_0x1effa3)){if(_0x11bd36[_0x1effa3]['Imap']&&_0x11bd36[_0x1effa3][_0xb435('0x10')]){var _0x88930e=_0x11bd36[_0x1effa3][_0xb435('0x11')];if(!_0x88930e[_0xb435('0x17')]&&_0x11bd36[_0x1effa3][_0xb435('0x18')]!==_0xb435('0x19'))_0x88930e[_0xb435('0x17')]=_0x11bd36[_0x1effa3]['provider'];if(!this[_0xb435('0x1a')][_0xb435('0x1b')](_0x88930e['id'])){this[_0xb435('0x1a')][_0x88930e['id']]=new EmailImap(_0x88930e,_0x11bd36[_0x1effa3][_0xb435('0x6')]);this['imapAccounts'][_0x88930e['id']]['on'](_0xb435('0x1c'),this['handleImapBox'][_0xb435('0x1d')](this,_0x1effa3));this[_0xb435('0x1a')][_0x88930e['id']]['on'](_0xb435('0x6'),this[_0xb435('0x1e')][_0xb435('0x1d')](this,_0x1effa3));this['imapAccounts'][_0x88930e['id']]['on'](_0xb435('0x1f'),this[_0xb435('0x20')][_0xb435('0x1d')](this,_0x1effa3));this[_0xb435('0x1a')][_0x88930e['id']]['on'](_0xb435('0x21'),this[_0xb435('0x22')][_0xb435('0x1d')](this,_0x1effa3));}}else{if(_[_0xb435('0x13')](this[_0xb435('0xc')][_0x1effa3][_0xb435('0x11')])){this[_0xb435('0xc')][_0x1effa3][_0xb435('0x11')]={};}this[_0xb435('0xc')][_0x1effa3][_0xb435('0x11')][_0xb435('0x23')]=_0xb435('0x24');this[_0xb435('0xc')][_0x1effa3]['Imap'][_0xb435('0x25')]='';this[_0xb435('0xf')](_0x1effa3);}}}};EmailChannel[_0xb435('0xe')][_0xb435('0x26')]=function(_0x2a9595,_0x299799){if(this[_0xb435('0xc')][_0x2a9595]){this['mailAccounts'][_0x2a9595]['Imap'][_0xb435('0x23')]=_0xb435('0x27');this[_0xb435('0xc')][_0x2a9595][_0xb435('0x11')]['messageStatus']=_0x299799['name'];if(_0x299799[_0xb435('0x28')]){this['mailAccounts'][_0x2a9595][_0xb435('0x11')][_0xb435('0x12')]=_0x299799[_0xb435('0x28')]['total'];}return this[_0xb435('0xf')](_0x2a9595);}};EmailChannel[_0xb435('0xe')][_0xb435('0x1e')]=function(_0x4c8992,_0x3bf6a5){logger[_0xb435('0xa')](_0xb435('0x29'),_0x3bf6a5['firstName'],_0x3bf6a5[_0xb435('0x2a')],_0x3bf6a5['from'],_0x4c8992);if(this['mailAccounts'][_0x4c8992]){return mailAccount['notify'](_0x4c8992,_0x3bf6a5)[_0xb435('0x2b')](function(_0x313ad3){if(_0x313ad3){logger[_0xb435('0xa')](_0xb435('0x2c'));}})[_0xb435('0x2d')](function(_0x111fd3){logger[_0xb435('0x21')](_0xb435('0x2e'),JSON[_0xb435('0x14')](_0x111fd3));});}};EmailChannel[_0xb435('0xe')][_0xb435('0x20')]=function(_0xd28680){if(this[_0xb435('0xc')][_0xd28680]&&this[_0xb435('0xc')][_0xd28680][_0xb435('0x11')]){if(this[_0xb435('0x1a')][this[_0xb435('0xc')][_0xd28680][_0xb435('0x11')]['id']]){delete this[_0xb435('0x1a')][this[_0xb435('0xc')][_0xd28680]['Imap']['id']];}this[_0xb435('0xc')][_0xd28680][_0xb435('0x11')]['lastSync']=moment();this[_0xb435('0xf')](_0xd28680);}};EmailChannel[_0xb435('0xe')][_0xb435('0x22')]=function(_0x279756,_0x57e7c1){if(this['mailAccounts'][_0x279756]){this[_0xb435('0xc')][_0x279756][_0xb435('0x11')][_0xb435('0x23')]=_0xb435('0x21');this[_0xb435('0xc')][_0x279756][_0xb435('0x11')][_0xb435('0x25')]=_0x57e7c1;return this[_0xb435('0xf')](_0x279756);}};EmailChannel[_0xb435('0xe')][_0xb435('0x2f')]=function(_0x6a7f68,_0x2dd017){return this['smtp'][_0xb435('0x30')](_0x6a7f68,_0x2dd017);};EmailChannel[_0xb435('0xe')][_0xb435('0x31')]=function(_0x4d88e2){var _0x282a58=this;if(this[_0xb435('0xc')][_0x4d88e2['id']]){if(_[_0xb435('0x13')](this[_0xb435('0xc')][_0x4d88e2['id']][_0xb435('0x32')])){this[_0xb435('0xc')][_0x4d88e2['id']][_0xb435('0x32')]={};}this['mailAccounts'][_0x4d88e2['id']][_0xb435('0x32')][_0xb435('0x33')]=moment();return new BPromise(function(_0x278ff0,_0x35e09c){return _0x282a58[_0xb435('0xd')]['verify'](_0x4d88e2)[_0xb435('0x2b')](function(_0x386011){_0x282a58[_0xb435('0xc')][_0x4d88e2['id']][_0xb435('0x32')]['status']=_0xb435('0x34');_0x282a58['mailAccounts'][_0x4d88e2['id']][_0xb435('0x32')][_0xb435('0x25')]='';_0x282a58['emit'](_0x4d88e2['id']);_0x278ff0(_0x386011);})[_0xb435('0x2d')](function(_0x41ee0e){_0x282a58[_0xb435('0xc')][_0x4d88e2['id']][_0xb435('0x32')][_0xb435('0x23')]=_0xb435('0x21');_0x282a58[_0xb435('0xc')][_0x4d88e2['id']][_0xb435('0x32')][_0xb435('0x25')]=_0x41ee0e;_0x282a58['emit'](_0x4d88e2['id']);_0x35e09c(_0x41ee0e);});});}return this['smtp'][_0xb435('0x35')](_0x4d88e2);};module['exports']=EmailChannel;