9af8bd42343b4150f362351823ac95c7b464bf31
[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 _0x600a=['moment','randomstring','path','node-tnef','../../../config/logger','value','anonymous','generate','@xcally.com','name','split','length','slice','join','Anonymous','head','isEmpty','address','test','html','replace','body','<a\x20target=\x22_blank\x22\x20','message','email','originCc','originTo','includes','bcc','attachments','attach','type','attachment','filename','attachment-','format','%s-%s','now','root','server/files/attachments/','content','push','contentType','from','subject','messageId','inReplyTo','date','YYYY-MM-DD\x20HH:mm:ss','filter','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','Data','getHost','gmail','imap.gmail.com','yahoo','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook365','127.0.0.1','lodash'];(function(_0x4e3bf4,_0x79b5ec){var _0x258f66=function(_0xd660ea){while(--_0xd660ea){_0x4e3bf4['push'](_0x4e3bf4['shift']());}};_0x258f66(++_0x79b5ec);}(_0x600a,0x89));var _0xa600=function(_0x441f7a,_0x576321){_0x441f7a=_0x441f7a-0x0;var _0x4821da=_0x600a[_0x441f7a];return _0x4821da;};'use strict';var _=require(_0xa600('0x0'));var moment=require(_0xa600('0x1'));var random=require(_0xa600('0x2'));var fs=require('fs');var path=require(_0xa600('0x3'));var util=require('util');var tnef=require(_0xa600('0x4'));var logger=require(_0xa600('0x5'))('email');var config=require('../../../config/environment');function getAddress(_0x2dd509){var _0x18689a=_['head'](_0x2dd509[_0xa600('0x6')]);return _0x18689a&&_0x18689a['address']?_0x18689a['address']:_0xa600('0x7')+random[_0xa600('0x8')](0x6)+_0xa600('0x9');}function getFirstName(_0x3d917b){var _0x15a4eb=_['head'](_0x3d917b[_0xa600('0x6')]);if(_0x15a4eb&&_0x15a4eb[_0xa600('0xa')]){var _0x16b073=_0x15a4eb[_0xa600('0xa')][_0xa600('0xb')](/\s+/);return _0x16b073[_0xa600('0xc')]?_0x16b073[_0xa600('0xd')](0x0,-0x1)[_0xa600('0xe')]('\x20'):_0x15a4eb[_0xa600('0xa')];}return _0xa600('0xf');}function getLastName(_0x55e072){var _0x2164d1=_[_0xa600('0x10')](_0x55e072[_0xa600('0x6')]);if(_0x2164d1&&_0x2164d1[_0xa600('0xa')]){var _0x4b9576=_0x2164d1[_0xa600('0xa')]['split'](/\s+/);return _0x4b9576[_0xa600('0xc')]>0x1?_0x4b9576['pop']():'';}return'';}function getMails(_0x1afc86,_0x292a6e){var _0x23b72e='';for(var _0x2c12bd=0x0;_0x2c12bd<_0x292a6e[_0xa600('0x6')][_0xa600('0xc')];_0x2c12bd+=0x1){if(_0x292a6e['value'][_0x2c12bd]['address']!==_0x1afc86){if(!_[_0xa600('0x11')](_0x23b72e)){_0x23b72e+=',';}_0x23b72e+=_0x292a6e[_0xa600('0x6')][_0x2c12bd]['name']||_0x292a6e[_0xa600('0x6')][_0x2c12bd]['address']||'';_0x23b72e+='\x20<';_0x23b72e+=_0x292a6e['value'][_0x2c12bd][_0xa600('0x12')]?_0x292a6e[_0xa600('0x6')][_0x2c12bd][_0xa600('0x12')]:_0xa600('0x7')+random['generate'](0x6)+_0xa600('0x9');_0x23b72e+='>';}}return _0x23b72e;}function parseEmail(_0xe108c8,_0x15d494,_0x1779e3){if(_0x15d494['html']){var _0x51cb38=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x51cb38[_0xa600('0x13')](_0x15d494[_0xa600('0x14')])){_0x15d494[_0xa600('0x14')]=_0x15d494[_0xa600('0x14')][_0xa600('0x15')](_0x51cb38,'');}_0x1779e3[_0xa600('0x16')]=_0x15d494[_0xa600('0x14')];}else{_0x1779e3[_0xa600('0x16')]=_0x15d494['textAsHtml'];}if(_0x1779e3[_0xa600('0x16')]){_0x1779e3[_0xa600('0x16')]=_0x1779e3[_0xa600('0x16')][_0xa600('0x15')](/<a\s+/gi,_0xa600('0x17'));}if(_0x15d494['to']){_0x1779e3[_0xa600('0x18')]['originTo']=getMails(null,_0x15d494['to']);var _0x32f3fd=getMails(_0xe108c8[_0xa600('0x19')],_0x15d494['to']);if(!_[_0xa600('0x11')](_0x32f3fd)){_0x1779e3[_0xa600('0x18')]['cc']+=_0x32f3fd;}}if(_0x15d494['cc']){_0x1779e3['message'][_0xa600('0x1a')]=getMails(null,_0x15d494['cc']);var _0x223c47=getMails(_0xe108c8[_0xa600('0x19')],_0x15d494['cc']);if(!_['isEmpty'](_0x223c47)){if(!_[_0xa600('0x11')](_0x1779e3[_0xa600('0x18')]['cc'])){_0x1779e3[_0xa600('0x18')]['cc']+=',';}_0x1779e3[_0xa600('0x18')]['cc']+=_0x223c47;}}if(!_['includes'](_0x1779e3['message'][_0xa600('0x1b')],_0xe108c8[_0xa600('0x19')])&&!_[_0xa600('0x1c')](_0x1779e3[_0xa600('0x18')][_0xa600('0x1a')],_0xe108c8[_0xa600('0x19')])){_0x1779e3[_0xa600('0x18')][_0xa600('0x1d')]=_0xe108c8[_0xa600('0x19')];}if(_0x15d494[_0xa600('0x1e')]&&_0x15d494[_0xa600('0x1e')][_0xa600('0xc')]){_0x1779e3[_0xa600('0x18')][_0xa600('0x1f')]=_0x15d494[_0xa600('0x1e')][_0xa600('0xc')];for(var _0x2b281c=0x0,_0x3f2a04,_0x4b2269,_0x15f5be;_0x2b281c<_0x15d494['attachments']['length'];_0x2b281c+=0x1){if(_0x15d494[_0xa600('0x1e')][_0x2b281c][_0xa600('0x20')]===_0xa600('0x21')){_0x15f5be=_0x15d494[_0xa600('0x1e')][_0x2b281c][_0xa600('0x22')]||_0xa600('0x23')+_0x2b281c;_0x3f2a04=util[_0xa600('0x24')](_0xa600('0x25'),Date[_0xa600('0x26')](),_0x15f5be);_0x4b2269=path[_0xa600('0xe')](config[_0xa600('0x27')],_0xa600('0x28'),_0x3f2a04);fs['writeFileSync'](_0x4b2269,_0x15d494[_0xa600('0x1e')][_0x2b281c][_0xa600('0x29')]);_0x1779e3[_0xa600('0x18')][_0xa600('0x1e')][_0xa600('0x2a')]({'name':_0x15f5be,'basename':_0x3f2a04,'type':_0x15d494[_0xa600('0x1e')][_0x2b281c][_0xa600('0x2b')],'filepath':_0x4b2269});}}}return _0x1779e3;}exports['parser']=function(_0x57ec35,_0x1eb4cb,_0x17dee3){var _0x54e727={'from':getAddress(_0x1eb4cb['from']),'firstName':getFirstName(_0x1eb4cb['from']),'lastName':getLastName(_0x1eb4cb[_0xa600('0x2c')]),'mapKey':'email','message':{'from':getMails(_0x57ec35[_0xa600('0x19')],_0x1eb4cb[_0xa600('0x2c')]),'to':_0x57ec35[_0xa600('0x19')],'cc':'','subject':_0x1eb4cb[_0xa600('0x2d')]||'','messageId':_0x1eb4cb[_0xa600('0x2e')],'inReplyTo':_0x1eb4cb[_0xa600('0x2f')],'sentAt':moment(_0x1eb4cb[_0xa600('0x30')])[_0xa600('0x24')](_0xa600('0x31')),'attach':![],'attachments':[]}};if(!_0x1eb4cb[_0xa600('0x14')]&&!_0x1eb4cb['textAsHtml']){var _0xa5efcf=_[_0xa600('0x32')](_0x1eb4cb[_0xa600('0x1e')],{'contentType':'application/ms-tnef'});if(_0xa5efcf[_0xa600('0xc')]){logger[_0xa600('0x33')](util[_0xa600('0x24')](_0xa600('0x34'),_0x1eb4cb[_0xa600('0x2e')]));tnef[_0xa600('0x35')](_[_0xa600('0x36')](_0xa5efcf)[_0xa600('0x29')],function(_0x20bc55,_0x5c41cb){if(_0x5c41cb){_0x1eb4cb[_0xa600('0x14')]=_0x5c41cb[_0xa600('0x37')]||_0xa600('0x38');if(_0x5c41cb[_0xa600('0x39')]){for(var _0x3d67e6=0x0;_0x3d67e6<_0x5c41cb[_0xa600('0x39')][_0xa600('0xc')];_0x3d67e6++){var _0x342529=_0x5c41cb[_0xa600('0x39')][_0x3d67e6];_0x54e727[_0xa600('0x18')]['attachments'][_0xa600('0x2a')]({'filename':_0x342529[_0xa600('0x3a')],'content':new Buffer(_0x342529[_0xa600('0x3b')])});}}}_0x17dee3(parseEmail(_0x57ec35,_0x1eb4cb,_0x54e727));});}else{_0x1eb4cb['html']=_0xa600('0x38');_0x17dee3(parseEmail(_0x57ec35,_0x1eb4cb,_0x54e727));}}else{_0x17dee3(parseEmail(_0x57ec35,_0x1eb4cb,_0x54e727));}};exports[_0xa600('0x3c')]=function(_0x3ff644){switch(_0x3ff644){case _0xa600('0x3d'):return _0xa600('0x3e');case _0xa600('0x3f'):return _0xa600('0x40');case _0xa600('0x41'):return _0xa600('0x42');case _0xa600('0x43'):return'outlook.office365.com';}return _0xa600('0x44');};