f52c68fc94938ce4444eb611518a1229b752db7d
[motion2.git] / server / services / email / lib / imap.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 _0xd2ab=['prototype','authTimeout','service','user','modernAuthentication','generateXOAuth2Token','data5','password','authentication','host','port','tls','autotls','required','openBox','handleOpenBox','emit','box','readUnseen','handleError','UNSEEN','handleReadUnseen','length','fetch','slice','message','handleFetchMessage','handleFetchError','handleFetchEnd','closeBox','handleCloseBox','handleMessageBody','attributes','handleMessageAttributes','handleSimpleParser','handleMessageEnd','html','parser','warn','\x20bytes,\x20email\x20size:\x20','\x20bytes','\x20[Email\x20text\x20truncated\x20because\x20size\x20more\x20than\x20','\x20bytes]','substring','text','stringify','textCode','hasOwnProperty','upperFirst','exports','lodash','util','imap','iconv','events','EventEmitter','./utils','../../../config/logger','email','../../../config/environment','emailMaxHTMLbytesLimit','mailbox','account','getAccount','once','ready','handleReady','end','handleEnd','bind','error','connect','inherits'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd2ab,0x10d));var _0xbd2a=function(_0x4d79d4,_0x15d0f9){_0x4d79d4=_0x4d79d4-0x0;var _0x183551=_0xd2ab[_0x4d79d4];return _0x183551;};'use strict';var _=require(_0xbd2a('0x0'));var util=require(_0xbd2a('0x1'));var Imap=require(_0xbd2a('0x2'));var simpleParser=require('mailparser')['simpleParser'];var Iconv=require(_0xbd2a('0x3'))['Iconv'];var EventEmitter=require(_0xbd2a('0x4'))[_0xbd2a('0x5')];var utils=require(_0xbd2a('0x6'));var logger=require(_0xbd2a('0x7'))(_0xbd2a('0x8'));var config=require(_0xbd2a('0x9'));const MAX_HTML_BYTES_SIZE=config[_0xbd2a('0xa')]||0xee6b2800;function EmailImap(_0xc94f2,_0x2d1a11){this[_0xbd2a('0xb')]=_0xc94f2[_0xbd2a('0xb')];this[_0xbd2a('0xc')]=this[_0xbd2a('0xd')](_0xc94f2,_0x2d1a11);this[_0xbd2a('0x2')]=new Imap(this[_0xbd2a('0xc')]);this[_0xbd2a('0x2')][_0xbd2a('0xe')](_0xbd2a('0xf'),this[_0xbd2a('0x10')]['bind'](this));this['imap']['once'](_0xbd2a('0x11'),this[_0xbd2a('0x12')][_0xbd2a('0x13')](this));this[_0xbd2a('0x2')]['on'](_0xbd2a('0x14'),this['handleError']['bind'](this));this[_0xbd2a('0x2')][_0xbd2a('0x15')]();}util[_0xbd2a('0x16')](EmailImap,EventEmitter);EmailImap[_0xbd2a('0x17')][_0xbd2a('0xd')]=function(_0x107fc6,_0x2af2a4){var _0x3e7a89={'connTimeout':_0x107fc6['connTimeout']?_0x107fc6['connTimeout']*0x3e8:0x2710,'authTimeout':_0x107fc6['authTimeout']?_0x107fc6[_0xbd2a('0x18')]*0x3e8:0x1388};if(_0x107fc6[_0xbd2a('0x19')]){_0x3e7a89[_0xbd2a('0x1a')]=_0x107fc6['user'];if(_0x107fc6[_0xbd2a('0x1b')]){_0x3e7a89['xoauth2']=utils[_0xbd2a('0x1c')](_0x107fc6['CloudProvider'][_0xbd2a('0x1d')],_0x107fc6[_0xbd2a('0x1a')]);}else{_0x3e7a89[_0xbd2a('0x1e')]=_0x107fc6[_0xbd2a('0x1e')];}}else{if(_0x107fc6[_0xbd2a('0x1f')]){_0x3e7a89[_0xbd2a('0x1a')]=_0x107fc6[_0xbd2a('0x1a')];_0x3e7a89[_0xbd2a('0x1e')]=_0x107fc6[_0xbd2a('0x1e')];}}_0x3e7a89[_0xbd2a('0x8')]=_0x2af2a4||_0x107fc6['user']||'anonymous@xcally.com';_0x3e7a89[_0xbd2a('0x20')]=_0x107fc6['host'];_0x3e7a89['port']=_0x107fc6[_0xbd2a('0x21')]||0x3e1;if(_0x107fc6[_0xbd2a('0x22')]){_0x3e7a89['tls']=!![];}else{_0x3e7a89[_0xbd2a('0x22')]=![];_0x3e7a89[_0xbd2a('0x23')]=_0xbd2a('0x24');}return _0x3e7a89;};EmailImap['prototype'][_0xbd2a('0x10')]=function(){this[_0xbd2a('0x2')][_0xbd2a('0x25')](this[_0xbd2a('0xb')],![],this[_0xbd2a('0x26')][_0xbd2a('0x13')](this));};EmailImap[_0xbd2a('0x17')][_0xbd2a('0x26')]=function(_0x3f88bc,_0xab8399){if(_0x3f88bc){this['handleError'](_0x3f88bc,!![]);}else{this[_0xbd2a('0x27')](_0xbd2a('0x28'),_0xab8399);this[_0xbd2a('0x29')]();}};EmailImap[_0xbd2a('0x17')]['handleCloseBox']=function(_0x59dd6d){if(_0x59dd6d){this[_0xbd2a('0x2a')](_0x59dd6d,!![]);}else{this[_0xbd2a('0x2')][_0xbd2a('0x11')]();this[_0xbd2a('0x27')](_0xbd2a('0x11'));}};EmailImap[_0xbd2a('0x17')]['readUnseen']=function(){this['imap']['search']([_0xbd2a('0x2b')],this[_0xbd2a('0x2c')][_0xbd2a('0x13')](this));};EmailImap[_0xbd2a('0x17')][_0xbd2a('0x2c')]=function(_0x42cf5a,_0x3c51f3){if(_0x42cf5a){this[_0xbd2a('0x2a')](_0x42cf5a,!![]);}else{if(_0x3c51f3[_0xbd2a('0x2d')]){try{var _0x1ba055=this[_0xbd2a('0x2')][_0xbd2a('0x2e')](_0x3c51f3[_0xbd2a('0x2f')](0x0,0xa),{'bodies':'','markSeen':!![]});_0x1ba055['on'](_0xbd2a('0x30'),this[_0xbd2a('0x31')][_0xbd2a('0x13')](this));_0x1ba055[_0xbd2a('0xe')]('error',this[_0xbd2a('0x32')][_0xbd2a('0x13')](this));_0x1ba055[_0xbd2a('0xe')](_0xbd2a('0x11'),this[_0xbd2a('0x33')]['bind'](this));}catch(_0x18934b){logger[_0xbd2a('0x14')]('handleReadUnseen',this['account'][_0xbd2a('0x8')],_0x18934b);this['imap'][_0xbd2a('0x34')](!![],this[_0xbd2a('0x35')][_0xbd2a('0x13')](this));}}else{this[_0xbd2a('0x2')]['closeBox'](!![],this[_0xbd2a('0x35')]['bind'](this));}}};EmailImap[_0xbd2a('0x17')][_0xbd2a('0x31')]=function(_0xde1f98){_0xde1f98['on']('body',this[_0xbd2a('0x36')][_0xbd2a('0x13')](this));_0xde1f98[_0xbd2a('0xe')](_0xbd2a('0x37'),this[_0xbd2a('0x38')][_0xbd2a('0x13')](this));_0xde1f98[_0xbd2a('0xe')](_0xbd2a('0x11'),this['handleMessageEnd'][_0xbd2a('0x13')](this));};EmailImap[_0xbd2a('0x17')][_0xbd2a('0x36')]=function(_0x991e0f){simpleParser(_0x991e0f,{'Iconv':Iconv},this[_0xbd2a('0x39')][_0xbd2a('0x13')](this));};EmailImap[_0xbd2a('0x17')][_0xbd2a('0x38')]=function(){};EmailImap['prototype'][_0xbd2a('0x3a')]=function(){};EmailImap[_0xbd2a('0x17')][_0xbd2a('0x39')]=function(_0x4a97d3,_0x556fca){if(_0x4a97d3){logger[_0xbd2a('0x14')](_0x4a97d3);}else{const _0x1f46ff=_0x556fca[_0xbd2a('0x3b')]['length'];var _0x2b04c6=this;const _0x1f46ff=_0x556fca['html'][_0xbd2a('0x2d')];if(_0x1f46ff<MAX_HTML_BYTES_SIZE){utils[_0xbd2a('0x3c')](this[_0xbd2a('0xc')],_0x556fca,function(_0x18166b){_0x2b04c6[_0xbd2a('0x27')](_0xbd2a('0x8'),_0x18166b);});}else{logger[_0xbd2a('0x3d')]('Email\x20text\x20truncated,\x20max\x20HTML\x20size\x20'+MAX_HTML_BYTES_SIZE+_0xbd2a('0x3e')+_0x556fca[_0xbd2a('0x3b')][_0xbd2a('0x2d')]+_0xbd2a('0x3f'));const _0x379d84=_0xbd2a('0x40')+MAX_HTML_BYTES_SIZE+_0xbd2a('0x41');const _0x1ee417=_0x556fca['text'][_0xbd2a('0x42')](0x0,MAX_HTML_BYTES_SIZE);_0x556fca[_0xbd2a('0x43')]=_0x1ee417+_0x379d84;_0x556fca[_0xbd2a('0x3b')]=_0x1ee417+_0x379d84;utils['parser'](this[_0xbd2a('0xc')],_0x556fca,function(_0x3c1c0d){_0x2b04c6[_0xbd2a('0x27')](_0xbd2a('0x8'),_0x3c1c0d);});}}};EmailImap['prototype']['handleFetchEnd']=function(){this[_0xbd2a('0x2')]['closeBox'](!![],this[_0xbd2a('0x35')]['bind'](this));};EmailImap[_0xbd2a('0x17')][_0xbd2a('0x32')]=function(_0x5e5477){this[_0xbd2a('0x2a')](_0x5e5477);this[_0xbd2a('0x2')][_0xbd2a('0x34')](!![],this[_0xbd2a('0x35')][_0xbd2a('0x13')](this));};EmailImap['prototype'][_0xbd2a('0x12')]=function(){this[_0xbd2a('0x27')](_0xbd2a('0x11'));};EmailImap[_0xbd2a('0x17')][_0xbd2a('0x2a')]=function(_0x40bbcc,_0x3a0d8d){logger[_0xbd2a('0x14')](_0xbd2a('0x2a'),this['account'][_0xbd2a('0x8')],JSON[_0xbd2a('0x44')](_0x40bbcc));var _0x165dc6='';if(_0x40bbcc){if(_0x40bbcc[_0xbd2a('0x45')]){_0x165dc6=_0x40bbcc[_0xbd2a('0x45')];}else{for(var _0x3bd7c5 in _0x40bbcc){if(_0x40bbcc[_0xbd2a('0x46')](_0x3bd7c5)){_0x165dc6+=_[_0xbd2a('0x47')](_0x3bd7c5)+':\x20'+_0x40bbcc[_0x3bd7c5]+'\x0a';}}}}if(_0x3a0d8d){this[_0xbd2a('0x2')][_0xbd2a('0x11')]();this['emit'](_0xbd2a('0x11'));}else{this[_0xbd2a('0x27')](_0xbd2a('0x14'),_0x165dc6);this[_0xbd2a('0x27')](_0xbd2a('0x11'));}};module[_0xbd2a('0x48')]=EmailImap;