f48bff348037947a013fe3638d30522919e13840
[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 _0xcd2d=['message','email','isEmpty','originCc','bcc','attachments','type','attachment-','format','%s-%s','now','server/files/attachments/','writeFileSync','content','push','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','headerLines','indexOf','line','from','subject','messageId','inReplyTo','date','YYYY-MM-DD\x20HH:mm:ss','application/ms-tnef','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','<p>Empty\x20message</p>','Attachments','Title','getHost','gmail','imap.gmail.com','yahoo','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook.office365.com','127.0.0.1','generateXOAuth2Token','auth=Bearer\x20','utf-8','toString','base64','lodash','moment','randomstring','path','util','node-tnef','../../../config/logger','../../../config/environment','value','address','@xcally.com','name','split','slice','join','Anonymous','length','pop','generate','html','test','replace','includes','<img','forEach','filename','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','<a\x20target=\x22_blank\x22\x20'];(function(_0x53f20f,_0x314d34){var _0x458b23=function(_0x169864){while(--_0x169864){_0x53f20f['push'](_0x53f20f['shift']());}};_0x458b23(++_0x314d34);}(_0xcd2d,0xcd));var _0xdcd2=function(_0x3c4ca8,_0x5df071){_0x3c4ca8=_0x3c4ca8-0x0;var _0xabec06=_0xcd2d[_0x3c4ca8];return _0xabec06;};'use strict';var _=require(_0xdcd2('0x0'));var moment=require(_0xdcd2('0x1'));var random=require(_0xdcd2('0x2'));var fs=require('fs');var path=require(_0xdcd2('0x3'));var util=require(_0xdcd2('0x4'));var tnef=require(_0xdcd2('0x5'));var logger=require(_0xdcd2('0x6'))('email');var config=require(_0xdcd2('0x7'));function getAddress(_0x1da4ff){var _0x26ccb8=_['head'](_0x1da4ff[_0xdcd2('0x8')]);return _0x26ccb8&&_0x26ccb8[_0xdcd2('0x9')]?_0x26ccb8[_0xdcd2('0x9')]:'anonymous'+random['generate'](0x6)+_0xdcd2('0xa');}function getFirstName(_0x4edd70){var _0x4d7419=_['head'](_0x4edd70[_0xdcd2('0x8')]);if(_0x4d7419&&_0x4d7419[_0xdcd2('0xb')]){if(_0x4d7419[_0xdcd2('0xb')]==_0x4d7419[_0xdcd2('0x9')]){return _0x4d7419['name']['substring'](0x0,_0x4d7419[_0xdcd2('0xb')]['indexOf']('@'));}var _0x109c6c=_0x4d7419['name'][_0xdcd2('0xc')](/\s+/);return _0x109c6c['length']>0x1?_0x109c6c[_0xdcd2('0xd')](0x0,-0x1)[_0xdcd2('0xe')]('\x20'):_0x4d7419[_0xdcd2('0xb')];}return _0xdcd2('0xf');}function getLastName(_0x3e6f21){var _0x516629=_['head'](_0x3e6f21[_0xdcd2('0x8')]);if(_0x516629&&_0x516629[_0xdcd2('0xb')]){var _0x22b4ae=_0x516629['name'][_0xdcd2('0xc')](/\s+/);return _0x22b4ae[_0xdcd2('0x10')]>0x1?_0x22b4ae[_0xdcd2('0x11')]():'';}return'';}function getMails(_0x469149,_0x5c8ad1){var _0x4af0ab='';for(var _0x4c46d4=0x0;_0x4c46d4<_0x5c8ad1[_0xdcd2('0x8')][_0xdcd2('0x10')];_0x4c46d4+=0x1){if(_0x5c8ad1['value'][_0x4c46d4][_0xdcd2('0x9')]!==_0x469149){if(!_['isEmpty'](_0x4af0ab)){_0x4af0ab+=',';}_0x4af0ab+=_0x5c8ad1[_0xdcd2('0x8')][_0x4c46d4][_0xdcd2('0xb')]||_0x5c8ad1[_0xdcd2('0x8')][_0x4c46d4]['address']||'';_0x4af0ab+='\x20<';_0x4af0ab+=_0x5c8ad1[_0xdcd2('0x8')][_0x4c46d4][_0xdcd2('0x9')]?_0x5c8ad1[_0xdcd2('0x8')][_0x4c46d4]['address']:'anonymous'+random[_0xdcd2('0x12')](0x6)+_0xdcd2('0xa');_0x4af0ab+='>';}}return _0x4af0ab;}function parseEmail(_0x44a5f0,_0x232561,_0x17ef00){if(_0x232561[_0xdcd2('0x13')]){var _0x435eac=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x435eac[_0xdcd2('0x14')](_0x232561[_0xdcd2('0x13')])){_0x232561[_0xdcd2('0x13')]=_0x232561[_0xdcd2('0x13')][_0xdcd2('0x15')](_0x435eac,'');}if(_0x232561[_0xdcd2('0x13')][_0xdcd2('0x16')](_0xdcd2('0x17'))){var _0x4970a7=[];_0x232561['attachments'][_0xdcd2('0x18')](_0x171936=>{_0x4970a7['push'](_0x171936[_0xdcd2('0x19')]);});var _0x3b711d=/<img.*? _SRC(.*?)[^>]+>/g;var _0x3ddcdb=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x2f82c1=_0x232561[_0xdcd2('0x13')]['replace'](_0x3ddcdb,'_SRC');var _0x1fa0b9=_0x2f82c1['replace'](_0x3b711d,'_IMG');for(let _0x461999=0x0;_0x461999<_0x4970a7[_0xdcd2('0x10')];_0x461999++){var _0x4bd54f=_0x1fa0b9[_0xdcd2('0x15')](_0xdcd2('0x1a'),_0xdcd2('0x1b')+_0x4970a7[_0x461999]+_0xdcd2('0x1c'));_0x1fa0b9=_0x4bd54f;}_0x232561[_0xdcd2('0x13')]=_0x1fa0b9;}_0x17ef00[_0xdcd2('0x1d')]=_0x232561['html'];}else{_0x17ef00[_0xdcd2('0x1d')]=_0x232561[_0xdcd2('0x1e')];}if(_0x17ef00[_0xdcd2('0x1d')]){_0x17ef00[_0xdcd2('0x1d')]=_0x17ef00['body'][_0xdcd2('0x15')](/<a\s+/gi,_0xdcd2('0x1f'));}if(_0x232561['to']){_0x17ef00[_0xdcd2('0x20')]['originTo']=getMails(null,_0x232561['to']);var _0x29bc7a=getMails(_0x44a5f0[_0xdcd2('0x21')],_0x232561['to']);if(!_['isEmpty'](_0x29bc7a)){_0x17ef00['message']['cc']+=_0x29bc7a;}}if(_0x232561['cc']){_0x17ef00[_0xdcd2('0x20')]['originCc']=getMails(null,_0x232561['cc']);var _0x8a4d6a=getMails(_0x44a5f0[_0xdcd2('0x21')],_0x232561['cc']);if(!_[_0xdcd2('0x22')](_0x8a4d6a)){if(!_['isEmpty'](_0x17ef00[_0xdcd2('0x20')]['cc'])){_0x17ef00[_0xdcd2('0x20')]['cc']+=',';}_0x17ef00[_0xdcd2('0x20')]['cc']+=_0x8a4d6a;}}if(!_[_0xdcd2('0x16')](_0x17ef00[_0xdcd2('0x20')]['originTo'],_0x44a5f0['email'])&&!_[_0xdcd2('0x16')](_0x17ef00[_0xdcd2('0x20')][_0xdcd2('0x23')],_0x44a5f0[_0xdcd2('0x21')])){_0x17ef00[_0xdcd2('0x20')][_0xdcd2('0x24')]=_0x44a5f0[_0xdcd2('0x21')];}if(_0x232561['attachments']&&_0x232561[_0xdcd2('0x25')]['length']){_0x17ef00[_0xdcd2('0x20')]['attach']=_0x232561[_0xdcd2('0x25')]['length'];for(var _0x5b7dbe=0x0,_0x4918ab,_0x391d82,_0x5d1daa;_0x5b7dbe<_0x232561[_0xdcd2('0x25')]['length'];_0x5b7dbe+=0x1){if(_0x232561['attachments'][_0x5b7dbe][_0xdcd2('0x26')]==='attachment'){_0x5d1daa=_0x232561[_0xdcd2('0x25')][_0x5b7dbe]['filename']||_0xdcd2('0x27')+_0x5b7dbe;_0x4918ab=util[_0xdcd2('0x28')](_0xdcd2('0x29'),Date[_0xdcd2('0x2a')](),_0x5d1daa);_0x391d82=path[_0xdcd2('0xe')](config['root'],_0xdcd2('0x2b'),_0x4918ab);fs[_0xdcd2('0x2c')](_0x391d82,_0x232561['attachments'][_0x5b7dbe][_0xdcd2('0x2d')]);_0x17ef00[_0xdcd2('0x20')]['attachments'][_0xdcd2('0x2e')]({'name':_0x5d1daa,'basename':_0x4918ab,'type':_0x232561[_0xdcd2('0x25')][_0x5b7dbe]['contentType'],'filepath':_0x391d82});}}}if(_0x232561['headerLines']&&_0x232561['headerLines'][_0xdcd2('0x10')]>0x0){var _0x37dbda=['Auto-Submitted:\x20auto-replied',_0xdcd2('0x2f'),_0xdcd2('0x30')];for(var _0x545d1d=0x0;_0x545d1d<_0x232561[_0xdcd2('0x31')]['length'];_0x545d1d++){var _0x3b23d9=_[_0xdcd2('0x32')](_0x37dbda,_0x232561[_0xdcd2('0x31')][_0x545d1d][_0xdcd2('0x33')]);if(_0x3b23d9>=0x0){_0x17ef00['isAutoreply']=!![];}}}return _0x17ef00;}exports['parser']=function(_0x477a2d,_0x29ecc0,_0x9a5e99){var _0x3ea0d9={'from':getAddress(_0x29ecc0[_0xdcd2('0x34')]),'firstName':getFirstName(_0x29ecc0[_0xdcd2('0x34')]),'lastName':getLastName(_0x29ecc0[_0xdcd2('0x34')]),'mapKey':_0xdcd2('0x21'),'message':{'from':getMails(_0x477a2d['email'],_0x29ecc0[_0xdcd2('0x34')]),'to':_0x477a2d[_0xdcd2('0x21')],'cc':'','subject':_0x29ecc0[_0xdcd2('0x35')]||'','messageId':_0x29ecc0[_0xdcd2('0x36')],'inReplyTo':_0x29ecc0[_0xdcd2('0x37')],'sentAt':moment(_0x29ecc0[_0xdcd2('0x38')])[_0xdcd2('0x28')](_0xdcd2('0x39')),'attach':![],'attachments':[]}};if(!_0x29ecc0[_0xdcd2('0x13')]&&!_0x29ecc0[_0xdcd2('0x1e')]){var _0x2acfb3=_['filter'](_0x29ecc0[_0xdcd2('0x25')],{'contentType':_0xdcd2('0x3a')});if(_0x2acfb3['length']){logger[_0xdcd2('0x3b')](util[_0xdcd2('0x28')](_0xdcd2('0x3c'),_0x29ecc0[_0xdcd2('0x36')]));tnef[_0xdcd2('0x3d')](_['first'](_0x2acfb3)[_0xdcd2('0x2d')],function(_0x5d433b,_0x198267){if(_0x198267){_0x29ecc0[_0xdcd2('0x13')]=_0x198267['BodyHTML']||_0xdcd2('0x3e');if(_0x198267['Attachments']){for(var _0x4f084d=0x0;_0x4f084d<_0x198267[_0xdcd2('0x3f')][_0xdcd2('0x10')];_0x4f084d++){var _0x3e5868=_0x198267[_0xdcd2('0x3f')][_0x4f084d];_0x3ea0d9[_0xdcd2('0x20')]['attachments']['push']({'filename':_0x3e5868[_0xdcd2('0x40')],'content':Buffer[_0xdcd2('0x34')](_0x3e5868['Data'])});}}}_0x9a5e99(parseEmail(_0x477a2d,_0x29ecc0,_0x3ea0d9));});}else{_0x29ecc0[_0xdcd2('0x13')]=_0xdcd2('0x3e');_0x9a5e99(parseEmail(_0x477a2d,_0x29ecc0,_0x3ea0d9));}}else{_0x9a5e99(parseEmail(_0x477a2d,_0x29ecc0,_0x3ea0d9));}};exports[_0xdcd2('0x41')]=function(_0x49e418){switch(_0x49e418){case _0xdcd2('0x42'):return _0xdcd2('0x43');case _0xdcd2('0x44'):return _0xdcd2('0x45');case _0xdcd2('0x46'):return _0xdcd2('0x47');case'outlook365':return _0xdcd2('0x48');}return _0xdcd2('0x49');};exports[_0xdcd2('0x4a')]=function(_0x549768,_0x27e8d9){var _0x17b517=['user='+(_0x27e8d9||''),_0xdcd2('0x4b')+_0x549768,'',''];return Buffer[_0xdcd2('0x34')](_0x17b517[_0xdcd2('0xe')]('\ 1'),_0xdcd2('0x4c'))[_0xdcd2('0x4d')](_0xdcd2('0x4e'));};