Built motion from commit 67e5df37.|2.0.66
[motion2.git] / server / services / email / lib / email.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 _0x4098=['Imap','status','messageStatus','connected','name','messages','total','handleImapEmail','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','lastName','from','then','Mail\x20accepted\x20from\x20routing','catch','stringify','lastSync','sendMail','send','verifySmtp','isNil','Smtp','verify','exports','lodash','moment','bluebird','socket.io-emitter','localhost','./imap','../../../config/logger','email','../rpc/mailAccount','info','start\x20email\x20channel','mailAccounts','smtp','emit','mailAccount:update','prototype','refresh','hasOwnProperty','active','imapAccounts','box','handleImapBox','bind','end','error','handleImapError'];(function(_0x47367e,_0x14a79b){var _0x30c37d=function(_0x546220){while(--_0x546220){_0x47367e['push'](_0x47367e['shift']());}};_0x30c37d(++_0x14a79b);}(_0x4098,0x112));var _0x8409=function(_0xf5ff97,_0x2deb9e){_0xf5ff97=_0xf5ff97-0x0;var _0x1a1e7c=_0x4098[_0xf5ff97];return _0x1a1e7c;};'use strict';var _=require(_0x8409('0x0'));var moment=require(_0x8409('0x1'));var BPromise=require(_0x8409('0x2'));var io=require(_0x8409('0x3'))({'host':_0x8409('0x4'),'port':0x18eb});var EmailImap=require(_0x8409('0x5'));var EmailSmtp=require('./smtp');var logger=require(_0x8409('0x6'))(_0x8409('0x7'));var mailAccount=require(_0x8409('0x8'));function EmailChannel(_0x2d43fb){logger[_0x8409('0x9')](_0x8409('0xa'));this[_0x8409('0xb')]=_0x2d43fb['mailAccounts'];this['imapAccounts']={};this[_0x8409('0xc')]=new EmailSmtp();}EmailChannel['prototype'][_0x8409('0xd')]=function(_0x4fa912){io[_0x8409('0xd')](_0x8409('0xe'),this[_0x8409('0xb')][_0x4fa912]);};EmailChannel[_0x8409('0xf')][_0x8409('0x10')]=function(_0x5ac772){for(var _0x9cd8c in _0x5ac772){if(_0x5ac772[_0x8409('0x11')](_0x9cd8c)){if(_0x5ac772[_0x9cd8c]['Imap']&&_0x5ac772[_0x9cd8c][_0x8409('0x12')]){var _0x44d9f1=_0x5ac772[_0x9cd8c]['Imap'];if(!this[_0x8409('0x13')][_0x8409('0x11')](_0x44d9f1['id'])){this[_0x8409('0x13')][_0x44d9f1['id']]=new EmailImap(_0x44d9f1,_0x5ac772[_0x9cd8c]['email']);this['imapAccounts'][_0x44d9f1['id']]['on'](_0x8409('0x14'),this[_0x8409('0x15')][_0x8409('0x16')](this,_0x9cd8c));this[_0x8409('0x13')][_0x44d9f1['id']]['on'](_0x8409('0x7'),this['handleImapEmail']['bind'](this,_0x9cd8c));this[_0x8409('0x13')][_0x44d9f1['id']]['on'](_0x8409('0x17'),this['handleImapEnd'][_0x8409('0x16')](this,_0x9cd8c));this['imapAccounts'][_0x44d9f1['id']]['on'](_0x8409('0x18'),this[_0x8409('0x19')][_0x8409('0x16')](this,_0x9cd8c));}}else{if(_['isNil'](this[_0x8409('0xb')][_0x9cd8c][_0x8409('0x1a')])){this[_0x8409('0xb')][_0x9cd8c][_0x8409('0x1a')]={};}this[_0x8409('0xb')][_0x9cd8c][_0x8409('0x1a')][_0x8409('0x1b')]='disabled';this[_0x8409('0xb')][_0x9cd8c][_0x8409('0x1a')][_0x8409('0x1c')]='';this['emit'](_0x9cd8c);}}}};EmailChannel[_0x8409('0xf')][_0x8409('0x15')]=function(_0x227d87,_0x3d27e6){if(this[_0x8409('0xb')][_0x227d87]){this[_0x8409('0xb')][_0x227d87][_0x8409('0x1a')][_0x8409('0x1b')]=_0x8409('0x1d');this[_0x8409('0xb')][_0x227d87][_0x8409('0x1a')][_0x8409('0x1c')]=_0x3d27e6[_0x8409('0x1e')];if(_0x3d27e6[_0x8409('0x1f')]){this[_0x8409('0xb')][_0x227d87][_0x8409('0x1a')][_0x8409('0x20')]=_0x3d27e6[_0x8409('0x1f')][_0x8409('0x20')];}return this['emit'](_0x227d87);}};EmailChannel[_0x8409('0xf')][_0x8409('0x21')]=function(_0x71f9f2,_0x1cd1d4){logger[_0x8409('0x9')](_0x8409('0x22'),_0x1cd1d4[_0x8409('0x23')],_0x1cd1d4[_0x8409('0x24')],_0x1cd1d4[_0x8409('0x25')],_0x71f9f2);if(this[_0x8409('0xb')][_0x71f9f2]){return mailAccount['notify'](_0x71f9f2,_0x1cd1d4)[_0x8409('0x26')](function(_0x2711e0){if(_0x2711e0){logger[_0x8409('0x9')](_0x8409('0x27'));}})[_0x8409('0x28')](function(_0x47e40c){logger[_0x8409('0x18')]('Mail\x20not\x20accepted\x20from\x20routing\x20%s',JSON[_0x8409('0x29')](_0x47e40c));});}};EmailChannel[_0x8409('0xf')]['handleImapEnd']=function(_0x42ca9a){if(this['mailAccounts'][_0x42ca9a]&&this[_0x8409('0xb')][_0x42ca9a][_0x8409('0x1a')]){if(this[_0x8409('0x13')][this[_0x8409('0xb')][_0x42ca9a][_0x8409('0x1a')]['id']]){delete this[_0x8409('0x13')][this[_0x8409('0xb')][_0x42ca9a][_0x8409('0x1a')]['id']];}this['mailAccounts'][_0x42ca9a]['Imap'][_0x8409('0x2a')]=moment();this['emit'](_0x42ca9a);}};EmailChannel['prototype']['handleImapError']=function(_0x3a0774,_0x11e372){if(this['mailAccounts'][_0x3a0774]){this[_0x8409('0xb')][_0x3a0774][_0x8409('0x1a')][_0x8409('0x1b')]=_0x8409('0x18');this['mailAccounts'][_0x3a0774][_0x8409('0x1a')][_0x8409('0x1c')]=_0x11e372;return this['emit'](_0x3a0774);}};EmailChannel[_0x8409('0xf')][_0x8409('0x2b')]=function(_0x45990c,_0x186fbd){return this[_0x8409('0xc')][_0x8409('0x2c')](_0x45990c,_0x186fbd);};EmailChannel['prototype'][_0x8409('0x2d')]=function(_0x5c49c2){var _0x3b4ace=this;if(this[_0x8409('0xb')][_0x5c49c2['id']]){if(_[_0x8409('0x2e')](this[_0x8409('0xb')][_0x5c49c2['id']][_0x8409('0x2f')])){this[_0x8409('0xb')][_0x5c49c2['id']][_0x8409('0x2f')]={};}this['mailAccounts'][_0x5c49c2['id']][_0x8409('0x2f')][_0x8409('0x2a')]=moment();return new BPromise(function(_0xa11869,_0x159296){return _0x3b4ace[_0x8409('0xc')][_0x8409('0x30')](_0x5c49c2)['then'](function(_0x1b0254){_0x3b4ace['mailAccounts'][_0x5c49c2['id']][_0x8409('0x2f')][_0x8409('0x1b')]='verified';_0x3b4ace['mailAccounts'][_0x5c49c2['id']]['Smtp'][_0x8409('0x1c')]='';_0x3b4ace['emit'](_0x5c49c2['id']);_0xa11869(_0x1b0254);})['catch'](function(_0x447513){_0x3b4ace[_0x8409('0xb')][_0x5c49c2['id']][_0x8409('0x2f')][_0x8409('0x1b')]=_0x8409('0x18');_0x3b4ace[_0x8409('0xb')][_0x5c49c2['id']]['Smtp'][_0x8409('0x1c')]=_0x447513;_0x3b4ace[_0x8409('0xd')](_0x5c49c2['id']);_0x159296(_0x447513);});});}return this[_0x8409('0xc')][_0x8409('0x30')](_0x5c49c2);};module[_0x8409('0x31')]=EmailChannel;