Built motion from commit (unavailable).|2.4.4
[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 _0x52aa=['textAsHtml','originTo','message','originCc','includes','bcc','attach','attachments','type','attachment','attachment-','now','root','server/files/attachments/','push','contentType','from','messageId','inReplyTo','YYYY-MM-DD\x20HH:mm:ss','filter','info','parseBuffer','first','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','getHost','imap.gmail.com','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook365','127.0.0.1','moment','randomstring','path','util','node-tnef','../../../config/logger','email','../../../config/environment','head','address','anonymous','generate','@xcally.com','value','name','split','slice','join','Anonymous','length','isEmpty','html','test','replace','body'];(function(_0x17e3c4,_0x821010){var _0x2211b9=function(_0x33ab42){while(--_0x33ab42){_0x17e3c4['push'](_0x17e3c4['shift']());}};_0x2211b9(++_0x821010);}(_0x52aa,0x113));var _0xa52a=function(_0x2ac551,_0x525c42){_0x2ac551=_0x2ac551-0x0;var _0xe78aab=_0x52aa[_0x2ac551];return _0xe78aab;};'use strict';var _=require('lodash');var moment=require(_0xa52a('0x0'));var random=require(_0xa52a('0x1'));var fs=require('fs');var path=require(_0xa52a('0x2'));var util=require(_0xa52a('0x3'));var tnef=require(_0xa52a('0x4'));var logger=require(_0xa52a('0x5'))(_0xa52a('0x6'));var config=require(_0xa52a('0x7'));function getAddress(_0x18975a){var _0x3aaabd=_[_0xa52a('0x8')](_0x18975a['value']);return _0x3aaabd&&_0x3aaabd['address']?_0x3aaabd[_0xa52a('0x9')]:_0xa52a('0xa')+random[_0xa52a('0xb')](0x6)+_0xa52a('0xc');}function getFirstName(_0x19d5cf){var _0x398a62=_[_0xa52a('0x8')](_0x19d5cf[_0xa52a('0xd')]);if(_0x398a62&&_0x398a62[_0xa52a('0xe')]){var _0x2a575f=_0x398a62['name'][_0xa52a('0xf')](/\s+/);return _0x2a575f['length']?_0x2a575f[_0xa52a('0x10')](0x0,-0x1)[_0xa52a('0x11')]('\x20'):_0x398a62[_0xa52a('0xe')];}return _0xa52a('0x12');}function getLastName(_0x4095dd){var _0x3f2d98=_[_0xa52a('0x8')](_0x4095dd[_0xa52a('0xd')]);if(_0x3f2d98&&_0x3f2d98[_0xa52a('0xe')]){var _0x10342c=_0x3f2d98[_0xa52a('0xe')][_0xa52a('0xf')](/\s+/);return _0x10342c[_0xa52a('0x13')]>0x1?_0x10342c['pop']():'';}return'';}function getMails(_0x56a2d2,_0x64faab){var _0x34e286='';for(var _0x534580=0x0;_0x534580<_0x64faab[_0xa52a('0xd')][_0xa52a('0x13')];_0x534580+=0x1){if(_0x64faab[_0xa52a('0xd')][_0x534580][_0xa52a('0x9')]!==_0x56a2d2){if(!_[_0xa52a('0x14')](_0x34e286)){_0x34e286+=',';}_0x34e286+=_0x64faab[_0xa52a('0xd')][_0x534580][_0xa52a('0xe')]||_0x64faab[_0xa52a('0xd')][_0x534580][_0xa52a('0x9')]||'';_0x34e286+='\x20<';_0x34e286+=_0x64faab[_0xa52a('0xd')][_0x534580]['address']?_0x64faab[_0xa52a('0xd')][_0x534580][_0xa52a('0x9')]:_0xa52a('0xa')+random[_0xa52a('0xb')](0x6)+_0xa52a('0xc');_0x34e286+='>';}}return _0x34e286;}function parseEmail(_0xa0fd2d,_0x5d0fe4,_0x357887){if(_0x5d0fe4[_0xa52a('0x15')]){var _0xd4d131=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0xd4d131[_0xa52a('0x16')](_0x5d0fe4['html'])){_0x5d0fe4[_0xa52a('0x15')]=_0x5d0fe4[_0xa52a('0x15')][_0xa52a('0x17')](_0xd4d131,'');}_0x357887[_0xa52a('0x18')]=_0x5d0fe4[_0xa52a('0x15')];}else{_0x357887['body']=_0x5d0fe4[_0xa52a('0x19')];}if(_0x357887['body']){_0x357887['body']=_0x357887[_0xa52a('0x18')][_0xa52a('0x17')](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x5d0fe4['to']){_0x357887['message'][_0xa52a('0x1a')]=getMails(null,_0x5d0fe4['to']);var _0x3dc996=getMails(_0xa0fd2d['email'],_0x5d0fe4['to']);if(!_[_0xa52a('0x14')](_0x3dc996)){_0x357887[_0xa52a('0x1b')]['cc']+=_0x3dc996;}}if(_0x5d0fe4['cc']){_0x357887[_0xa52a('0x1b')][_0xa52a('0x1c')]=getMails(null,_0x5d0fe4['cc']);var _0x286280=getMails(_0xa0fd2d[_0xa52a('0x6')],_0x5d0fe4['cc']);if(!_[_0xa52a('0x14')](_0x286280)){if(!_[_0xa52a('0x14')](_0x357887[_0xa52a('0x1b')]['cc'])){_0x357887[_0xa52a('0x1b')]['cc']+=',';}_0x357887[_0xa52a('0x1b')]['cc']+=_0x286280;}}if(!_[_0xa52a('0x1d')](_0x357887[_0xa52a('0x1b')][_0xa52a('0x1a')],_0xa0fd2d[_0xa52a('0x6')])&&!_[_0xa52a('0x1d')](_0x357887[_0xa52a('0x1b')][_0xa52a('0x1c')],_0xa0fd2d['email'])){_0x357887[_0xa52a('0x1b')][_0xa52a('0x1e')]=_0xa0fd2d[_0xa52a('0x6')];}if(_0x5d0fe4['attachments']&&_0x5d0fe4['attachments'][_0xa52a('0x13')]){_0x357887[_0xa52a('0x1b')][_0xa52a('0x1f')]=_0x5d0fe4['attachments'][_0xa52a('0x13')];for(var _0x37dbbb=0x0,_0x552fc5,_0x38c371,_0x3a7ccf;_0x37dbbb<_0x5d0fe4[_0xa52a('0x20')][_0xa52a('0x13')];_0x37dbbb+=0x1){if(_0x5d0fe4[_0xa52a('0x20')][_0x37dbbb][_0xa52a('0x21')]===_0xa52a('0x22')){_0x3a7ccf=_0x5d0fe4[_0xa52a('0x20')][_0x37dbbb]['filename']||_0xa52a('0x23')+_0x37dbbb;_0x552fc5=util['format']('%s-%s',Date[_0xa52a('0x24')](),_0x3a7ccf);_0x38c371=path[_0xa52a('0x11')](config[_0xa52a('0x25')],_0xa52a('0x26'),_0x552fc5);fs['writeFileSync'](_0x38c371,_0x5d0fe4[_0xa52a('0x20')][_0x37dbbb]['content']);_0x357887[_0xa52a('0x1b')]['attachments'][_0xa52a('0x27')]({'name':_0x3a7ccf,'basename':_0x552fc5,'type':_0x5d0fe4[_0xa52a('0x20')][_0x37dbbb][_0xa52a('0x28')],'filepath':_0x38c371});}}}return _0x357887;}exports['parser']=function(_0x55b60f,_0x90c20,_0x42cfb4){var _0x3636f1={'from':getAddress(_0x90c20[_0xa52a('0x29')]),'firstName':getFirstName(_0x90c20[_0xa52a('0x29')]),'lastName':getLastName(_0x90c20[_0xa52a('0x29')]),'mapKey':_0xa52a('0x6'),'message':{'from':getMails(_0x55b60f[_0xa52a('0x6')],_0x90c20['from']),'to':_0x55b60f['email'],'cc':'','subject':_0x90c20['subject']||'','messageId':_0x90c20[_0xa52a('0x2a')],'inReplyTo':_0x90c20[_0xa52a('0x2b')],'sentAt':moment(_0x90c20['date'])['format'](_0xa52a('0x2c')),'attach':![],'attachments':[]}};if(!_0x90c20['html']&&!_0x90c20[_0xa52a('0x19')]){var _0x3c0a8b=_[_0xa52a('0x2d')](_0x90c20[_0xa52a('0x20')],{'contentType':'application/ms-tnef'});if(_0x3c0a8b[_0xa52a('0x13')]){logger[_0xa52a('0x2e')](util['format']('Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system',_0x90c20[_0xa52a('0x2a')]));tnef[_0xa52a('0x2f')](_[_0xa52a('0x30')](_0x3c0a8b)['content'],function(_0x1c043c,_0x4fa3ab){if(_0x4fa3ab){_0x90c20[_0xa52a('0x15')]=_0x4fa3ab[_0xa52a('0x31')]||_0xa52a('0x32');if(_0x4fa3ab[_0xa52a('0x33')]){for(var _0x34b718=0x0;_0x34b718<_0x4fa3ab[_0xa52a('0x33')][_0xa52a('0x13')];_0x34b718++){var _0xc99441=_0x4fa3ab['Attachments'][_0x34b718];_0x3636f1[_0xa52a('0x1b')][_0xa52a('0x20')][_0xa52a('0x27')]({'filename':_0xc99441[_0xa52a('0x34')],'content':new Buffer(_0xc99441['Data'])});}}}_0x42cfb4(parseEmail(_0x55b60f,_0x90c20,_0x3636f1));});}else{_0x90c20[_0xa52a('0x15')]='<p>Empty\x20message</p>';_0x42cfb4(parseEmail(_0x55b60f,_0x90c20,_0x3636f1));}}else{_0x42cfb4(parseEmail(_0x55b60f,_0x90c20,_0x3636f1));}};exports[_0xa52a('0x35')]=function(_0x508035){switch(_0x508035){case'gmail':return _0xa52a('0x36');case'yahoo':return _0xa52a('0x37');case _0xa52a('0x38'):return _0xa52a('0x39');case _0xa52a('0x3a'):return'outlook.office365.com';}return _0xa52a('0x3b');};