04ebfcec6f75159a4c0f5567a04799a5d697b4be
[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 _0xcdc2=['first','Attachments','Title','<p>Empty\x20message</p>','getHost','gmail','yahoo','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook.office365.com','127.0.0.1','moment','randomstring','path','util','node-tnef','../../../config/logger','email','../../../config/environment','head','address','@xcally.com','value','name','split','length','slice','Anonymous','pop','isEmpty','anonymous','generate','html','test','replace','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','message','includes','bcc','attachments','filename','attachment-','%s-%s','join','server/files/attachments/','writeFileSync','content','push','contentType','parser','from','subject','inReplyTo','format','YYYY-MM-DD\x20HH:mm:ss','filter','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','messageId','parseBuffer'];(function(_0x5864ef,_0x496812){var _0x21c244=function(_0x433f8a){while(--_0x433f8a){_0x5864ef['push'](_0x5864ef['shift']());}};_0x21c244(++_0x496812);}(_0xcdc2,0x104));var _0x2cdc=function(_0x1bec5a,_0x54e753){_0x1bec5a=_0x1bec5a-0x0;var _0x3ebcb6=_0xcdc2[_0x1bec5a];return _0x3ebcb6;};'use strict';var _=require('lodash');var moment=require(_0x2cdc('0x0'));var random=require(_0x2cdc('0x1'));var fs=require('fs');var path=require(_0x2cdc('0x2'));var util=require(_0x2cdc('0x3'));var tnef=require(_0x2cdc('0x4'));var logger=require(_0x2cdc('0x5'))(_0x2cdc('0x6'));var config=require(_0x2cdc('0x7'));function getAddress(_0x1dbc02){var _0x609697=_[_0x2cdc('0x8')](_0x1dbc02['value']);return _0x609697&&_0x609697[_0x2cdc('0x9')]?_0x609697[_0x2cdc('0x9')]:'anonymous'+random['generate'](0x6)+_0x2cdc('0xa');}function getFirstName(_0x5d70a3){var _0x192077=_['head'](_0x5d70a3[_0x2cdc('0xb')]);if(_0x192077&&_0x192077[_0x2cdc('0xc')]){var _0x3cbb33=_0x192077[_0x2cdc('0xc')][_0x2cdc('0xd')](/\s+/);return _0x3cbb33[_0x2cdc('0xe')]?_0x3cbb33[_0x2cdc('0xf')](0x0,-0x1)['join']('\x20'):_0x192077[_0x2cdc('0xc')];}return _0x2cdc('0x10');}function getLastName(_0x10528e){var _0x210c80=_[_0x2cdc('0x8')](_0x10528e[_0x2cdc('0xb')]);if(_0x210c80&&_0x210c80[_0x2cdc('0xc')]){var _0x4a4cde=_0x210c80[_0x2cdc('0xc')][_0x2cdc('0xd')](/\s+/);return _0x4a4cde[_0x2cdc('0xe')]>0x1?_0x4a4cde[_0x2cdc('0x11')]():'';}return'';}function getMails(_0x4a04a8,_0x402aed){var _0x10368d='';for(var _0x297425=0x0;_0x297425<_0x402aed[_0x2cdc('0xb')][_0x2cdc('0xe')];_0x297425+=0x1){if(_0x402aed[_0x2cdc('0xb')][_0x297425]['address']!==_0x4a04a8){if(!_[_0x2cdc('0x12')](_0x10368d)){_0x10368d+=',';}_0x10368d+=_0x402aed[_0x2cdc('0xb')][_0x297425][_0x2cdc('0xc')]||_0x402aed[_0x2cdc('0xb')][_0x297425]['address']||'';_0x10368d+='\x20<';_0x10368d+=_0x402aed[_0x2cdc('0xb')][_0x297425]['address']?_0x402aed[_0x2cdc('0xb')][_0x297425]['address']:_0x2cdc('0x13')+random[_0x2cdc('0x14')](0x6)+_0x2cdc('0xa');_0x10368d+='>';}}return _0x10368d;}function parseEmail(_0x5f5b70,_0xf56e89,_0x5650fc){if(_0xf56e89[_0x2cdc('0x15')]){var _0x112f68=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x112f68[_0x2cdc('0x16')](_0xf56e89['html'])){_0xf56e89[_0x2cdc('0x15')]=_0xf56e89[_0x2cdc('0x15')][_0x2cdc('0x17')](_0x112f68,'');}_0x5650fc[_0x2cdc('0x18')]=_0xf56e89[_0x2cdc('0x15')];}else{_0x5650fc[_0x2cdc('0x18')]=_0xf56e89[_0x2cdc('0x19')];}if(_0x5650fc['body']){_0x5650fc[_0x2cdc('0x18')]=_0x5650fc['body']['replace'](/<a\s+/gi,_0x2cdc('0x1a'));}if(_0xf56e89['to']){_0x5650fc['message']['originTo']=getMails(null,_0xf56e89['to']);var _0x2a378c=getMails(_0x5f5b70[_0x2cdc('0x6')],_0xf56e89['to']);if(!_[_0x2cdc('0x12')](_0x2a378c)){_0x5650fc[_0x2cdc('0x1b')]['cc']+=_0x2a378c;}}if(_0xf56e89['cc']){_0x5650fc[_0x2cdc('0x1b')]['originCc']=getMails(null,_0xf56e89['cc']);var _0x3dc6a8=getMails(_0x5f5b70[_0x2cdc('0x6')],_0xf56e89['cc']);if(!_[_0x2cdc('0x12')](_0x3dc6a8)){if(!_[_0x2cdc('0x12')](_0x5650fc[_0x2cdc('0x1b')]['cc'])){_0x5650fc['message']['cc']+=',';}_0x5650fc[_0x2cdc('0x1b')]['cc']+=_0x3dc6a8;}}if(!_[_0x2cdc('0x1c')](_0x5650fc[_0x2cdc('0x1b')]['originTo'],_0x5f5b70['email'])&&!_['includes'](_0x5650fc['message']['originCc'],_0x5f5b70[_0x2cdc('0x6')])){_0x5650fc['message'][_0x2cdc('0x1d')]=_0x5f5b70[_0x2cdc('0x6')];}if(_0xf56e89[_0x2cdc('0x1e')]&&_0xf56e89[_0x2cdc('0x1e')][_0x2cdc('0xe')]){_0x5650fc['message']['attach']=_0xf56e89[_0x2cdc('0x1e')][_0x2cdc('0xe')];for(var _0x2e53d5=0x0,_0x59e15,_0x4ecf8e,_0x56e44d;_0x2e53d5<_0xf56e89[_0x2cdc('0x1e')][_0x2cdc('0xe')];_0x2e53d5+=0x1){if(_0xf56e89[_0x2cdc('0x1e')][_0x2e53d5]['type']==='attachment'){_0x56e44d=_0xf56e89[_0x2cdc('0x1e')][_0x2e53d5][_0x2cdc('0x1f')]||_0x2cdc('0x20')+_0x2e53d5;_0x59e15=util['format'](_0x2cdc('0x21'),Date['now'](),_0x56e44d);_0x4ecf8e=path[_0x2cdc('0x22')](config['root'],_0x2cdc('0x23'),_0x59e15);fs[_0x2cdc('0x24')](_0x4ecf8e,_0xf56e89[_0x2cdc('0x1e')][_0x2e53d5][_0x2cdc('0x25')]);_0x5650fc['message'][_0x2cdc('0x1e')][_0x2cdc('0x26')]({'name':_0x56e44d,'basename':_0x59e15,'type':_0xf56e89[_0x2cdc('0x1e')][_0x2e53d5][_0x2cdc('0x27')],'filepath':_0x4ecf8e});}}}return _0x5650fc;}exports[_0x2cdc('0x28')]=function(_0x17252e,_0x22a482,_0x2d9520){var _0x2e7309={'from':getAddress(_0x22a482[_0x2cdc('0x29')]),'firstName':getFirstName(_0x22a482[_0x2cdc('0x29')]),'lastName':getLastName(_0x22a482[_0x2cdc('0x29')]),'mapKey':_0x2cdc('0x6'),'message':{'from':getMails(_0x17252e[_0x2cdc('0x6')],_0x22a482['from']),'to':_0x17252e[_0x2cdc('0x6')],'cc':'','subject':_0x22a482[_0x2cdc('0x2a')]||'','messageId':_0x22a482['messageId'],'inReplyTo':_0x22a482[_0x2cdc('0x2b')],'sentAt':moment(_0x22a482['date'])[_0x2cdc('0x2c')](_0x2cdc('0x2d')),'attach':![],'attachments':[]}};if(!_0x22a482[_0x2cdc('0x15')]&&!_0x22a482['textAsHtml']){var _0x37eee0=_[_0x2cdc('0x2e')](_0x22a482[_0x2cdc('0x1e')],{'contentType':'application/ms-tnef'});if(_0x37eee0[_0x2cdc('0xe')]){logger['info'](util['format'](_0x2cdc('0x2f'),_0x22a482[_0x2cdc('0x30')]));tnef[_0x2cdc('0x31')](_[_0x2cdc('0x32')](_0x37eee0)['content'],function(_0x511966,_0xed04ed){if(_0xed04ed){_0x22a482['html']=_0xed04ed['BodyHTML']||'<p>Empty\x20message</p>';if(_0xed04ed[_0x2cdc('0x33')]){for(var _0x3572a4=0x0;_0x3572a4<_0xed04ed[_0x2cdc('0x33')][_0x2cdc('0xe')];_0x3572a4++){var _0x525e02=_0xed04ed[_0x2cdc('0x33')][_0x3572a4];_0x2e7309[_0x2cdc('0x1b')][_0x2cdc('0x1e')][_0x2cdc('0x26')]({'filename':_0x525e02[_0x2cdc('0x34')],'content':new Buffer(_0x525e02['Data'])});}}}_0x2d9520(parseEmail(_0x17252e,_0x22a482,_0x2e7309));});}else{_0x22a482[_0x2cdc('0x15')]=_0x2cdc('0x35');_0x2d9520(parseEmail(_0x17252e,_0x22a482,_0x2e7309));}}else{_0x2d9520(parseEmail(_0x17252e,_0x22a482,_0x2e7309));}};exports[_0x2cdc('0x36')]=function(_0x3996b1){switch(_0x3996b1){case _0x2cdc('0x37'):return'imap.gmail.com';case _0x2cdc('0x38'):return _0x2cdc('0x39');case _0x2cdc('0x3a'):return _0x2cdc('0x3b');case'outlook365':return _0x2cdc('0x3c');}return _0x2cdc('0x3d');};