1a7b8280f80d88bacc5a6dcbe9055e743cd0a3e7
[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 _0x471a=['Smtp','verify','then','verified','catch','exports','lodash','moment','bluebird','md5','../../../config/environment','../../../config/logger','email','redis','defaults','./imap','./smtp','../rpc/mailAccount','info','mailAccounts','imapAccounts','smtp','prototype','emit','active','Imap','status','messageStatus','total','stringify','mailAccount:update','hasOwnProperty','service','provider','box','handleImapBox','bind','handleImapEmail','end','error','handleImapError','isNil','connected','name','firstName','lastName','from','Mail\x20accepted\x20from\x20routing','Mail\x20not\x20accepted\x20from\x20routing\x20%s','handleImapEnd','lastSync','sendMail','send','verifySmtp'];(function(_0x36147b,_0x57f40b){var _0x141351=function(_0x219aa1){while(--_0x219aa1){_0x36147b['push'](_0x36147b['shift']());}};_0x141351(++_0x57f40b);}(_0x471a,0x114));var _0xa471=function(_0x3a3a1d,_0x48a798){_0x3a3a1d=_0x3a3a1d-0x0;var _0x1dc5ca=_0x471a[_0x3a3a1d];return _0x1dc5ca;};'use strict';var _=require(_0xa471('0x0'));var moment=require(_0xa471('0x1'));var BPromise=require(_0xa471('0x2'));var md5=require(_0xa471('0x3'));var Redis=require('ioredis');var config=require(_0xa471('0x4'));var logger=require(_0xa471('0x5'))(_0xa471('0x6'));config[_0xa471('0x7')]=_[_0xa471('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var EmailImap=require(_0xa471('0x9'));var EmailSmtp=require(_0xa471('0xa'));var mailAccount=require(_0xa471('0xb'));var md5Accounts={};function EmailChannel(_0xb67976){logger[_0xa471('0xc')]('start\x20email\x20channel');this[_0xa471('0xd')]=_0xb67976[_0xa471('0xd')];this[_0xa471('0xe')]={};this[_0xa471('0xf')]=new EmailSmtp();}EmailChannel[_0xa471('0x10')][_0xa471('0x11')]=function(_0x352e7d){var _0x13c004=this[_0xa471('0xd')][_0x352e7d];var _0x20071c={'id':_0x13c004['id'],'name':_0x13c004['name'],'key':_0x13c004['key'],'active':_0x13c004[_0xa471('0x12')],'Imap':{'status':_0x13c004[_0xa471('0x13')][_0xa471('0x14')],'messageStatus':_0x13c004[_0xa471('0x13')][_0xa471('0x15')],'total':_0x13c004[_0xa471('0x13')][_0xa471('0x16')]}};if(_['isNil'](md5Accounts[_0x352e7d])){md5Accounts[_0x352e7d]={};}var _0xa5ca7b=md5(JSON[_0xa471('0x17')](_0x20071c));if(md5Accounts[_0x352e7d][_0xa471('0x3')]!==_0xa5ca7b){md5Accounts[_0x352e7d][_0xa471('0x3')]=_0xa5ca7b;io['emit'](_0xa471('0x18'),_0x20071c);}};EmailChannel[_0xa471('0x10')]['refresh']=function(_0xd3d1f0){for(var _0x481c0d in _0xd3d1f0){if(_0xd3d1f0[_0xa471('0x19')](_0x481c0d)){if(_0xd3d1f0[_0x481c0d][_0xa471('0x13')]&&_0xd3d1f0[_0x481c0d]['active']){var _0x45c34d=_0xd3d1f0[_0x481c0d]['Imap'];if(!_0x45c34d['service']&&_0xd3d1f0[_0x481c0d]['provider']!=='custom')_0x45c34d[_0xa471('0x1a')]=_0xd3d1f0[_0x481c0d][_0xa471('0x1b')];if(!this[_0xa471('0xe')][_0xa471('0x19')](_0x45c34d['id'])){this[_0xa471('0xe')][_0x45c34d['id']]=new EmailImap(_0x45c34d,_0xd3d1f0[_0x481c0d]['email']);this['imapAccounts'][_0x45c34d['id']]['on'](_0xa471('0x1c'),this[_0xa471('0x1d')][_0xa471('0x1e')](this,_0x481c0d));this[_0xa471('0xe')][_0x45c34d['id']]['on']('email',this[_0xa471('0x1f')][_0xa471('0x1e')](this,_0x481c0d));this[_0xa471('0xe')][_0x45c34d['id']]['on'](_0xa471('0x20'),this['handleImapEnd']['bind'](this,_0x481c0d));this['imapAccounts'][_0x45c34d['id']]['on'](_0xa471('0x21'),this[_0xa471('0x22')][_0xa471('0x1e')](this,_0x481c0d));}}else{if(_[_0xa471('0x23')](this[_0xa471('0xd')][_0x481c0d][_0xa471('0x13')])){this[_0xa471('0xd')][_0x481c0d][_0xa471('0x13')]={};}this[_0xa471('0xd')][_0x481c0d][_0xa471('0x13')][_0xa471('0x14')]='disabled';this[_0xa471('0xd')][_0x481c0d]['Imap']['messageStatus']='';this[_0xa471('0x11')](_0x481c0d);}}}};EmailChannel[_0xa471('0x10')]['handleImapBox']=function(_0x30a08a,_0x49ab94){if(this[_0xa471('0xd')][_0x30a08a]){this[_0xa471('0xd')][_0x30a08a][_0xa471('0x13')]['status']=_0xa471('0x24');this[_0xa471('0xd')][_0x30a08a][_0xa471('0x13')][_0xa471('0x15')]=_0x49ab94[_0xa471('0x25')];if(_0x49ab94['messages']){this[_0xa471('0xd')][_0x30a08a]['Imap'][_0xa471('0x16')]=_0x49ab94['messages'][_0xa471('0x16')];}return this['emit'](_0x30a08a);}};EmailChannel['prototype'][_0xa471('0x1f')]=function(_0x56029c,_0x394ed1){logger['info']('New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s',_0x394ed1[_0xa471('0x26')],_0x394ed1[_0xa471('0x27')],_0x394ed1[_0xa471('0x28')],_0x56029c);if(this['mailAccounts'][_0x56029c]){return mailAccount['notify'](_0x56029c,_0x394ed1)['then'](function(_0x356c07){if(_0x356c07){logger[_0xa471('0xc')](_0xa471('0x29'));}})['catch'](function(_0x51a09c){logger[_0xa471('0x21')](_0xa471('0x2a'),JSON[_0xa471('0x17')](_0x51a09c));});}};EmailChannel['prototype'][_0xa471('0x2b')]=function(_0x37c518){if(this[_0xa471('0xd')][_0x37c518]&&this['mailAccounts'][_0x37c518][_0xa471('0x13')]){if(this['imapAccounts'][this['mailAccounts'][_0x37c518][_0xa471('0x13')]['id']]){delete this[_0xa471('0xe')][this[_0xa471('0xd')][_0x37c518][_0xa471('0x13')]['id']];}this[_0xa471('0xd')][_0x37c518][_0xa471('0x13')][_0xa471('0x2c')]=moment();this[_0xa471('0x11')](_0x37c518);}};EmailChannel[_0xa471('0x10')][_0xa471('0x22')]=function(_0x518e89,_0x351727){if(this[_0xa471('0xd')][_0x518e89]){this[_0xa471('0xd')][_0x518e89][_0xa471('0x13')]['status']=_0xa471('0x21');this[_0xa471('0xd')][_0x518e89][_0xa471('0x13')][_0xa471('0x15')]=_0x351727;return this[_0xa471('0x11')](_0x518e89);}};EmailChannel[_0xa471('0x10')][_0xa471('0x2d')]=function(_0x12d488,_0x23e3c2){return this[_0xa471('0xf')][_0xa471('0x2e')](_0x12d488,_0x23e3c2);};EmailChannel[_0xa471('0x10')][_0xa471('0x2f')]=function(_0x265653){var _0x3b99c2=this;if(this['mailAccounts'][_0x265653['id']]){if(_[_0xa471('0x23')](this[_0xa471('0xd')][_0x265653['id']][_0xa471('0x30')])){this['mailAccounts'][_0x265653['id']]['Smtp']={};}this[_0xa471('0xd')][_0x265653['id']]['Smtp']['lastSync']=moment();return new BPromise(function(_0x55da47,_0x10d278){return _0x3b99c2[_0xa471('0xf')][_0xa471('0x31')](_0x265653)[_0xa471('0x32')](function(_0x5b5e84){_0x3b99c2[_0xa471('0xd')][_0x265653['id']][_0xa471('0x30')][_0xa471('0x14')]=_0xa471('0x33');_0x3b99c2[_0xa471('0xd')][_0x265653['id']]['Smtp'][_0xa471('0x15')]='';_0x3b99c2[_0xa471('0x11')](_0x265653['id']);_0x55da47(_0x5b5e84);})[_0xa471('0x34')](function(_0x252e3d){_0x3b99c2[_0xa471('0xd')][_0x265653['id']][_0xa471('0x30')][_0xa471('0x14')]=_0xa471('0x21');_0x3b99c2[_0xa471('0xd')][_0x265653['id']]['Smtp'][_0xa471('0x15')]=_0x252e3d;_0x3b99c2[_0xa471('0x11')](_0x265653['id']);_0x10d278(_0x252e3d);});});}return this[_0xa471('0xf')]['verify'](_0x265653);};module[_0xa471('0x35')]=EmailChannel;