39ee81d6ccb776fdf98b6ee57c05ccd9f43ee2fe
[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 _0x2419=['root','writeFileSync','content','contentType','headerLines','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','line','isAutoreply','parser','from','subject','messageId','inReplyTo','date','YYYY-MM-DD\x20HH:mm:ss','info','parseBuffer','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','Data','user=','auth=Bearer\x20','utf-8','toString','base64','moment','path','util','node-tnef','../../../config/logger','email','../../../config/environment','head','value','address','anonymous','generate','@xcally.com','name','substring','indexOf','length','slice','join','pop','isEmpty','html','replace','includes','<img','attachments','push','filename','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','message','originTo','originCc','bcc','attach','type','attachment-','format','%s-%s','now'];(function(_0x12ceb9,_0x5b5b08){var _0x3346ba=function(_0x2c7aa3){while(--_0x2c7aa3){_0x12ceb9['push'](_0x12ceb9['shift']());}};_0x3346ba(++_0x5b5b08);}(_0x2419,0xac));var _0x9241=function(_0x1c7edc,_0x4e8cfa){_0x1c7edc=_0x1c7edc-0x0;var _0x49c30b=_0x2419[_0x1c7edc];return _0x49c30b;};'use strict';var _=require('lodash');var moment=require(_0x9241('0x0'));var random=require('randomstring');var fs=require('fs');var path=require(_0x9241('0x1'));var util=require(_0x9241('0x2'));var tnef=require(_0x9241('0x3'));var logger=require(_0x9241('0x4'))(_0x9241('0x5'));var config=require(_0x9241('0x6'));function getAddress(_0x4c6a87){var _0x30168e=_[_0x9241('0x7')](_0x4c6a87[_0x9241('0x8')]);return _0x30168e&&_0x30168e[_0x9241('0x9')]?_0x30168e[_0x9241('0x9')]:_0x9241('0xa')+random[_0x9241('0xb')](0x6)+_0x9241('0xc');}function getFirstName(_0x2176ad){var _0x3035f3=_[_0x9241('0x7')](_0x2176ad[_0x9241('0x8')]);if(_0x3035f3&&_0x3035f3[_0x9241('0xd')]){if(_0x3035f3['name']==_0x3035f3['address']){return _0x3035f3[_0x9241('0xd')][_0x9241('0xe')](0x0,_0x3035f3[_0x9241('0xd')][_0x9241('0xf')]('@'));}var _0x1a1f70=_0x3035f3[_0x9241('0xd')]['split'](/\s+/);return _0x1a1f70[_0x9241('0x10')]>0x1?_0x1a1f70[_0x9241('0x11')](0x0,-0x1)[_0x9241('0x12')]('\x20'):_0x3035f3[_0x9241('0xd')];}return'Anonymous';}function getLastName(_0x14f515){var _0x166a2f=_[_0x9241('0x7')](_0x14f515[_0x9241('0x8')]);if(_0x166a2f&&_0x166a2f[_0x9241('0xd')]){var _0x252a8d=_0x166a2f['name']['split'](/\s+/);return _0x252a8d[_0x9241('0x10')]>0x1?_0x252a8d[_0x9241('0x13')]():'';}return'';}function getMails(_0x3c27cf,_0x595a08){var _0xdba2ff='';for(var _0x47ef3e=0x0;_0x47ef3e<_0x595a08['value']['length'];_0x47ef3e+=0x1){if(_0x595a08['value'][_0x47ef3e][_0x9241('0x9')]!==_0x3c27cf){if(!_[_0x9241('0x14')](_0xdba2ff)){_0xdba2ff+=',';}_0xdba2ff+=_0x595a08['value'][_0x47ef3e][_0x9241('0xd')]||_0x595a08[_0x9241('0x8')][_0x47ef3e][_0x9241('0x9')]||'';_0xdba2ff+='\x20<';_0xdba2ff+=_0x595a08[_0x9241('0x8')][_0x47ef3e][_0x9241('0x9')]?_0x595a08['value'][_0x47ef3e][_0x9241('0x9')]:_0x9241('0xa')+random[_0x9241('0xb')](0x6)+_0x9241('0xc');_0xdba2ff+='>';}}return _0xdba2ff;}function parseEmail(_0x340b67,_0x1ae0e3,_0x532b53){if(_0x1ae0e3[_0x9241('0x15')]){var _0x125c41=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x125c41['test'](_0x1ae0e3[_0x9241('0x15')])){_0x1ae0e3[_0x9241('0x15')]=_0x1ae0e3[_0x9241('0x15')][_0x9241('0x16')](_0x125c41,'');}if(_0x1ae0e3['html'][_0x9241('0x17')](_0x9241('0x18'))){var _0x4e3e16=[];_0x1ae0e3[_0x9241('0x19')]['forEach'](_0x55c5fb=>{_0x4e3e16[_0x9241('0x1a')](_0x55c5fb[_0x9241('0x1b')]);});var _0x1e872f=/<img.*? _SRC(.*?)[^>]+>/g;var _0x3627e5=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x250ec4=_0x1ae0e3[_0x9241('0x15')][_0x9241('0x16')](_0x3627e5,'_SRC');var _0xa95b72=_0x250ec4[_0x9241('0x16')](_0x1e872f,_0x9241('0x1c'));for(let _0x5e598b=0x0;_0x5e598b<_0x4e3e16[_0x9241('0x10')];_0x5e598b++){var _0x4fea5a=_0xa95b72[_0x9241('0x16')](_0x9241('0x1c'),_0x9241('0x1d')+_0x4e3e16[_0x5e598b]+_0x9241('0x1e'));_0xa95b72=_0x4fea5a;}_0x1ae0e3['html']=_0xa95b72;}_0x532b53['body']=_0x1ae0e3['html'];}else{_0x532b53[_0x9241('0x1f')]=_0x1ae0e3[_0x9241('0x20')];}if(_0x532b53[_0x9241('0x1f')]){_0x532b53['body']=_0x532b53[_0x9241('0x1f')][_0x9241('0x16')](/<a\s+/gi,_0x9241('0x21'));}if(_0x1ae0e3['to']){_0x532b53[_0x9241('0x22')][_0x9241('0x23')]=getMails(null,_0x1ae0e3['to']);var _0x4c647f=getMails(_0x340b67['email'],_0x1ae0e3['to']);if(!_['isEmpty'](_0x4c647f)){_0x532b53[_0x9241('0x22')]['cc']+=_0x4c647f;}}if(_0x1ae0e3['cc']){_0x532b53[_0x9241('0x22')][_0x9241('0x24')]=getMails(null,_0x1ae0e3['cc']);var _0x2c3232=getMails(_0x340b67[_0x9241('0x5')],_0x1ae0e3['cc']);if(!_[_0x9241('0x14')](_0x2c3232)){if(!_['isEmpty'](_0x532b53[_0x9241('0x22')]['cc'])){_0x532b53[_0x9241('0x22')]['cc']+=',';}_0x532b53['message']['cc']+=_0x2c3232;}}if(!_[_0x9241('0x17')](_0x532b53[_0x9241('0x22')]['originTo'],_0x340b67[_0x9241('0x5')])&&!_[_0x9241('0x17')](_0x532b53[_0x9241('0x22')]['originCc'],_0x340b67['email'])){_0x532b53[_0x9241('0x22')][_0x9241('0x25')]=_0x340b67[_0x9241('0x5')];}if(_0x1ae0e3['attachments']&&_0x1ae0e3['attachments'][_0x9241('0x10')]){_0x532b53[_0x9241('0x22')][_0x9241('0x26')]=_0x1ae0e3[_0x9241('0x19')][_0x9241('0x10')];for(var _0x4a0a1a=0x0,_0x4b5a22,_0x70d24d,_0x451b5f;_0x4a0a1a<_0x1ae0e3[_0x9241('0x19')][_0x9241('0x10')];_0x4a0a1a+=0x1){if(_0x1ae0e3[_0x9241('0x19')][_0x4a0a1a][_0x9241('0x27')]==='attachment'){_0x451b5f=_0x1ae0e3[_0x9241('0x19')][_0x4a0a1a][_0x9241('0x1b')]||_0x9241('0x28')+_0x4a0a1a;_0x4b5a22=util[_0x9241('0x29')](_0x9241('0x2a'),Date[_0x9241('0x2b')](),_0x451b5f);_0x70d24d=path[_0x9241('0x12')](config[_0x9241('0x2c')],'server/files/attachments/',_0x4b5a22);fs[_0x9241('0x2d')](_0x70d24d,_0x1ae0e3['attachments'][_0x4a0a1a][_0x9241('0x2e')]);_0x532b53[_0x9241('0x22')]['attachments'][_0x9241('0x1a')]({'name':_0x451b5f,'basename':_0x4b5a22,'type':_0x1ae0e3[_0x9241('0x19')][_0x4a0a1a][_0x9241('0x2f')],'filepath':_0x70d24d});}}}if(_0x1ae0e3[_0x9241('0x30')]&&_0x1ae0e3[_0x9241('0x30')][_0x9241('0x10')]>0x0){var _0x5c0e9a=['Auto-Submitted:\x20auto-replied',_0x9241('0x31'),_0x9241('0x32')];for(var _0x401001=0x0;_0x401001<_0x1ae0e3['headerLines']['length'];_0x401001++){var _0x285422=_[_0x9241('0xf')](_0x5c0e9a,_0x1ae0e3[_0x9241('0x30')][_0x401001][_0x9241('0x33')]);if(_0x285422>=0x0){_0x532b53[_0x9241('0x34')]=!![];}}}return _0x532b53;}exports[_0x9241('0x35')]=function(_0x2dcaa7,_0x432eea,_0x16607a){var _0x1551b7={'from':getAddress(_0x432eea[_0x9241('0x36')]),'firstName':getFirstName(_0x432eea[_0x9241('0x36')]),'lastName':getLastName(_0x432eea[_0x9241('0x36')]),'mapKey':_0x9241('0x5'),'message':{'from':getMails(_0x2dcaa7[_0x9241('0x5')],_0x432eea[_0x9241('0x36')]),'to':_0x2dcaa7[_0x9241('0x5')],'cc':'','subject':_0x432eea[_0x9241('0x37')]||'','messageId':_0x432eea[_0x9241('0x38')],'inReplyTo':_0x432eea[_0x9241('0x39')],'sentAt':moment(_0x432eea[_0x9241('0x3a')])[_0x9241('0x29')](_0x9241('0x3b')),'attach':![],'attachments':[]}};if(!_0x432eea['html']&&!_0x432eea[_0x9241('0x20')]){var _0x3edb95=_['filter'](_0x432eea[_0x9241('0x19')],{'contentType':'application/ms-tnef'});if(_0x3edb95[_0x9241('0x10')]){logger[_0x9241('0x3c')](util[_0x9241('0x29')]('Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system',_0x432eea[_0x9241('0x38')]));tnef[_0x9241('0x3d')](_['first'](_0x3edb95)[_0x9241('0x2e')],function(_0x45e2f2,_0x3ba02b){if(_0x3ba02b){_0x432eea[_0x9241('0x15')]=_0x3ba02b[_0x9241('0x3e')]||_0x9241('0x3f');if(_0x3ba02b['Attachments']){for(var _0x25de4e=0x0;_0x25de4e<_0x3ba02b['Attachments'][_0x9241('0x10')];_0x25de4e++){var _0x5c6826=_0x3ba02b[_0x9241('0x40')][_0x25de4e];_0x1551b7[_0x9241('0x22')][_0x9241('0x19')][_0x9241('0x1a')]({'filename':_0x5c6826[_0x9241('0x41')],'content':Buffer[_0x9241('0x36')](_0x5c6826[_0x9241('0x42')])});}}}_0x16607a(parseEmail(_0x2dcaa7,_0x432eea,_0x1551b7));});}else{_0x432eea['html']='<p>Empty\x20message</p>';_0x16607a(parseEmail(_0x2dcaa7,_0x432eea,_0x1551b7));}}else{_0x16607a(parseEmail(_0x2dcaa7,_0x432eea,_0x1551b7));}};exports['generateXOAuth2Token']=function(_0x51d556,_0x2768da){var _0x29425c=[_0x9241('0x43')+(_0x2768da||''),_0x9241('0x44')+_0x51d556,'',''];return Buffer[_0x9241('0x36')](_0x29425c[_0x9241('0x12')]('\ 1'),_0x9241('0x45'))[_0x9241('0x46')](_0x9241('0x47'));};