07445ec2b34972985c9362aaed4d18e3193693ea
[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 _0x7187=['127.0.0.1','lodash','randomstring','path','util','node-tnef','../../../config/logger','email','../../../config/environment','head','address','anonymous','generate','@xcally.com','value','name','length','slice','join','split','pop','isEmpty','test','html','replace','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','originTo','message','includes','originCc','bcc','attachments','attach','attachment','filename','attachment-','format','%s-%s','now','root','content','push','contentType','parser','from','subject','messageId','inReplyTo','info','first','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','Data','gmail','imap.gmail.com','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook365','outlook.office365.com'];(function(_0x56dac4,_0x59c648){var _0x430c19=function(_0x4850e4){while(--_0x4850e4){_0x56dac4['push'](_0x56dac4['shift']());}};_0x430c19(++_0x59c648);}(_0x7187,0x101));var _0x7718=function(_0x430c16,_0x550005){_0x430c16=_0x430c16-0x0;var _0x13b9a6=_0x7187[_0x430c16];return _0x13b9a6;};'use strict';var _=require(_0x7718('0x0'));var moment=require('moment');var random=require(_0x7718('0x1'));var fs=require('fs');var path=require(_0x7718('0x2'));var util=require(_0x7718('0x3'));var tnef=require(_0x7718('0x4'));var logger=require(_0x7718('0x5'))(_0x7718('0x6'));var config=require(_0x7718('0x7'));function getAddress(_0x4809bd){var _0x4216ff=_[_0x7718('0x8')](_0x4809bd['value']);return _0x4216ff&&_0x4216ff['address']?_0x4216ff[_0x7718('0x9')]:_0x7718('0xa')+random[_0x7718('0xb')](0x6)+_0x7718('0xc');}function getFirstName(_0x1f3432){var _0x22a771=_[_0x7718('0x8')](_0x1f3432[_0x7718('0xd')]);if(_0x22a771&&_0x22a771['name']){var _0x3a8023=_0x22a771[_0x7718('0xe')]['split'](/\s+/);return _0x3a8023[_0x7718('0xf')]?_0x3a8023[_0x7718('0x10')](0x0,-0x1)[_0x7718('0x11')]('\x20'):_0x22a771[_0x7718('0xe')];}return'Anonymous';}function getLastName(_0x4ec516){var _0x235462=_[_0x7718('0x8')](_0x4ec516[_0x7718('0xd')]);if(_0x235462&&_0x235462[_0x7718('0xe')]){var _0x1df1ee=_0x235462[_0x7718('0xe')][_0x7718('0x12')](/\s+/);return _0x1df1ee['length']>0x1?_0x1df1ee[_0x7718('0x13')]():'';}return'';}function getMails(_0x46e2a2,_0x51b1b4){var _0x1e3ae1='';for(var _0x17edaa=0x0;_0x17edaa<_0x51b1b4['value'][_0x7718('0xf')];_0x17edaa+=0x1){if(_0x51b1b4[_0x7718('0xd')][_0x17edaa][_0x7718('0x9')]!==_0x46e2a2){if(!_[_0x7718('0x14')](_0x1e3ae1)){_0x1e3ae1+=',';}_0x1e3ae1+=_0x51b1b4[_0x7718('0xd')][_0x17edaa][_0x7718('0xe')]||_0x51b1b4[_0x7718('0xd')][_0x17edaa][_0x7718('0x9')]||'';_0x1e3ae1+='\x20<';_0x1e3ae1+=_0x51b1b4[_0x7718('0xd')][_0x17edaa][_0x7718('0x9')]?_0x51b1b4[_0x7718('0xd')][_0x17edaa]['address']:'anonymous'+random[_0x7718('0xb')](0x6)+'@xcally.com';_0x1e3ae1+='>';}}return _0x1e3ae1;}function parseEmail(_0x3b3dea,_0x3e7c8a,_0x125a25){if(_0x3e7c8a['html']){var _0x23ed22=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x23ed22[_0x7718('0x15')](_0x3e7c8a[_0x7718('0x16')])){_0x3e7c8a['html']=_0x3e7c8a[_0x7718('0x16')][_0x7718('0x17')](_0x23ed22,'');}_0x125a25[_0x7718('0x18')]=_0x3e7c8a[_0x7718('0x16')];}else{_0x125a25[_0x7718('0x18')]=_0x3e7c8a[_0x7718('0x19')];}if(_0x125a25[_0x7718('0x18')]){_0x125a25[_0x7718('0x18')]=_0x125a25[_0x7718('0x18')][_0x7718('0x17')](/<a\s+/gi,_0x7718('0x1a'));}if(_0x3e7c8a['to']){_0x125a25['message'][_0x7718('0x1b')]=getMails(null,_0x3e7c8a['to']);var _0x204dc6=getMails(_0x3b3dea[_0x7718('0x6')],_0x3e7c8a['to']);if(!_[_0x7718('0x14')](_0x204dc6)){_0x125a25[_0x7718('0x1c')]['cc']+=_0x204dc6;}}if(_0x3e7c8a['cc']){_0x125a25[_0x7718('0x1c')]['originCc']=getMails(null,_0x3e7c8a['cc']);var _0x16878c=getMails(_0x3b3dea[_0x7718('0x6')],_0x3e7c8a['cc']);if(!_[_0x7718('0x14')](_0x16878c)){if(!_[_0x7718('0x14')](_0x125a25[_0x7718('0x1c')]['cc'])){_0x125a25[_0x7718('0x1c')]['cc']+=',';}_0x125a25[_0x7718('0x1c')]['cc']+=_0x16878c;}}if(!_[_0x7718('0x1d')](_0x125a25[_0x7718('0x1c')][_0x7718('0x1b')],_0x3b3dea[_0x7718('0x6')])&&!_[_0x7718('0x1d')](_0x125a25[_0x7718('0x1c')][_0x7718('0x1e')],_0x3b3dea['email'])){_0x125a25[_0x7718('0x1c')][_0x7718('0x1f')]=_0x3b3dea['email'];}if(_0x3e7c8a[_0x7718('0x20')]&&_0x3e7c8a[_0x7718('0x20')][_0x7718('0xf')]){_0x125a25['message'][_0x7718('0x21')]=_0x3e7c8a[_0x7718('0x20')]['length'];for(var _0x3ff9b6=0x0,_0x96d82e,_0x1aa42e,_0x255d0a;_0x3ff9b6<_0x3e7c8a['attachments'][_0x7718('0xf')];_0x3ff9b6+=0x1){if(_0x3e7c8a[_0x7718('0x20')][_0x3ff9b6]['type']===_0x7718('0x22')){_0x255d0a=_0x3e7c8a[_0x7718('0x20')][_0x3ff9b6][_0x7718('0x23')]||_0x7718('0x24')+_0x3ff9b6;_0x96d82e=util[_0x7718('0x25')](_0x7718('0x26'),Date[_0x7718('0x27')](),_0x255d0a);_0x1aa42e=path[_0x7718('0x11')](config[_0x7718('0x28')],'server/files/attachments/',_0x96d82e);fs['writeFileSync'](_0x1aa42e,_0x3e7c8a['attachments'][_0x3ff9b6][_0x7718('0x29')]);_0x125a25[_0x7718('0x1c')][_0x7718('0x20')][_0x7718('0x2a')]({'name':_0x255d0a,'basename':_0x96d82e,'type':_0x3e7c8a['attachments'][_0x3ff9b6][_0x7718('0x2b')],'filepath':_0x1aa42e});}}}return _0x125a25;}exports[_0x7718('0x2c')]=function(_0x5d9b1a,_0x3a9051,_0xa5a689){var _0x25b0d9={'from':getAddress(_0x3a9051[_0x7718('0x2d')]),'firstName':getFirstName(_0x3a9051['from']),'lastName':getLastName(_0x3a9051[_0x7718('0x2d')]),'mapKey':_0x7718('0x6'),'message':{'from':getMails(_0x5d9b1a[_0x7718('0x6')],_0x3a9051[_0x7718('0x2d')]),'to':_0x5d9b1a[_0x7718('0x6')],'cc':'','subject':_0x3a9051[_0x7718('0x2e')]||'','messageId':_0x3a9051[_0x7718('0x2f')],'inReplyTo':_0x3a9051[_0x7718('0x30')],'sentAt':moment(_0x3a9051['date'])['format']('YYYY-MM-DD\x20HH:mm:ss'),'attach':![],'attachments':[]}};if(!_0x3a9051['html']&&!_0x3a9051[_0x7718('0x19')]){var _0x129346=_['filter'](_0x3a9051['attachments'],{'contentType':'application/ms-tnef'});if(_0x129346[_0x7718('0xf')]){logger[_0x7718('0x31')](util[_0x7718('0x25')]('Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system',_0x3a9051['messageId']));tnef['parseBuffer'](_[_0x7718('0x32')](_0x129346)[_0x7718('0x29')],function(_0x26ac6e,_0xa88a40){if(_0xa88a40){_0x3a9051[_0x7718('0x16')]=_0xa88a40[_0x7718('0x33')]||_0x7718('0x34');if(_0xa88a40[_0x7718('0x35')]){for(var _0x27a30c=0x0;_0x27a30c<_0xa88a40['Attachments']['length'];_0x27a30c++){var _0x19997b=_0xa88a40['Attachments'][_0x27a30c];_0x25b0d9[_0x7718('0x1c')][_0x7718('0x20')][_0x7718('0x2a')]({'filename':_0x19997b[_0x7718('0x36')],'content':new Buffer(_0x19997b[_0x7718('0x37')])});}}}_0xa5a689(parseEmail(_0x5d9b1a,_0x3a9051,_0x25b0d9));});}else{_0x3a9051['html']=_0x7718('0x34');_0xa5a689(parseEmail(_0x5d9b1a,_0x3a9051,_0x25b0d9));}}else{_0xa5a689(parseEmail(_0x5d9b1a,_0x3a9051,_0x25b0d9));}};exports['getHost']=function(_0xc91476){switch(_0xc91476){case _0x7718('0x38'):return _0x7718('0x39');case'yahoo':return _0x7718('0x3a');case _0x7718('0x3b'):return _0x7718('0x3c');case _0x7718('0x3d'):return _0x7718('0x3e');}return _0x7718('0x3f');};