ee63554cd333987e67b043789e3011b80a841dab
[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 _0x0c2b=['now','root','server/files/attachments/','writeFileSync','content','push','contentType','headerLines','Precedence:\x20auto_reply','line','parser','from','inReplyTo','date','YYYY-MM-DD\x20HH:mm:ss','filter','application/ms-tnef','info','format','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','messageId','parseBuffer','first','<p>Empty\x20message</p>','Attachments','Title','Data','getHost','imap.gmail.com','yahoo','imap.mail.yahoo.com','imap-mail.outlook.com','outlook365','outlook.office365.com','lodash','moment','path','util','node-tnef','../../../config/environment','head','value','address','anonymous','generate','name','substring','split','length','slice','join','Anonymous','pop','isEmpty','@xcally.com','html','test','replace','includes','filename','_SRC','_IMG','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','message','originTo','email','originCc','bcc','attachments','attachment','attachment-','%s-%s'];(function(_0x100e36,_0x4da225){var _0x1df0c9=function(_0xe4b84f){while(--_0xe4b84f){_0x100e36['push'](_0x100e36['shift']());}};_0x1df0c9(++_0x4da225);}(_0x0c2b,0x194));var _0xb0c2=function(_0x2f8848,_0x100729){_0x2f8848=_0x2f8848-0x0;var _0x3e44f3=_0x0c2b[_0x2f8848];return _0x3e44f3;};'use strict';var _=require(_0xb0c2('0x0'));var moment=require(_0xb0c2('0x1'));var random=require('randomstring');var fs=require('fs');var path=require(_0xb0c2('0x2'));var util=require(_0xb0c2('0x3'));var tnef=require(_0xb0c2('0x4'));var logger=require('../../../config/logger')('email');var config=require(_0xb0c2('0x5'));function getAddress(_0x7362ce){var _0x15bd6f=_[_0xb0c2('0x6')](_0x7362ce[_0xb0c2('0x7')]);return _0x15bd6f&&_0x15bd6f['address']?_0x15bd6f[_0xb0c2('0x8')]:_0xb0c2('0x9')+random[_0xb0c2('0xa')](0x6)+'@xcally.com';}function getFirstName(_0x247201){var _0x3049f1=_[_0xb0c2('0x6')](_0x247201[_0xb0c2('0x7')]);if(_0x3049f1&&_0x3049f1['name']){if(_0x3049f1['name']==_0x3049f1[_0xb0c2('0x8')]){return _0x3049f1[_0xb0c2('0xb')][_0xb0c2('0xc')](0x0,_0x3049f1[_0xb0c2('0xb')]['indexOf']('@'));}var _0x2c7c1e=_0x3049f1[_0xb0c2('0xb')][_0xb0c2('0xd')](/\s+/);return _0x2c7c1e[_0xb0c2('0xe')]>0x1?_0x2c7c1e[_0xb0c2('0xf')](0x0,-0x1)[_0xb0c2('0x10')]('\x20'):_0x3049f1[_0xb0c2('0xb')];}return _0xb0c2('0x11');}function getLastName(_0x217c9a){var _0x225375=_[_0xb0c2('0x6')](_0x217c9a[_0xb0c2('0x7')]);if(_0x225375&&_0x225375[_0xb0c2('0xb')]){var _0x34b086=_0x225375[_0xb0c2('0xb')]['split'](/\s+/);return _0x34b086[_0xb0c2('0xe')]>0x1?_0x34b086[_0xb0c2('0x12')]():'';}return'';}function getMails(_0x43f6ba,_0x4ed594){var _0x5b9e81='';for(var _0x332d44=0x0;_0x332d44<_0x4ed594[_0xb0c2('0x7')][_0xb0c2('0xe')];_0x332d44+=0x1){if(_0x4ed594['value'][_0x332d44][_0xb0c2('0x8')]!==_0x43f6ba){if(!_[_0xb0c2('0x13')](_0x5b9e81)){_0x5b9e81+=',';}_0x5b9e81+=_0x4ed594['value'][_0x332d44][_0xb0c2('0xb')]||_0x4ed594[_0xb0c2('0x7')][_0x332d44][_0xb0c2('0x8')]||'';_0x5b9e81+='\x20<';_0x5b9e81+=_0x4ed594['value'][_0x332d44][_0xb0c2('0x8')]?_0x4ed594[_0xb0c2('0x7')][_0x332d44][_0xb0c2('0x8')]:_0xb0c2('0x9')+random[_0xb0c2('0xa')](0x6)+_0xb0c2('0x14');_0x5b9e81+='>';}}return _0x5b9e81;}function parseEmail(_0x3b92cb,_0x26d9c0,_0xf92a3b){if(_0x26d9c0[_0xb0c2('0x15')]){var _0x59066e=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x59066e[_0xb0c2('0x16')](_0x26d9c0[_0xb0c2('0x15')])){_0x26d9c0[_0xb0c2('0x15')]=_0x26d9c0[_0xb0c2('0x15')][_0xb0c2('0x17')](_0x59066e,'');}if(_0x26d9c0[_0xb0c2('0x15')][_0xb0c2('0x18')]('<img')){var _0x457793=[];_0x26d9c0['attachments']['forEach'](_0x528033=>{_0x457793['push'](_0x528033[_0xb0c2('0x19')]);});var _0x1ededc=/<img.*? _SRC(.*?)[^>]+>/g;var _0x31aeeb=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x5d07a0=_0x26d9c0[_0xb0c2('0x15')][_0xb0c2('0x17')](_0x31aeeb,_0xb0c2('0x1a'));var _0x2633c6=_0x5d07a0[_0xb0c2('0x17')](_0x1ededc,_0xb0c2('0x1b'));for(let _0x14b44d=0x0;_0x14b44d<_0x457793[_0xb0c2('0xe')];_0x14b44d++){var _0x1d8639=_0x2633c6[_0xb0c2('0x17')]('_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20'+_0x457793[_0x14b44d]+'\x20]</span>');_0x2633c6=_0x1d8639;}_0x26d9c0[_0xb0c2('0x15')]=_0x2633c6;}_0xf92a3b[_0xb0c2('0x1c')]=_0x26d9c0[_0xb0c2('0x15')];}else{_0xf92a3b[_0xb0c2('0x1c')]=_0x26d9c0[_0xb0c2('0x1d')];}if(_0xf92a3b[_0xb0c2('0x1c')]){_0xf92a3b[_0xb0c2('0x1c')]=_0xf92a3b[_0xb0c2('0x1c')][_0xb0c2('0x17')](/<a\s+/gi,_0xb0c2('0x1e'));}if(_0x26d9c0['to']){_0xf92a3b[_0xb0c2('0x1f')][_0xb0c2('0x20')]=getMails(null,_0x26d9c0['to']);var _0x2a531b=getMails(_0x3b92cb[_0xb0c2('0x21')],_0x26d9c0['to']);if(!_[_0xb0c2('0x13')](_0x2a531b)){_0xf92a3b[_0xb0c2('0x1f')]['cc']+=_0x2a531b;}}if(_0x26d9c0['cc']){_0xf92a3b[_0xb0c2('0x1f')][_0xb0c2('0x22')]=getMails(null,_0x26d9c0['cc']);var _0x530249=getMails(_0x3b92cb[_0xb0c2('0x21')],_0x26d9c0['cc']);if(!_[_0xb0c2('0x13')](_0x530249)){if(!_[_0xb0c2('0x13')](_0xf92a3b[_0xb0c2('0x1f')]['cc'])){_0xf92a3b[_0xb0c2('0x1f')]['cc']+=',';}_0xf92a3b[_0xb0c2('0x1f')]['cc']+=_0x530249;}}if(!_['includes'](_0xf92a3b['message'][_0xb0c2('0x20')],_0x3b92cb[_0xb0c2('0x21')])&&!_[_0xb0c2('0x18')](_0xf92a3b[_0xb0c2('0x1f')][_0xb0c2('0x22')],_0x3b92cb[_0xb0c2('0x21')])){_0xf92a3b[_0xb0c2('0x1f')][_0xb0c2('0x23')]=_0x3b92cb[_0xb0c2('0x21')];}if(_0x26d9c0['attachments']&&_0x26d9c0[_0xb0c2('0x24')]['length']){_0xf92a3b[_0xb0c2('0x1f')]['attach']=_0x26d9c0[_0xb0c2('0x24')][_0xb0c2('0xe')];for(var _0x3e467f=0x0,_0x5799c0,_0x472d6d,_0x54c57c;_0x3e467f<_0x26d9c0[_0xb0c2('0x24')]['length'];_0x3e467f+=0x1){if(_0x26d9c0['attachments'][_0x3e467f]['type']===_0xb0c2('0x25')){_0x54c57c=_0x26d9c0[_0xb0c2('0x24')][_0x3e467f]['filename']||_0xb0c2('0x26')+_0x3e467f;_0x5799c0=util['format'](_0xb0c2('0x27'),Date[_0xb0c2('0x28')](),_0x54c57c);_0x472d6d=path[_0xb0c2('0x10')](config[_0xb0c2('0x29')],_0xb0c2('0x2a'),_0x5799c0);fs[_0xb0c2('0x2b')](_0x472d6d,_0x26d9c0['attachments'][_0x3e467f][_0xb0c2('0x2c')]);_0xf92a3b['message'][_0xb0c2('0x24')][_0xb0c2('0x2d')]({'name':_0x54c57c,'basename':_0x5799c0,'type':_0x26d9c0[_0xb0c2('0x24')][_0x3e467f][_0xb0c2('0x2e')],'filepath':_0x472d6d});}}}if(_0x26d9c0['headerLines']&&_0x26d9c0[_0xb0c2('0x2f')][_0xb0c2('0xe')]>0x0){var _0x56608b=['Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All',_0xb0c2('0x30')];for(var _0x877333=0x0;_0x877333<_0x26d9c0[_0xb0c2('0x2f')][_0xb0c2('0xe')];_0x877333++){var _0x5b7ed2=_['indexOf'](_0x56608b,_0x26d9c0[_0xb0c2('0x2f')][_0x877333][_0xb0c2('0x31')]);if(_0x5b7ed2>=0x0){_0xf92a3b['isAutoreply']=!![];}}}return _0xf92a3b;}exports[_0xb0c2('0x32')]=function(_0x3d65f9,_0x3deb14,_0x138a48){var _0xbccdeb={'from':getAddress(_0x3deb14['from']),'firstName':getFirstName(_0x3deb14[_0xb0c2('0x33')]),'lastName':getLastName(_0x3deb14[_0xb0c2('0x33')]),'mapKey':_0xb0c2('0x21'),'message':{'from':getMails(_0x3d65f9['email'],_0x3deb14['from']),'to':_0x3d65f9[_0xb0c2('0x21')],'cc':'','subject':_0x3deb14['subject']||'','messageId':_0x3deb14['messageId'],'inReplyTo':_0x3deb14[_0xb0c2('0x34')],'sentAt':moment(_0x3deb14[_0xb0c2('0x35')])['format'](_0xb0c2('0x36')),'attach':![],'attachments':[]}};if(!_0x3deb14[_0xb0c2('0x15')]&&!_0x3deb14[_0xb0c2('0x1d')]){var _0x9330fd=_[_0xb0c2('0x37')](_0x3deb14[_0xb0c2('0x24')],{'contentType':_0xb0c2('0x38')});if(_0x9330fd[_0xb0c2('0xe')]){logger[_0xb0c2('0x39')](util[_0xb0c2('0x3a')](_0xb0c2('0x3b'),_0x3deb14[_0xb0c2('0x3c')]));tnef[_0xb0c2('0x3d')](_[_0xb0c2('0x3e')](_0x9330fd)[_0xb0c2('0x2c')],function(_0x3c5a38,_0x47a7f3){if(_0x47a7f3){_0x3deb14[_0xb0c2('0x15')]=_0x47a7f3['BodyHTML']||_0xb0c2('0x3f');if(_0x47a7f3[_0xb0c2('0x40')]){for(var _0x22a4cd=0x0;_0x22a4cd<_0x47a7f3[_0xb0c2('0x40')][_0xb0c2('0xe')];_0x22a4cd++){var _0x48b151=_0x47a7f3[_0xb0c2('0x40')][_0x22a4cd];_0xbccdeb['message'][_0xb0c2('0x24')][_0xb0c2('0x2d')]({'filename':_0x48b151[_0xb0c2('0x41')],'content':Buffer[_0xb0c2('0x33')](_0x48b151[_0xb0c2('0x42')])});}}}_0x138a48(parseEmail(_0x3d65f9,_0x3deb14,_0xbccdeb));});}else{_0x3deb14['html']='<p>Empty\x20message</p>';_0x138a48(parseEmail(_0x3d65f9,_0x3deb14,_0xbccdeb));}}else{_0x138a48(parseEmail(_0x3d65f9,_0x3deb14,_0xbccdeb));}};exports[_0xb0c2('0x43')]=function(_0x1ffa8a){switch(_0x1ffa8a){case'gmail':return _0xb0c2('0x44');case _0xb0c2('0x45'):return _0xb0c2('0x46');case'hotmail':return _0xb0c2('0x47');case _0xb0c2('0x48'):return _0xb0c2('0x49');}return'127.0.0.1';};