Built motion from commit (unavailable).|2.4.20
[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 _0xc815=['type','attachment','filename','now','root','server/files/attachments/','writeFileSync','push','from','subject','messageId','date','YYYY-MM-DD\x20HH:mm:ss','application/ms-tnef','parseBuffer','first','content','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','Data','getHost','gmail','imap.gmail.com','yahoo','hotmail','outlook365','outlook.office365.com','127.0.0.1','lodash','moment','randomstring','path','util','node-tnef','../../../config/logger','email','../../../config/environment','head','value','address','anonymous','generate','@xcally.com','name','length','slice','join','split','isEmpty','html','test','replace','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','message','originTo','includes','originCc','attachments','attach'];(function(_0x8241ea,_0x281c27){var _0x10df72=function(_0xe0dd35){while(--_0xe0dd35){_0x8241ea['push'](_0x8241ea['shift']());}};_0x10df72(++_0x281c27);}(_0xc815,0x11a));var _0x5c81=function(_0x35885a,_0x42fed7){_0x35885a=_0x35885a-0x0;var _0xe86249=_0xc815[_0x35885a];return _0xe86249;};'use strict';var _=require(_0x5c81('0x0'));var moment=require(_0x5c81('0x1'));var random=require(_0x5c81('0x2'));var fs=require('fs');var path=require(_0x5c81('0x3'));var util=require(_0x5c81('0x4'));var tnef=require(_0x5c81('0x5'));var logger=require(_0x5c81('0x6'))(_0x5c81('0x7'));var config=require(_0x5c81('0x8'));function getAddress(_0xb9a6d){var _0x2d9d8e=_[_0x5c81('0x9')](_0xb9a6d[_0x5c81('0xa')]);return _0x2d9d8e&&_0x2d9d8e[_0x5c81('0xb')]?_0x2d9d8e[_0x5c81('0xb')]:_0x5c81('0xc')+random[_0x5c81('0xd')](0x6)+_0x5c81('0xe');}function getFirstName(_0x14b9e9){var _0x517b78=_[_0x5c81('0x9')](_0x14b9e9['value']);if(_0x517b78&&_0x517b78[_0x5c81('0xf')]){var _0x479448=_0x517b78['name']['split'](/\s+/);return _0x479448[_0x5c81('0x10')]?_0x479448[_0x5c81('0x11')](0x0,-0x1)[_0x5c81('0x12')]('\x20'):_0x517b78[_0x5c81('0xf')];}return'Anonymous';}function getLastName(_0x5cdb76){var _0x451740=_[_0x5c81('0x9')](_0x5cdb76[_0x5c81('0xa')]);if(_0x451740&&_0x451740[_0x5c81('0xf')]){var _0x50351a=_0x451740[_0x5c81('0xf')][_0x5c81('0x13')](/\s+/);return _0x50351a[_0x5c81('0x10')]>0x1?_0x50351a['pop']():'';}return'';}function getMails(_0x43316c,_0x27b1c4){var _0x3ca678='';for(var _0x687d4b=0x0;_0x687d4b<_0x27b1c4[_0x5c81('0xa')][_0x5c81('0x10')];_0x687d4b+=0x1){if(_0x27b1c4['value'][_0x687d4b]['address']!==_0x43316c){if(!_[_0x5c81('0x14')](_0x3ca678)){_0x3ca678+=',';}_0x3ca678+=_0x27b1c4[_0x5c81('0xa')][_0x687d4b][_0x5c81('0xf')]||_0x27b1c4[_0x5c81('0xa')][_0x687d4b]['address']||'';_0x3ca678+='\x20<';_0x3ca678+=_0x27b1c4[_0x5c81('0xa')][_0x687d4b][_0x5c81('0xb')]?_0x27b1c4[_0x5c81('0xa')][_0x687d4b][_0x5c81('0xb')]:'anonymous'+random[_0x5c81('0xd')](0x6)+_0x5c81('0xe');_0x3ca678+='>';}}return _0x3ca678;}function parseEmail(_0x599f87,_0x4329cb,_0x5a5c59){if(_0x4329cb[_0x5c81('0x15')]){var _0xf574dd=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0xf574dd[_0x5c81('0x16')](_0x4329cb['html'])){_0x4329cb[_0x5c81('0x15')]=_0x4329cb[_0x5c81('0x15')][_0x5c81('0x17')](_0xf574dd,'');}_0x5a5c59[_0x5c81('0x18')]=_0x4329cb['html'];}else{_0x5a5c59[_0x5c81('0x18')]=_0x4329cb[_0x5c81('0x19')];}if(_0x5a5c59['body']){_0x5a5c59[_0x5c81('0x18')]=_0x5a5c59['body'][_0x5c81('0x17')](/<a\s+/gi,_0x5c81('0x1a'));}if(_0x4329cb['to']){_0x5a5c59[_0x5c81('0x1b')]['originTo']=getMails(null,_0x4329cb['to']);var _0x221e51=getMails(_0x599f87[_0x5c81('0x7')],_0x4329cb['to']);if(!_[_0x5c81('0x14')](_0x221e51)){_0x5a5c59['message']['cc']+=_0x221e51;}}if(_0x4329cb['cc']){_0x5a5c59[_0x5c81('0x1b')]['originCc']=getMails(null,_0x4329cb['cc']);var _0x107f98=getMails(_0x599f87[_0x5c81('0x7')],_0x4329cb['cc']);if(!_['isEmpty'](_0x107f98)){if(!_[_0x5c81('0x14')](_0x5a5c59[_0x5c81('0x1b')]['cc'])){_0x5a5c59[_0x5c81('0x1b')]['cc']+=',';}_0x5a5c59[_0x5c81('0x1b')]['cc']+=_0x107f98;}}if(!_['includes'](_0x5a5c59[_0x5c81('0x1b')][_0x5c81('0x1c')],_0x599f87[_0x5c81('0x7')])&&!_[_0x5c81('0x1d')](_0x5a5c59[_0x5c81('0x1b')][_0x5c81('0x1e')],_0x599f87[_0x5c81('0x7')])){_0x5a5c59[_0x5c81('0x1b')]['bcc']=_0x599f87[_0x5c81('0x7')];}if(_0x4329cb[_0x5c81('0x1f')]&&_0x4329cb[_0x5c81('0x1f')][_0x5c81('0x10')]){_0x5a5c59[_0x5c81('0x1b')][_0x5c81('0x20')]=_0x4329cb[_0x5c81('0x1f')][_0x5c81('0x10')];for(var _0x5bc6ed=0x0,_0x58a1ae,_0xf55d0d,_0x8af686;_0x5bc6ed<_0x4329cb['attachments'][_0x5c81('0x10')];_0x5bc6ed+=0x1){if(_0x4329cb['attachments'][_0x5bc6ed][_0x5c81('0x21')]===_0x5c81('0x22')){_0x8af686=_0x4329cb[_0x5c81('0x1f')][_0x5bc6ed][_0x5c81('0x23')]||'attachment-'+_0x5bc6ed;_0x58a1ae=util['format']('%s-%s',Date[_0x5c81('0x24')](),_0x8af686);_0xf55d0d=path[_0x5c81('0x12')](config[_0x5c81('0x25')],_0x5c81('0x26'),_0x58a1ae);fs[_0x5c81('0x27')](_0xf55d0d,_0x4329cb['attachments'][_0x5bc6ed]['content']);_0x5a5c59['message'][_0x5c81('0x1f')][_0x5c81('0x28')]({'name':_0x8af686,'basename':_0x58a1ae,'type':_0x4329cb[_0x5c81('0x1f')][_0x5bc6ed]['contentType'],'filepath':_0xf55d0d});}}}return _0x5a5c59;}exports['parser']=function(_0x542b53,_0x9b64cc,_0xa984a7){var _0x2d3f33={'from':getAddress(_0x9b64cc['from']),'firstName':getFirstName(_0x9b64cc[_0x5c81('0x29')]),'lastName':getLastName(_0x9b64cc[_0x5c81('0x29')]),'mapKey':_0x5c81('0x7'),'message':{'from':getMails(_0x542b53[_0x5c81('0x7')],_0x9b64cc[_0x5c81('0x29')]),'to':_0x542b53[_0x5c81('0x7')],'cc':'','subject':_0x9b64cc[_0x5c81('0x2a')]||'','messageId':_0x9b64cc[_0x5c81('0x2b')],'inReplyTo':_0x9b64cc['inReplyTo'],'sentAt':moment(_0x9b64cc[_0x5c81('0x2c')])['format'](_0x5c81('0x2d')),'attach':![],'attachments':[]}};if(!_0x9b64cc[_0x5c81('0x15')]&&!_0x9b64cc[_0x5c81('0x19')]){var _0x2e9a08=_['filter'](_0x9b64cc[_0x5c81('0x1f')],{'contentType':_0x5c81('0x2e')});if(_0x2e9a08[_0x5c81('0x10')]){logger['info'](util['format']('Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system',_0x9b64cc[_0x5c81('0x2b')]));tnef[_0x5c81('0x2f')](_[_0x5c81('0x30')](_0x2e9a08)[_0x5c81('0x31')],function(_0x190686,_0x4cb668){if(_0x4cb668){_0x9b64cc['html']=_0x4cb668[_0x5c81('0x32')]||_0x5c81('0x33');if(_0x4cb668[_0x5c81('0x34')]){for(var _0x450007=0x0;_0x450007<_0x4cb668[_0x5c81('0x34')][_0x5c81('0x10')];_0x450007++){var _0x63cc32=_0x4cb668[_0x5c81('0x34')][_0x450007];_0x2d3f33[_0x5c81('0x1b')]['attachments'][_0x5c81('0x28')]({'filename':_0x63cc32[_0x5c81('0x35')],'content':new Buffer(_0x63cc32[_0x5c81('0x36')])});}}}_0xa984a7(parseEmail(_0x542b53,_0x9b64cc,_0x2d3f33));});}else{_0x9b64cc[_0x5c81('0x15')]=_0x5c81('0x33');_0xa984a7(parseEmail(_0x542b53,_0x9b64cc,_0x2d3f33));}}else{_0xa984a7(parseEmail(_0x542b53,_0x9b64cc,_0x2d3f33));}};exports[_0x5c81('0x37')]=function(_0x28ca81){switch(_0x28ca81){case _0x5c81('0x38'):return _0x5c81('0x39');case _0x5c81('0x3a'):return'imap.mail.yahoo.com';case _0x5c81('0x3b'):return'imap-mail.outlook.com';case _0x5c81('0x3c'):return _0x5c81('0x3d');}return _0x5c81('0x3e');};