Built motion from commit 0900f080.|2.5.45
[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 _0xdbdf=['push','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','line','parser','from','inReplyTo','date','format','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','content','<p>Empty\x20message</p>','Attachments','Title','Data','getHost','imap.gmail.com','yahoo','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook365','generateXOAuth2Token','user=','utf-8','toString','base64','lodash','moment','randomstring','path','util','email','../../../config/environment','value','address','anonymous','generate','@xcally.com','head','name','substring','indexOf','split','slice','join','Anonymous','pop','isEmpty','test','html','replace','includes','<img','forEach','filename','_SRC','_IMG','length','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','message','originTo','originCc','bcc','attachments','type','%s-%s','now','root','server/files/attachments/'];(function(_0x5cfa15,_0x5ba527){var _0x512840=function(_0x108529){while(--_0x108529){_0x5cfa15['push'](_0x5cfa15['shift']());}};_0x512840(++_0x5ba527);}(_0xdbdf,0x1b8));var _0xfdbd=function(_0x70027,_0x41bdcd){_0x70027=_0x70027-0x0;var _0x4efdcf=_0xdbdf[_0x70027];return _0x4efdcf;};'use strict';var _=require(_0xfdbd('0x0'));var moment=require(_0xfdbd('0x1'));var random=require(_0xfdbd('0x2'));var fs=require('fs');var path=require(_0xfdbd('0x3'));var util=require(_0xfdbd('0x4'));var tnef=require('node-tnef');var logger=require('../../../config/logger')(_0xfdbd('0x5'));var config=require(_0xfdbd('0x6'));function getAddress(_0x50e582){var _0x2d6953=_['head'](_0x50e582[_0xfdbd('0x7')]);return _0x2d6953&&_0x2d6953[_0xfdbd('0x8')]?_0x2d6953[_0xfdbd('0x8')]:_0xfdbd('0x9')+random[_0xfdbd('0xa')](0x6)+_0xfdbd('0xb');}function getFirstName(_0x483b83){var _0x46edd1=_[_0xfdbd('0xc')](_0x483b83[_0xfdbd('0x7')]);if(_0x46edd1&&_0x46edd1[_0xfdbd('0xd')]){if(_0x46edd1[_0xfdbd('0xd')]==_0x46edd1[_0xfdbd('0x8')]){return _0x46edd1['name'][_0xfdbd('0xe')](0x0,_0x46edd1[_0xfdbd('0xd')][_0xfdbd('0xf')]('@'));}var _0x4271ee=_0x46edd1[_0xfdbd('0xd')][_0xfdbd('0x10')](/\s+/);return _0x4271ee['length']>0x1?_0x4271ee[_0xfdbd('0x11')](0x0,-0x1)[_0xfdbd('0x12')]('\x20'):_0x46edd1['name'];}return _0xfdbd('0x13');}function getLastName(_0x6f7f57){var _0x4b3d0d=_[_0xfdbd('0xc')](_0x6f7f57[_0xfdbd('0x7')]);if(_0x4b3d0d&&_0x4b3d0d[_0xfdbd('0xd')]){var _0x15e0e9=_0x4b3d0d[_0xfdbd('0xd')][_0xfdbd('0x10')](/\s+/);return _0x15e0e9['length']>0x1?_0x15e0e9[_0xfdbd('0x14')]():'';}return'';}function getMails(_0x4bfcc9,_0xca9ab4){var _0x32ff7c='';for(var _0x1e3a4c=0x0;_0x1e3a4c<_0xca9ab4[_0xfdbd('0x7')]['length'];_0x1e3a4c+=0x1){if(_0xca9ab4['value'][_0x1e3a4c][_0xfdbd('0x8')]!==_0x4bfcc9){if(!_[_0xfdbd('0x15')](_0x32ff7c)){_0x32ff7c+=',';}_0x32ff7c+=_0xca9ab4[_0xfdbd('0x7')][_0x1e3a4c][_0xfdbd('0xd')]||_0xca9ab4[_0xfdbd('0x7')][_0x1e3a4c][_0xfdbd('0x8')]||'';_0x32ff7c+='\x20<';_0x32ff7c+=_0xca9ab4[_0xfdbd('0x7')][_0x1e3a4c][_0xfdbd('0x8')]?_0xca9ab4[_0xfdbd('0x7')][_0x1e3a4c][_0xfdbd('0x8')]:_0xfdbd('0x9')+random[_0xfdbd('0xa')](0x6)+_0xfdbd('0xb');_0x32ff7c+='>';}}return _0x32ff7c;}function parseEmail(_0x3d41ff,_0xb5282d,_0x361856){if(_0xb5282d['html']){var _0x341804=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x341804[_0xfdbd('0x16')](_0xb5282d[_0xfdbd('0x17')])){_0xb5282d[_0xfdbd('0x17')]=_0xb5282d[_0xfdbd('0x17')][_0xfdbd('0x18')](_0x341804,'');}if(_0xb5282d['html'][_0xfdbd('0x19')](_0xfdbd('0x1a'))){var _0x29ccb5=[];_0xb5282d['attachments'][_0xfdbd('0x1b')](_0x4ac2a1=>{_0x29ccb5['push'](_0x4ac2a1[_0xfdbd('0x1c')]);});var _0x3607aa=/<img.*? _SRC(.*?)[^>]+>/g;var _0x3ccfb3=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x16ed06=_0xb5282d[_0xfdbd('0x17')][_0xfdbd('0x18')](_0x3ccfb3,_0xfdbd('0x1d'));var _0x4dfe24=_0x16ed06[_0xfdbd('0x18')](_0x3607aa,_0xfdbd('0x1e'));for(let _0xff096b=0x0;_0xff096b<_0x29ccb5[_0xfdbd('0x1f')];_0xff096b++){var _0x1bb8fb=_0x4dfe24[_0xfdbd('0x18')](_0xfdbd('0x1e'),_0xfdbd('0x20')+_0x29ccb5[_0xff096b]+_0xfdbd('0x21'));_0x4dfe24=_0x1bb8fb;}_0xb5282d[_0xfdbd('0x17')]=_0x4dfe24;}_0x361856['body']=_0xb5282d[_0xfdbd('0x17')];}else{_0x361856[_0xfdbd('0x22')]=_0xb5282d[_0xfdbd('0x23')];}if(_0x361856[_0xfdbd('0x22')]){_0x361856[_0xfdbd('0x22')]=_0x361856['body'][_0xfdbd('0x18')](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0xb5282d['to']){_0x361856[_0xfdbd('0x24')][_0xfdbd('0x25')]=getMails(null,_0xb5282d['to']);var _0x350b44=getMails(_0x3d41ff[_0xfdbd('0x5')],_0xb5282d['to']);if(!_[_0xfdbd('0x15')](_0x350b44)){_0x361856[_0xfdbd('0x24')]['cc']+=_0x350b44;}}if(_0xb5282d['cc']){_0x361856['message'][_0xfdbd('0x26')]=getMails(null,_0xb5282d['cc']);var _0x286619=getMails(_0x3d41ff[_0xfdbd('0x5')],_0xb5282d['cc']);if(!_[_0xfdbd('0x15')](_0x286619)){if(!_[_0xfdbd('0x15')](_0x361856[_0xfdbd('0x24')]['cc'])){_0x361856[_0xfdbd('0x24')]['cc']+=',';}_0x361856[_0xfdbd('0x24')]['cc']+=_0x286619;}}if(!_[_0xfdbd('0x19')](_0x361856[_0xfdbd('0x24')]['originTo'],_0x3d41ff[_0xfdbd('0x5')])&&!_['includes'](_0x361856[_0xfdbd('0x24')][_0xfdbd('0x26')],_0x3d41ff[_0xfdbd('0x5')])){_0x361856[_0xfdbd('0x24')][_0xfdbd('0x27')]=_0x3d41ff['email'];}if(_0xb5282d['attachments']&&_0xb5282d[_0xfdbd('0x28')]['length']){_0x361856[_0xfdbd('0x24')]['attach']=_0xb5282d[_0xfdbd('0x28')][_0xfdbd('0x1f')];for(var _0x5e15d0=0x0,_0x3f8d10,_0x389473,_0x552b3c;_0x5e15d0<_0xb5282d[_0xfdbd('0x28')][_0xfdbd('0x1f')];_0x5e15d0+=0x1){if(_0xb5282d['attachments'][_0x5e15d0][_0xfdbd('0x29')]==='attachment'){_0x552b3c=_0xb5282d[_0xfdbd('0x28')][_0x5e15d0][_0xfdbd('0x1c')]||'attachment-'+_0x5e15d0;_0x3f8d10=util['format'](_0xfdbd('0x2a'),Date[_0xfdbd('0x2b')](),_0x552b3c);_0x389473=path[_0xfdbd('0x12')](config[_0xfdbd('0x2c')],_0xfdbd('0x2d'),_0x3f8d10);fs['writeFileSync'](_0x389473,_0xb5282d[_0xfdbd('0x28')][_0x5e15d0]['content']);_0x361856[_0xfdbd('0x24')][_0xfdbd('0x28')][_0xfdbd('0x2e')]({'name':_0x552b3c,'basename':_0x3f8d10,'type':_0xb5282d[_0xfdbd('0x28')][_0x5e15d0][_0xfdbd('0x2f')],'filepath':_0x389473});}}}if(_0xb5282d[_0xfdbd('0x30')]&&_0xb5282d[_0xfdbd('0x30')][_0xfdbd('0x1f')]>0x0){var _0x5ee10c=[_0xfdbd('0x31'),_0xfdbd('0x32'),_0xfdbd('0x33')];for(var _0x216d6c=0x0;_0x216d6c<_0xb5282d['headerLines']['length'];_0x216d6c++){var _0x2f60ca=_[_0xfdbd('0xf')](_0x5ee10c,_0xb5282d[_0xfdbd('0x30')][_0x216d6c][_0xfdbd('0x34')]);if(_0x2f60ca>=0x0){_0x361856['isAutoreply']=!![];}}}return _0x361856;}exports[_0xfdbd('0x35')]=function(_0x21fe9a,_0x34ed86,_0x5e0a52){var _0x1bbcfe={'from':getAddress(_0x34ed86[_0xfdbd('0x36')]),'firstName':getFirstName(_0x34ed86[_0xfdbd('0x36')]),'lastName':getLastName(_0x34ed86[_0xfdbd('0x36')]),'mapKey':_0xfdbd('0x5'),'message':{'from':getMails(_0x21fe9a[_0xfdbd('0x5')],_0x34ed86[_0xfdbd('0x36')]),'to':_0x21fe9a[_0xfdbd('0x5')],'cc':'','subject':_0x34ed86['subject']||'','messageId':_0x34ed86['messageId'],'inReplyTo':_0x34ed86[_0xfdbd('0x37')],'sentAt':moment(_0x34ed86[_0xfdbd('0x38')])[_0xfdbd('0x39')](_0xfdbd('0x3a')),'attach':![],'attachments':[]}};if(!_0x34ed86['html']&&!_0x34ed86[_0xfdbd('0x23')]){var _0x2f447f=_[_0xfdbd('0x3b')](_0x34ed86[_0xfdbd('0x28')],{'contentType':'application/ms-tnef'});if(_0x2f447f['length']){logger[_0xfdbd('0x3c')](util[_0xfdbd('0x39')](_0xfdbd('0x3d'),_0x34ed86['messageId']));tnef[_0xfdbd('0x3e')](_[_0xfdbd('0x3f')](_0x2f447f)[_0xfdbd('0x40')],function(_0x257de9,_0x34b869){if(_0x34b869){_0x34ed86[_0xfdbd('0x17')]=_0x34b869['BodyHTML']||_0xfdbd('0x41');if(_0x34b869['Attachments']){for(var _0x10d862=0x0;_0x10d862<_0x34b869[_0xfdbd('0x42')][_0xfdbd('0x1f')];_0x10d862++){var _0x1ce839=_0x34b869['Attachments'][_0x10d862];_0x1bbcfe[_0xfdbd('0x24')][_0xfdbd('0x28')]['push']({'filename':_0x1ce839[_0xfdbd('0x43')],'content':Buffer['from'](_0x1ce839[_0xfdbd('0x44')])});}}}_0x5e0a52(parseEmail(_0x21fe9a,_0x34ed86,_0x1bbcfe));});}else{_0x34ed86[_0xfdbd('0x17')]=_0xfdbd('0x41');_0x5e0a52(parseEmail(_0x21fe9a,_0x34ed86,_0x1bbcfe));}}else{_0x5e0a52(parseEmail(_0x21fe9a,_0x34ed86,_0x1bbcfe));}};exports[_0xfdbd('0x45')]=function(_0x21c1c0){switch(_0x21c1c0){case'gmail':return _0xfdbd('0x46');case _0xfdbd('0x47'):return _0xfdbd('0x48');case _0xfdbd('0x49'):return _0xfdbd('0x4a');case _0xfdbd('0x4b'):return'outlook.office365.com';}return'127.0.0.1';};exports[_0xfdbd('0x4c')]=function(_0x237bec,_0x55aa2d){var _0x592d76=[_0xfdbd('0x4d')+(_0x55aa2d||''),'auth=Bearer\x20'+_0x237bec,'',''];return Buffer[_0xfdbd('0x36')](_0x592d76[_0xfdbd('0x12')]('\ 1'),_0xfdbd('0x4e'))[_0xfdbd('0x4f')](_0xfdbd('0x50'));};