Built motion from commit 5293bb2a.|2.6.30
[motion2.git] / server / api / cloudProvider / cloudProvider.controller.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 _0x2741=['data5','refresh_token','data6','startRefreshInterval','emit','microsoftAuthorization:success','microsoftAuthorization:error','message','stringify','lodash','ioredis','../../components/parsers/qs','../../components/encryptor','../../config/environment','../../config/logger','../../mysqldb','./cloudProvider.oauth','redis','defaults','localhost','socket.io-emitter','sendStatus','status','json','offset','undefined','limit','count','update','destroy','then','end','error','stack','name','send','padEnd','slice','index','map','CloudProvider','rawAttributes','type','key','query','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filters','filter','VIRTUAL','merge','options','includeAll','include','rows','service','decryptString','data3','catch','show','params','keys','intersection','find','MicrosoftAzure','body','Name\x20parameter\x20not\x20specified','Service\x20parameter\x20not\x20specified','values','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','join','encryptString','create','oauth2MicrosoftAuthorize','findOne','generateMicrosoftAuthorizationUrl','oauth2MicrosoftCallback','get','from','base64','toString','ascii','parse','isValidIdToken','Unable\x20to\x20validate\x20id_token','state','getOauth2MicrosoftAccessToken','code'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0x2741,0x1e9));var _0x1274=function(_0x442d58,_0x192b11){_0x442d58=_0x442d58-0x0;var _0x205c77=_0x2741[_0x442d58];return _0x205c77;};'use strict';var _=require(_0x1274('0x0'));var Redis=require(_0x1274('0x1'));var qs=require(_0x1274('0x2'));var encryptor=require(_0x1274('0x3'));var config=require(_0x1274('0x4'));var logger=require(_0x1274('0x5'))('api');var db=require(_0x1274('0x6'))['db'];var oauth=require(_0x1274('0x7'));config[_0x1274('0x8')]=_[_0x1274('0x9')](config[_0x1274('0x8')],{'host':_0x1274('0xa'),'port':0x18eb});var socket=require(_0x1274('0xb'))(new Redis(config[_0x1274('0x8')]));var redis=new Redis(config['redis']);function respondWithStatusCode(_0x4f42a5,_0x4dfbbc){_0x4dfbbc=_0x4dfbbc||0xcc;return function(_0x93d87){if(_0x93d87){return _0x4f42a5[_0x1274('0xc')](_0x4dfbbc);}return _0x4f42a5[_0x1274('0xd')](_0x4dfbbc)['end']();};}function respondWithResult(_0x1f76a8,_0x30264b){_0x30264b=_0x30264b||0xc8;return function(_0x23b8e3){if(_0x23b8e3){return _0x1f76a8[_0x1274('0xd')](_0x30264b)[_0x1274('0xe')](_0x23b8e3);}};}function respondWithFilteredResult(_0x248096,_0x38de52){return function(_0x33cf48){if(_0x33cf48){var _0x1862bc=typeof _0x38de52[_0x1274('0xf')]===_0x1274('0x10')&&typeof _0x38de52[_0x1274('0x11')]===_0x1274('0x10');var _0x1f573d=_0x33cf48[_0x1274('0x12')];var _0x8278f5=_0x1862bc?0x0:_0x38de52[_0x1274('0xf')];var _0x3b83a5=_0x1862bc?_0x33cf48[_0x1274('0x12')]:_0x38de52[_0x1274('0xf')]+_0x38de52[_0x1274('0x11')];var _0x22104f;if(_0x3b83a5>=_0x1f573d){_0x3b83a5=_0x1f573d;_0x22104f=0xc8;}else{_0x22104f=0xce;}_0x248096[_0x1274('0xd')](_0x22104f);return _0x248096['set']('Content-Range',_0x8278f5+'-'+_0x3b83a5+'/'+_0x1f573d)[_0x1274('0xe')](_0x33cf48);}return null;};}function saveUpdates(_0x5c6cb1){return function(_0x25e434){if(_0x25e434){return _0x25e434[_0x1274('0x13')](_0x5c6cb1)['then'](function(_0x3e6e11){return _0x3e6e11;});}return null;};}function removeEntity(_0x4e9609){return function(_0x84be30){if(_0x84be30){return _0x84be30[_0x1274('0x14')]()[_0x1274('0x15')](function(){_0x4e9609[_0x1274('0xd')](0xcc)[_0x1274('0x16')]();});}};}function handleEntityNotFound(_0x63b519){return function(_0x2c6556){if(!_0x2c6556){_0x63b519[_0x1274('0xc')](0x194);}return _0x2c6556;};}function handleError(_0x30366a,_0x5f79a2){_0x5f79a2=_0x5f79a2||0x1f4;return function(_0x39531f){logger[_0x1274('0x17')](_0x39531f[_0x1274('0x18')]);if(_0x39531f[_0x1274('0x19')]){delete _0x39531f[_0x1274('0x19')];}_0x30366a[_0x1274('0xd')](_0x5f79a2)[_0x1274('0x1a')](_0x39531f);};}function maskClientSecret(_0x5deb32){return _[_0x1274('0x1b')](_0x5deb32[_0x1274('0x1c')](0x0,0x3),0x14,'*');}exports[_0x1274('0x1d')]=function(_0x4d014d,_0x422a54){var _0x1fd8ed={},_0x332ce2={},_0x5e6942={'count':0x0,'rows':[]};var _0x1c8b07=_[_0x1274('0x1e')](db[_0x1274('0x1f')][_0x1274('0x20')],function(_0x27d954){return{'name':_0x27d954['fieldName'],'type':_0x27d954[_0x1274('0x21')][_0x1274('0x22')]};});_0x332ce2['model']=_[_0x1274('0x1e')](_0x1c8b07,_0x1274('0x19'));_0x332ce2[_0x1274('0x23')]=_['keys'](_0x4d014d[_0x1274('0x23')]);_0x332ce2['filters']=_['intersection'](_0x332ce2[_0x1274('0x24')],_0x332ce2['query']);_0x1fd8ed[_0x1274('0x25')]=_['intersection'](_0x332ce2[_0x1274('0x24')],qs[_0x1274('0x26')](_0x4d014d[_0x1274('0x23')][_0x1274('0x26')]));_0x1fd8ed[_0x1274('0x25')]=_0x1fd8ed['attributes'][_0x1274('0x27')]?_0x1fd8ed['attributes']:_0x332ce2[_0x1274('0x24')];if(!_0x4d014d[_0x1274('0x23')][_0x1274('0x28')](_0x1274('0x29'))){_0x1fd8ed[_0x1274('0x11')]=qs[_0x1274('0x11')](_0x4d014d[_0x1274('0x23')]['limit']);_0x1fd8ed[_0x1274('0xf')]=qs[_0x1274('0xf')](_0x4d014d['query']['offset']);}_0x1fd8ed['order']=qs[_0x1274('0x2a')](_0x4d014d[_0x1274('0x23')][_0x1274('0x2a')]);_0x1fd8ed[_0x1274('0x2b')]=qs['filters'](_[_0x1274('0x2c')](_0x4d014d[_0x1274('0x23')],_0x332ce2[_0x1274('0x2d')]),_0x1c8b07);if(_0x4d014d[_0x1274('0x23')][_0x1274('0x2e')]){_0x1fd8ed[_0x1274('0x2b')]=_['merge'](_0x1fd8ed[_0x1274('0x2b')],{'$or':_['map'](_0x1c8b07,function(_0x582d0d){if(_0x582d0d[_0x1274('0x21')]!==_0x1274('0x2f')){var _0x367c0a={};_0x367c0a[_0x582d0d[_0x1274('0x19')]]={'$like':'%'+_0x4d014d[_0x1274('0x23')][_0x1274('0x2e')]+'%'};return _0x367c0a;}})});}_0x1fd8ed=_[_0x1274('0x30')]({},_0x1fd8ed,_0x4d014d[_0x1274('0x31')]);var _0x56a894={'where':_0x1fd8ed[_0x1274('0x2b')]};return db[_0x1274('0x1f')][_0x1274('0x12')](_0x56a894)[_0x1274('0x15')](function(_0x265bf6){_0x5e6942[_0x1274('0x12')]=_0x265bf6;if(_0x4d014d[_0x1274('0x23')][_0x1274('0x32')]){_0x1fd8ed[_0x1274('0x33')]=[{'all':!![]}];}return db[_0x1274('0x1f')]['findAll'](_0x1fd8ed);})['then'](function(_0xccd906){_0x5e6942[_0x1274('0x34')]=_[_0x1274('0x1e')](_0xccd906,function(_0x409288){if(_0x409288[_0x1274('0x35')]==='MicrosoftAzure'){var _0x281339=encryptor[_0x1274('0x36')](_0x409288[_0x1274('0x37')]);_0x409288[_0x1274('0x37')]=maskClientSecret(_0x281339);}return _0x409288;});return _0x5e6942;})[_0x1274('0x15')](respondWithFilteredResult(_0x422a54,_0x1fd8ed))[_0x1274('0x38')](handleError(_0x422a54,null));};exports[_0x1274('0x39')]=function(_0x39701d,_0x55cf0d){var _0x207345={'raw':!![],'where':{'id':_0x39701d[_0x1274('0x3a')]['id']}},_0x1ccb0a={};_0x1ccb0a[_0x1274('0x24')]=_[_0x1274('0x3b')](db[_0x1274('0x1f')]['rawAttributes']);_0x1ccb0a[_0x1274('0x23')]=_['keys'](_0x39701d['query']);_0x1ccb0a[_0x1274('0x2d')]=_[_0x1274('0x3c')](_0x1ccb0a[_0x1274('0x24')],_0x1ccb0a[_0x1274('0x23')]);_0x207345[_0x1274('0x25')]=_['intersection'](_0x1ccb0a[_0x1274('0x24')],qs['fields'](_0x39701d['query']['fields']));_0x207345[_0x1274('0x25')]=_0x207345['attributes']['length']?_0x207345[_0x1274('0x25')]:_0x1ccb0a[_0x1274('0x24')];if(_0x39701d['query'][_0x1274('0x32')]){_0x207345[_0x1274('0x33')]=[{'all':!![]}];}_0x207345=_[_0x1274('0x30')]({},_0x207345,_0x39701d[_0x1274('0x31')]);return db['CloudProvider'][_0x1274('0x3d')](_0x207345)[_0x1274('0x15')](handleEntityNotFound(_0x55cf0d,null))[_0x1274('0x15')](function(_0x46cb0d){if(_0x46cb0d[_0x1274('0x35')]===_0x1274('0x3e')){var _0x24f413=encryptor[_0x1274('0x36')](_0x46cb0d[_0x1274('0x37')]);_0x46cb0d['data3']=maskClientSecret(_0x24f413);}return _0x46cb0d;})['then'](respondWithResult(_0x55cf0d,null))[_0x1274('0x38')](handleError(_0x55cf0d,null));};exports['create']=function(_0x203455,_0x30d757){if(!_0x203455[_0x1274('0x3f')]['name'])throw new Error(_0x1274('0x40'));if(!_0x203455[_0x1274('0x3f')][_0x1274('0x35')])throw new Error(_0x1274('0x41'));var _0x101491=db['CloudProvider'][_0x1274('0x20')][_0x1274('0x35')][_0x1274('0x42')];if(!_0x101491[_0x1274('0x43')](_0x203455[_0x1274('0x3f')][_0x1274('0x35')]))throw new Error(_0x1274('0x44')+_0x101491[_0x1274('0x45')](',\x20'));if(_0x203455[_0x1274('0x3f')][_0x1274('0x35')]===_0x1274('0x3e')&&_0x203455['body'][_0x1274('0x37')]){_0x203455[_0x1274('0x3f')]['data3']=encryptor[_0x1274('0x46')](_0x203455[_0x1274('0x3f')]['data3']);}return db[_0x1274('0x1f')][_0x1274('0x47')](_0x203455['body'],{})[_0x1274('0x15')](respondWithResult(_0x30d757,0xc9))[_0x1274('0x38')](handleError(_0x30d757,null));};exports[_0x1274('0x13')]=function(_0x2dbc6a,_0x363c33){if(_0x2dbc6a[_0x1274('0x3f')]['id']){delete _0x2dbc6a[_0x1274('0x3f')]['id'];}return db[_0x1274('0x1f')]['find']({'where':{'id':_0x2dbc6a[_0x1274('0x3a')]['id']}})[_0x1274('0x15')](handleEntityNotFound(_0x363c33,null))[_0x1274('0x15')](function(_0x221b97){if(_0x221b97['service']==='MicrosoftAzure'&&_0x2dbc6a[_0x1274('0x3f')][_0x1274('0x37')]){_0x2dbc6a[_0x1274('0x3f')]['data3']=encryptor[_0x1274('0x46')](_0x2dbc6a['body'][_0x1274('0x37')]);}return _0x221b97;})['then'](saveUpdates(_0x2dbc6a[_0x1274('0x3f')],null))[_0x1274('0x15')](respondWithResult(_0x363c33,null))[_0x1274('0x38')](handleError(_0x363c33,null));};exports[_0x1274('0x14')]=function(_0x3431b1,_0x459b62){return db['CloudProvider'][_0x1274('0x3d')]({'where':{'id':_0x3431b1[_0x1274('0x3a')]['id']}})[_0x1274('0x15')](handleEntityNotFound(_0x459b62,null))['then'](removeEntity(_0x459b62,null))['catch'](handleError(_0x459b62,null));};exports[_0x1274('0x48')]=function(_0x297fe5,_0x266699){return db[_0x1274('0x1f')][_0x1274('0x49')]({'where':{'id':_0x297fe5[_0x1274('0x3a')]['id']},'raw':!![]})['then'](function(_0x32e382){if(!_0x32e382)return _0x266699['sendStatus'](0x194);return{'url':oauth[_0x1274('0x4a')](_0x32e382,_0x297fe5['user']['id'])};})[_0x1274('0x15')](respondWithResult(_0x266699,null))['catch'](handleError(_0x266699,null));};exports[_0x1274('0x4b')]=function(_0x3acb64,_0x299f8a){var _0x46501f=_0x3acb64['body'];var _0x4d8333;var _0x58e7d6;if(_0x46501f[_0x1274('0x17')])throw _0x46501f;redis[_0x1274('0x4c')](_0x46501f['state'])[_0x1274('0x15')](function(_0x2e5065){if(!_0x2e5065)throw new Error('Invalid\x20state\x20parameter');_0x4d8333=JSON['parse'](_0x2e5065);var _0x188990=Buffer[_0x1274('0x4d')](_0x46501f['state'],_0x1274('0x4e'))[_0x1274('0x4f')](_0x1274('0x50'));_0x58e7d6=JSON[_0x1274('0x51')](_0x188990);if(!oauth[_0x1274('0x52')](_0x46501f['id_token'],_0x4d8333['oauth2Claims']))throw new Error(_0x1274('0x53'));redis['del'](_0x46501f[_0x1274('0x54')]);return oauth[_0x1274('0x55')](_0x46501f[_0x1274('0x56')],_0x4d8333);})[_0x1274('0x15')](function(_0x1cd29a){_0x4d8333[_0x1274('0x57')]=_0x1cd29a['access_token'];_0x4d8333['data6']=_0x1cd29a[_0x1274('0x58')];return db['CloudProvider'][_0x1274('0x13')]({'data5':_0x4d8333[_0x1274('0x57')],'data6':_0x4d8333[_0x1274('0x59')]},{'where':{'id':_0x4d8333['id']}});})[_0x1274('0x15')](function(){oauth[_0x1274('0x5a')](_0x4d8333);socket[_0x1274('0x5b')](_0x1274('0x5c'),{'id':_0x58e7d6['id']});return;})['then'](respondWithStatusCode(_0x299f8a,null))['catch'](function(_0x51e2fa){if(_0x58e7d6){socket[_0x1274('0x5b')](_0x1274('0x5d'),{'id':_0x58e7d6['id']});}if(!_0x4d8333){logger[_0x1274('0x17')]('Invalid\x20authentication\x20state\x20parameter',_0x51e2fa);return _0x299f8a[_0x1274('0xd')](0x1f4)['send'](_0x51e2fa[_0x1274('0x5e')]);}logger['error']('Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s',_0x4d8333['id'],JSON[_0x1274('0x5f')](_0x51e2fa));});};