bfda2c686b02227101856b111fe99d503328a46d
[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 _0x0085=['html','body','textAsHtml','replace','<a\x20target=\x22_blank\x22\x20','message','originTo','includes','originCc','bcc','attachments','attach','type','attachment','filename','attachment-','%s-%s','now','join','root','writeFileSync','content','push','contentType','parser','from','subject','messageId','date','format','YYYY-MM-DD\x20HH:mm:ss','filter','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','Data','getHost','gmail','imap.gmail.com','yahoo','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook.office365.com','127.0.0.1','lodash','moment','path','util','email','../../../config/environment','head','value','address','@xcally.com','name','length','slice','Anonymous','pop','isEmpty','anonymous','generate','test'];(function(_0x175d49,_0x5a9812){var _0x4d9255=function(_0x2d4500){while(--_0x2d4500){_0x175d49['push'](_0x175d49['shift']());}};_0x4d9255(++_0x5a9812);}(_0x0085,0x185));var _0x5008=function(_0x55b89e,_0x385c49){_0x55b89e=_0x55b89e-0x0;var _0xad64f0=_0x0085[_0x55b89e];return _0xad64f0;};'use strict';var _=require(_0x5008('0x0'));var moment=require(_0x5008('0x1'));var random=require('randomstring');var fs=require('fs');var path=require(_0x5008('0x2'));var util=require(_0x5008('0x3'));var tnef=require('node-tnef');var logger=require('../../../config/logger')(_0x5008('0x4'));var config=require(_0x5008('0x5'));function getAddress(_0x59c996){var _0x19d412=_[_0x5008('0x6')](_0x59c996[_0x5008('0x7')]);return _0x19d412&&_0x19d412[_0x5008('0x8')]?_0x19d412[_0x5008('0x8')]:'anonymous'+random['generate'](0x6)+_0x5008('0x9');}function getFirstName(_0x27cb95){var _0x4c270b=_['head'](_0x27cb95[_0x5008('0x7')]);if(_0x4c270b&&_0x4c270b['name']){var _0x1e2b4a=_0x4c270b[_0x5008('0xa')]['split'](/\s+/);return _0x1e2b4a[_0x5008('0xb')]?_0x1e2b4a[_0x5008('0xc')](0x0,-0x1)['join']('\x20'):_0x4c270b[_0x5008('0xa')];}return _0x5008('0xd');}function getLastName(_0xb56eab){var _0x547a48=_[_0x5008('0x6')](_0xb56eab[_0x5008('0x7')]);if(_0x547a48&&_0x547a48['name']){var _0x4d865b=_0x547a48['name']['split'](/\s+/);return _0x4d865b[_0x5008('0xb')]>0x1?_0x4d865b[_0x5008('0xe')]():'';}return'';}function getMails(_0xb9413d,_0x430131){var _0x1f957a='';for(var _0x4d46f3=0x0;_0x4d46f3<_0x430131['value'][_0x5008('0xb')];_0x4d46f3+=0x1){if(_0x430131[_0x5008('0x7')][_0x4d46f3][_0x5008('0x8')]!==_0xb9413d){if(!_[_0x5008('0xf')](_0x1f957a)){_0x1f957a+=',';}_0x1f957a+=_0x430131['value'][_0x4d46f3][_0x5008('0xa')]||_0x430131[_0x5008('0x7')][_0x4d46f3][_0x5008('0x8')]||'';_0x1f957a+='\x20<';_0x1f957a+=_0x430131[_0x5008('0x7')][_0x4d46f3]['address']?_0x430131[_0x5008('0x7')][_0x4d46f3][_0x5008('0x8')]:_0x5008('0x10')+random[_0x5008('0x11')](0x6)+'@xcally.com';_0x1f957a+='>';}}return _0x1f957a;}function parseEmail(_0x1eb0d2,_0x2941e4,_0x2dbbe9){if(_0x2941e4['html']){var _0x280b67=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x280b67[_0x5008('0x12')](_0x2941e4[_0x5008('0x13')])){_0x2941e4[_0x5008('0x13')]=_0x2941e4['html']['replace'](_0x280b67,'');}_0x2dbbe9[_0x5008('0x14')]=_0x2941e4[_0x5008('0x13')];}else{_0x2dbbe9[_0x5008('0x14')]=_0x2941e4[_0x5008('0x15')];}if(_0x2dbbe9[_0x5008('0x14')]){_0x2dbbe9[_0x5008('0x14')]=_0x2dbbe9['body'][_0x5008('0x16')](/<a\s+/gi,_0x5008('0x17'));}if(_0x2941e4['to']){_0x2dbbe9[_0x5008('0x18')][_0x5008('0x19')]=getMails(null,_0x2941e4['to']);var _0x3b8cfd=getMails(_0x1eb0d2[_0x5008('0x4')],_0x2941e4['to']);if(!_[_0x5008('0xf')](_0x3b8cfd)){_0x2dbbe9[_0x5008('0x18')]['cc']+=_0x3b8cfd;}}if(_0x2941e4['cc']){_0x2dbbe9[_0x5008('0x18')]['originCc']=getMails(null,_0x2941e4['cc']);var _0x6b6211=getMails(_0x1eb0d2[_0x5008('0x4')],_0x2941e4['cc']);if(!_[_0x5008('0xf')](_0x6b6211)){if(!_[_0x5008('0xf')](_0x2dbbe9['message']['cc'])){_0x2dbbe9['message']['cc']+=',';}_0x2dbbe9[_0x5008('0x18')]['cc']+=_0x6b6211;}}if(!_['includes'](_0x2dbbe9[_0x5008('0x18')][_0x5008('0x19')],_0x1eb0d2['email'])&&!_[_0x5008('0x1a')](_0x2dbbe9['message'][_0x5008('0x1b')],_0x1eb0d2[_0x5008('0x4')])){_0x2dbbe9[_0x5008('0x18')][_0x5008('0x1c')]=_0x1eb0d2[_0x5008('0x4')];}if(_0x2941e4[_0x5008('0x1d')]&&_0x2941e4[_0x5008('0x1d')][_0x5008('0xb')]){_0x2dbbe9[_0x5008('0x18')][_0x5008('0x1e')]=_0x2941e4[_0x5008('0x1d')][_0x5008('0xb')];for(var _0xea7f3d=0x0,_0x11c729,_0x2d3d88,_0x1f78dd;_0xea7f3d<_0x2941e4[_0x5008('0x1d')]['length'];_0xea7f3d+=0x1){if(_0x2941e4['attachments'][_0xea7f3d][_0x5008('0x1f')]===_0x5008('0x20')){_0x1f78dd=_0x2941e4[_0x5008('0x1d')][_0xea7f3d][_0x5008('0x21')]||_0x5008('0x22')+_0xea7f3d;_0x11c729=util['format'](_0x5008('0x23'),Date[_0x5008('0x24')](),_0x1f78dd);_0x2d3d88=path[_0x5008('0x25')](config[_0x5008('0x26')],'server/files/attachments/',_0x11c729);fs[_0x5008('0x27')](_0x2d3d88,_0x2941e4['attachments'][_0xea7f3d][_0x5008('0x28')]);_0x2dbbe9[_0x5008('0x18')][_0x5008('0x1d')][_0x5008('0x29')]({'name':_0x1f78dd,'basename':_0x11c729,'type':_0x2941e4[_0x5008('0x1d')][_0xea7f3d][_0x5008('0x2a')],'filepath':_0x2d3d88});}}}return _0x2dbbe9;}exports[_0x5008('0x2b')]=function(_0xb2f1b,_0x12ec14,_0x38214b){var _0x4a111d={'from':getAddress(_0x12ec14[_0x5008('0x2c')]),'firstName':getFirstName(_0x12ec14['from']),'lastName':getLastName(_0x12ec14['from']),'mapKey':'email','message':{'from':getMails(_0xb2f1b[_0x5008('0x4')],_0x12ec14[_0x5008('0x2c')]),'to':_0xb2f1b[_0x5008('0x4')],'cc':'','subject':_0x12ec14[_0x5008('0x2d')]||'','messageId':_0x12ec14[_0x5008('0x2e')],'inReplyTo':_0x12ec14['inReplyTo'],'sentAt':moment(_0x12ec14[_0x5008('0x2f')])[_0x5008('0x30')](_0x5008('0x31')),'attach':![],'attachments':[]}};if(!_0x12ec14['html']&&!_0x12ec14[_0x5008('0x15')]){var _0x5b6f72=_[_0x5008('0x32')](_0x12ec14[_0x5008('0x1d')],{'contentType':'application/ms-tnef'});if(_0x5b6f72['length']){logger['info'](util['format'](_0x5008('0x33'),_0x12ec14[_0x5008('0x2e')]));tnef[_0x5008('0x34')](_[_0x5008('0x35')](_0x5b6f72)[_0x5008('0x28')],function(_0xb92aa8,_0x147854){if(_0x147854){_0x12ec14[_0x5008('0x13')]=_0x147854[_0x5008('0x36')]||_0x5008('0x37');if(_0x147854[_0x5008('0x38')]){for(var _0x5246df=0x0;_0x5246df<_0x147854['Attachments']['length'];_0x5246df++){var _0x2c653e=_0x147854['Attachments'][_0x5246df];_0x4a111d[_0x5008('0x18')][_0x5008('0x1d')]['push']({'filename':_0x2c653e[_0x5008('0x39')],'content':new Buffer(_0x2c653e[_0x5008('0x3a')])});}}}_0x38214b(parseEmail(_0xb2f1b,_0x12ec14,_0x4a111d));});}else{_0x12ec14[_0x5008('0x13')]=_0x5008('0x37');_0x38214b(parseEmail(_0xb2f1b,_0x12ec14,_0x4a111d));}}else{_0x38214b(parseEmail(_0xb2f1b,_0x12ec14,_0x4a111d));}};exports[_0x5008('0x3b')]=function(_0x1aa6be){switch(_0x1aa6be){case _0x5008('0x3c'):return _0x5008('0x3d');case _0x5008('0x3e'):return _0x5008('0x3f');case _0x5008('0x40'):return _0x5008('0x41');case'outlook365':return _0x5008('0x42');}return _0x5008('0x43');};