b82415da38ac7401977137b8dd0304a4f92b0742
[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 _0xa89f=['<p>Empty\x20message</p>','user=','utf-8','base64','lodash','moment','randomstring','path','util','../../../config/logger','value','address','anonymous','generate','name','substring','indexOf','length','head','split','pop','isEmpty','@xcally.com','html','replace','<img','attachments','forEach','push','filename','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','message','originTo','email','originCc','includes','bcc','attach','attachment','attachment-','format','%s-%s','now','join','server/files/attachments/','writeFileSync','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','from','subject','messageId','inReplyTo','date','filter','application/ms-tnef','info','content','BodyHTML','Attachments','Title','Data'];(function(_0x24673e,_0xdb40e4){var _0x51ff18=function(_0x5472f5){while(--_0x5472f5){_0x24673e['push'](_0x24673e['shift']());}};_0x51ff18(++_0xdb40e4);}(_0xa89f,0x15d));var _0xfa89=function(_0x9cfe28,_0x1a335c){_0x9cfe28=_0x9cfe28-0x0;var _0x54a1d0=_0xa89f[_0x9cfe28];return _0x54a1d0;};'use strict';var _=require(_0xfa89('0x0'));var moment=require(_0xfa89('0x1'));var random=require(_0xfa89('0x2'));var fs=require('fs');var path=require(_0xfa89('0x3'));var util=require(_0xfa89('0x4'));var tnef=require('node-tnef');var logger=require(_0xfa89('0x5'))('email');var config=require('../../../config/environment');function getAddress(_0xf75d6e){var _0x584351=_['head'](_0xf75d6e[_0xfa89('0x6')]);return _0x584351&&_0x584351[_0xfa89('0x7')]?_0x584351['address']:_0xfa89('0x8')+random[_0xfa89('0x9')](0x6)+'@xcally.com';}function getFirstName(_0x1b8660){var _0xe8e9b6=_['head'](_0x1b8660['value']);if(_0xe8e9b6&&_0xe8e9b6[_0xfa89('0xa')]){if(_0xe8e9b6['name']==_0xe8e9b6['address']){return _0xe8e9b6['name'][_0xfa89('0xb')](0x0,_0xe8e9b6['name'][_0xfa89('0xc')]('@'));}var _0x4c7b38=_0xe8e9b6['name']['split'](/\s+/);return _0x4c7b38[_0xfa89('0xd')]>0x1?_0x4c7b38['slice'](0x0,-0x1)['join']('\x20'):_0xe8e9b6[_0xfa89('0xa')];}return'Anonymous';}function getLastName(_0x1c354f){var _0x1d10b1=_[_0xfa89('0xe')](_0x1c354f['value']);if(_0x1d10b1&&_0x1d10b1[_0xfa89('0xa')]){var _0x1d15c1=_0x1d10b1[_0xfa89('0xa')][_0xfa89('0xf')](/\s+/);return _0x1d15c1[_0xfa89('0xd')]>0x1?_0x1d15c1[_0xfa89('0x10')]():'';}return'';}function getMails(_0x3694ee,_0x50425e){var _0x349338='';for(var _0x1688c9=0x0;_0x1688c9<_0x50425e[_0xfa89('0x6')]['length'];_0x1688c9+=0x1){if(_0x50425e['value'][_0x1688c9][_0xfa89('0x7')]!==_0x3694ee){if(!_[_0xfa89('0x11')](_0x349338)){_0x349338+=',';}_0x349338+=_0x50425e[_0xfa89('0x6')][_0x1688c9][_0xfa89('0xa')]||_0x50425e[_0xfa89('0x6')][_0x1688c9]['address']||'';_0x349338+='\x20<';_0x349338+=_0x50425e[_0xfa89('0x6')][_0x1688c9][_0xfa89('0x7')]?_0x50425e[_0xfa89('0x6')][_0x1688c9]['address']:'anonymous'+random[_0xfa89('0x9')](0x6)+_0xfa89('0x12');_0x349338+='>';}}return _0x349338;}function parseEmail(_0x407686,_0x12776a,_0x23aefc){if(_0x12776a[_0xfa89('0x13')]){var _0x5bc877=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x5bc877['test'](_0x12776a[_0xfa89('0x13')])){_0x12776a[_0xfa89('0x13')]=_0x12776a[_0xfa89('0x13')][_0xfa89('0x14')](_0x5bc877,'');}if(_0x12776a[_0xfa89('0x13')]['includes'](_0xfa89('0x15'))){var _0x1c8f14=[];_0x12776a[_0xfa89('0x16')][_0xfa89('0x17')](_0x391ea8=>{_0x1c8f14[_0xfa89('0x18')](_0x391ea8[_0xfa89('0x19')]);});var _0x50f72c=/<img.*? _SRC(.*?)[^>]+>/g;var _0xb323b5=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0xd03641=_0x12776a[_0xfa89('0x13')][_0xfa89('0x14')](_0xb323b5,_0xfa89('0x1a'));var _0x18c204=_0xd03641['replace'](_0x50f72c,_0xfa89('0x1b'));for(let _0x5e4a80=0x0;_0x5e4a80<_0x1c8f14[_0xfa89('0xd')];_0x5e4a80++){var _0x3aac85=_0x18c204[_0xfa89('0x14')]('_IMG',_0xfa89('0x1c')+_0x1c8f14[_0x5e4a80]+_0xfa89('0x1d'));_0x18c204=_0x3aac85;}_0x12776a[_0xfa89('0x13')]=_0x18c204;}_0x23aefc[_0xfa89('0x1e')]=_0x12776a['html'];}else{_0x23aefc[_0xfa89('0x1e')]=_0x12776a[_0xfa89('0x1f')];}if(_0x23aefc[_0xfa89('0x1e')]){_0x23aefc['body']=_0x23aefc[_0xfa89('0x1e')][_0xfa89('0x14')](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x12776a['to']){_0x23aefc[_0xfa89('0x20')][_0xfa89('0x21')]=getMails(null,_0x12776a['to']);var _0x28a8dc=getMails(_0x407686[_0xfa89('0x22')],_0x12776a['to']);if(!_[_0xfa89('0x11')](_0x28a8dc)){_0x23aefc[_0xfa89('0x20')]['cc']+=_0x28a8dc;}}if(_0x12776a['cc']){_0x23aefc[_0xfa89('0x20')][_0xfa89('0x23')]=getMails(null,_0x12776a['cc']);var _0x1f730f=getMails(_0x407686[_0xfa89('0x22')],_0x12776a['cc']);if(!_[_0xfa89('0x11')](_0x1f730f)){if(!_[_0xfa89('0x11')](_0x23aefc[_0xfa89('0x20')]['cc'])){_0x23aefc['message']['cc']+=',';}_0x23aefc['message']['cc']+=_0x1f730f;}}if(!_['includes'](_0x23aefc[_0xfa89('0x20')]['originTo'],_0x407686[_0xfa89('0x22')])&&!_[_0xfa89('0x24')](_0x23aefc[_0xfa89('0x20')][_0xfa89('0x23')],_0x407686[_0xfa89('0x22')])){_0x23aefc[_0xfa89('0x20')][_0xfa89('0x25')]=_0x407686[_0xfa89('0x22')];}if(_0x12776a[_0xfa89('0x16')]&&_0x12776a['attachments'][_0xfa89('0xd')]){_0x23aefc[_0xfa89('0x20')][_0xfa89('0x26')]=_0x12776a[_0xfa89('0x16')][_0xfa89('0xd')];for(var _0x158350=0x0,_0x5246e4,_0x528448,_0x4c19bd;_0x158350<_0x12776a[_0xfa89('0x16')][_0xfa89('0xd')];_0x158350+=0x1){if(_0x12776a[_0xfa89('0x16')][_0x158350]['type']===_0xfa89('0x27')){_0x4c19bd=_0x12776a[_0xfa89('0x16')][_0x158350][_0xfa89('0x19')]||_0xfa89('0x28')+_0x158350;_0x5246e4=util[_0xfa89('0x29')](_0xfa89('0x2a'),Date[_0xfa89('0x2b')](),_0x4c19bd);_0x528448=path[_0xfa89('0x2c')](config['root'],_0xfa89('0x2d'),_0x5246e4);fs[_0xfa89('0x2e')](_0x528448,_0x12776a[_0xfa89('0x16')][_0x158350]['content']);_0x23aefc[_0xfa89('0x20')][_0xfa89('0x16')][_0xfa89('0x18')]({'name':_0x4c19bd,'basename':_0x5246e4,'type':_0x12776a[_0xfa89('0x16')][_0x158350][_0xfa89('0x2f')],'filepath':_0x528448});}}}if(_0x12776a['headerLines']&&_0x12776a[_0xfa89('0x30')][_0xfa89('0xd')]>0x0){var _0xe12b8a=[_0xfa89('0x31'),_0xfa89('0x32'),_0xfa89('0x33')];for(var _0x4925a4=0x0;_0x4925a4<_0x12776a['headerLines'][_0xfa89('0xd')];_0x4925a4++){var _0xa190d5=_[_0xfa89('0xc')](_0xe12b8a,_0x12776a[_0xfa89('0x30')][_0x4925a4]['line']);if(_0xa190d5>=0x0){_0x23aefc['isAutoreply']=!![];}}}return _0x23aefc;}exports['parser']=function(_0x245664,_0x26d1e9,_0x4fb4f4){var _0x826145={'from':getAddress(_0x26d1e9['from']),'firstName':getFirstName(_0x26d1e9[_0xfa89('0x34')]),'lastName':getLastName(_0x26d1e9[_0xfa89('0x34')]),'mapKey':_0xfa89('0x22'),'message':{'from':getMails(_0x245664[_0xfa89('0x22')],_0x26d1e9[_0xfa89('0x34')]),'to':_0x245664[_0xfa89('0x22')],'cc':'','subject':_0x26d1e9[_0xfa89('0x35')]||'','messageId':_0x26d1e9[_0xfa89('0x36')],'inReplyTo':_0x26d1e9[_0xfa89('0x37')],'sentAt':moment(_0x26d1e9[_0xfa89('0x38')])[_0xfa89('0x29')]('YYYY-MM-DD\x20HH:mm:ss'),'attach':![],'attachments':[]}};if(!_0x26d1e9[_0xfa89('0x13')]&&!_0x26d1e9[_0xfa89('0x1f')]){var _0x1968c3=_[_0xfa89('0x39')](_0x26d1e9[_0xfa89('0x16')],{'contentType':_0xfa89('0x3a')});if(_0x1968c3[_0xfa89('0xd')]){logger[_0xfa89('0x3b')](util[_0xfa89('0x29')]('Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system',_0x26d1e9[_0xfa89('0x36')]));tnef['parseBuffer'](_['first'](_0x1968c3)[_0xfa89('0x3c')],function(_0x4d8d12,_0x4804bc){if(_0x4804bc){_0x26d1e9[_0xfa89('0x13')]=_0x4804bc[_0xfa89('0x3d')]||'<p>Empty\x20message</p>';if(_0x4804bc[_0xfa89('0x3e')]){for(var _0x37aac0=0x0;_0x37aac0<_0x4804bc[_0xfa89('0x3e')][_0xfa89('0xd')];_0x37aac0++){var _0x49abb0=_0x4804bc[_0xfa89('0x3e')][_0x37aac0];_0x826145[_0xfa89('0x20')][_0xfa89('0x16')][_0xfa89('0x18')]({'filename':_0x49abb0[_0xfa89('0x3f')],'content':Buffer[_0xfa89('0x34')](_0x49abb0[_0xfa89('0x40')])});}}}_0x4fb4f4(parseEmail(_0x245664,_0x26d1e9,_0x826145));});}else{_0x26d1e9[_0xfa89('0x13')]=_0xfa89('0x41');_0x4fb4f4(parseEmail(_0x245664,_0x26d1e9,_0x826145));}}else{_0x4fb4f4(parseEmail(_0x245664,_0x26d1e9,_0x826145));}};exports['generateXOAuth2Token']=function(_0x17517c,_0x53ba70){var _0x4c677c=[_0xfa89('0x42')+(_0x53ba70||''),'auth=Bearer\x20'+_0x17517c,'',''];return Buffer[_0xfa89('0x34')](_0x4c677c[_0xfa89('0x2c')]('\ 1'),_0xfa89('0x43'))['toString'](_0xfa89('0x44'));};