8a1bb7aea5bee52e0cb0d9e49eb70ccc530ae783
[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 _0x6b73=['join','Anonymous','pop','generate','html','test','replace','includes','<img','attachments','forEach','push','filename','_SRC','_IMG','\x20]</span>','body','textAsHtml','originTo','isEmpty','message','originCc','email','attach','type','attachment','attachment-','format','%s-%s','now','root','server/files/attachments/','contentType','headerLines','Auto-Submitted:\x20auto-replied','indexOf','line','parser','from','messageId','inReplyTo','date','application/ms-tnef','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','content','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','Data','generateXOAuth2Token','user=','toString','base64','lodash','moment','node-tnef','../../../config/logger','../../../config/environment','value','address','anonymous','@xcally.com','head','name','split','length','slice'];(function(_0x1b87fb,_0x3e6870){var _0xc7de31=function(_0x4eaded){while(--_0x4eaded){_0x1b87fb['push'](_0x1b87fb['shift']());}};_0xc7de31(++_0x3e6870);}(_0x6b73,0x80));var _0x36b7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6b73[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x36b7('0x0'));var moment=require(_0x36b7('0x1'));var random=require('randomstring');var fs=require('fs');var path=require('path');var util=require('util');var tnef=require(_0x36b7('0x2'));var logger=require(_0x36b7('0x3'))('email');var config=require(_0x36b7('0x4'));function getAddress(_0x32cd4e){var _0x9f648e=_['head'](_0x32cd4e[_0x36b7('0x5')]);return _0x9f648e&&_0x9f648e['address']?_0x9f648e[_0x36b7('0x6')]:_0x36b7('0x7')+random['generate'](0x6)+_0x36b7('0x8');}function getFirstName(_0x323e1a){var _0x4dfb03=_[_0x36b7('0x9')](_0x323e1a[_0x36b7('0x5')]);if(_0x4dfb03&&_0x4dfb03[_0x36b7('0xa')]){if(_0x4dfb03[_0x36b7('0xa')]==_0x4dfb03['address']){return _0x4dfb03[_0x36b7('0xa')]['substring'](0x0,_0x4dfb03[_0x36b7('0xa')]['indexOf']('@'));}var _0x16eb12=_0x4dfb03[_0x36b7('0xa')][_0x36b7('0xb')](/\s+/);return _0x16eb12[_0x36b7('0xc')]>0x1?_0x16eb12[_0x36b7('0xd')](0x0,-0x1)[_0x36b7('0xe')]('\x20'):_0x4dfb03[_0x36b7('0xa')];}return _0x36b7('0xf');}function getLastName(_0x39b376){var _0x65d02a=_['head'](_0x39b376['value']);if(_0x65d02a&&_0x65d02a[_0x36b7('0xa')]){var _0x1315ff=_0x65d02a[_0x36b7('0xa')]['split'](/\s+/);return _0x1315ff[_0x36b7('0xc')]>0x1?_0x1315ff[_0x36b7('0x10')]():'';}return'';}function getMails(_0x99c3dd,_0x2052d0){var _0x55a31b='';for(var _0x3689d1=0x0;_0x3689d1<_0x2052d0[_0x36b7('0x5')][_0x36b7('0xc')];_0x3689d1+=0x1){if(_0x2052d0[_0x36b7('0x5')][_0x3689d1][_0x36b7('0x6')]!==_0x99c3dd){if(!_['isEmpty'](_0x55a31b)){_0x55a31b+=',';}_0x55a31b+=_0x2052d0['value'][_0x3689d1][_0x36b7('0xa')]||_0x2052d0[_0x36b7('0x5')][_0x3689d1][_0x36b7('0x6')]||'';_0x55a31b+='\x20<';_0x55a31b+=_0x2052d0['value'][_0x3689d1][_0x36b7('0x6')]?_0x2052d0[_0x36b7('0x5')][_0x3689d1][_0x36b7('0x6')]:_0x36b7('0x7')+random[_0x36b7('0x11')](0x6)+_0x36b7('0x8');_0x55a31b+='>';}}return _0x55a31b;}function parseEmail(_0x487e2a,_0x26d3bc,_0x2532c6){if(_0x26d3bc[_0x36b7('0x12')]){var _0x332456=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x332456[_0x36b7('0x13')](_0x26d3bc[_0x36b7('0x12')])){_0x26d3bc[_0x36b7('0x12')]=_0x26d3bc[_0x36b7('0x12')][_0x36b7('0x14')](_0x332456,'');}if(_0x26d3bc[_0x36b7('0x12')][_0x36b7('0x15')](_0x36b7('0x16'))){var _0x3ce525=[];_0x26d3bc[_0x36b7('0x17')][_0x36b7('0x18')](_0x5360cc=>{_0x3ce525[_0x36b7('0x19')](_0x5360cc[_0x36b7('0x1a')]);});var _0x3002fb=/<img.*? _SRC(.*?)[^>]+>/g;var _0x79ce6c=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x4396fd=_0x26d3bc['html']['replace'](_0x79ce6c,_0x36b7('0x1b'));var _0x11458b=_0x4396fd[_0x36b7('0x14')](_0x3002fb,_0x36b7('0x1c'));for(let _0x48a85f=0x0;_0x48a85f<_0x3ce525[_0x36b7('0xc')];_0x48a85f++){var _0x2fd176=_0x11458b[_0x36b7('0x14')]('_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20'+_0x3ce525[_0x48a85f]+_0x36b7('0x1d'));_0x11458b=_0x2fd176;}_0x26d3bc[_0x36b7('0x12')]=_0x11458b;}_0x2532c6[_0x36b7('0x1e')]=_0x26d3bc[_0x36b7('0x12')];}else{_0x2532c6[_0x36b7('0x1e')]=_0x26d3bc[_0x36b7('0x1f')];}if(_0x2532c6[_0x36b7('0x1e')]){_0x2532c6[_0x36b7('0x1e')]=_0x2532c6[_0x36b7('0x1e')][_0x36b7('0x14')](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x26d3bc['to']){_0x2532c6['message'][_0x36b7('0x20')]=getMails(null,_0x26d3bc['to']);var _0x47dd42=getMails(_0x487e2a['email'],_0x26d3bc['to']);if(!_[_0x36b7('0x21')](_0x47dd42)){_0x2532c6[_0x36b7('0x22')]['cc']+=_0x47dd42;}}if(_0x26d3bc['cc']){_0x2532c6['message'][_0x36b7('0x23')]=getMails(null,_0x26d3bc['cc']);var _0x45c156=getMails(_0x487e2a['email'],_0x26d3bc['cc']);if(!_[_0x36b7('0x21')](_0x45c156)){if(!_[_0x36b7('0x21')](_0x2532c6['message']['cc'])){_0x2532c6['message']['cc']+=',';}_0x2532c6[_0x36b7('0x22')]['cc']+=_0x45c156;}}if(!_['includes'](_0x2532c6[_0x36b7('0x22')]['originTo'],_0x487e2a[_0x36b7('0x24')])&&!_[_0x36b7('0x15')](_0x2532c6[_0x36b7('0x22')][_0x36b7('0x23')],_0x487e2a[_0x36b7('0x24')])){_0x2532c6[_0x36b7('0x22')]['bcc']=_0x487e2a[_0x36b7('0x24')];}if(_0x26d3bc[_0x36b7('0x17')]&&_0x26d3bc[_0x36b7('0x17')][_0x36b7('0xc')]){_0x2532c6[_0x36b7('0x22')][_0x36b7('0x25')]=_0x26d3bc[_0x36b7('0x17')]['length'];for(var _0x20b751=0x0,_0x66cbde,_0xc99f,_0x58ae1c;_0x20b751<_0x26d3bc[_0x36b7('0x17')][_0x36b7('0xc')];_0x20b751+=0x1){if(_0x26d3bc[_0x36b7('0x17')][_0x20b751][_0x36b7('0x26')]===_0x36b7('0x27')){_0x58ae1c=_0x26d3bc[_0x36b7('0x17')][_0x20b751][_0x36b7('0x1a')]||_0x36b7('0x28')+_0x20b751;_0x66cbde=util[_0x36b7('0x29')](_0x36b7('0x2a'),Date[_0x36b7('0x2b')](),_0x58ae1c);_0xc99f=path[_0x36b7('0xe')](config[_0x36b7('0x2c')],_0x36b7('0x2d'),_0x66cbde);fs['writeFileSync'](_0xc99f,_0x26d3bc[_0x36b7('0x17')][_0x20b751]['content']);_0x2532c6[_0x36b7('0x22')]['attachments'][_0x36b7('0x19')]({'name':_0x58ae1c,'basename':_0x66cbde,'type':_0x26d3bc['attachments'][_0x20b751][_0x36b7('0x2e')],'filepath':_0xc99f});}}}if(_0x26d3bc[_0x36b7('0x2f')]&&_0x26d3bc[_0x36b7('0x2f')][_0x36b7('0xc')]>0x0){var _0x54a756=[_0x36b7('0x30'),'X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply'];for(var _0x263fae=0x0;_0x263fae<_0x26d3bc[_0x36b7('0x2f')]['length'];_0x263fae++){var _0x2feee0=_[_0x36b7('0x31')](_0x54a756,_0x26d3bc['headerLines'][_0x263fae][_0x36b7('0x32')]);if(_0x2feee0>=0x0){_0x2532c6['isAutoreply']=!![];}}}return _0x2532c6;}exports[_0x36b7('0x33')]=function(_0xf9088,_0x4b8107,_0xdab09c){var _0x55e399={'from':getAddress(_0x4b8107[_0x36b7('0x34')]),'firstName':getFirstName(_0x4b8107[_0x36b7('0x34')]),'lastName':getLastName(_0x4b8107['from']),'mapKey':'email','message':{'from':getMails(_0xf9088['email'],_0x4b8107[_0x36b7('0x34')]),'to':_0xf9088[_0x36b7('0x24')],'cc':'','subject':_0x4b8107['subject']||'','messageId':_0x4b8107[_0x36b7('0x35')],'inReplyTo':_0x4b8107[_0x36b7('0x36')],'sentAt':moment(_0x4b8107[_0x36b7('0x37')])[_0x36b7('0x29')]('YYYY-MM-DD\x20HH:mm:ss'),'attach':![],'attachments':[]}};if(!_0x4b8107[_0x36b7('0x12')]&&!_0x4b8107['textAsHtml']){var _0x483492=_['filter'](_0x4b8107[_0x36b7('0x17')],{'contentType':_0x36b7('0x38')});if(_0x483492[_0x36b7('0xc')]){logger[_0x36b7('0x39')](util[_0x36b7('0x29')](_0x36b7('0x3a'),_0x4b8107[_0x36b7('0x35')]));tnef[_0x36b7('0x3b')](_[_0x36b7('0x3c')](_0x483492)[_0x36b7('0x3d')],function(_0x4b0739,_0x7c03b){if(_0x7c03b){_0x4b8107[_0x36b7('0x12')]=_0x7c03b[_0x36b7('0x3e')]||_0x36b7('0x3f');if(_0x7c03b[_0x36b7('0x40')]){for(var _0x3243ba=0x0;_0x3243ba<_0x7c03b['Attachments'][_0x36b7('0xc')];_0x3243ba++){var _0x1b8191=_0x7c03b[_0x36b7('0x40')][_0x3243ba];_0x55e399[_0x36b7('0x22')]['attachments'][_0x36b7('0x19')]({'filename':_0x1b8191[_0x36b7('0x41')],'content':Buffer[_0x36b7('0x34')](_0x1b8191[_0x36b7('0x42')])});}}}_0xdab09c(parseEmail(_0xf9088,_0x4b8107,_0x55e399));});}else{_0x4b8107['html']=_0x36b7('0x3f');_0xdab09c(parseEmail(_0xf9088,_0x4b8107,_0x55e399));}}else{_0xdab09c(parseEmail(_0xf9088,_0x4b8107,_0x55e399));}};exports[_0x36b7('0x43')]=function(_0x3d3d56,_0x2d5a34){var _0x1175d7=[_0x36b7('0x44')+(_0x2d5a34||''),'auth=Bearer\x20'+_0x3d3d56,'',''];return Buffer[_0x36b7('0x34')](_0x1175d7['join']('\ 1'),'utf-8')[_0x36b7('0x45')](_0x36b7('0x46'));};