fd2253c1f60f31b081be5c74a4a28f41bc825a5c
[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 _0x3a5e=['server/files/attachments/','writeFileSync','content','headerLines','X-Auto-Response-Suppress:\x20All','line','isAutoreply','parser','from','messageId','inReplyTo','YYYY-MM-DD\x20HH:mm:ss','filter','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','Data','getHost','gmail','yahoo','hotmail','imap-mail.outlook.com','127.0.0.1','generateXOAuth2Token','user=','auth=Bearer\x20','utf-8','toString','base64','moment','randomstring','util','node-tnef','../../../config/environment','head','address','anonymous','@xcally.com','value','name','substring','indexOf','split','join','Anonymous','length','pop','isEmpty','generate','html','test','replace','includes','<img','attachments','push','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','message','email','originCc','bcc','attachment','filename','attachment-','format','%s-%s','now','root'];(function(_0x50975f,_0x15dfe7){var _0x3dedca=function(_0x5ba277){while(--_0x5ba277){_0x50975f['push'](_0x50975f['shift']());}};_0x3dedca(++_0x15dfe7);}(_0x3a5e,0x105));var _0xe3a5=function(_0x9632c,_0x12d4b7){_0x9632c=_0x9632c-0x0;var _0x2286ab=_0x3a5e[_0x9632c];return _0x2286ab;};'use strict';var _=require('lodash');var moment=require(_0xe3a5('0x0'));var random=require(_0xe3a5('0x1'));var fs=require('fs');var path=require('path');var util=require(_0xe3a5('0x2'));var tnef=require(_0xe3a5('0x3'));var logger=require('../../../config/logger')('email');var config=require(_0xe3a5('0x4'));function getAddress(_0x53e1e4){var _0x249022=_[_0xe3a5('0x5')](_0x53e1e4['value']);return _0x249022&&_0x249022[_0xe3a5('0x6')]?_0x249022[_0xe3a5('0x6')]:_0xe3a5('0x7')+random['generate'](0x6)+_0xe3a5('0x8');}function getFirstName(_0x272fc2){var _0x443bea=_[_0xe3a5('0x5')](_0x272fc2[_0xe3a5('0x9')]);if(_0x443bea&&_0x443bea[_0xe3a5('0xa')]){if(_0x443bea[_0xe3a5('0xa')]==_0x443bea[_0xe3a5('0x6')]){return _0x443bea[_0xe3a5('0xa')][_0xe3a5('0xb')](0x0,_0x443bea[_0xe3a5('0xa')][_0xe3a5('0xc')]('@'));}var _0x21d085=_0x443bea['name'][_0xe3a5('0xd')](/\s+/);return _0x21d085['length']>0x1?_0x21d085['slice'](0x0,-0x1)[_0xe3a5('0xe')]('\x20'):_0x443bea[_0xe3a5('0xa')];}return _0xe3a5('0xf');}function getLastName(_0x450f40){var _0x2bafc7=_[_0xe3a5('0x5')](_0x450f40[_0xe3a5('0x9')]);if(_0x2bafc7&&_0x2bafc7['name']){var _0xf29714=_0x2bafc7[_0xe3a5('0xa')][_0xe3a5('0xd')](/\s+/);return _0xf29714[_0xe3a5('0x10')]>0x1?_0xf29714[_0xe3a5('0x11')]():'';}return'';}function getMails(_0x6582d4,_0x363a57){var _0x4a15da='';for(var _0x24fb34=0x0;_0x24fb34<_0x363a57[_0xe3a5('0x9')][_0xe3a5('0x10')];_0x24fb34+=0x1){if(_0x363a57[_0xe3a5('0x9')][_0x24fb34][_0xe3a5('0x6')]!==_0x6582d4){if(!_[_0xe3a5('0x12')](_0x4a15da)){_0x4a15da+=',';}_0x4a15da+=_0x363a57[_0xe3a5('0x9')][_0x24fb34][_0xe3a5('0xa')]||_0x363a57[_0xe3a5('0x9')][_0x24fb34][_0xe3a5('0x6')]||'';_0x4a15da+='\x20<';_0x4a15da+=_0x363a57['value'][_0x24fb34][_0xe3a5('0x6')]?_0x363a57['value'][_0x24fb34][_0xe3a5('0x6')]:_0xe3a5('0x7')+random[_0xe3a5('0x13')](0x6)+_0xe3a5('0x8');_0x4a15da+='>';}}return _0x4a15da;}function parseEmail(_0xc6b379,_0x2d1a2d,_0x17f4f8){if(_0x2d1a2d[_0xe3a5('0x14')]){var _0x166d3d=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x166d3d[_0xe3a5('0x15')](_0x2d1a2d[_0xe3a5('0x14')])){_0x2d1a2d[_0xe3a5('0x14')]=_0x2d1a2d[_0xe3a5('0x14')][_0xe3a5('0x16')](_0x166d3d,'');}if(_0x2d1a2d[_0xe3a5('0x14')][_0xe3a5('0x17')](_0xe3a5('0x18'))){var _0x3a94cd=[];_0x2d1a2d[_0xe3a5('0x19')]['forEach'](_0x10ae3a=>{_0x3a94cd[_0xe3a5('0x1a')](_0x10ae3a['filename']);});var _0x4bd64f=/<img.*? _SRC(.*?)[^>]+>/g;var _0x39f339=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x26c3dd=_0x2d1a2d[_0xe3a5('0x14')][_0xe3a5('0x16')](_0x39f339,'_SRC');var _0x3ae043=_0x26c3dd[_0xe3a5('0x16')](_0x4bd64f,_0xe3a5('0x1b'));for(let _0x24fffa=0x0;_0x24fffa<_0x3a94cd['length'];_0x24fffa++){var _0x114995=_0x3ae043[_0xe3a5('0x16')]('_IMG',_0xe3a5('0x1c')+_0x3a94cd[_0x24fffa]+_0xe3a5('0x1d'));_0x3ae043=_0x114995;}_0x2d1a2d[_0xe3a5('0x14')]=_0x3ae043;}_0x17f4f8[_0xe3a5('0x1e')]=_0x2d1a2d[_0xe3a5('0x14')];}else{_0x17f4f8[_0xe3a5('0x1e')]=_0x2d1a2d[_0xe3a5('0x1f')];}if(_0x17f4f8[_0xe3a5('0x1e')]){_0x17f4f8[_0xe3a5('0x1e')]=_0x17f4f8[_0xe3a5('0x1e')][_0xe3a5('0x16')](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x2d1a2d['to']){_0x17f4f8[_0xe3a5('0x20')]['originTo']=getMails(null,_0x2d1a2d['to']);var _0x22b7d2=getMails(_0xc6b379['email'],_0x2d1a2d['to']);if(!_[_0xe3a5('0x12')](_0x22b7d2)){_0x17f4f8[_0xe3a5('0x20')]['cc']+=_0x22b7d2;}}if(_0x2d1a2d['cc']){_0x17f4f8['message']['originCc']=getMails(null,_0x2d1a2d['cc']);var _0x4c9161=getMails(_0xc6b379[_0xe3a5('0x21')],_0x2d1a2d['cc']);if(!_[_0xe3a5('0x12')](_0x4c9161)){if(!_[_0xe3a5('0x12')](_0x17f4f8[_0xe3a5('0x20')]['cc'])){_0x17f4f8[_0xe3a5('0x20')]['cc']+=',';}_0x17f4f8[_0xe3a5('0x20')]['cc']+=_0x4c9161;}}if(!_['includes'](_0x17f4f8[_0xe3a5('0x20')]['originTo'],_0xc6b379[_0xe3a5('0x21')])&&!_['includes'](_0x17f4f8['message'][_0xe3a5('0x22')],_0xc6b379[_0xe3a5('0x21')])){_0x17f4f8[_0xe3a5('0x20')][_0xe3a5('0x23')]=_0xc6b379[_0xe3a5('0x21')];}if(_0x2d1a2d['attachments']&&_0x2d1a2d[_0xe3a5('0x19')][_0xe3a5('0x10')]){_0x17f4f8[_0xe3a5('0x20')]['attach']=_0x2d1a2d[_0xe3a5('0x19')][_0xe3a5('0x10')];for(var _0x1e96ed=0x0,_0x5e580c,_0x3f6516,_0x45e96f;_0x1e96ed<_0x2d1a2d[_0xe3a5('0x19')][_0xe3a5('0x10')];_0x1e96ed+=0x1){if(_0x2d1a2d['attachments'][_0x1e96ed]['type']===_0xe3a5('0x24')){_0x45e96f=_0x2d1a2d[_0xe3a5('0x19')][_0x1e96ed][_0xe3a5('0x25')]||_0xe3a5('0x26')+_0x1e96ed;_0x5e580c=util[_0xe3a5('0x27')](_0xe3a5('0x28'),Date[_0xe3a5('0x29')](),_0x45e96f);_0x3f6516=path[_0xe3a5('0xe')](config[_0xe3a5('0x2a')],_0xe3a5('0x2b'),_0x5e580c);fs[_0xe3a5('0x2c')](_0x3f6516,_0x2d1a2d['attachments'][_0x1e96ed][_0xe3a5('0x2d')]);_0x17f4f8[_0xe3a5('0x20')]['attachments'][_0xe3a5('0x1a')]({'name':_0x45e96f,'basename':_0x5e580c,'type':_0x2d1a2d['attachments'][_0x1e96ed]['contentType'],'filepath':_0x3f6516});}}}if(_0x2d1a2d[_0xe3a5('0x2e')]&&_0x2d1a2d[_0xe3a5('0x2e')][_0xe3a5('0x10')]>0x0){var _0x30881f=['Auto-Submitted:\x20auto-replied',_0xe3a5('0x2f'),'Precedence:\x20auto_reply'];for(var _0x28bd09=0x0;_0x28bd09<_0x2d1a2d[_0xe3a5('0x2e')]['length'];_0x28bd09++){var _0x556fd7=_[_0xe3a5('0xc')](_0x30881f,_0x2d1a2d[_0xe3a5('0x2e')][_0x28bd09][_0xe3a5('0x30')]);if(_0x556fd7>=0x0){_0x17f4f8[_0xe3a5('0x31')]=!![];}}}return _0x17f4f8;}exports[_0xe3a5('0x32')]=function(_0x43eee3,_0x162d1f,_0x23289e){var _0x5c57a7={'from':getAddress(_0x162d1f['from']),'firstName':getFirstName(_0x162d1f['from']),'lastName':getLastName(_0x162d1f[_0xe3a5('0x33')]),'mapKey':_0xe3a5('0x21'),'message':{'from':getMails(_0x43eee3[_0xe3a5('0x21')],_0x162d1f[_0xe3a5('0x33')]),'to':_0x43eee3['email'],'cc':'','subject':_0x162d1f['subject']||'','messageId':_0x162d1f[_0xe3a5('0x34')],'inReplyTo':_0x162d1f[_0xe3a5('0x35')],'sentAt':moment(_0x162d1f['date'])['format'](_0xe3a5('0x36')),'attach':![],'attachments':[]}};if(!_0x162d1f[_0xe3a5('0x14')]&&!_0x162d1f[_0xe3a5('0x1f')]){var _0x1a305a=_[_0xe3a5('0x37')](_0x162d1f['attachments'],{'contentType':_0xe3a5('0x38')});if(_0x1a305a[_0xe3a5('0x10')]){logger[_0xe3a5('0x39')](util[_0xe3a5('0x27')](_0xe3a5('0x3a'),_0x162d1f['messageId']));tnef[_0xe3a5('0x3b')](_['first'](_0x1a305a)[_0xe3a5('0x2d')],function(_0x4c7661,_0x1714c8){if(_0x1714c8){_0x162d1f[_0xe3a5('0x14')]=_0x1714c8['BodyHTML']||_0xe3a5('0x3c');if(_0x1714c8[_0xe3a5('0x3d')]){for(var _0x111026=0x0;_0x111026<_0x1714c8['Attachments'][_0xe3a5('0x10')];_0x111026++){var _0x5a3605=_0x1714c8[_0xe3a5('0x3d')][_0x111026];_0x5c57a7[_0xe3a5('0x20')][_0xe3a5('0x19')]['push']({'filename':_0x5a3605[_0xe3a5('0x3e')],'content':Buffer['from'](_0x5a3605[_0xe3a5('0x3f')])});}}}_0x23289e(parseEmail(_0x43eee3,_0x162d1f,_0x5c57a7));});}else{_0x162d1f['html']=_0xe3a5('0x3c');_0x23289e(parseEmail(_0x43eee3,_0x162d1f,_0x5c57a7));}}else{_0x23289e(parseEmail(_0x43eee3,_0x162d1f,_0x5c57a7));}};exports[_0xe3a5('0x40')]=function(_0xe5741b){switch(_0xe5741b){case _0xe3a5('0x41'):return'imap.gmail.com';case _0xe3a5('0x42'):return'imap.mail.yahoo.com';case _0xe3a5('0x43'):return _0xe3a5('0x44');case'outlook365':return'outlook.office365.com';}return _0xe3a5('0x45');};exports[_0xe3a5('0x46')]=function(_0x372b74,_0x521810){var _0x4fc829=[_0xe3a5('0x47')+(_0x521810||''),_0xe3a5('0x48')+_0x372b74,'',''];return Buffer[_0xe3a5('0x33')](_0x4fc829['join']('\ 1'),_0xe3a5('0x49'))[_0xe3a5('0x4a')](_0xe3a5('0x4b'));};