436c445c07d67bbf75e5654b429627e7d282d5df
[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 _0x90b1=['hasOwnProperty','exports','lodash','util','imap','iconv','Iconv','events','EventEmitter','mailbox','INBOX','account','getAccount','once','ready','handleReady','bind','end','handleEnd','error','connect','inherits','prototype','connTimeout','authTimeout','isNil','service','authentication','user','password','host','port','tls','autotls','required','modernAuthentication','xoauth2','CloudProvider','data5','getHost','email','anonymous@xcally.com','openBox','handleOpenBox','handleError','emit','readUnseen','handleCloseBox','search','handleReadUnseen','length','fetch','message','handleFetchMessage','handleFetchEnd','closeBox','body','attributes','handleMessageEnd','handleMessageBody','handleSimpleParser','handleMessageAttributes','textCode'];(function(_0x2307fa,_0x266e5e){var _0x496486=function(_0x53466e){while(--_0x53466e){_0x2307fa['push'](_0x2307fa['shift']());}};_0x496486(++_0x266e5e);}(_0x90b1,0x1bb));var _0x190b=function(_0x95975e,_0x51412c){_0x95975e=_0x95975e-0x0;var _0x5d4933=_0x90b1[_0x95975e];return _0x5d4933;};'use strict';var _=require(_0x190b('0x0'));var util=require(_0x190b('0x1'));var Imap=require(_0x190b('0x2'));var simpleParser=require('mailparser')['simpleParser'];var Iconv=require(_0x190b('0x3'))[_0x190b('0x4')];var EventEmitter=require(_0x190b('0x5'))[_0x190b('0x6')];var utils=require('./utils');var logger=require('../../../config/logger')('email');function EmailImap(_0x5da9c1,_0x27ff8c){this[_0x190b('0x7')]=_0x190b('0x8');this[_0x190b('0x9')]=this[_0x190b('0xa')](_0x5da9c1,_0x27ff8c);this[_0x190b('0x2')]=new Imap(this[_0x190b('0x9')]);this['imap'][_0x190b('0xb')](_0x190b('0xc'),this[_0x190b('0xd')][_0x190b('0xe')](this));this[_0x190b('0x2')][_0x190b('0xb')](_0x190b('0xf'),this[_0x190b('0x10')]['bind'](this));this[_0x190b('0x2')]['on'](_0x190b('0x11'),this['handleError'][_0x190b('0xe')](this));this[_0x190b('0x2')][_0x190b('0x12')]();}util[_0x190b('0x13')](EmailImap,EventEmitter);EmailImap[_0x190b('0x14')][_0x190b('0xa')]=function(_0x2e12d4,_0x13544c){var _0x1ff180={'connTimeout':_0x2e12d4[_0x190b('0x15')]?_0x2e12d4[_0x190b('0x15')]*0x3e8:0x2710,'authTimeout':_0x2e12d4[_0x190b('0x16')]?_0x2e12d4[_0x190b('0x16')]*0x3e8:0x1388};if(_[_0x190b('0x17')](_0x2e12d4[_0x190b('0x18')])){if(_0x2e12d4[_0x190b('0x19')]){_0x1ff180[_0x190b('0x1a')]=_0x2e12d4['user'];_0x1ff180[_0x190b('0x1b')]=_0x2e12d4['password'];}_0x1ff180[_0x190b('0x1c')]=_0x2e12d4[_0x190b('0x1c')];_0x1ff180[_0x190b('0x1d')]=_0x2e12d4[_0x190b('0x1d')]||0x3e1;if(_0x2e12d4['tls']){_0x1ff180[_0x190b('0x1e')]=!![];}else{_0x1ff180[_0x190b('0x1e')]=![];_0x1ff180[_0x190b('0x1f')]=_0x190b('0x20');}}else{if(_0x2e12d4[_0x190b('0x21')]){_0x1ff180[_0x190b('0x22')]=utils['generateXOAuth2Token'](_0x2e12d4[_0x190b('0x23')][_0x190b('0x24')],_0x2e12d4['user']);_0x1ff180[_0x190b('0x1a')]=_0x2e12d4['user'];}else{_0x1ff180['user']=_0x2e12d4[_0x190b('0x1a')];_0x1ff180[_0x190b('0x1b')]=_0x2e12d4[_0x190b('0x1b')];}_0x1ff180['host']=utils[_0x190b('0x25')](_0x2e12d4[_0x190b('0x18')]);_0x1ff180[_0x190b('0x1d')]=0x3e1;_0x1ff180[_0x190b('0x1e')]=!![];}_0x1ff180[_0x190b('0x26')]=_0x13544c||_0x2e12d4[_0x190b('0x1a')]||_0x190b('0x27');return _0x1ff180;};EmailImap['prototype']['handleReady']=function(){this[_0x190b('0x2')][_0x190b('0x28')](this['mailbox'],![],this['handleOpenBox'][_0x190b('0xe')](this));};EmailImap['prototype'][_0x190b('0x29')]=function(_0x3b6aaf,_0x51f8b4){if(_0x3b6aaf){this[_0x190b('0x2a')](_0x3b6aaf,!![]);}else{this[_0x190b('0x2b')]('box',_0x51f8b4);this[_0x190b('0x2c')]();}};EmailImap[_0x190b('0x14')][_0x190b('0x2d')]=function(_0x494f3f){if(_0x494f3f){this['handleError'](_0x494f3f,!![]);}else{this[_0x190b('0x2')]['end']();}};EmailImap[_0x190b('0x14')][_0x190b('0x2c')]=function(){this['imap'][_0x190b('0x2e')](['UNSEEN'],this[_0x190b('0x2f')]['bind'](this));};EmailImap[_0x190b('0x14')]['handleReadUnseen']=function(_0xc789e5,_0x5c6ff3){if(_0xc789e5){this['handleError'](_0xc789e5,!![]);}else{if(_0x5c6ff3[_0x190b('0x30')]){try{var _0x15fed4=this[_0x190b('0x2')][_0x190b('0x31')](_0x5c6ff3,{'bodies':'','markSeen':!![]});_0x15fed4['on'](_0x190b('0x32'),this[_0x190b('0x33')][_0x190b('0xe')](this));_0x15fed4[_0x190b('0xb')]('error',this['handleFetchError'][_0x190b('0xe')](this));_0x15fed4[_0x190b('0xb')]('end',this[_0x190b('0x34')][_0x190b('0xe')](this));}catch(_0x3e4dd8){logger[_0x190b('0x11')](_0x3e4dd8);}}else{this[_0x190b('0x2')][_0x190b('0x35')](!![],this[_0x190b('0x2d')]['bind'](this));}}};EmailImap['prototype'][_0x190b('0x33')]=function(_0x2f7111){_0x2f7111['on'](_0x190b('0x36'),this['handleMessageBody'][_0x190b('0xe')](this));_0x2f7111[_0x190b('0xb')](_0x190b('0x37'),this['handleMessageAttributes'][_0x190b('0xe')](this));_0x2f7111['once']('end',this[_0x190b('0x38')][_0x190b('0xe')](this));};EmailImap['prototype'][_0x190b('0x39')]=function(_0xfd0d62){simpleParser(_0xfd0d62,{'Iconv':Iconv},this[_0x190b('0x3a')]['bind'](this));};EmailImap[_0x190b('0x14')][_0x190b('0x3b')]=function(){};EmailImap['prototype']['handleMessageEnd']=function(){};EmailImap[_0x190b('0x14')]['handleSimpleParser']=function(_0x46bdba,_0x741e94){if(_0x46bdba){logger[_0x190b('0x11')](_0x46bdba);}else{var _0xad955a=this;utils['parser'](this[_0x190b('0x9')],_0x741e94,function(_0x5f118c){_0xad955a[_0x190b('0x2b')](_0x190b('0x26'),_0x5f118c);});}};EmailImap['prototype'][_0x190b('0x34')]=function(){this[_0x190b('0x2')][_0x190b('0x35')](!![],this['handleCloseBox'][_0x190b('0xe')](this));};EmailImap['prototype']['handleFetchError']=function(_0x554486){this[_0x190b('0x2a')](_0x554486);this[_0x190b('0x2')][_0x190b('0x35')](!![],this[_0x190b('0x2d')]['bind'](this));};EmailImap['prototype'][_0x190b('0x10')]=function(){this['emit'](_0x190b('0xf'));};EmailImap[_0x190b('0x14')]['handleError']=function(_0x2e25e3,_0x36db47){logger[_0x190b('0x11')]('handleError',this[_0x190b('0x9')][_0x190b('0x26')],JSON['stringify'](_0x2e25e3));var _0x3c734b='';if(_0x2e25e3){if(_0x2e25e3['textCode']){_0x3c734b=_0x2e25e3[_0x190b('0x3c')];}else{for(var _0x12c276 in _0x2e25e3){if(_0x2e25e3[_0x190b('0x3d')](_0x12c276)){_0x3c734b+=_['upperFirst'](_0x12c276)+':\x20'+_0x2e25e3[_0x12c276]+'\x0a';}}}}if(_0x36db47){this[_0x190b('0x2')]['end']();}else{this[_0x190b('0x2b')](_0x190b('0x11'),_0x3c734b);this[_0x190b('0x2b')](_0x190b('0xf'));}};module[_0x190b('0x3e')]=EmailImap;