Built motion from commit ff78e754.|2.6.29
[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 _0x2216=['imapAccounts','smtp','prototype','emit','mailAccounts','name','key','Imap','status','messageStatus','total','isNil','md5','mailAccount:update','hasOwnProperty','active','service','provider','handleImapBox','bind','handleImapEmail','handleImapEnd','error','handleImapError','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','from','notify','then','Mail\x20accepted\x20from\x20routing','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','lastSync','sendMail','send','Smtp','verify','exports','lodash','moment','ioredis','../../../config/environment','../../../config/logger','email','redis','./imap','./smtp','../rpc/mailAccount','info','start\x20email\x20channel'];(function(_0x50cebd,_0xe63512){var _0x583303=function(_0x552fc7){while(--_0x552fc7){_0x50cebd['push'](_0x50cebd['shift']());}};_0x583303(++_0xe63512);}(_0x2216,0xf3));var _0x6221=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x2216[_0xbca1b1];return _0x4e1686;};'use strict';var _=require(_0x6221('0x0'));var moment=require(_0x6221('0x1'));var BPromise=require('bluebird');var md5=require('md5');var Redis=require(_0x6221('0x2'));var config=require(_0x6221('0x3'));var logger=require(_0x6221('0x4'))(_0x6221('0x5'));config[_0x6221('0x6')]=_['defaults'](config[_0x6221('0x6')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x6221('0x6')]));var EmailImap=require(_0x6221('0x7'));var EmailSmtp=require(_0x6221('0x8'));var mailAccount=require(_0x6221('0x9'));var md5Accounts={};function EmailChannel(_0x3d0c8c){logger[_0x6221('0xa')](_0x6221('0xb'));this['mailAccounts']=_0x3d0c8c['mailAccounts'];this[_0x6221('0xc')]={};this[_0x6221('0xd')]=new EmailSmtp();}EmailChannel[_0x6221('0xe')][_0x6221('0xf')]=function(_0x2990ce){var _0x28f231=this[_0x6221('0x10')][_0x2990ce];var _0x4cf95c={'id':_0x28f231['id'],'name':_0x28f231[_0x6221('0x11')],'key':_0x28f231[_0x6221('0x12')],'active':_0x28f231['active'],'Imap':{'status':_0x28f231[_0x6221('0x13')][_0x6221('0x14')],'messageStatus':_0x28f231[_0x6221('0x13')][_0x6221('0x15')],'total':_0x28f231[_0x6221('0x13')][_0x6221('0x16')]}};if(_[_0x6221('0x17')](md5Accounts[_0x2990ce])){md5Accounts[_0x2990ce]={};}var _0x446fc3=md5(JSON['stringify'](_0x4cf95c));if(md5Accounts[_0x2990ce][_0x6221('0x18')]!==_0x446fc3){md5Accounts[_0x2990ce][_0x6221('0x18')]=_0x446fc3;io[_0x6221('0xf')](_0x6221('0x19'),_0x4cf95c);}};EmailChannel[_0x6221('0xe')]['refresh']=function(_0x44fc3e){for(var _0x543e3e in _0x44fc3e){if(_0x44fc3e[_0x6221('0x1a')](_0x543e3e)){if(_0x44fc3e[_0x543e3e][_0x6221('0x13')]&&_0x44fc3e[_0x543e3e][_0x6221('0x1b')]){var _0x2f475c=_0x44fc3e[_0x543e3e]['Imap'];if(!_0x2f475c[_0x6221('0x1c')]&&_0x44fc3e[_0x543e3e][_0x6221('0x1d')]!=='custom')_0x2f475c[_0x6221('0x1c')]=_0x44fc3e[_0x543e3e][_0x6221('0x1d')];if(!this[_0x6221('0xc')][_0x6221('0x1a')](_0x2f475c['id'])){this[_0x6221('0xc')][_0x2f475c['id']]=new EmailImap(_0x2f475c,_0x44fc3e[_0x543e3e][_0x6221('0x5')]);this['imapAccounts'][_0x2f475c['id']]['on']('box',this[_0x6221('0x1e')][_0x6221('0x1f')](this,_0x543e3e));this['imapAccounts'][_0x2f475c['id']]['on']('email',this[_0x6221('0x20')][_0x6221('0x1f')](this,_0x543e3e));this[_0x6221('0xc')][_0x2f475c['id']]['on']('end',this[_0x6221('0x21')][_0x6221('0x1f')](this,_0x543e3e));this[_0x6221('0xc')][_0x2f475c['id']]['on'](_0x6221('0x22'),this[_0x6221('0x23')][_0x6221('0x1f')](this,_0x543e3e));}}else{if(_['isNil'](this[_0x6221('0x10')][_0x543e3e]['Imap'])){this[_0x6221('0x10')][_0x543e3e][_0x6221('0x13')]={};}this['mailAccounts'][_0x543e3e]['Imap'][_0x6221('0x14')]='disabled';this['mailAccounts'][_0x543e3e][_0x6221('0x13')][_0x6221('0x15')]='';this[_0x6221('0xf')](_0x543e3e);}}}};EmailChannel['prototype'][_0x6221('0x1e')]=function(_0x290c64,_0xb84250){if(this[_0x6221('0x10')][_0x290c64]){this['mailAccounts'][_0x290c64]['Imap'][_0x6221('0x14')]='connected';this['mailAccounts'][_0x290c64][_0x6221('0x13')][_0x6221('0x15')]=_0xb84250['name'];if(_0xb84250[_0x6221('0x24')]){this[_0x6221('0x10')][_0x290c64][_0x6221('0x13')][_0x6221('0x16')]=_0xb84250[_0x6221('0x24')][_0x6221('0x16')];}return this[_0x6221('0xf')](_0x290c64);}};EmailChannel[_0x6221('0xe')][_0x6221('0x20')]=function(_0x2a5d8c,_0x29cd10){logger[_0x6221('0xa')](_0x6221('0x25'),_0x29cd10[_0x6221('0x26')],_0x29cd10['lastName'],_0x29cd10[_0x6221('0x27')],_0x2a5d8c);if(this[_0x6221('0x10')][_0x2a5d8c]){return mailAccount[_0x6221('0x28')](_0x2a5d8c,_0x29cd10)[_0x6221('0x29')](function(_0x29ef7e){if(_0x29ef7e){logger[_0x6221('0xa')](_0x6221('0x2a'));}})[_0x6221('0x2b')](function(_0x599f0c){logger[_0x6221('0x22')](_0x6221('0x2c'),JSON['stringify'](_0x599f0c));});}};EmailChannel[_0x6221('0xe')][_0x6221('0x21')]=function(_0x12f65c){if(this['mailAccounts'][_0x12f65c]&&this[_0x6221('0x10')][_0x12f65c][_0x6221('0x13')]){if(this[_0x6221('0xc')][this[_0x6221('0x10')][_0x12f65c][_0x6221('0x13')]['id']]){delete this[_0x6221('0xc')][this[_0x6221('0x10')][_0x12f65c]['Imap']['id']];}this[_0x6221('0x10')][_0x12f65c][_0x6221('0x13')][_0x6221('0x2d')]=moment();this[_0x6221('0xf')](_0x12f65c);}};EmailChannel['prototype'][_0x6221('0x23')]=function(_0x57876b,_0x290cbc){if(this[_0x6221('0x10')][_0x57876b]){this[_0x6221('0x10')][_0x57876b][_0x6221('0x13')][_0x6221('0x14')]=_0x6221('0x22');this[_0x6221('0x10')][_0x57876b]['Imap'][_0x6221('0x15')]=_0x290cbc;return this[_0x6221('0xf')](_0x57876b);}};EmailChannel[_0x6221('0xe')][_0x6221('0x2e')]=function(_0x512560,_0x3c9ecd){return this[_0x6221('0xd')][_0x6221('0x2f')](_0x512560,_0x3c9ecd);};EmailChannel[_0x6221('0xe')]['verifySmtp']=function(_0x513727){var _0xc17b47=this;if(this[_0x6221('0x10')][_0x513727['id']]){if(_[_0x6221('0x17')](this[_0x6221('0x10')][_0x513727['id']]['Smtp'])){this['mailAccounts'][_0x513727['id']][_0x6221('0x30')]={};}this['mailAccounts'][_0x513727['id']][_0x6221('0x30')][_0x6221('0x2d')]=moment();return new BPromise(function(_0x1d832f,_0x4a26d1){return _0xc17b47[_0x6221('0xd')][_0x6221('0x31')](_0x513727)['then'](function(_0x12f25b){_0xc17b47['mailAccounts'][_0x513727['id']][_0x6221('0x30')]['status']='verified';_0xc17b47['mailAccounts'][_0x513727['id']]['Smtp'][_0x6221('0x15')]='';_0xc17b47[_0x6221('0xf')](_0x513727['id']);_0x1d832f(_0x12f25b);})[_0x6221('0x2b')](function(_0x13c89d){_0xc17b47[_0x6221('0x10')][_0x513727['id']][_0x6221('0x30')][_0x6221('0x14')]='error';_0xc17b47[_0x6221('0x10')][_0x513727['id']]['Smtp'][_0x6221('0x15')]=_0x13c89d;_0xc17b47[_0x6221('0xf')](_0x513727['id']);_0x4a26d1(_0x13c89d);});});}return this[_0x6221('0xd')][_0x6221('0x31')](_0x513727);};module[_0x6221('0x32')]=EmailChannel;