83b739fe2a175858924b9eca56d68063af6da3cc
[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 _0x4ce7=['bluebird','md5','ioredis','email','redis','socket.io-emitter','./imap','../rpc/mailAccount','info','start\x20email\x20channel','mailAccounts','imapAccounts','smtp','prototype','emit','name','key','active','status','Imap','messageStatus','total','isNil','stringify','mailAccount:update','refresh','hasOwnProperty','box','handleImapBox','handleImapEmail','end','handleImapEnd','bind','error','handleImapError','disabled','messages','firstName','lastName','notify','Mail\x20accepted\x20from\x20routing','catch','sendMail','send','Smtp','lastSync','then','verified','exports','moment'];(function(_0x2cfa6d,_0x5e0ea8){var _0x3b4bcf=function(_0x27fb46){while(--_0x27fb46){_0x2cfa6d['push'](_0x2cfa6d['shift']());}};_0x3b4bcf(++_0x5e0ea8);}(_0x4ce7,0x1f3));var _0x74ce=function(_0x2d08ef,_0x5548bb){_0x2d08ef=_0x2d08ef-0x0;var _0x51aabb=_0x4ce7[_0x2d08ef];return _0x51aabb;};'use strict';var _=require('lodash');var moment=require(_0x74ce('0x0'));var BPromise=require(_0x74ce('0x1'));var md5=require(_0x74ce('0x2'));var Redis=require(_0x74ce('0x3'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x74ce('0x4'));config[_0x74ce('0x5')]=_['defaults'](config[_0x74ce('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x74ce('0x6'))(new Redis(config[_0x74ce('0x5')]));var EmailImap=require(_0x74ce('0x7'));var EmailSmtp=require('./smtp');var mailAccount=require(_0x74ce('0x8'));var md5Accounts={};function EmailChannel(_0x56d05d){logger[_0x74ce('0x9')](_0x74ce('0xa'));this[_0x74ce('0xb')]=_0x56d05d['mailAccounts'];this[_0x74ce('0xc')]={};this[_0x74ce('0xd')]=new EmailSmtp();}EmailChannel[_0x74ce('0xe')][_0x74ce('0xf')]=function(_0x15b8aa){var _0x3b4e15=this['mailAccounts'][_0x15b8aa];var _0x49c0c4={'id':_0x3b4e15['id'],'name':_0x3b4e15[_0x74ce('0x10')],'key':_0x3b4e15[_0x74ce('0x11')],'active':_0x3b4e15[_0x74ce('0x12')],'Imap':{'status':_0x3b4e15['Imap'][_0x74ce('0x13')],'messageStatus':_0x3b4e15[_0x74ce('0x14')][_0x74ce('0x15')],'total':_0x3b4e15['Imap'][_0x74ce('0x16')]}};if(_[_0x74ce('0x17')](md5Accounts[_0x15b8aa])){md5Accounts[_0x15b8aa]={};}var _0x42f369=md5(JSON[_0x74ce('0x18')](_0x49c0c4));if(md5Accounts[_0x15b8aa][_0x74ce('0x2')]!==_0x42f369){md5Accounts[_0x15b8aa][_0x74ce('0x2')]=_0x42f369;io[_0x74ce('0xf')](_0x74ce('0x19'),_0x49c0c4);}};EmailChannel['prototype'][_0x74ce('0x1a')]=function(_0x1f548a){for(var _0x24e49c in _0x1f548a){if(_0x1f548a[_0x74ce('0x1b')](_0x24e49c)){if(_0x1f548a[_0x24e49c]['Imap']&&_0x1f548a[_0x24e49c][_0x74ce('0x12')]){var _0xa72148=_0x1f548a[_0x24e49c]['Imap'];if(!this[_0x74ce('0xc')][_0x74ce('0x1b')](_0xa72148['id'])){this[_0x74ce('0xc')][_0xa72148['id']]=new EmailImap(_0xa72148,_0x1f548a[_0x24e49c]['email']);this[_0x74ce('0xc')][_0xa72148['id']]['on'](_0x74ce('0x1c'),this[_0x74ce('0x1d')]['bind'](this,_0x24e49c));this[_0x74ce('0xc')][_0xa72148['id']]['on'](_0x74ce('0x4'),this[_0x74ce('0x1e')]['bind'](this,_0x24e49c));this[_0x74ce('0xc')][_0xa72148['id']]['on'](_0x74ce('0x1f'),this[_0x74ce('0x20')][_0x74ce('0x21')](this,_0x24e49c));this[_0x74ce('0xc')][_0xa72148['id']]['on'](_0x74ce('0x22'),this[_0x74ce('0x23')][_0x74ce('0x21')](this,_0x24e49c));}}else{if(_[_0x74ce('0x17')](this['mailAccounts'][_0x24e49c][_0x74ce('0x14')])){this[_0x74ce('0xb')][_0x24e49c][_0x74ce('0x14')]={};}this['mailAccounts'][_0x24e49c][_0x74ce('0x14')][_0x74ce('0x13')]=_0x74ce('0x24');this[_0x74ce('0xb')][_0x24e49c]['Imap']['messageStatus']='';this[_0x74ce('0xf')](_0x24e49c);}}}};EmailChannel[_0x74ce('0xe')]['handleImapBox']=function(_0x4c475e,_0x5448f5){if(this[_0x74ce('0xb')][_0x4c475e]){this['mailAccounts'][_0x4c475e][_0x74ce('0x14')][_0x74ce('0x13')]='connected';this[_0x74ce('0xb')][_0x4c475e][_0x74ce('0x14')][_0x74ce('0x15')]=_0x5448f5[_0x74ce('0x10')];if(_0x5448f5[_0x74ce('0x25')]){this[_0x74ce('0xb')][_0x4c475e][_0x74ce('0x14')][_0x74ce('0x16')]=_0x5448f5['messages']['total'];}return this[_0x74ce('0xf')](_0x4c475e);}};EmailChannel['prototype'][_0x74ce('0x1e')]=function(_0x4aff14,_0x35afbf){logger[_0x74ce('0x9')]('New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s',_0x35afbf[_0x74ce('0x26')],_0x35afbf[_0x74ce('0x27')],_0x35afbf['from'],_0x4aff14);if(this[_0x74ce('0xb')][_0x4aff14]){return mailAccount[_0x74ce('0x28')](_0x4aff14,_0x35afbf)['then'](function(_0x435f23){if(_0x435f23){logger[_0x74ce('0x9')](_0x74ce('0x29'));}})[_0x74ce('0x2a')](function(_0x555c7a){logger[_0x74ce('0x22')]('Mail\x20not\x20accepted\x20from\x20routing\x20%s',JSON[_0x74ce('0x18')](_0x555c7a));});}};EmailChannel['prototype'][_0x74ce('0x20')]=function(_0x5d2faa){if(this[_0x74ce('0xb')][_0x5d2faa]&&this[_0x74ce('0xb')][_0x5d2faa]['Imap']){if(this[_0x74ce('0xc')][this[_0x74ce('0xb')][_0x5d2faa][_0x74ce('0x14')]['id']]){delete this[_0x74ce('0xc')][this['mailAccounts'][_0x5d2faa]['Imap']['id']];}this['mailAccounts'][_0x5d2faa][_0x74ce('0x14')]['lastSync']=moment();this[_0x74ce('0xf')](_0x5d2faa);}};EmailChannel[_0x74ce('0xe')][_0x74ce('0x23')]=function(_0x5b52e7,_0x1d6558){if(this[_0x74ce('0xb')][_0x5b52e7]){this[_0x74ce('0xb')][_0x5b52e7][_0x74ce('0x14')][_0x74ce('0x13')]=_0x74ce('0x22');this[_0x74ce('0xb')][_0x5b52e7][_0x74ce('0x14')][_0x74ce('0x15')]=_0x1d6558;return this['emit'](_0x5b52e7);}};EmailChannel[_0x74ce('0xe')][_0x74ce('0x2b')]=function(_0x2432ca,_0xb71bd6){return this[_0x74ce('0xd')][_0x74ce('0x2c')](_0x2432ca,_0xb71bd6);};EmailChannel[_0x74ce('0xe')]['verifySmtp']=function(_0x58578d){var _0x5713d7=this;if(this[_0x74ce('0xb')][_0x58578d['id']]){if(_[_0x74ce('0x17')](this['mailAccounts'][_0x58578d['id']][_0x74ce('0x2d')])){this[_0x74ce('0xb')][_0x58578d['id']][_0x74ce('0x2d')]={};}this['mailAccounts'][_0x58578d['id']][_0x74ce('0x2d')][_0x74ce('0x2e')]=moment();return new BPromise(function(_0x27ed5c,_0x21f5c2){return _0x5713d7[_0x74ce('0xd')]['verify'](_0x58578d)[_0x74ce('0x2f')](function(_0x4d14b0){_0x5713d7[_0x74ce('0xb')][_0x58578d['id']][_0x74ce('0x2d')][_0x74ce('0x13')]=_0x74ce('0x30');_0x5713d7[_0x74ce('0xb')][_0x58578d['id']][_0x74ce('0x2d')][_0x74ce('0x15')]='';_0x5713d7[_0x74ce('0xf')](_0x58578d['id']);_0x27ed5c(_0x4d14b0);})[_0x74ce('0x2a')](function(_0x20b531){_0x5713d7[_0x74ce('0xb')][_0x58578d['id']][_0x74ce('0x2d')]['status']='error';_0x5713d7[_0x74ce('0xb')][_0x58578d['id']][_0x74ce('0x2d')][_0x74ce('0x15')]=_0x20b531;_0x5713d7['emit'](_0x58578d['id']);_0x21f5c2(_0x20b531);});});}return this['smtp']['verify'](_0x58578d);};module[_0x74ce('0x31')]=EmailChannel;