c5b569c3f401271bf305f81dcfa6afcc1735c27a
[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 _0xe9be=['map','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','CloudProvider','then','includeAll','include','findAll','rows','service','MicrosoftAzure','decryptString','data3','catch','show','find','create','body','Name\x20parameter\x20not\x20specified','Service\x20parameter\x20not\x20specified','values','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','join','encryptString','update','params','oauth2MicrosoftAuthorize','findOne','generateMicrosoftAuthorizationUrl','user','oauth2MicrosoftCallback','error','get','state','Invalid\x20state\x20parameter','parse','base64','toString','ascii','id_token','oauth2Claims','Unable\x20to\x20validate\x20id_token','del','getOauth2MicrosoftAccessToken','code','data5','access_token','data6','refresh_token','startRefreshInterval','emit','microsoftAuthorization:success','microsoftAuthorization:error','message','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','stringify','lodash','../../components/parsers/qs','../../components/encryptor','../../config/environment','../../config/logger','api','../../mysqldb','./cloudProvider.oauth','defaults','redis','sendStatus','status','end','offset','undefined','count','limit','set','json','destroy','stack','name','padEnd','slice','index'];(function(_0x3c9921,_0x4f3ec3){var _0x1011c4=function(_0x31f84d){while(--_0x31f84d){_0x3c9921['push'](_0x3c9921['shift']());}};_0x1011c4(++_0x4f3ec3);}(_0xe9be,0x1e0));var _0xee9b=function(_0x28383d,_0x4c101e){_0x28383d=_0x28383d-0x0;var _0x2e919e=_0xe9be[_0x28383d];return _0x2e919e;};'use strict';var _=require(_0xee9b('0x0'));var Redis=require('ioredis');var qs=require(_0xee9b('0x1'));var encryptor=require(_0xee9b('0x2'));var config=require(_0xee9b('0x3'));var logger=require(_0xee9b('0x4'))(_0xee9b('0x5'));var db=require(_0xee9b('0x6'))['db'];var oauth=require(_0xee9b('0x7'));config['redis']=_[_0xee9b('0x8')](config[_0xee9b('0x9')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xee9b('0x9')]));var redis=new Redis(config[_0xee9b('0x9')]);function respondWithStatusCode(_0x404ff1,_0x2e6e2a){_0x2e6e2a=_0x2e6e2a||0xcc;return function(_0x4b03b0){if(_0x4b03b0){return _0x404ff1[_0xee9b('0xa')](_0x2e6e2a);}return _0x404ff1[_0xee9b('0xb')](_0x2e6e2a)[_0xee9b('0xc')]();};}function respondWithResult(_0x547cb3,_0x9ac80d){_0x9ac80d=_0x9ac80d||0xc8;return function(_0x4d76a5){if(_0x4d76a5){return _0x547cb3[_0xee9b('0xb')](_0x9ac80d)['json'](_0x4d76a5);}};}function respondWithFilteredResult(_0x3b065f,_0x24dcda){return function(_0x5a8341){if(_0x5a8341){var _0x176481=typeof _0x24dcda[_0xee9b('0xd')]===_0xee9b('0xe')&&typeof _0x24dcda['limit']===_0xee9b('0xe');var _0x1b5717=_0x5a8341[_0xee9b('0xf')];var _0x14bb61=_0x176481?0x0:_0x24dcda[_0xee9b('0xd')];var _0x4504b3=_0x176481?_0x5a8341['count']:_0x24dcda[_0xee9b('0xd')]+_0x24dcda[_0xee9b('0x10')];var _0x50b1e9;if(_0x4504b3>=_0x1b5717){_0x4504b3=_0x1b5717;_0x50b1e9=0xc8;}else{_0x50b1e9=0xce;}_0x3b065f[_0xee9b('0xb')](_0x50b1e9);return _0x3b065f[_0xee9b('0x11')]('Content-Range',_0x14bb61+'-'+_0x4504b3+'/'+_0x1b5717)[_0xee9b('0x12')](_0x5a8341);}return null;};}function saveUpdates(_0x117075){return function(_0x16355e){if(_0x16355e){return _0x16355e['update'](_0x117075)['then'](function(_0x49dfcc){return _0x49dfcc;});}return null;};}function removeEntity(_0x538c14){return function(_0xf586c6){if(_0xf586c6){return _0xf586c6[_0xee9b('0x13')]()['then'](function(){_0x538c14[_0xee9b('0xb')](0xcc)['end']();});}};}function handleEntityNotFound(_0x64df38){return function(_0xf02b58){if(!_0xf02b58){_0x64df38['sendStatus'](0x194);}return _0xf02b58;};}function handleError(_0x46e028,_0x3a3451){_0x3a3451=_0x3a3451||0x1f4;return function(_0x4dfd05){logger['error'](_0x4dfd05[_0xee9b('0x14')]);if(_0x4dfd05[_0xee9b('0x15')]){delete _0x4dfd05[_0xee9b('0x15')];}_0x46e028['status'](_0x3a3451)['send'](_0x4dfd05);};}function maskClientSecret(_0x21b9f5){return _[_0xee9b('0x16')](_0x21b9f5[_0xee9b('0x17')](0x0,0x3),0x14,'*');}exports[_0xee9b('0x18')]=function(_0x400559,_0xf2e006){var _0x906d08={},_0x2c06d1={},_0x223073={'count':0x0,'rows':[]};var _0x552c17=_[_0xee9b('0x19')](db['CloudProvider'][_0xee9b('0x1a')],function(_0x196b8c){return{'name':_0x196b8c[_0xee9b('0x1b')],'type':_0x196b8c[_0xee9b('0x1c')][_0xee9b('0x1d')]};});_0x2c06d1[_0xee9b('0x1e')]=_[_0xee9b('0x19')](_0x552c17,'name');_0x2c06d1['query']=_[_0xee9b('0x1f')](_0x400559[_0xee9b('0x20')]);_0x2c06d1[_0xee9b('0x21')]=_['intersection'](_0x2c06d1[_0xee9b('0x1e')],_0x2c06d1['query']);_0x906d08['attributes']=_[_0xee9b('0x22')](_0x2c06d1[_0xee9b('0x1e')],qs[_0xee9b('0x23')](_0x400559[_0xee9b('0x20')]['fields']));_0x906d08[_0xee9b('0x24')]=_0x906d08[_0xee9b('0x24')][_0xee9b('0x25')]?_0x906d08['attributes']:_0x2c06d1[_0xee9b('0x1e')];if(!_0x400559[_0xee9b('0x20')][_0xee9b('0x26')](_0xee9b('0x27'))){_0x906d08['limit']=qs[_0xee9b('0x10')](_0x400559[_0xee9b('0x20')]['limit']);_0x906d08['offset']=qs[_0xee9b('0xd')](_0x400559[_0xee9b('0x20')][_0xee9b('0xd')]);}_0x906d08[_0xee9b('0x28')]=qs[_0xee9b('0x29')](_0x400559['query'][_0xee9b('0x29')]);_0x906d08[_0xee9b('0x2a')]=qs['filters'](_['pick'](_0x400559[_0xee9b('0x20')],_0x2c06d1[_0xee9b('0x21')]),_0x552c17);if(_0x400559[_0xee9b('0x20')][_0xee9b('0x2b')]){_0x906d08[_0xee9b('0x2a')]=_[_0xee9b('0x2c')](_0x906d08['where'],{'$or':_[_0xee9b('0x19')](_0x552c17,function(_0x49b97d){if(_0x49b97d[_0xee9b('0x1c')]!==_0xee9b('0x2d')){var _0x1146d6={};_0x1146d6[_0x49b97d[_0xee9b('0x15')]]={'$like':'%'+_0x400559[_0xee9b('0x20')][_0xee9b('0x2b')]+'%'};return _0x1146d6;}})});}_0x906d08=_[_0xee9b('0x2c')]({},_0x906d08,_0x400559[_0xee9b('0x2e')]);var _0x4ee5ac={'where':_0x906d08[_0xee9b('0x2a')]};return db[_0xee9b('0x2f')][_0xee9b('0xf')](_0x4ee5ac)[_0xee9b('0x30')](function(_0x483619){_0x223073[_0xee9b('0xf')]=_0x483619;if(_0x400559[_0xee9b('0x20')][_0xee9b('0x31')]){_0x906d08[_0xee9b('0x32')]=[{'all':!![]}];}return db[_0xee9b('0x2f')][_0xee9b('0x33')](_0x906d08);})['then'](function(_0x3f8cd7){_0x223073[_0xee9b('0x34')]=_[_0xee9b('0x19')](_0x3f8cd7,function(_0x46d5ea){if(_0x46d5ea[_0xee9b('0x35')]===_0xee9b('0x36')){var _0x44684a=encryptor[_0xee9b('0x37')](_0x46d5ea[_0xee9b('0x38')]);_0x46d5ea[_0xee9b('0x38')]=maskClientSecret(_0x44684a);}return _0x46d5ea;});return _0x223073;})[_0xee9b('0x30')](respondWithFilteredResult(_0xf2e006,_0x906d08))[_0xee9b('0x39')](handleError(_0xf2e006,null));};exports[_0xee9b('0x3a')]=function(_0x29c90c,_0x16d431){var _0x467e0b={'raw':!![],'where':{'id':_0x29c90c['params']['id']}},_0x155976={};_0x155976[_0xee9b('0x1e')]=_['keys'](db[_0xee9b('0x2f')][_0xee9b('0x1a')]);_0x155976[_0xee9b('0x20')]=_[_0xee9b('0x1f')](_0x29c90c[_0xee9b('0x20')]);_0x155976[_0xee9b('0x21')]=_[_0xee9b('0x22')](_0x155976['model'],_0x155976['query']);_0x467e0b[_0xee9b('0x24')]=_[_0xee9b('0x22')](_0x155976['model'],qs['fields'](_0x29c90c[_0xee9b('0x20')][_0xee9b('0x23')]));_0x467e0b['attributes']=_0x467e0b[_0xee9b('0x24')][_0xee9b('0x25')]?_0x467e0b[_0xee9b('0x24')]:_0x155976[_0xee9b('0x1e')];if(_0x29c90c[_0xee9b('0x20')]['includeAll']){_0x467e0b['include']=[{'all':!![]}];}_0x467e0b=_[_0xee9b('0x2c')]({},_0x467e0b,_0x29c90c[_0xee9b('0x2e')]);return db['CloudProvider'][_0xee9b('0x3b')](_0x467e0b)['then'](handleEntityNotFound(_0x16d431,null))[_0xee9b('0x30')](function(_0x22a746){if(_0x22a746[_0xee9b('0x35')]===_0xee9b('0x36')){var _0x51817c=encryptor[_0xee9b('0x37')](_0x22a746[_0xee9b('0x38')]);_0x22a746['data3']=maskClientSecret(_0x51817c);}return _0x22a746;})[_0xee9b('0x30')](respondWithResult(_0x16d431,null))['catch'](handleError(_0x16d431,null));};exports[_0xee9b('0x3c')]=function(_0x44fbc4,_0x48578c){if(!_0x44fbc4[_0xee9b('0x3d')][_0xee9b('0x15')])throw new Error(_0xee9b('0x3e'));if(!_0x44fbc4[_0xee9b('0x3d')][_0xee9b('0x35')])throw new Error(_0xee9b('0x3f'));var _0xb8816c=db['CloudProvider'][_0xee9b('0x1a')][_0xee9b('0x35')][_0xee9b('0x40')];if(!_0xb8816c[_0xee9b('0x41')](_0x44fbc4['body'][_0xee9b('0x35')]))throw new Error(_0xee9b('0x42')+_0xb8816c[_0xee9b('0x43')](',\x20'));if(_0x44fbc4['body'][_0xee9b('0x35')]===_0xee9b('0x36')&&_0x44fbc4[_0xee9b('0x3d')][_0xee9b('0x38')]){_0x44fbc4[_0xee9b('0x3d')]['data3']=encryptor[_0xee9b('0x44')](_0x44fbc4['body'][_0xee9b('0x38')]);}return db[_0xee9b('0x2f')]['create'](_0x44fbc4[_0xee9b('0x3d')],{})['then'](respondWithResult(_0x48578c,0xc9))[_0xee9b('0x39')](handleError(_0x48578c,null));};exports[_0xee9b('0x45')]=function(_0x16e15d,_0x104980){if(_0x16e15d[_0xee9b('0x3d')]['id']){delete _0x16e15d[_0xee9b('0x3d')]['id'];}return db[_0xee9b('0x2f')][_0xee9b('0x3b')]({'where':{'id':_0x16e15d['params']['id']}})['then'](handleEntityNotFound(_0x104980,null))[_0xee9b('0x30')](function(_0x9e0d6c){if(_0x9e0d6c[_0xee9b('0x35')]===_0xee9b('0x36')&&_0x16e15d[_0xee9b('0x3d')][_0xee9b('0x38')]){_0x16e15d[_0xee9b('0x3d')][_0xee9b('0x38')]=encryptor['encryptString'](_0x16e15d['body'][_0xee9b('0x38')]);}return _0x9e0d6c;})['then'](saveUpdates(_0x16e15d[_0xee9b('0x3d')],null))[_0xee9b('0x30')](respondWithResult(_0x104980,null))[_0xee9b('0x39')](handleError(_0x104980,null));};exports[_0xee9b('0x13')]=function(_0x4c15b6,_0x2a4a26){return db[_0xee9b('0x2f')][_0xee9b('0x3b')]({'where':{'id':_0x4c15b6[_0xee9b('0x46')]['id']}})['then'](handleEntityNotFound(_0x2a4a26,null))['then'](removeEntity(_0x2a4a26,null))['catch'](handleError(_0x2a4a26,null));};exports[_0xee9b('0x47')]=function(_0xe1f4bb,_0xf76a38){return db[_0xee9b('0x2f')][_0xee9b('0x48')]({'where':{'id':_0xe1f4bb['params']['id']},'raw':!![]})['then'](function(_0x1b7594){if(!_0x1b7594)return _0xf76a38[_0xee9b('0xa')](0x194);return{'url':oauth[_0xee9b('0x49')](_0x1b7594,_0xe1f4bb[_0xee9b('0x4a')]['id'])};})[_0xee9b('0x30')](respondWithResult(_0xf76a38,null))[_0xee9b('0x39')](handleError(_0xf76a38,null));};exports[_0xee9b('0x4b')]=function(_0x3a9fec,_0x365d1a){var _0x2edb7b=_0x3a9fec[_0xee9b('0x3d')];var _0x431ae2;var _0x3f7148;if(_0x2edb7b[_0xee9b('0x4c')])throw _0x2edb7b;redis[_0xee9b('0x4d')](_0x2edb7b[_0xee9b('0x4e')])['then'](function(_0x35dbba){if(!_0x35dbba)throw new Error(_0xee9b('0x4f'));_0x431ae2=JSON[_0xee9b('0x50')](_0x35dbba);var _0x4c7f95=Buffer['from'](_0x2edb7b[_0xee9b('0x4e')],_0xee9b('0x51'))[_0xee9b('0x52')](_0xee9b('0x53'));_0x3f7148=JSON[_0xee9b('0x50')](_0x4c7f95);if(!oauth['isValidIdToken'](_0x2edb7b[_0xee9b('0x54')],_0x431ae2[_0xee9b('0x55')]))throw new Error(_0xee9b('0x56'));redis[_0xee9b('0x57')](_0x2edb7b[_0xee9b('0x4e')]);return oauth[_0xee9b('0x58')](_0x2edb7b[_0xee9b('0x59')],_0x431ae2);})[_0xee9b('0x30')](function(_0x489e50){_0x431ae2[_0xee9b('0x5a')]=_0x489e50[_0xee9b('0x5b')];_0x431ae2[_0xee9b('0x5c')]=_0x489e50[_0xee9b('0x5d')];return db[_0xee9b('0x2f')]['update']({'data5':_0x431ae2[_0xee9b('0x5a')],'data6':_0x431ae2['data6']},{'where':{'id':_0x431ae2['id']}});})[_0xee9b('0x30')](function(){oauth[_0xee9b('0x5e')](_0x431ae2);socket[_0xee9b('0x5f')](_0xee9b('0x60'),{'id':_0x3f7148['id']});return;})[_0xee9b('0x30')](respondWithStatusCode(_0x365d1a,null))[_0xee9b('0x39')](function(_0x25302e){if(_0x3f7148){socket[_0xee9b('0x5f')](_0xee9b('0x61'),{'id':_0x3f7148['id']});}if(!_0x431ae2){logger['error']('Invalid\x20authentication\x20state\x20parameter',_0x25302e);return _0x365d1a[_0xee9b('0xb')](0x1f4)['send'](_0x25302e[_0xee9b('0x62')]);}logger[_0xee9b('0x4c')](_0xee9b('0x63'),_0x431ae2['id'],JSON[_0xee9b('0x64')](_0x25302e));});};