Built motion from commit 4c281f94.|2.6.31
[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 _0xa9d6=['format','%s-%s','root','writeFileSync','content','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','line','isAutoreply','parser','from','subject','messageId','date','YYYY-MM-DD\x20HH:mm:ss','info','parseBuffer','first','Attachments','push','<p>Empty\x20message</p>','user=','utf-8','toString','lodash','moment','randomstring','path','util','../../../config/logger','../../../config/environment','head','value','address','anonymous','@xcally.com','name','substring','indexOf','split','length','slice','join','pop','isEmpty','generate','html','replace','includes','attachments','forEach','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','message','originTo','email','originCc','bcc','attachment','filename','attachment-'];(function(_0x3063c7,_0x47eb3d){var _0x167e7e=function(_0x4740a7){while(--_0x4740a7){_0x3063c7['push'](_0x3063c7['shift']());}};_0x167e7e(++_0x47eb3d);}(_0xa9d6,0x1ef));var _0x6a9d=function(_0x321d05,_0x665100){_0x321d05=_0x321d05-0x0;var _0x5c0112=_0xa9d6[_0x321d05];return _0x5c0112;};'use strict';var _=require(_0x6a9d('0x0'));var moment=require(_0x6a9d('0x1'));var random=require(_0x6a9d('0x2'));var fs=require('fs');var path=require(_0x6a9d('0x3'));var util=require(_0x6a9d('0x4'));var tnef=require('node-tnef');var logger=require(_0x6a9d('0x5'))('email');var config=require(_0x6a9d('0x6'));function getAddress(_0x82502c){var _0x582105=_[_0x6a9d('0x7')](_0x82502c[_0x6a9d('0x8')]);return _0x582105&&_0x582105[_0x6a9d('0x9')]?_0x582105[_0x6a9d('0x9')]:_0x6a9d('0xa')+random['generate'](0x6)+_0x6a9d('0xb');}function getFirstName(_0x447f58){var _0x444931=_[_0x6a9d('0x7')](_0x447f58[_0x6a9d('0x8')]);if(_0x444931&&_0x444931[_0x6a9d('0xc')]){if(_0x444931[_0x6a9d('0xc')]==_0x444931['address']){return _0x444931[_0x6a9d('0xc')][_0x6a9d('0xd')](0x0,_0x444931['name'][_0x6a9d('0xe')]('@'));}var _0x31884d=_0x444931[_0x6a9d('0xc')][_0x6a9d('0xf')](/\s+/);return _0x31884d[_0x6a9d('0x10')]>0x1?_0x31884d[_0x6a9d('0x11')](0x0,-0x1)[_0x6a9d('0x12')]('\x20'):_0x444931[_0x6a9d('0xc')];}return'Anonymous';}function getLastName(_0xdc77c1){var _0x364cf6=_[_0x6a9d('0x7')](_0xdc77c1[_0x6a9d('0x8')]);if(_0x364cf6&&_0x364cf6[_0x6a9d('0xc')]){var _0x57f2be=_0x364cf6[_0x6a9d('0xc')]['split'](/\s+/);return _0x57f2be['length']>0x1?_0x57f2be[_0x6a9d('0x13')]():'';}return'';}function getMails(_0x583df0,_0x29a0de){var _0x52f5ba='';for(var _0x2dcbcd=0x0;_0x2dcbcd<_0x29a0de[_0x6a9d('0x8')][_0x6a9d('0x10')];_0x2dcbcd+=0x1){if(_0x29a0de[_0x6a9d('0x8')][_0x2dcbcd][_0x6a9d('0x9')]!==_0x583df0){if(!_[_0x6a9d('0x14')](_0x52f5ba)){_0x52f5ba+=',';}_0x52f5ba+=_0x29a0de[_0x6a9d('0x8')][_0x2dcbcd][_0x6a9d('0xc')]||_0x29a0de[_0x6a9d('0x8')][_0x2dcbcd][_0x6a9d('0x9')]||'';_0x52f5ba+='\x20<';_0x52f5ba+=_0x29a0de['value'][_0x2dcbcd][_0x6a9d('0x9')]?_0x29a0de['value'][_0x2dcbcd]['address']:_0x6a9d('0xa')+random[_0x6a9d('0x15')](0x6)+_0x6a9d('0xb');_0x52f5ba+='>';}}return _0x52f5ba;}function parseEmail(_0x592221,_0x53f50c,_0x278f64){if(_0x53f50c[_0x6a9d('0x16')]){var _0x10db32=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x10db32['test'](_0x53f50c[_0x6a9d('0x16')])){_0x53f50c[_0x6a9d('0x16')]=_0x53f50c[_0x6a9d('0x16')][_0x6a9d('0x17')](_0x10db32,'');}if(_0x53f50c[_0x6a9d('0x16')][_0x6a9d('0x18')]('<img')){var _0xad25d4=[];_0x53f50c[_0x6a9d('0x19')][_0x6a9d('0x1a')](_0x26d4f3=>{_0xad25d4['push'](_0x26d4f3['filename']);});var _0x5b96a4=/<img.*? _SRC(.*?)[^>]+>/g;var _0x59e525=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x5d800f=_0x53f50c['html'][_0x6a9d('0x17')](_0x59e525,'_SRC');var _0x433be4=_0x5d800f[_0x6a9d('0x17')](_0x5b96a4,_0x6a9d('0x1b'));for(let _0x50bfea=0x0;_0x50bfea<_0xad25d4['length'];_0x50bfea++){var _0x47e180=_0x433be4[_0x6a9d('0x17')]('_IMG',_0x6a9d('0x1c')+_0xad25d4[_0x50bfea]+_0x6a9d('0x1d'));_0x433be4=_0x47e180;}_0x53f50c['html']=_0x433be4;}_0x278f64['body']=_0x53f50c[_0x6a9d('0x16')];}else{_0x278f64[_0x6a9d('0x1e')]=_0x53f50c[_0x6a9d('0x1f')];}if(_0x278f64[_0x6a9d('0x1e')]){_0x278f64[_0x6a9d('0x1e')]=_0x278f64['body'][_0x6a9d('0x17')](/<a\s+/gi,_0x6a9d('0x20'));}if(_0x53f50c['to']){_0x278f64[_0x6a9d('0x21')][_0x6a9d('0x22')]=getMails(null,_0x53f50c['to']);var _0x5c89ed=getMails(_0x592221[_0x6a9d('0x23')],_0x53f50c['to']);if(!_[_0x6a9d('0x14')](_0x5c89ed)){_0x278f64[_0x6a9d('0x21')]['cc']+=_0x5c89ed;}}if(_0x53f50c['cc']){_0x278f64['message']['originCc']=getMails(null,_0x53f50c['cc']);var _0x110442=getMails(_0x592221[_0x6a9d('0x23')],_0x53f50c['cc']);if(!_[_0x6a9d('0x14')](_0x110442)){if(!_['isEmpty'](_0x278f64['message']['cc'])){_0x278f64[_0x6a9d('0x21')]['cc']+=',';}_0x278f64[_0x6a9d('0x21')]['cc']+=_0x110442;}}if(!_[_0x6a9d('0x18')](_0x278f64['message'][_0x6a9d('0x22')],_0x592221[_0x6a9d('0x23')])&&!_[_0x6a9d('0x18')](_0x278f64[_0x6a9d('0x21')][_0x6a9d('0x24')],_0x592221[_0x6a9d('0x23')])){_0x278f64[_0x6a9d('0x21')][_0x6a9d('0x25')]=_0x592221[_0x6a9d('0x23')];}if(_0x53f50c[_0x6a9d('0x19')]&&_0x53f50c[_0x6a9d('0x19')][_0x6a9d('0x10')]){_0x278f64['message']['attach']=_0x53f50c[_0x6a9d('0x19')][_0x6a9d('0x10')];for(var _0x59acaf=0x0,_0x4ea4dc,_0x3baa03,_0x13b403;_0x59acaf<_0x53f50c[_0x6a9d('0x19')]['length'];_0x59acaf+=0x1){if(_0x53f50c[_0x6a9d('0x19')][_0x59acaf]['type']===_0x6a9d('0x26')){_0x13b403=_0x53f50c[_0x6a9d('0x19')][_0x59acaf][_0x6a9d('0x27')]||_0x6a9d('0x28')+_0x59acaf;_0x4ea4dc=util[_0x6a9d('0x29')](_0x6a9d('0x2a'),Date['now'](),_0x13b403);_0x3baa03=path[_0x6a9d('0x12')](config[_0x6a9d('0x2b')],'server/files/attachments/',_0x4ea4dc);fs[_0x6a9d('0x2c')](_0x3baa03,_0x53f50c[_0x6a9d('0x19')][_0x59acaf][_0x6a9d('0x2d')]);_0x278f64[_0x6a9d('0x21')][_0x6a9d('0x19')]['push']({'name':_0x13b403,'basename':_0x4ea4dc,'type':_0x53f50c[_0x6a9d('0x19')][_0x59acaf][_0x6a9d('0x2e')],'filepath':_0x3baa03});}}}if(_0x53f50c[_0x6a9d('0x2f')]&&_0x53f50c[_0x6a9d('0x2f')][_0x6a9d('0x10')]>0x0){var _0x554374=[_0x6a9d('0x30'),_0x6a9d('0x31'),'Precedence:\x20auto_reply'];for(var _0x1bae6e=0x0;_0x1bae6e<_0x53f50c[_0x6a9d('0x2f')][_0x6a9d('0x10')];_0x1bae6e++){var _0x308fb8=_[_0x6a9d('0xe')](_0x554374,_0x53f50c[_0x6a9d('0x2f')][_0x1bae6e][_0x6a9d('0x32')]);if(_0x308fb8>=0x0){_0x278f64[_0x6a9d('0x33')]=!![];}}}return _0x278f64;}exports[_0x6a9d('0x34')]=function(_0x4dbbaa,_0x4907c0,_0x9caa66){var _0x481ee2={'from':getAddress(_0x4907c0['from']),'firstName':getFirstName(_0x4907c0[_0x6a9d('0x35')]),'lastName':getLastName(_0x4907c0[_0x6a9d('0x35')]),'mapKey':_0x6a9d('0x23'),'message':{'from':getMails(_0x4dbbaa[_0x6a9d('0x23')],_0x4907c0['from']),'to':_0x4dbbaa[_0x6a9d('0x23')],'cc':'','subject':_0x4907c0[_0x6a9d('0x36')]||'','messageId':_0x4907c0[_0x6a9d('0x37')],'inReplyTo':_0x4907c0['inReplyTo'],'sentAt':moment(_0x4907c0[_0x6a9d('0x38')])[_0x6a9d('0x29')](_0x6a9d('0x39')),'attach':![],'attachments':[]}};if(!_0x4907c0[_0x6a9d('0x16')]&&!_0x4907c0[_0x6a9d('0x1f')]){var _0x4050e8=_['filter'](_0x4907c0[_0x6a9d('0x19')],{'contentType':'application/ms-tnef'});if(_0x4050e8[_0x6a9d('0x10')]){logger[_0x6a9d('0x3a')](util[_0x6a9d('0x29')]('Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system',_0x4907c0[_0x6a9d('0x37')]));tnef[_0x6a9d('0x3b')](_[_0x6a9d('0x3c')](_0x4050e8)['content'],function(_0x27d0b6,_0x305a40){if(_0x305a40){_0x4907c0[_0x6a9d('0x16')]=_0x305a40['BodyHTML']||'<p>Empty\x20message</p>';if(_0x305a40[_0x6a9d('0x3d')]){for(var _0x5a8ce0=0x0;_0x5a8ce0<_0x305a40[_0x6a9d('0x3d')]['length'];_0x5a8ce0++){var _0x281e1a=_0x305a40['Attachments'][_0x5a8ce0];_0x481ee2[_0x6a9d('0x21')]['attachments'][_0x6a9d('0x3e')]({'filename':_0x281e1a['Title'],'content':Buffer[_0x6a9d('0x35')](_0x281e1a['Data'])});}}}_0x9caa66(parseEmail(_0x4dbbaa,_0x4907c0,_0x481ee2));});}else{_0x4907c0['html']=_0x6a9d('0x3f');_0x9caa66(parseEmail(_0x4dbbaa,_0x4907c0,_0x481ee2));}}else{_0x9caa66(parseEmail(_0x4dbbaa,_0x4907c0,_0x481ee2));}};exports['generateXOAuth2Token']=function(_0x121e9c,_0x104639){var _0x37e604=[_0x6a9d('0x40')+(_0x104639||''),'auth=Bearer\x20'+_0x121e9c,'',''];return Buffer['from'](_0x37e604[_0x6a9d('0x12')]('\ 1'),_0x6a9d('0x41'))[_0x6a9d('0x42')]('base64');};