Built motion from commit (unavailable).|2.4.15
[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 _0xf3ac=['hotmail','outlook.office365.com','127.0.0.1','moment','path','node-tnef','../../../config/logger','email','../../../config/environment','head','value','name','split','join','Anonymous','pop','length','address','anonymous','generate','test','html','replace','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','message','originTo','isEmpty','originCc','includes','bcc','attachments','type','attachment','filename','attachment-','format','%s-%s','now','root','writeFileSync','content','push','parser','from','messageId','inReplyTo','date','YYYY-MM-DD\x20HH:mm:ss','filter','application/ms-tnef','info','parseBuffer','first','BodyHTML','<p>Empty\x20message</p>','Attachments','Data','gmail','imap.gmail.com','yahoo','imap.mail.yahoo.com'];(function(_0x4c382c,_0x435223){var _0x272e4b=function(_0x3e4776){while(--_0x3e4776){_0x4c382c['push'](_0x4c382c['shift']());}};_0x272e4b(++_0x435223);}(_0xf3ac,0xff));var _0xcf3a=function(_0x52e8db,_0x2b1185){_0x52e8db=_0x52e8db-0x0;var _0x178252=_0xf3ac[_0x52e8db];return _0x178252;};'use strict';var _=require('lodash');var moment=require(_0xcf3a('0x0'));var random=require('randomstring');var fs=require('fs');var path=require(_0xcf3a('0x1'));var util=require('util');var tnef=require(_0xcf3a('0x2'));var logger=require(_0xcf3a('0x3'))(_0xcf3a('0x4'));var config=require(_0xcf3a('0x5'));function getAddress(_0x42e6c7){var _0x456707=_[_0xcf3a('0x6')](_0x42e6c7[_0xcf3a('0x7')]);return _0x456707&&_0x456707['address']?_0x456707['address']:'anonymous'+random['generate'](0x6)+'@xcally.com';}function getFirstName(_0x591965){var _0x6e0ea8=_[_0xcf3a('0x6')](_0x591965[_0xcf3a('0x7')]);if(_0x6e0ea8&&_0x6e0ea8['name']){var _0x33ebfa=_0x6e0ea8[_0xcf3a('0x8')][_0xcf3a('0x9')](/\s+/);return _0x33ebfa['length']?_0x33ebfa['slice'](0x0,-0x1)[_0xcf3a('0xa')]('\x20'):_0x6e0ea8[_0xcf3a('0x8')];}return _0xcf3a('0xb');}function getLastName(_0x4380e7){var _0x4a8789=_['head'](_0x4380e7[_0xcf3a('0x7')]);if(_0x4a8789&&_0x4a8789[_0xcf3a('0x8')]){var _0x27efcc=_0x4a8789[_0xcf3a('0x8')][_0xcf3a('0x9')](/\s+/);return _0x27efcc['length']>0x1?_0x27efcc[_0xcf3a('0xc')]():'';}return'';}function getMails(_0x4eb322,_0x398808){var _0x5d4185='';for(var _0x22003c=0x0;_0x22003c<_0x398808[_0xcf3a('0x7')][_0xcf3a('0xd')];_0x22003c+=0x1){if(_0x398808['value'][_0x22003c][_0xcf3a('0xe')]!==_0x4eb322){if(!_['isEmpty'](_0x5d4185)){_0x5d4185+=',';}_0x5d4185+=_0x398808[_0xcf3a('0x7')][_0x22003c][_0xcf3a('0x8')]||_0x398808['value'][_0x22003c][_0xcf3a('0xe')]||'';_0x5d4185+='\x20<';_0x5d4185+=_0x398808[_0xcf3a('0x7')][_0x22003c][_0xcf3a('0xe')]?_0x398808[_0xcf3a('0x7')][_0x22003c][_0xcf3a('0xe')]:_0xcf3a('0xf')+random[_0xcf3a('0x10')](0x6)+'@xcally.com';_0x5d4185+='>';}}return _0x5d4185;}function parseEmail(_0x4b67c2,_0x141302,_0x5a5467){if(_0x141302['html']){var _0x3540ae=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x3540ae[_0xcf3a('0x11')](_0x141302[_0xcf3a('0x12')])){_0x141302[_0xcf3a('0x12')]=_0x141302['html'][_0xcf3a('0x13')](_0x3540ae,'');}_0x5a5467[_0xcf3a('0x14')]=_0x141302[_0xcf3a('0x12')];}else{_0x5a5467[_0xcf3a('0x14')]=_0x141302[_0xcf3a('0x15')];}if(_0x5a5467['body']){_0x5a5467[_0xcf3a('0x14')]=_0x5a5467['body'][_0xcf3a('0x13')](/<a\s+/gi,_0xcf3a('0x16'));}if(_0x141302['to']){_0x5a5467[_0xcf3a('0x17')][_0xcf3a('0x18')]=getMails(null,_0x141302['to']);var _0x94e905=getMails(_0x4b67c2[_0xcf3a('0x4')],_0x141302['to']);if(!_[_0xcf3a('0x19')](_0x94e905)){_0x5a5467[_0xcf3a('0x17')]['cc']+=_0x94e905;}}if(_0x141302['cc']){_0x5a5467['message'][_0xcf3a('0x1a')]=getMails(null,_0x141302['cc']);var _0x420f04=getMails(_0x4b67c2[_0xcf3a('0x4')],_0x141302['cc']);if(!_[_0xcf3a('0x19')](_0x420f04)){if(!_[_0xcf3a('0x19')](_0x5a5467['message']['cc'])){_0x5a5467[_0xcf3a('0x17')]['cc']+=',';}_0x5a5467['message']['cc']+=_0x420f04;}}if(!_[_0xcf3a('0x1b')](_0x5a5467['message']['originTo'],_0x4b67c2[_0xcf3a('0x4')])&&!_['includes'](_0x5a5467[_0xcf3a('0x17')]['originCc'],_0x4b67c2[_0xcf3a('0x4')])){_0x5a5467[_0xcf3a('0x17')][_0xcf3a('0x1c')]=_0x4b67c2[_0xcf3a('0x4')];}if(_0x141302[_0xcf3a('0x1d')]&&_0x141302[_0xcf3a('0x1d')][_0xcf3a('0xd')]){_0x5a5467[_0xcf3a('0x17')]['attach']=_0x141302[_0xcf3a('0x1d')][_0xcf3a('0xd')];for(var _0x37ac15=0x0,_0x743d1e,_0x459209,_0x1d0ddd;_0x37ac15<_0x141302[_0xcf3a('0x1d')][_0xcf3a('0xd')];_0x37ac15+=0x1){if(_0x141302['attachments'][_0x37ac15][_0xcf3a('0x1e')]===_0xcf3a('0x1f')){_0x1d0ddd=_0x141302[_0xcf3a('0x1d')][_0x37ac15][_0xcf3a('0x20')]||_0xcf3a('0x21')+_0x37ac15;_0x743d1e=util[_0xcf3a('0x22')](_0xcf3a('0x23'),Date[_0xcf3a('0x24')](),_0x1d0ddd);_0x459209=path[_0xcf3a('0xa')](config[_0xcf3a('0x25')],'server/files/attachments/',_0x743d1e);fs[_0xcf3a('0x26')](_0x459209,_0x141302[_0xcf3a('0x1d')][_0x37ac15][_0xcf3a('0x27')]);_0x5a5467[_0xcf3a('0x17')][_0xcf3a('0x1d')][_0xcf3a('0x28')]({'name':_0x1d0ddd,'basename':_0x743d1e,'type':_0x141302[_0xcf3a('0x1d')][_0x37ac15]['contentType'],'filepath':_0x459209});}}}return _0x5a5467;}exports[_0xcf3a('0x29')]=function(_0x3a69de,_0x189d8f,_0x517b1f){var _0x32d0f9={'from':getAddress(_0x189d8f['from']),'firstName':getFirstName(_0x189d8f[_0xcf3a('0x2a')]),'lastName':getLastName(_0x189d8f[_0xcf3a('0x2a')]),'mapKey':_0xcf3a('0x4'),'message':{'from':getMails(_0x3a69de[_0xcf3a('0x4')],_0x189d8f[_0xcf3a('0x2a')]),'to':_0x3a69de['email'],'cc':'','subject':_0x189d8f['subject']||'','messageId':_0x189d8f[_0xcf3a('0x2b')],'inReplyTo':_0x189d8f[_0xcf3a('0x2c')],'sentAt':moment(_0x189d8f[_0xcf3a('0x2d')])[_0xcf3a('0x22')](_0xcf3a('0x2e')),'attach':![],'attachments':[]}};if(!_0x189d8f['html']&&!_0x189d8f[_0xcf3a('0x15')]){var _0x514687=_[_0xcf3a('0x2f')](_0x189d8f[_0xcf3a('0x1d')],{'contentType':_0xcf3a('0x30')});if(_0x514687[_0xcf3a('0xd')]){logger[_0xcf3a('0x31')](util[_0xcf3a('0x22')]('Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system',_0x189d8f[_0xcf3a('0x2b')]));tnef[_0xcf3a('0x32')](_[_0xcf3a('0x33')](_0x514687)[_0xcf3a('0x27')],function(_0x5317f6,_0x164e4c){if(_0x164e4c){_0x189d8f[_0xcf3a('0x12')]=_0x164e4c[_0xcf3a('0x34')]||_0xcf3a('0x35');if(_0x164e4c[_0xcf3a('0x36')]){for(var _0x1ff372=0x0;_0x1ff372<_0x164e4c[_0xcf3a('0x36')][_0xcf3a('0xd')];_0x1ff372++){var _0x30947c=_0x164e4c[_0xcf3a('0x36')][_0x1ff372];_0x32d0f9['message']['attachments'][_0xcf3a('0x28')]({'filename':_0x30947c['Title'],'content':new Buffer(_0x30947c[_0xcf3a('0x37')])});}}}_0x517b1f(parseEmail(_0x3a69de,_0x189d8f,_0x32d0f9));});}else{_0x189d8f[_0xcf3a('0x12')]=_0xcf3a('0x35');_0x517b1f(parseEmail(_0x3a69de,_0x189d8f,_0x32d0f9));}}else{_0x517b1f(parseEmail(_0x3a69de,_0x189d8f,_0x32d0f9));}};exports['getHost']=function(_0x10593b){switch(_0x10593b){case _0xcf3a('0x38'):return _0xcf3a('0x39');case _0xcf3a('0x3a'):return _0xcf3a('0x3b');case _0xcf3a('0x3c'):return'imap-mail.outlook.com';case'outlook365':return _0xcf3a('0x3d');}return _0xcf3a('0x3e');};