8abd32d128202ac6d642fef75726f2618dfac068
[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 _0x6fdf=['replace','<a\x20target=\x22_blank\x22\x20','originTo','message','originCc','includes','attachments','attach','type','attachment-','format','%s-%s','now','root','server/files/attachments/','writeFileSync','push','parser','from','subject','messageId','date','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','BodyHTML','Attachments','Data','<p>Empty\x20message</p>','gmail','imap.gmail.com','yahoo','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','127.0.0.1','lodash','moment','path','../../../config/logger','email','../../../config/environment','head','value','address','generate','split','length','slice','join','name','Anonymous','pop','isEmpty','anonymous','@xcally.com','test','html','body','textAsHtml'];(function(_0x457f1c,_0x33c255){var _0x18ced4=function(_0x1e0717){while(--_0x1e0717){_0x457f1c['push'](_0x457f1c['shift']());}};_0x18ced4(++_0x33c255);}(_0x6fdf,0xe4));var _0xf6fd=function(_0x4465e2,_0x276e3f){_0x4465e2=_0x4465e2-0x0;var _0x1fc7dd=_0x6fdf[_0x4465e2];return _0x1fc7dd;};'use strict';var _=require(_0xf6fd('0x0'));var moment=require(_0xf6fd('0x1'));var random=require('randomstring');var fs=require('fs');var path=require(_0xf6fd('0x2'));var util=require('util');var tnef=require('node-tnef');var logger=require(_0xf6fd('0x3'))(_0xf6fd('0x4'));var config=require(_0xf6fd('0x5'));function getAddress(_0x208bba){var _0x4eecc3=_[_0xf6fd('0x6')](_0x208bba[_0xf6fd('0x7')]);return _0x4eecc3&&_0x4eecc3[_0xf6fd('0x8')]?_0x4eecc3[_0xf6fd('0x8')]:'anonymous'+random[_0xf6fd('0x9')](0x6)+'@xcally.com';}function getFirstName(_0x1d500c){var _0x3492d8=_[_0xf6fd('0x6')](_0x1d500c[_0xf6fd('0x7')]);if(_0x3492d8&&_0x3492d8['name']){var _0x305673=_0x3492d8['name'][_0xf6fd('0xa')](/\s+/);return _0x305673[_0xf6fd('0xb')]?_0x305673[_0xf6fd('0xc')](0x0,-0x1)[_0xf6fd('0xd')]('\x20'):_0x3492d8[_0xf6fd('0xe')];}return _0xf6fd('0xf');}function getLastName(_0x49f6a6){var _0x400a9d=_[_0xf6fd('0x6')](_0x49f6a6[_0xf6fd('0x7')]);if(_0x400a9d&&_0x400a9d[_0xf6fd('0xe')]){var _0x2ee25b=_0x400a9d['name'][_0xf6fd('0xa')](/\s+/);return _0x2ee25b[_0xf6fd('0xb')]>0x1?_0x2ee25b[_0xf6fd('0x10')]():'';}return'';}function getMails(_0x55d996,_0x594ab8){var _0x1a3a20='';for(var _0x5b57ce=0x0;_0x5b57ce<_0x594ab8['value'][_0xf6fd('0xb')];_0x5b57ce+=0x1){if(_0x594ab8[_0xf6fd('0x7')][_0x5b57ce][_0xf6fd('0x8')]!==_0x55d996){if(!_[_0xf6fd('0x11')](_0x1a3a20)){_0x1a3a20+=',';}_0x1a3a20+=_0x594ab8[_0xf6fd('0x7')][_0x5b57ce][_0xf6fd('0xe')]||_0x594ab8['value'][_0x5b57ce]['address']||'';_0x1a3a20+='\x20<';_0x1a3a20+=_0x594ab8[_0xf6fd('0x7')][_0x5b57ce]['address']?_0x594ab8[_0xf6fd('0x7')][_0x5b57ce][_0xf6fd('0x8')]:_0xf6fd('0x12')+random[_0xf6fd('0x9')](0x6)+_0xf6fd('0x13');_0x1a3a20+='>';}}return _0x1a3a20;}function parseEmail(_0x2fba71,_0x458e37,_0x505671){if(_0x458e37['html']){var _0x382483=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x382483[_0xf6fd('0x14')](_0x458e37[_0xf6fd('0x15')])){_0x458e37[_0xf6fd('0x15')]=_0x458e37[_0xf6fd('0x15')]['replace'](_0x382483,'');}_0x505671[_0xf6fd('0x16')]=_0x458e37[_0xf6fd('0x15')];}else{_0x505671[_0xf6fd('0x16')]=_0x458e37[_0xf6fd('0x17')];}if(_0x505671[_0xf6fd('0x16')]){_0x505671[_0xf6fd('0x16')]=_0x505671[_0xf6fd('0x16')][_0xf6fd('0x18')](/<a\s+/gi,_0xf6fd('0x19'));}if(_0x458e37['to']){_0x505671['message'][_0xf6fd('0x1a')]=getMails(null,_0x458e37['to']);var _0x1594b5=getMails(_0x2fba71[_0xf6fd('0x4')],_0x458e37['to']);if(!_['isEmpty'](_0x1594b5)){_0x505671[_0xf6fd('0x1b')]['cc']+=_0x1594b5;}}if(_0x458e37['cc']){_0x505671[_0xf6fd('0x1b')][_0xf6fd('0x1c')]=getMails(null,_0x458e37['cc']);var _0x463efa=getMails(_0x2fba71[_0xf6fd('0x4')],_0x458e37['cc']);if(!_[_0xf6fd('0x11')](_0x463efa)){if(!_[_0xf6fd('0x11')](_0x505671[_0xf6fd('0x1b')]['cc'])){_0x505671[_0xf6fd('0x1b')]['cc']+=',';}_0x505671[_0xf6fd('0x1b')]['cc']+=_0x463efa;}}if(!_['includes'](_0x505671[_0xf6fd('0x1b')][_0xf6fd('0x1a')],_0x2fba71[_0xf6fd('0x4')])&&!_[_0xf6fd('0x1d')](_0x505671[_0xf6fd('0x1b')][_0xf6fd('0x1c')],_0x2fba71[_0xf6fd('0x4')])){_0x505671['message']['bcc']=_0x2fba71['email'];}if(_0x458e37[_0xf6fd('0x1e')]&&_0x458e37['attachments'][_0xf6fd('0xb')]){_0x505671[_0xf6fd('0x1b')][_0xf6fd('0x1f')]=_0x458e37[_0xf6fd('0x1e')][_0xf6fd('0xb')];for(var _0x46db9b=0x0,_0x55a05b,_0x4c35df,_0x38b560;_0x46db9b<_0x458e37['attachments']['length'];_0x46db9b+=0x1){if(_0x458e37[_0xf6fd('0x1e')][_0x46db9b][_0xf6fd('0x20')]==='attachment'){_0x38b560=_0x458e37[_0xf6fd('0x1e')][_0x46db9b]['filename']||_0xf6fd('0x21')+_0x46db9b;_0x55a05b=util[_0xf6fd('0x22')](_0xf6fd('0x23'),Date[_0xf6fd('0x24')](),_0x38b560);_0x4c35df=path[_0xf6fd('0xd')](config[_0xf6fd('0x25')],_0xf6fd('0x26'),_0x55a05b);fs[_0xf6fd('0x27')](_0x4c35df,_0x458e37[_0xf6fd('0x1e')][_0x46db9b]['content']);_0x505671[_0xf6fd('0x1b')][_0xf6fd('0x1e')][_0xf6fd('0x28')]({'name':_0x38b560,'basename':_0x55a05b,'type':_0x458e37[_0xf6fd('0x1e')][_0x46db9b]['contentType'],'filepath':_0x4c35df});}}}return _0x505671;}exports[_0xf6fd('0x29')]=function(_0xd109d8,_0x3ab7a4,_0x50ba55){var _0x24a5c1={'from':getAddress(_0x3ab7a4[_0xf6fd('0x2a')]),'firstName':getFirstName(_0x3ab7a4[_0xf6fd('0x2a')]),'lastName':getLastName(_0x3ab7a4[_0xf6fd('0x2a')]),'mapKey':_0xf6fd('0x4'),'message':{'from':getMails(_0xd109d8[_0xf6fd('0x4')],_0x3ab7a4[_0xf6fd('0x2a')]),'to':_0xd109d8['email'],'cc':'','subject':_0x3ab7a4[_0xf6fd('0x2b')]||'','messageId':_0x3ab7a4[_0xf6fd('0x2c')],'inReplyTo':_0x3ab7a4['inReplyTo'],'sentAt':moment(_0x3ab7a4[_0xf6fd('0x2d')])[_0xf6fd('0x22')](_0xf6fd('0x2e')),'attach':![],'attachments':[]}};if(!_0x3ab7a4['html']&&!_0x3ab7a4[_0xf6fd('0x17')]){var _0x37a8a8=_[_0xf6fd('0x2f')](_0x3ab7a4[_0xf6fd('0x1e')],{'contentType':_0xf6fd('0x30')});if(_0x37a8a8[_0xf6fd('0xb')]){logger[_0xf6fd('0x31')](util[_0xf6fd('0x22')](_0xf6fd('0x32'),_0x3ab7a4[_0xf6fd('0x2c')]));tnef[_0xf6fd('0x33')](_['first'](_0x37a8a8)['content'],function(_0x5b50a5,_0x19737b){if(_0x19737b){_0x3ab7a4[_0xf6fd('0x15')]=_0x19737b[_0xf6fd('0x34')]||'<p>Empty\x20message</p>';if(_0x19737b[_0xf6fd('0x35')]){for(var _0x45384d=0x0;_0x45384d<_0x19737b[_0xf6fd('0x35')][_0xf6fd('0xb')];_0x45384d++){var _0x1d66d4=_0x19737b[_0xf6fd('0x35')][_0x45384d];_0x24a5c1[_0xf6fd('0x1b')][_0xf6fd('0x1e')][_0xf6fd('0x28')]({'filename':_0x1d66d4['Title'],'content':new Buffer(_0x1d66d4[_0xf6fd('0x36')])});}}}_0x50ba55(parseEmail(_0xd109d8,_0x3ab7a4,_0x24a5c1));});}else{_0x3ab7a4['html']=_0xf6fd('0x37');_0x50ba55(parseEmail(_0xd109d8,_0x3ab7a4,_0x24a5c1));}}else{_0x50ba55(parseEmail(_0xd109d8,_0x3ab7a4,_0x24a5c1));}};exports['getHost']=function(_0x8239f8){switch(_0x8239f8){case _0xf6fd('0x38'):return _0xf6fd('0x39');case _0xf6fd('0x3a'):return _0xf6fd('0x3b');case _0xf6fd('0x3c'):return _0xf6fd('0x3d');case'outlook365':return'outlook.office365.com';}return _0xf6fd('0x3e');};