e2f688513c6e32f98c62f1da038efea507a2029b
[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 _0x2490=['split','length','slice','join','Anonymous','pop','isEmpty','@xcally.com','test','html','replace','includes','forEach','push','filename','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','body','textAsHtml','originTo','message','originCc','bcc','attachments','attach','type','attachment','attachment-','format','now','root','server/files/attachments/','writeFileSync','content','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','isAutoreply','from','subject','messageId','inReplyTo','date','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','BodyHTML','<p>Empty\x20message</p>','Attachments','Data','generateXOAuth2Token','user=','auth=Bearer\x20','utf-8','toString','path','node-tnef','../../../config/logger','email','head','value','address','anonymous','generate','name','substring','indexOf'];(function(_0x6c2cd2,_0x4d6050){var _0x49bbad=function(_0x2f8881){while(--_0x2f8881){_0x6c2cd2['push'](_0x6c2cd2['shift']());}};_0x49bbad(++_0x4d6050);}(_0x2490,0x7e));var _0x0249=function(_0x4e3cbd,_0x1e40c6){_0x4e3cbd=_0x4e3cbd-0x0;var _0x38fd98=_0x2490[_0x4e3cbd];return _0x38fd98;};'use strict';var _=require('lodash');var moment=require('moment');var random=require('randomstring');var fs=require('fs');var path=require(_0x0249('0x0'));var util=require('util');var tnef=require(_0x0249('0x1'));var logger=require(_0x0249('0x2'))(_0x0249('0x3'));var config=require('../../../config/environment');function getAddress(_0x2fde52){var _0x3dfb08=_[_0x0249('0x4')](_0x2fde52[_0x0249('0x5')]);return _0x3dfb08&&_0x3dfb08[_0x0249('0x6')]?_0x3dfb08[_0x0249('0x6')]:_0x0249('0x7')+random[_0x0249('0x8')](0x6)+'@xcally.com';}function getFirstName(_0x398e0a){var _0x4deca3=_[_0x0249('0x4')](_0x398e0a['value']);if(_0x4deca3&&_0x4deca3[_0x0249('0x9')]){if(_0x4deca3[_0x0249('0x9')]==_0x4deca3['address']){return _0x4deca3[_0x0249('0x9')][_0x0249('0xa')](0x0,_0x4deca3['name'][_0x0249('0xb')]('@'));}var _0x776d=_0x4deca3[_0x0249('0x9')][_0x0249('0xc')](/\s+/);return _0x776d[_0x0249('0xd')]>0x1?_0x776d[_0x0249('0xe')](0x0,-0x1)[_0x0249('0xf')]('\x20'):_0x4deca3[_0x0249('0x9')];}return _0x0249('0x10');}function getLastName(_0x554a59){var _0x21d107=_[_0x0249('0x4')](_0x554a59[_0x0249('0x5')]);if(_0x21d107&&_0x21d107['name']){var _0x11b40d=_0x21d107[_0x0249('0x9')][_0x0249('0xc')](/\s+/);return _0x11b40d['length']>0x1?_0x11b40d[_0x0249('0x11')]():'';}return'';}function getMails(_0x520165,_0x1439b2){var _0x4f8692='';for(var _0x1d394b=0x0;_0x1d394b<_0x1439b2[_0x0249('0x5')][_0x0249('0xd')];_0x1d394b+=0x1){if(_0x1439b2[_0x0249('0x5')][_0x1d394b][_0x0249('0x6')]!==_0x520165){if(!_[_0x0249('0x12')](_0x4f8692)){_0x4f8692+=',';}_0x4f8692+=_0x1439b2[_0x0249('0x5')][_0x1d394b][_0x0249('0x9')]||_0x1439b2['value'][_0x1d394b][_0x0249('0x6')]||'';_0x4f8692+='\x20<';_0x4f8692+=_0x1439b2[_0x0249('0x5')][_0x1d394b]['address']?_0x1439b2[_0x0249('0x5')][_0x1d394b][_0x0249('0x6')]:_0x0249('0x7')+random['generate'](0x6)+_0x0249('0x13');_0x4f8692+='>';}}return _0x4f8692;}function parseEmail(_0x5bb444,_0x4ff7d4,_0x565769){if(_0x4ff7d4['html']){var _0x503813=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x503813[_0x0249('0x14')](_0x4ff7d4[_0x0249('0x15')])){_0x4ff7d4[_0x0249('0x15')]=_0x4ff7d4['html'][_0x0249('0x16')](_0x503813,'');}if(_0x4ff7d4[_0x0249('0x15')][_0x0249('0x17')]('<img')){var _0x3c59a6=[];_0x4ff7d4['attachments'][_0x0249('0x18')](_0x23268e=>{_0x3c59a6[_0x0249('0x19')](_0x23268e[_0x0249('0x1a')]);});var _0x110aba=/<img.*? _SRC(.*?)[^>]+>/g;var _0x28fc8e=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x43c1d2=_0x4ff7d4[_0x0249('0x15')][_0x0249('0x16')](_0x28fc8e,_0x0249('0x1b'));var _0x3b271a=_0x43c1d2['replace'](_0x110aba,_0x0249('0x1c'));for(let _0xcf316b=0x0;_0xcf316b<_0x3c59a6[_0x0249('0xd')];_0xcf316b++){var _0x585baa=_0x3b271a['replace'](_0x0249('0x1c'),_0x0249('0x1d')+_0x3c59a6[_0xcf316b]+'\x20]</span>');_0x3b271a=_0x585baa;}_0x4ff7d4['html']=_0x3b271a;}_0x565769[_0x0249('0x1e')]=_0x4ff7d4[_0x0249('0x15')];}else{_0x565769[_0x0249('0x1e')]=_0x4ff7d4[_0x0249('0x1f')];}if(_0x565769[_0x0249('0x1e')]){_0x565769[_0x0249('0x1e')]=_0x565769[_0x0249('0x1e')][_0x0249('0x16')](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x4ff7d4['to']){_0x565769['message'][_0x0249('0x20')]=getMails(null,_0x4ff7d4['to']);var _0x4fe583=getMails(_0x5bb444[_0x0249('0x3')],_0x4ff7d4['to']);if(!_[_0x0249('0x12')](_0x4fe583)){_0x565769[_0x0249('0x21')]['cc']+=_0x4fe583;}}if(_0x4ff7d4['cc']){_0x565769[_0x0249('0x21')][_0x0249('0x22')]=getMails(null,_0x4ff7d4['cc']);var _0x146a67=getMails(_0x5bb444[_0x0249('0x3')],_0x4ff7d4['cc']);if(!_['isEmpty'](_0x146a67)){if(!_[_0x0249('0x12')](_0x565769['message']['cc'])){_0x565769['message']['cc']+=',';}_0x565769[_0x0249('0x21')]['cc']+=_0x146a67;}}if(!_['includes'](_0x565769[_0x0249('0x21')]['originTo'],_0x5bb444['email'])&&!_['includes'](_0x565769[_0x0249('0x21')][_0x0249('0x22')],_0x5bb444[_0x0249('0x3')])){_0x565769['message'][_0x0249('0x23')]=_0x5bb444[_0x0249('0x3')];}if(_0x4ff7d4['attachments']&&_0x4ff7d4[_0x0249('0x24')]['length']){_0x565769[_0x0249('0x21')][_0x0249('0x25')]=_0x4ff7d4['attachments'][_0x0249('0xd')];for(var _0x315d58=0x0,_0x24d139,_0x12d057,_0x3ca992;_0x315d58<_0x4ff7d4[_0x0249('0x24')][_0x0249('0xd')];_0x315d58+=0x1){if(_0x4ff7d4['attachments'][_0x315d58][_0x0249('0x26')]===_0x0249('0x27')){_0x3ca992=_0x4ff7d4[_0x0249('0x24')][_0x315d58]['filename']||_0x0249('0x28')+_0x315d58;_0x24d139=util[_0x0249('0x29')]('%s-%s',Date[_0x0249('0x2a')](),_0x3ca992);_0x12d057=path['join'](config[_0x0249('0x2b')],_0x0249('0x2c'),_0x24d139);fs[_0x0249('0x2d')](_0x12d057,_0x4ff7d4[_0x0249('0x24')][_0x315d58][_0x0249('0x2e')]);_0x565769[_0x0249('0x21')]['attachments'][_0x0249('0x19')]({'name':_0x3ca992,'basename':_0x24d139,'type':_0x4ff7d4['attachments'][_0x315d58]['contentType'],'filepath':_0x12d057});}}}if(_0x4ff7d4[_0x0249('0x2f')]&&_0x4ff7d4['headerLines']['length']>0x0){var _0x6f8449=[_0x0249('0x30'),_0x0249('0x31'),_0x0249('0x32')];for(var _0x537dd9=0x0;_0x537dd9<_0x4ff7d4[_0x0249('0x2f')][_0x0249('0xd')];_0x537dd9++){var _0x31726f=_['indexOf'](_0x6f8449,_0x4ff7d4[_0x0249('0x2f')][_0x537dd9]['line']);if(_0x31726f>=0x0){_0x565769[_0x0249('0x33')]=!![];}}}return _0x565769;}exports['parser']=function(_0x5772cb,_0x366d3a,_0x16f77e){var _0x16ac88={'from':getAddress(_0x366d3a['from']),'firstName':getFirstName(_0x366d3a[_0x0249('0x34')]),'lastName':getLastName(_0x366d3a[_0x0249('0x34')]),'mapKey':_0x0249('0x3'),'message':{'from':getMails(_0x5772cb[_0x0249('0x3')],_0x366d3a[_0x0249('0x34')]),'to':_0x5772cb['email'],'cc':'','subject':_0x366d3a[_0x0249('0x35')]||'','messageId':_0x366d3a[_0x0249('0x36')],'inReplyTo':_0x366d3a[_0x0249('0x37')],'sentAt':moment(_0x366d3a[_0x0249('0x38')])['format']('YYYY-MM-DD\x20HH:mm:ss'),'attach':![],'attachments':[]}};if(!_0x366d3a[_0x0249('0x15')]&&!_0x366d3a[_0x0249('0x1f')]){var _0x524586=_['filter'](_0x366d3a[_0x0249('0x24')],{'contentType':'application/ms-tnef'});if(_0x524586['length']){logger['info'](util[_0x0249('0x29')](_0x0249('0x39'),_0x366d3a[_0x0249('0x36')]));tnef[_0x0249('0x3a')](_[_0x0249('0x3b')](_0x524586)[_0x0249('0x2e')],function(_0x1280a0,_0x1191ce){if(_0x1191ce){_0x366d3a[_0x0249('0x15')]=_0x1191ce[_0x0249('0x3c')]||_0x0249('0x3d');if(_0x1191ce[_0x0249('0x3e')]){for(var _0x556c92=0x0;_0x556c92<_0x1191ce[_0x0249('0x3e')][_0x0249('0xd')];_0x556c92++){var _0x59ba48=_0x1191ce['Attachments'][_0x556c92];_0x16ac88[_0x0249('0x21')]['attachments'][_0x0249('0x19')]({'filename':_0x59ba48['Title'],'content':Buffer[_0x0249('0x34')](_0x59ba48[_0x0249('0x3f')])});}}}_0x16f77e(parseEmail(_0x5772cb,_0x366d3a,_0x16ac88));});}else{_0x366d3a[_0x0249('0x15')]=_0x0249('0x3d');_0x16f77e(parseEmail(_0x5772cb,_0x366d3a,_0x16ac88));}}else{_0x16f77e(parseEmail(_0x5772cb,_0x366d3a,_0x16ac88));}};exports[_0x0249('0x40')]=function(_0x33cdba,_0x364a1a){var _0x3f16e5=[_0x0249('0x41')+(_0x364a1a||''),_0x0249('0x42')+_0x33cdba,'',''];return Buffer[_0x0249('0x34')](_0x3f16e5[_0x0249('0xf')]('\ 1'),_0x0249('0x43'))[_0x0249('0x44')]('base64');};