664b1d870e35f2d7dab9c1ae26221dec7845adcc
[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 _0x5295=['filter','where','merge','then','includeAll','findAll','rows','service','MicrosoftAzure','data3','catch','params','include','find','decryptString','create','Service\x20parameter\x20not\x20specified','values','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','join','body','update','encryptString','oauth2MicrosoftAuthorize','generateMicrosoftAuthorizationUrl','user','oauth2MicrosoftCallback','error','get','Invalid\x20state\x20parameter','parse','from','state','base64','ascii','isValidIdToken','oauth2Claims','del','getOauth2MicrosoftAccessToken','code','refresh_token','data6','startRefreshInterval','emit','microsoftAuthorization:success','microsoftAuthorization:error','message','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','stringify','ioredis','../../components/parsers/qs','../../components/encryptor','../../config/environment','../../config/logger','api','../../mysqldb','redis','defaults','socket.io-emitter','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','destroy','stack','name','send','padEnd','slice','index','map','CloudProvider','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0x5295,0x1a2));var _0x5529=function(_0x41c866,_0x5dd8fa){_0x41c866=_0x41c866-0x0;var _0x2a484c=_0x5295[_0x41c866];return _0x2a484c;};'use strict';var _=require('lodash');var Redis=require(_0x5529('0x0'));var qs=require(_0x5529('0x1'));var encryptor=require(_0x5529('0x2'));var config=require(_0x5529('0x3'));var logger=require(_0x5529('0x4'))(_0x5529('0x5'));var db=require(_0x5529('0x6'))['db'];var oauth=require('./cloudProvider.oauth');config[_0x5529('0x7')]=_[_0x5529('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x5529('0x9'))(new Redis(config[_0x5529('0x7')]));var redis=new Redis(config['redis']);function respondWithStatusCode(_0x264dd6,_0x8ab5c9){_0x8ab5c9=_0x8ab5c9||0xcc;return function(_0x55a1fc){if(_0x55a1fc){return _0x264dd6[_0x5529('0xa')](_0x8ab5c9);}return _0x264dd6[_0x5529('0xb')](_0x8ab5c9)[_0x5529('0xc')]();};}function respondWithResult(_0x54af3b,_0x3e4f60){_0x3e4f60=_0x3e4f60||0xc8;return function(_0x132cdb){if(_0x132cdb){return _0x54af3b['status'](_0x3e4f60)[_0x5529('0xd')](_0x132cdb);}};}function respondWithFilteredResult(_0x1954cc,_0x51caba){return function(_0x3294c6){if(_0x3294c6){var _0x7575d=typeof _0x51caba[_0x5529('0xe')]===_0x5529('0xf')&&typeof _0x51caba[_0x5529('0x10')]===_0x5529('0xf');var _0x42c5e7=_0x3294c6['count'];var _0x1ca01=_0x7575d?0x0:_0x51caba[_0x5529('0xe')];var _0x4edabf=_0x7575d?_0x3294c6[_0x5529('0x11')]:_0x51caba[_0x5529('0xe')]+_0x51caba['limit'];var _0x23f581;if(_0x4edabf>=_0x42c5e7){_0x4edabf=_0x42c5e7;_0x23f581=0xc8;}else{_0x23f581=0xce;}_0x1954cc['status'](_0x23f581);return _0x1954cc[_0x5529('0x12')](_0x5529('0x13'),_0x1ca01+'-'+_0x4edabf+'/'+_0x42c5e7)['json'](_0x3294c6);}return null;};}function saveUpdates(_0x35f3e0){return function(_0x3ba9f4){if(_0x3ba9f4){return _0x3ba9f4['update'](_0x35f3e0)['then'](function(_0x18f44b){return _0x18f44b;});}return null;};}function removeEntity(_0x2044ec){return function(_0xb05c48){if(_0xb05c48){return _0xb05c48[_0x5529('0x14')]()['then'](function(){_0x2044ec[_0x5529('0xb')](0xcc)[_0x5529('0xc')]();});}};}function handleEntityNotFound(_0x46c728){return function(_0x3c9e28){if(!_0x3c9e28){_0x46c728[_0x5529('0xa')](0x194);}return _0x3c9e28;};}function handleError(_0x24c12a,_0x50d48f){_0x50d48f=_0x50d48f||0x1f4;return function(_0x192d06){logger['error'](_0x192d06[_0x5529('0x15')]);if(_0x192d06[_0x5529('0x16')]){delete _0x192d06['name'];}_0x24c12a[_0x5529('0xb')](_0x50d48f)[_0x5529('0x17')](_0x192d06);};}function maskClientSecret(_0x3b1c41){return _[_0x5529('0x18')](_0x3b1c41[_0x5529('0x19')](0x0,0x3),0x14,'*');}exports[_0x5529('0x1a')]=function(_0x130205,_0x16bc01){var _0x235a52={},_0x4c5c21={},_0x3956a3={'count':0x0,'rows':[]};var _0x200a6f=_[_0x5529('0x1b')](db[_0x5529('0x1c')][_0x5529('0x1d')],function(_0x4593f1){return{'name':_0x4593f1['fieldName'],'type':_0x4593f1[_0x5529('0x1e')]['key']};});_0x4c5c21[_0x5529('0x1f')]=_[_0x5529('0x1b')](_0x200a6f,_0x5529('0x16'));_0x4c5c21[_0x5529('0x20')]=_[_0x5529('0x21')](_0x130205[_0x5529('0x20')]);_0x4c5c21[_0x5529('0x22')]=_[_0x5529('0x23')](_0x4c5c21[_0x5529('0x1f')],_0x4c5c21[_0x5529('0x20')]);_0x235a52[_0x5529('0x24')]=_[_0x5529('0x23')](_0x4c5c21[_0x5529('0x1f')],qs[_0x5529('0x25')](_0x130205[_0x5529('0x20')]['fields']));_0x235a52[_0x5529('0x24')]=_0x235a52[_0x5529('0x24')][_0x5529('0x26')]?_0x235a52[_0x5529('0x24')]:_0x4c5c21[_0x5529('0x1f')];if(!_0x130205['query'][_0x5529('0x27')](_0x5529('0x28'))){_0x235a52[_0x5529('0x10')]=qs[_0x5529('0x10')](_0x130205[_0x5529('0x20')][_0x5529('0x10')]);_0x235a52[_0x5529('0xe')]=qs[_0x5529('0xe')](_0x130205['query'][_0x5529('0xe')]);}_0x235a52['order']=qs[_0x5529('0x29')](_0x130205[_0x5529('0x20')]['sort']);_0x235a52['where']=qs[_0x5529('0x22')](_['pick'](_0x130205[_0x5529('0x20')],_0x4c5c21[_0x5529('0x22')]),_0x200a6f);if(_0x130205[_0x5529('0x20')][_0x5529('0x2a')]){_0x235a52[_0x5529('0x2b')]=_[_0x5529('0x2c')](_0x235a52[_0x5529('0x2b')],{'$or':_[_0x5529('0x1b')](_0x200a6f,function(_0x13c802){if(_0x13c802[_0x5529('0x1e')]!=='VIRTUAL'){var _0x19503f={};_0x19503f[_0x13c802['name']]={'$like':'%'+_0x130205[_0x5529('0x20')][_0x5529('0x2a')]+'%'};return _0x19503f;}})});}_0x235a52=_[_0x5529('0x2c')]({},_0x235a52,_0x130205['options']);var _0x2376e3={'where':_0x235a52[_0x5529('0x2b')]};return db[_0x5529('0x1c')][_0x5529('0x11')](_0x2376e3)[_0x5529('0x2d')](function(_0x55e069){_0x3956a3[_0x5529('0x11')]=_0x55e069;if(_0x130205[_0x5529('0x20')][_0x5529('0x2e')]){_0x235a52['include']=[{'all':!![]}];}return db['CloudProvider'][_0x5529('0x2f')](_0x235a52);})[_0x5529('0x2d')](function(_0x5da1a2){_0x3956a3[_0x5529('0x30')]=_[_0x5529('0x1b')](_0x5da1a2,function(_0x4135b6){if(_0x4135b6[_0x5529('0x31')]===_0x5529('0x32')){var _0xff9571=encryptor['decryptString'](_0x4135b6['data3']);_0x4135b6[_0x5529('0x33')]=maskClientSecret(_0xff9571);}return _0x4135b6;});return _0x3956a3;})[_0x5529('0x2d')](respondWithFilteredResult(_0x16bc01,_0x235a52))[_0x5529('0x34')](handleError(_0x16bc01,null));};exports['show']=function(_0x31846a,_0x6ad7b0){var _0x5087f6={'raw':!![],'where':{'id':_0x31846a[_0x5529('0x35')]['id']}},_0x218548={};_0x218548[_0x5529('0x1f')]=_['keys'](db[_0x5529('0x1c')][_0x5529('0x1d')]);_0x218548[_0x5529('0x20')]=_[_0x5529('0x21')](_0x31846a[_0x5529('0x20')]);_0x218548[_0x5529('0x22')]=_[_0x5529('0x23')](_0x218548['model'],_0x218548['query']);_0x5087f6[_0x5529('0x24')]=_[_0x5529('0x23')](_0x218548['model'],qs['fields'](_0x31846a['query'][_0x5529('0x25')]));_0x5087f6[_0x5529('0x24')]=_0x5087f6[_0x5529('0x24')][_0x5529('0x26')]?_0x5087f6[_0x5529('0x24')]:_0x218548[_0x5529('0x1f')];if(_0x31846a['query'][_0x5529('0x2e')]){_0x5087f6[_0x5529('0x36')]=[{'all':!![]}];}_0x5087f6=_[_0x5529('0x2c')]({},_0x5087f6,_0x31846a['options']);return db[_0x5529('0x1c')][_0x5529('0x37')](_0x5087f6)[_0x5529('0x2d')](handleEntityNotFound(_0x6ad7b0,null))[_0x5529('0x2d')](function(_0x42ce4c){if(_0x42ce4c[_0x5529('0x31')]==='MicrosoftAzure'){var _0x26526c=encryptor[_0x5529('0x38')](_0x42ce4c[_0x5529('0x33')]);_0x42ce4c[_0x5529('0x33')]=maskClientSecret(_0x26526c);}return _0x42ce4c;})[_0x5529('0x2d')](respondWithResult(_0x6ad7b0,null))[_0x5529('0x34')](handleError(_0x6ad7b0,null));};exports[_0x5529('0x39')]=function(_0x4d94d7,_0xb7d3b0){if(!_0x4d94d7['body']['name'])throw new Error('Name\x20parameter\x20not\x20specified');if(!_0x4d94d7['body'][_0x5529('0x31')])throw new Error(_0x5529('0x3a'));var _0x2b0710=db[_0x5529('0x1c')]['rawAttributes'][_0x5529('0x31')][_0x5529('0x3b')];if(!_0x2b0710[_0x5529('0x3c')](_0x4d94d7['body'][_0x5529('0x31')]))throw new Error(_0x5529('0x3d')+_0x2b0710[_0x5529('0x3e')](',\x20'));if(_0x4d94d7[_0x5529('0x3f')][_0x5529('0x31')]===_0x5529('0x32')&&_0x4d94d7[_0x5529('0x3f')][_0x5529('0x33')]){_0x4d94d7['body'][_0x5529('0x33')]=encryptor['encryptString'](_0x4d94d7[_0x5529('0x3f')][_0x5529('0x33')]);}return db[_0x5529('0x1c')][_0x5529('0x39')](_0x4d94d7[_0x5529('0x3f')],{})[_0x5529('0x2d')](respondWithResult(_0xb7d3b0,0xc9))['catch'](handleError(_0xb7d3b0,null));};exports[_0x5529('0x40')]=function(_0x3d5cb8,_0x5ba8d4){if(_0x3d5cb8['body']['id']){delete _0x3d5cb8[_0x5529('0x3f')]['id'];}return db[_0x5529('0x1c')]['find']({'where':{'id':_0x3d5cb8['params']['id']}})[_0x5529('0x2d')](handleEntityNotFound(_0x5ba8d4,null))[_0x5529('0x2d')](function(_0x1f3b35){if(_0x1f3b35[_0x5529('0x31')]===_0x5529('0x32')&&_0x3d5cb8[_0x5529('0x3f')][_0x5529('0x33')]){_0x3d5cb8['body'][_0x5529('0x33')]=encryptor[_0x5529('0x41')](_0x3d5cb8[_0x5529('0x3f')]['data3']);}return _0x1f3b35;})[_0x5529('0x2d')](saveUpdates(_0x3d5cb8[_0x5529('0x3f')],null))[_0x5529('0x2d')](respondWithResult(_0x5ba8d4,null))[_0x5529('0x34')](handleError(_0x5ba8d4,null));};exports[_0x5529('0x14')]=function(_0x148990,_0x410100){return db['CloudProvider']['find']({'where':{'id':_0x148990[_0x5529('0x35')]['id']}})['then'](handleEntityNotFound(_0x410100,null))[_0x5529('0x2d')](removeEntity(_0x410100,null))['catch'](handleError(_0x410100,null));};exports[_0x5529('0x42')]=function(_0x3053ee,_0x1c8e4e){return db[_0x5529('0x1c')]['findOne']({'where':{'id':_0x3053ee[_0x5529('0x35')]['id']},'raw':!![]})[_0x5529('0x2d')](function(_0x3b3a7b){if(!_0x3b3a7b)return _0x1c8e4e[_0x5529('0xa')](0x194);return{'url':oauth[_0x5529('0x43')](_0x3b3a7b,_0x3053ee[_0x5529('0x44')]['id'])};})[_0x5529('0x2d')](respondWithResult(_0x1c8e4e,null))[_0x5529('0x34')](handleError(_0x1c8e4e,null));};exports[_0x5529('0x45')]=function(_0x59d3d2,_0x3eebab){var _0xc18b11=_0x59d3d2[_0x5529('0x3f')];var _0x187ab1;var _0x535472;if(_0xc18b11[_0x5529('0x46')])throw _0xc18b11;redis[_0x5529('0x47')](_0xc18b11['state'])['then'](function(_0x1d5ef0){if(!_0x1d5ef0)throw new Error(_0x5529('0x48'));_0x187ab1=JSON[_0x5529('0x49')](_0x1d5ef0);var _0x39663e=Buffer[_0x5529('0x4a')](_0xc18b11[_0x5529('0x4b')],_0x5529('0x4c'))['toString'](_0x5529('0x4d'));_0x535472=JSON[_0x5529('0x49')](_0x39663e);if(!oauth[_0x5529('0x4e')](_0xc18b11['id_token'],_0x187ab1[_0x5529('0x4f')]))throw new Error('Unable\x20to\x20validate\x20id_token');redis[_0x5529('0x50')](_0xc18b11['state']);return oauth[_0x5529('0x51')](_0xc18b11[_0x5529('0x52')],_0x187ab1);})[_0x5529('0x2d')](function(_0x22fb40){_0x187ab1['data5']=_0x22fb40['access_token'];_0x187ab1['data6']=_0x22fb40[_0x5529('0x53')];return db[_0x5529('0x1c')][_0x5529('0x40')]({'data5':_0x187ab1['data5'],'data6':_0x187ab1[_0x5529('0x54')]},{'where':{'id':_0x187ab1['id']}});})[_0x5529('0x2d')](function(){oauth[_0x5529('0x55')](_0x187ab1);socket[_0x5529('0x56')](_0x5529('0x57'),{'id':_0x535472['id']});return;})['then'](respondWithStatusCode(_0x3eebab,null))[_0x5529('0x34')](function(_0x4f8529){if(_0x535472){socket[_0x5529('0x56')](_0x5529('0x58'),{'id':_0x535472['id']});}if(!_0x187ab1){logger[_0x5529('0x46')]('Invalid\x20authentication\x20state\x20parameter',_0x4f8529);return _0x3eebab[_0x5529('0xb')](0x1f4)[_0x5529('0x17')](_0x4f8529[_0x5529('0x59')]);}logger[_0x5529('0x46')](_0x5529('0x5a'),_0x187ab1['id'],JSON[_0x5529('0x5b')](_0x4f8529));});};