Built motion from commit 511216ff.|2.6.34
[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 _0x4d59=['offset','undefined','limit','count','set','Content-Range','update','then','destroy','error','stack','name','padEnd','slice','index','CloudProvider','rawAttributes','fieldName','key','model','map','keys','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','VIRTUAL','options','findAll','rows','service','MicrosoftAzure','decryptString','data3','catch','show','intersection','includeAll','include','create','body','Name\x20parameter\x20not\x20specified','Service\x20parameter\x20not\x20specified','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','join','encryptString','params','find','oauth2MicrosoftAuthorize','generateMicrosoftAuthorizationUrl','user','get','state','Invalid\x20state\x20parameter','parse','from','toString','ascii','isValidIdToken','id_token','oauth2Claims','Unable\x20to\x20validate\x20id_token','getOauth2MicrosoftAccessToken','code','data5','data6','refresh_token','emit','microsoftAuthorization:success','microsoftAuthorization:error','Invalid\x20authentication\x20state\x20parameter','send','message','stringify','lodash','ioredis','../../components/encryptor','../../config/environment','../../config/logger','api','./cloudProvider.oauth','defaults','socket.io-emitter','redis','sendStatus','status','end','json'];(function(_0x244138,_0x54d0c6){var _0x58b2a4=function(_0x3ca521){while(--_0x3ca521){_0x244138['push'](_0x244138['shift']());}};_0x58b2a4(++_0x54d0c6);}(_0x4d59,0x115));var _0x94d5=function(_0x2f991f,_0x10ec62){_0x2f991f=_0x2f991f-0x0;var _0xa0a9cc=_0x4d59[_0x2f991f];return _0xa0a9cc;};'use strict';var _=require(_0x94d5('0x0'));var Redis=require(_0x94d5('0x1'));var qs=require('../../components/parsers/qs');var encryptor=require(_0x94d5('0x2'));var config=require(_0x94d5('0x3'));var logger=require(_0x94d5('0x4'))(_0x94d5('0x5'));var db=require('../../mysqldb')['db'];var oauth=require(_0x94d5('0x6'));config['redis']=_[_0x94d5('0x7')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x94d5('0x8'))(new Redis(config[_0x94d5('0x9')]));var redis=new Redis(config['redis']);function respondWithStatusCode(_0x4b2520,_0x3f7f84){_0x3f7f84=_0x3f7f84||0xcc;return function(_0x32a544){if(_0x32a544){return _0x4b2520[_0x94d5('0xa')](_0x3f7f84);}return _0x4b2520[_0x94d5('0xb')](_0x3f7f84)[_0x94d5('0xc')]();};}function respondWithResult(_0x2675c3,_0x3c1799){_0x3c1799=_0x3c1799||0xc8;return function(_0x467a54){if(_0x467a54){return _0x2675c3[_0x94d5('0xb')](_0x3c1799)[_0x94d5('0xd')](_0x467a54);}};}function respondWithFilteredResult(_0x585aae,_0x4eca64){return function(_0x3d974a){if(_0x3d974a){var _0x31a42d=typeof _0x4eca64[_0x94d5('0xe')]===_0x94d5('0xf')&&typeof _0x4eca64[_0x94d5('0x10')]===_0x94d5('0xf');var _0x445750=_0x3d974a[_0x94d5('0x11')];var _0x2f5389=_0x31a42d?0x0:_0x4eca64[_0x94d5('0xe')];var _0x277b9b=_0x31a42d?_0x3d974a[_0x94d5('0x11')]:_0x4eca64['offset']+_0x4eca64[_0x94d5('0x10')];var _0xf1a9bd;if(_0x277b9b>=_0x445750){_0x277b9b=_0x445750;_0xf1a9bd=0xc8;}else{_0xf1a9bd=0xce;}_0x585aae[_0x94d5('0xb')](_0xf1a9bd);return _0x585aae[_0x94d5('0x12')](_0x94d5('0x13'),_0x2f5389+'-'+_0x277b9b+'/'+_0x445750)[_0x94d5('0xd')](_0x3d974a);}return null;};}function saveUpdates(_0x538868){return function(_0x1313b0){if(_0x1313b0){return _0x1313b0[_0x94d5('0x14')](_0x538868)[_0x94d5('0x15')](function(_0x3e6b91){return _0x3e6b91;});}return null;};}function removeEntity(_0x402865){return function(_0x59f1a2){if(_0x59f1a2){return _0x59f1a2[_0x94d5('0x16')]()[_0x94d5('0x15')](function(){_0x402865['status'](0xcc)[_0x94d5('0xc')]();});}};}function handleEntityNotFound(_0x349c4d){return function(_0x16fe7b){if(!_0x16fe7b){_0x349c4d[_0x94d5('0xa')](0x194);}return _0x16fe7b;};}function handleError(_0x3be241,_0x422a06){_0x422a06=_0x422a06||0x1f4;return function(_0xec2397){logger[_0x94d5('0x17')](_0xec2397[_0x94d5('0x18')]);if(_0xec2397['name']){delete _0xec2397[_0x94d5('0x19')];}_0x3be241['status'](_0x422a06)['send'](_0xec2397);};}function maskClientSecret(_0x1cc869){return _[_0x94d5('0x1a')](_0x1cc869[_0x94d5('0x1b')](0x0,0x3),0x14,'*');}exports[_0x94d5('0x1c')]=function(_0x44f730,_0x1b6302){var _0x3443d5={},_0x15dc15={},_0x4586b9={'count':0x0,'rows':[]};var _0x19a1fd=_['map'](db[_0x94d5('0x1d')][_0x94d5('0x1e')],function(_0x5ee426){return{'name':_0x5ee426[_0x94d5('0x1f')],'type':_0x5ee426['type'][_0x94d5('0x20')]};});_0x15dc15[_0x94d5('0x21')]=_[_0x94d5('0x22')](_0x19a1fd,_0x94d5('0x19'));_0x15dc15['query']=_[_0x94d5('0x23')](_0x44f730[_0x94d5('0x24')]);_0x15dc15[_0x94d5('0x25')]=_['intersection'](_0x15dc15[_0x94d5('0x21')],_0x15dc15[_0x94d5('0x24')]);_0x3443d5[_0x94d5('0x26')]=_['intersection'](_0x15dc15[_0x94d5('0x21')],qs['fields'](_0x44f730[_0x94d5('0x24')][_0x94d5('0x27')]));_0x3443d5[_0x94d5('0x26')]=_0x3443d5['attributes'][_0x94d5('0x28')]?_0x3443d5[_0x94d5('0x26')]:_0x15dc15[_0x94d5('0x21')];if(!_0x44f730['query'][_0x94d5('0x29')](_0x94d5('0x2a'))){_0x3443d5[_0x94d5('0x10')]=qs[_0x94d5('0x10')](_0x44f730[_0x94d5('0x24')]['limit']);_0x3443d5['offset']=qs[_0x94d5('0xe')](_0x44f730['query'][_0x94d5('0xe')]);}_0x3443d5[_0x94d5('0x2b')]=qs[_0x94d5('0x2c')](_0x44f730[_0x94d5('0x24')][_0x94d5('0x2c')]);_0x3443d5[_0x94d5('0x2d')]=qs[_0x94d5('0x25')](_['pick'](_0x44f730['query'],_0x15dc15[_0x94d5('0x25')]),_0x19a1fd);if(_0x44f730[_0x94d5('0x24')][_0x94d5('0x2e')]){_0x3443d5[_0x94d5('0x2d')]=_[_0x94d5('0x2f')](_0x3443d5[_0x94d5('0x2d')],{'$or':_['map'](_0x19a1fd,function(_0x4098ee){if(_0x4098ee[_0x94d5('0x30')]!==_0x94d5('0x31')){var _0x22bbdd={};_0x22bbdd[_0x4098ee[_0x94d5('0x19')]]={'$like':'%'+_0x44f730[_0x94d5('0x24')]['filter']+'%'};return _0x22bbdd;}})});}_0x3443d5=_[_0x94d5('0x2f')]({},_0x3443d5,_0x44f730[_0x94d5('0x32')]);var _0x1f064d={'where':_0x3443d5[_0x94d5('0x2d')]};return db['CloudProvider'][_0x94d5('0x11')](_0x1f064d)[_0x94d5('0x15')](function(_0x24e029){_0x4586b9[_0x94d5('0x11')]=_0x24e029;if(_0x44f730[_0x94d5('0x24')]['includeAll']){_0x3443d5['include']=[{'all':!![]}];}return db[_0x94d5('0x1d')][_0x94d5('0x33')](_0x3443d5);})['then'](function(_0x5d8853){_0x4586b9[_0x94d5('0x34')]=_[_0x94d5('0x22')](_0x5d8853,function(_0x135ef4){if(_0x135ef4[_0x94d5('0x35')]===_0x94d5('0x36')){var _0x3f58f8=encryptor[_0x94d5('0x37')](_0x135ef4[_0x94d5('0x38')]);_0x135ef4[_0x94d5('0x38')]=maskClientSecret(_0x3f58f8);}return _0x135ef4;});return _0x4586b9;})[_0x94d5('0x15')](respondWithFilteredResult(_0x1b6302,_0x3443d5))[_0x94d5('0x39')](handleError(_0x1b6302,null));};exports[_0x94d5('0x3a')]=function(_0x3718e7,_0x38afe3){var _0x465f1d={'raw':!![],'where':{'id':_0x3718e7['params']['id']}},_0x2a7882={};_0x2a7882['model']=_[_0x94d5('0x23')](db[_0x94d5('0x1d')][_0x94d5('0x1e')]);_0x2a7882[_0x94d5('0x24')]=_['keys'](_0x3718e7[_0x94d5('0x24')]);_0x2a7882[_0x94d5('0x25')]=_[_0x94d5('0x3b')](_0x2a7882[_0x94d5('0x21')],_0x2a7882[_0x94d5('0x24')]);_0x465f1d[_0x94d5('0x26')]=_[_0x94d5('0x3b')](_0x2a7882[_0x94d5('0x21')],qs['fields'](_0x3718e7[_0x94d5('0x24')][_0x94d5('0x27')]));_0x465f1d[_0x94d5('0x26')]=_0x465f1d['attributes'][_0x94d5('0x28')]?_0x465f1d['attributes']:_0x2a7882[_0x94d5('0x21')];if(_0x3718e7[_0x94d5('0x24')][_0x94d5('0x3c')]){_0x465f1d[_0x94d5('0x3d')]=[{'all':!![]}];}_0x465f1d=_[_0x94d5('0x2f')]({},_0x465f1d,_0x3718e7[_0x94d5('0x32')]);return db[_0x94d5('0x1d')]['find'](_0x465f1d)['then'](handleEntityNotFound(_0x38afe3,null))['then'](function(_0x353d9f){if(_0x353d9f[_0x94d5('0x35')]===_0x94d5('0x36')){var _0x23f73e=encryptor[_0x94d5('0x37')](_0x353d9f[_0x94d5('0x38')]);_0x353d9f['data3']=maskClientSecret(_0x23f73e);}return _0x353d9f;})['then'](respondWithResult(_0x38afe3,null))['catch'](handleError(_0x38afe3,null));};exports[_0x94d5('0x3e')]=function(_0x594c1d,_0x53f1c8){if(!_0x594c1d[_0x94d5('0x3f')][_0x94d5('0x19')])throw new Error(_0x94d5('0x40'));if(!_0x594c1d['body'][_0x94d5('0x35')])throw new Error(_0x94d5('0x41'));var _0x2347fe=db[_0x94d5('0x1d')][_0x94d5('0x1e')][_0x94d5('0x35')]['values'];if(!_0x2347fe['includes'](_0x594c1d[_0x94d5('0x3f')][_0x94d5('0x35')]))throw new Error(_0x94d5('0x42')+_0x2347fe[_0x94d5('0x43')](',\x20'));if(_0x594c1d[_0x94d5('0x3f')][_0x94d5('0x35')]==='MicrosoftAzure'&&_0x594c1d['body'][_0x94d5('0x38')]){_0x594c1d[_0x94d5('0x3f')][_0x94d5('0x38')]=encryptor[_0x94d5('0x44')](_0x594c1d[_0x94d5('0x3f')][_0x94d5('0x38')]);}return db[_0x94d5('0x1d')][_0x94d5('0x3e')](_0x594c1d['body'],{})[_0x94d5('0x15')](respondWithResult(_0x53f1c8,0xc9))[_0x94d5('0x39')](handleError(_0x53f1c8,null));};exports[_0x94d5('0x14')]=function(_0x196461,_0x3b45fb){if(_0x196461[_0x94d5('0x3f')]['id']){delete _0x196461[_0x94d5('0x3f')]['id'];}return db['CloudProvider']['find']({'where':{'id':_0x196461[_0x94d5('0x45')]['id']}})[_0x94d5('0x15')](handleEntityNotFound(_0x3b45fb,null))[_0x94d5('0x15')](function(_0x2f0ab1){if(_0x2f0ab1[_0x94d5('0x35')]===_0x94d5('0x36')&&_0x196461[_0x94d5('0x3f')]['data3']){_0x196461[_0x94d5('0x3f')][_0x94d5('0x38')]=encryptor['encryptString'](_0x196461[_0x94d5('0x3f')][_0x94d5('0x38')]);}return _0x2f0ab1;})[_0x94d5('0x15')](saveUpdates(_0x196461[_0x94d5('0x3f')],null))[_0x94d5('0x15')](respondWithResult(_0x3b45fb,null))[_0x94d5('0x39')](handleError(_0x3b45fb,null));};exports[_0x94d5('0x16')]=function(_0x42d33d,_0x775711){return db[_0x94d5('0x1d')][_0x94d5('0x46')]({'where':{'id':_0x42d33d[_0x94d5('0x45')]['id']}})[_0x94d5('0x15')](handleEntityNotFound(_0x775711,null))[_0x94d5('0x15')](removeEntity(_0x775711,null))['catch'](handleError(_0x775711,null));};exports[_0x94d5('0x47')]=function(_0x3b2af3,_0xe2160e){return db[_0x94d5('0x1d')]['findOne']({'where':{'id':_0x3b2af3[_0x94d5('0x45')]['id']},'raw':!![]})[_0x94d5('0x15')](function(_0x11c13f){if(!_0x11c13f)return _0xe2160e['sendStatus'](0x194);return{'url':oauth[_0x94d5('0x48')](_0x11c13f,_0x3b2af3[_0x94d5('0x49')]['id'])};})[_0x94d5('0x15')](respondWithResult(_0xe2160e,null))[_0x94d5('0x39')](handleError(_0xe2160e,null));};exports['oauth2MicrosoftCallback']=function(_0x6f7d60,_0x17f8d0){var _0x5b76c2=_0x6f7d60[_0x94d5('0x3f')];var _0x42317f;var _0x5280b3;if(_0x5b76c2[_0x94d5('0x17')])throw _0x5b76c2;redis[_0x94d5('0x4a')](_0x5b76c2[_0x94d5('0x4b')])['then'](function(_0x120d37){if(!_0x120d37)throw new Error(_0x94d5('0x4c'));_0x42317f=JSON[_0x94d5('0x4d')](_0x120d37);var _0x5645d3=Buffer[_0x94d5('0x4e')](_0x5b76c2[_0x94d5('0x4b')],'base64')[_0x94d5('0x4f')](_0x94d5('0x50'));_0x5280b3=JSON[_0x94d5('0x4d')](_0x5645d3);if(!oauth[_0x94d5('0x51')](_0x5b76c2[_0x94d5('0x52')],_0x42317f[_0x94d5('0x53')]))throw new Error(_0x94d5('0x54'));redis['del'](_0x5b76c2[_0x94d5('0x4b')]);return oauth[_0x94d5('0x55')](_0x5b76c2[_0x94d5('0x56')],_0x42317f);})[_0x94d5('0x15')](function(_0x573ac7){_0x42317f[_0x94d5('0x57')]=_0x573ac7['access_token'];_0x42317f[_0x94d5('0x58')]=_0x573ac7[_0x94d5('0x59')];return db[_0x94d5('0x1d')][_0x94d5('0x14')]({'data5':_0x42317f[_0x94d5('0x57')],'data6':_0x42317f[_0x94d5('0x58')]},{'where':{'id':_0x42317f['id']}});})['then'](function(){oauth['startRefreshInterval'](_0x42317f);socket[_0x94d5('0x5a')](_0x94d5('0x5b'),{'id':_0x5280b3['id']});return;})[_0x94d5('0x15')](respondWithStatusCode(_0x17f8d0,null))[_0x94d5('0x39')](function(_0x4478ea){if(_0x5280b3){socket['emit'](_0x94d5('0x5c'),{'id':_0x5280b3['id']});}if(!_0x42317f){logger[_0x94d5('0x17')](_0x94d5('0x5d'),_0x4478ea);return _0x17f8d0[_0x94d5('0xb')](0x1f4)[_0x94d5('0x5e')](_0x4478ea[_0x94d5('0x5f')]);}logger['error']('Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s',_0x42317f['id'],JSON[_0x94d5('0x60')](_0x4478ea));});};