292945d841df39f58d5ca0c4a62c5f9f3890b90b
[motion2.git] / server / services / email / lib / utils.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 _0x6eb1=['contentType','parser','from','subject','messageId','inReplyTo','date','YYYY-MM-DD\x20HH:mm:ss','first','BodyHTML','<p>Empty\x20message</p>','Attachments','Data','getHost','gmail','yahoo','hotmail','imap-mail.outlook.com','127.0.0.1','lodash','moment','randomstring','util','node-tnef','../../../config/logger','email','value','address','anonymous','generate','@xcally.com','head','name','length','slice','isEmpty','html','test','replace','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','originTo','message','includes','originCc','bcc','attachments','attach','type','attachment','filename','attachment-','format','%s-%s','now','join','root','server/files/attachments/','content','push'];(function(_0x27e811,_0x20137c){var _0x1627fa=function(_0x4498ca){while(--_0x4498ca){_0x27e811['push'](_0x27e811['shift']());}};_0x1627fa(++_0x20137c);}(_0x6eb1,0x181));var _0x16eb=function(_0x201043,_0x57e46b){_0x201043=_0x201043-0x0;var _0x29e5f2=_0x6eb1[_0x201043];return _0x29e5f2;};'use strict';var _=require(_0x16eb('0x0'));var moment=require(_0x16eb('0x1'));var random=require(_0x16eb('0x2'));var fs=require('fs');var path=require('path');var util=require(_0x16eb('0x3'));var tnef=require(_0x16eb('0x4'));var logger=require(_0x16eb('0x5'))(_0x16eb('0x6'));var config=require('../../../config/environment');function getAddress(_0x5c2e21){var _0x3cc8d2=_['head'](_0x5c2e21[_0x16eb('0x7')]);return _0x3cc8d2&&_0x3cc8d2[_0x16eb('0x8')]?_0x3cc8d2['address']:_0x16eb('0x9')+random[_0x16eb('0xa')](0x6)+_0x16eb('0xb');}function getFirstName(_0x375d55){var _0x3b95b7=_[_0x16eb('0xc')](_0x375d55[_0x16eb('0x7')]);if(_0x3b95b7&&_0x3b95b7[_0x16eb('0xd')]){var _0x2f497e=_0x3b95b7['name']['split'](/\s+/);return _0x2f497e[_0x16eb('0xe')]?_0x2f497e[_0x16eb('0xf')](0x0,-0x1)['join']('\x20'):_0x3b95b7['name'];}return'Anonymous';}function getLastName(_0x5f4678){var _0xfdd3a3=_[_0x16eb('0xc')](_0x5f4678['value']);if(_0xfdd3a3&&_0xfdd3a3['name']){var _0x315dfb=_0xfdd3a3[_0x16eb('0xd')]['split'](/\s+/);return _0x315dfb[_0x16eb('0xe')]>0x1?_0x315dfb['pop']():'';}return'';}function getMails(_0x24767e,_0xfe646){var _0x6a71e6='';for(var _0x2e8b5f=0x0;_0x2e8b5f<_0xfe646[_0x16eb('0x7')][_0x16eb('0xe')];_0x2e8b5f+=0x1){if(_0xfe646[_0x16eb('0x7')][_0x2e8b5f][_0x16eb('0x8')]!==_0x24767e){if(!_[_0x16eb('0x10')](_0x6a71e6)){_0x6a71e6+=',';}_0x6a71e6+=_0xfe646['value'][_0x2e8b5f][_0x16eb('0xd')]||_0xfe646[_0x16eb('0x7')][_0x2e8b5f][_0x16eb('0x8')]||'';_0x6a71e6+='\x20<';_0x6a71e6+=_0xfe646[_0x16eb('0x7')][_0x2e8b5f][_0x16eb('0x8')]?_0xfe646[_0x16eb('0x7')][_0x2e8b5f][_0x16eb('0x8')]:_0x16eb('0x9')+random[_0x16eb('0xa')](0x6)+_0x16eb('0xb');_0x6a71e6+='>';}}return _0x6a71e6;}function parseEmail(_0x31c528,_0xd0a142,_0x54871e){if(_0xd0a142[_0x16eb('0x11')]){var _0x175ecf=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x175ecf[_0x16eb('0x12')](_0xd0a142[_0x16eb('0x11')])){_0xd0a142['html']=_0xd0a142[_0x16eb('0x11')][_0x16eb('0x13')](_0x175ecf,'');}_0x54871e[_0x16eb('0x14')]=_0xd0a142[_0x16eb('0x11')];}else{_0x54871e[_0x16eb('0x14')]=_0xd0a142[_0x16eb('0x15')];}if(_0x54871e[_0x16eb('0x14')]){_0x54871e[_0x16eb('0x14')]=_0x54871e[_0x16eb('0x14')]['replace'](/<a\s+/gi,_0x16eb('0x16'));}if(_0xd0a142['to']){_0x54871e['message'][_0x16eb('0x17')]=getMails(null,_0xd0a142['to']);var _0x4962dd=getMails(_0x31c528[_0x16eb('0x6')],_0xd0a142['to']);if(!_['isEmpty'](_0x4962dd)){_0x54871e[_0x16eb('0x18')]['cc']+=_0x4962dd;}}if(_0xd0a142['cc']){_0x54871e['message']['originCc']=getMails(null,_0xd0a142['cc']);var _0x3b0936=getMails(_0x31c528[_0x16eb('0x6')],_0xd0a142['cc']);if(!_[_0x16eb('0x10')](_0x3b0936)){if(!_[_0x16eb('0x10')](_0x54871e[_0x16eb('0x18')]['cc'])){_0x54871e['message']['cc']+=',';}_0x54871e['message']['cc']+=_0x3b0936;}}if(!_[_0x16eb('0x19')](_0x54871e[_0x16eb('0x18')]['originTo'],_0x31c528['email'])&&!_[_0x16eb('0x19')](_0x54871e[_0x16eb('0x18')][_0x16eb('0x1a')],_0x31c528['email'])){_0x54871e[_0x16eb('0x18')][_0x16eb('0x1b')]=_0x31c528[_0x16eb('0x6')];}if(_0xd0a142[_0x16eb('0x1c')]&&_0xd0a142[_0x16eb('0x1c')][_0x16eb('0xe')]){_0x54871e[_0x16eb('0x18')][_0x16eb('0x1d')]=_0xd0a142[_0x16eb('0x1c')][_0x16eb('0xe')];for(var _0x1dc7f3=0x0,_0x55a18a,_0x5e5d2b,_0x2ddc14;_0x1dc7f3<_0xd0a142['attachments'][_0x16eb('0xe')];_0x1dc7f3+=0x1){if(_0xd0a142[_0x16eb('0x1c')][_0x1dc7f3][_0x16eb('0x1e')]===_0x16eb('0x1f')){_0x2ddc14=_0xd0a142[_0x16eb('0x1c')][_0x1dc7f3][_0x16eb('0x20')]||_0x16eb('0x21')+_0x1dc7f3;_0x55a18a=util[_0x16eb('0x22')](_0x16eb('0x23'),Date[_0x16eb('0x24')](),_0x2ddc14);_0x5e5d2b=path[_0x16eb('0x25')](config[_0x16eb('0x26')],_0x16eb('0x27'),_0x55a18a);fs['writeFileSync'](_0x5e5d2b,_0xd0a142[_0x16eb('0x1c')][_0x1dc7f3][_0x16eb('0x28')]);_0x54871e[_0x16eb('0x18')][_0x16eb('0x1c')][_0x16eb('0x29')]({'name':_0x2ddc14,'basename':_0x55a18a,'type':_0xd0a142[_0x16eb('0x1c')][_0x1dc7f3][_0x16eb('0x2a')],'filepath':_0x5e5d2b});}}}return _0x54871e;}exports[_0x16eb('0x2b')]=function(_0x18e4d0,_0x642850,_0x2c109b){var _0x1c56c0={'from':getAddress(_0x642850[_0x16eb('0x2c')]),'firstName':getFirstName(_0x642850[_0x16eb('0x2c')]),'lastName':getLastName(_0x642850[_0x16eb('0x2c')]),'mapKey':_0x16eb('0x6'),'message':{'from':getMails(_0x18e4d0[_0x16eb('0x6')],_0x642850[_0x16eb('0x2c')]),'to':_0x18e4d0[_0x16eb('0x6')],'cc':'','subject':_0x642850[_0x16eb('0x2d')]||'','messageId':_0x642850[_0x16eb('0x2e')],'inReplyTo':_0x642850[_0x16eb('0x2f')],'sentAt':moment(_0x642850[_0x16eb('0x30')])['format'](_0x16eb('0x31')),'attach':![],'attachments':[]}};if(!_0x642850[_0x16eb('0x11')]&&!_0x642850[_0x16eb('0x15')]){var _0x288ca3=_['filter'](_0x642850['attachments'],{'contentType':'application/ms-tnef'});if(_0x288ca3[_0x16eb('0xe')]){logger['info'](util['format']('Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system',_0x642850[_0x16eb('0x2e')]));tnef['parseBuffer'](_[_0x16eb('0x32')](_0x288ca3)[_0x16eb('0x28')],function(_0x542476,_0x588df0){if(_0x588df0){_0x642850['html']=_0x588df0[_0x16eb('0x33')]||_0x16eb('0x34');if(_0x588df0['Attachments']){for(var _0x3f0c94=0x0;_0x3f0c94<_0x588df0[_0x16eb('0x35')]['length'];_0x3f0c94++){var _0xe4bd63=_0x588df0['Attachments'][_0x3f0c94];_0x1c56c0['message'][_0x16eb('0x1c')][_0x16eb('0x29')]({'filename':_0xe4bd63['Title'],'content':new Buffer(_0xe4bd63[_0x16eb('0x36')])});}}}_0x2c109b(parseEmail(_0x18e4d0,_0x642850,_0x1c56c0));});}else{_0x642850[_0x16eb('0x11')]=_0x16eb('0x34');_0x2c109b(parseEmail(_0x18e4d0,_0x642850,_0x1c56c0));}}else{_0x2c109b(parseEmail(_0x18e4d0,_0x642850,_0x1c56c0));}};exports[_0x16eb('0x37')]=function(_0x37923a){switch(_0x37923a){case _0x16eb('0x38'):return'imap.gmail.com';case _0x16eb('0x39'):return'imap.mail.yahoo.com';case _0x16eb('0x3a'):return _0x16eb('0x3b');case'outlook365':return'outlook.office365.com';}return _0x16eb('0x3c');};