b0f23d81941e9654ebb9cf3f77cb429ab9fda202
[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 _0xd695=['set','Content-Range','destroy','error','stack','send','slice','map','rawAttributes','fieldName','type','name','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','limit','order','sort','where','filter','merge','VIRTUAL','options','CloudProvider','then','includeAll','include','findAll','rows','MicrosoftAzure','decryptString','data3','catch','show','params','find','Name\x20parameter\x20not\x20specified','body','service','Service\x20parameter\x20not\x20specified','values','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','join','update','encryptString','oauth2MicrosoftAuthorize','findOne','generateMicrosoftAuthorizationUrl','oauth2MicrosoftCallback','state','Invalid\x20state\x20parameter','parse','from','base64','toString','ascii','isValidIdToken','oauth2Claims','del','getOauth2MicrosoftAccessToken','access_token','refresh_token','data5','data6','startRefreshInterval','emit','microsoftAuthorization:success','microsoftAuthorization:error','Invalid\x20authentication\x20state\x20parameter','message','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','lodash','ioredis','../../components/parsers/qs','../../components/encryptor','../../config/environment','../../config/logger','api','./cloudProvider.oauth','redis','localhost','socket.io-emitter','sendStatus','status','end','json','offset','count'];(function(_0x1d3a5d,_0x17fc32){var _0x257078=function(_0x482f3a){while(--_0x482f3a){_0x1d3a5d['push'](_0x1d3a5d['shift']());}};_0x257078(++_0x17fc32);}(_0xd695,0xad));var _0x5d69=function(_0x17928f,_0x4ad33f){_0x17928f=_0x17928f-0x0;var _0x500b63=_0xd695[_0x17928f];return _0x500b63;};'use strict';var _=require(_0x5d69('0x0'));var Redis=require(_0x5d69('0x1'));var qs=require(_0x5d69('0x2'));var encryptor=require(_0x5d69('0x3'));var config=require(_0x5d69('0x4'));var logger=require(_0x5d69('0x5'))(_0x5d69('0x6'));var db=require('../../mysqldb')['db'];var oauth=require(_0x5d69('0x7'));config[_0x5d69('0x8')]=_['defaults'](config[_0x5d69('0x8')],{'host':_0x5d69('0x9'),'port':0x18eb});var socket=require(_0x5d69('0xa'))(new Redis(config[_0x5d69('0x8')]));var redis=new Redis(config[_0x5d69('0x8')]);function respondWithStatusCode(_0x4f8840,_0x259688){_0x259688=_0x259688||0xcc;return function(_0x40ab60){if(_0x40ab60){return _0x4f8840[_0x5d69('0xb')](_0x259688);}return _0x4f8840[_0x5d69('0xc')](_0x259688)[_0x5d69('0xd')]();};}function respondWithResult(_0x101feb,_0x55d649){_0x55d649=_0x55d649||0xc8;return function(_0x4f8cbe){if(_0x4f8cbe){return _0x101feb['status'](_0x55d649)[_0x5d69('0xe')](_0x4f8cbe);}};}function respondWithFilteredResult(_0x41d642,_0x3405dd){return function(_0x4a671f){if(_0x4a671f){var _0x2e3792=typeof _0x3405dd['offset']==='undefined'&&typeof _0x3405dd['limit']==='undefined';var _0x34c496=_0x4a671f['count'];var _0xb3fb2e=_0x2e3792?0x0:_0x3405dd[_0x5d69('0xf')];var _0xb7c4c3=_0x2e3792?_0x4a671f[_0x5d69('0x10')]:_0x3405dd[_0x5d69('0xf')]+_0x3405dd['limit'];var _0xa5712f;if(_0xb7c4c3>=_0x34c496){_0xb7c4c3=_0x34c496;_0xa5712f=0xc8;}else{_0xa5712f=0xce;}_0x41d642[_0x5d69('0xc')](_0xa5712f);return _0x41d642[_0x5d69('0x11')](_0x5d69('0x12'),_0xb3fb2e+'-'+_0xb7c4c3+'/'+_0x34c496)[_0x5d69('0xe')](_0x4a671f);}return null;};}function saveUpdates(_0x499abb){return function(_0x5638fa){if(_0x5638fa){return _0x5638fa['update'](_0x499abb)['then'](function(_0x2961e3){return _0x2961e3;});}return null;};}function removeEntity(_0x44fc8a){return function(_0x34f7d0){if(_0x34f7d0){return _0x34f7d0[_0x5d69('0x13')]()['then'](function(){_0x44fc8a[_0x5d69('0xc')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4c59f9){return function(_0x58a46b){if(!_0x58a46b){_0x4c59f9[_0x5d69('0xb')](0x194);}return _0x58a46b;};}function handleError(_0x4026ac,_0x1d6cf4){_0x1d6cf4=_0x1d6cf4||0x1f4;return function(_0x3c5f05){logger[_0x5d69('0x14')](_0x3c5f05[_0x5d69('0x15')]);if(_0x3c5f05['name']){delete _0x3c5f05['name'];}_0x4026ac['status'](_0x1d6cf4)[_0x5d69('0x16')](_0x3c5f05);};}function maskClientSecret(_0x4bb146){return _['padEnd'](_0x4bb146[_0x5d69('0x17')](0x0,0x3),0x14,'*');}exports['index']=function(_0x182c90,_0x492b5b){var _0x14d32a={},_0x2de9ff={},_0x3c21c5={'count':0x0,'rows':[]};var _0x4998a5=_[_0x5d69('0x18')](db['CloudProvider'][_0x5d69('0x19')],function(_0x6ba0f0){return{'name':_0x6ba0f0[_0x5d69('0x1a')],'type':_0x6ba0f0[_0x5d69('0x1b')]['key']};});_0x2de9ff['model']=_[_0x5d69('0x18')](_0x4998a5,_0x5d69('0x1c'));_0x2de9ff[_0x5d69('0x1d')]=_[_0x5d69('0x1e')](_0x182c90[_0x5d69('0x1d')]);_0x2de9ff[_0x5d69('0x1f')]=_[_0x5d69('0x20')](_0x2de9ff[_0x5d69('0x21')],_0x2de9ff['query']);_0x14d32a[_0x5d69('0x22')]=_[_0x5d69('0x20')](_0x2de9ff[_0x5d69('0x21')],qs[_0x5d69('0x23')](_0x182c90[_0x5d69('0x1d')][_0x5d69('0x23')]));_0x14d32a['attributes']=_0x14d32a[_0x5d69('0x22')][_0x5d69('0x24')]?_0x14d32a[_0x5d69('0x22')]:_0x2de9ff[_0x5d69('0x21')];if(!_0x182c90[_0x5d69('0x1d')][_0x5d69('0x25')]('nolimit')){_0x14d32a[_0x5d69('0x26')]=qs['limit'](_0x182c90[_0x5d69('0x1d')][_0x5d69('0x26')]);_0x14d32a[_0x5d69('0xf')]=qs[_0x5d69('0xf')](_0x182c90[_0x5d69('0x1d')][_0x5d69('0xf')]);}_0x14d32a[_0x5d69('0x27')]=qs[_0x5d69('0x28')](_0x182c90[_0x5d69('0x1d')][_0x5d69('0x28')]);_0x14d32a[_0x5d69('0x29')]=qs[_0x5d69('0x1f')](_['pick'](_0x182c90['query'],_0x2de9ff[_0x5d69('0x1f')]),_0x4998a5);if(_0x182c90[_0x5d69('0x1d')][_0x5d69('0x2a')]){_0x14d32a['where']=_[_0x5d69('0x2b')](_0x14d32a[_0x5d69('0x29')],{'$or':_[_0x5d69('0x18')](_0x4998a5,function(_0x152736){if(_0x152736['type']!==_0x5d69('0x2c')){var _0x56a844={};_0x56a844[_0x152736[_0x5d69('0x1c')]]={'$like':'%'+_0x182c90[_0x5d69('0x1d')][_0x5d69('0x2a')]+'%'};return _0x56a844;}})});}_0x14d32a=_[_0x5d69('0x2b')]({},_0x14d32a,_0x182c90[_0x5d69('0x2d')]);var _0x53954e={'where':_0x14d32a[_0x5d69('0x29')]};return db[_0x5d69('0x2e')][_0x5d69('0x10')](_0x53954e)[_0x5d69('0x2f')](function(_0x4a945d){_0x3c21c5[_0x5d69('0x10')]=_0x4a945d;if(_0x182c90[_0x5d69('0x1d')][_0x5d69('0x30')]){_0x14d32a[_0x5d69('0x31')]=[{'all':!![]}];}return db['CloudProvider'][_0x5d69('0x32')](_0x14d32a);})[_0x5d69('0x2f')](function(_0x4626a6){_0x3c21c5[_0x5d69('0x33')]=_[_0x5d69('0x18')](_0x4626a6,function(_0x10cb40){if(_0x10cb40['service']===_0x5d69('0x34')){var _0x15f506=encryptor[_0x5d69('0x35')](_0x10cb40['data3']);_0x10cb40[_0x5d69('0x36')]=maskClientSecret(_0x15f506);}return _0x10cb40;});return _0x3c21c5;})[_0x5d69('0x2f')](respondWithFilteredResult(_0x492b5b,_0x14d32a))[_0x5d69('0x37')](handleError(_0x492b5b,null));};exports[_0x5d69('0x38')]=function(_0x1f5540,_0x4e190b){var _0x315133={'raw':!![],'where':{'id':_0x1f5540[_0x5d69('0x39')]['id']}},_0x42a13c={};_0x42a13c['model']=_['keys'](db['CloudProvider'][_0x5d69('0x19')]);_0x42a13c['query']=_[_0x5d69('0x1e')](_0x1f5540[_0x5d69('0x1d')]);_0x42a13c[_0x5d69('0x1f')]=_[_0x5d69('0x20')](_0x42a13c[_0x5d69('0x21')],_0x42a13c[_0x5d69('0x1d')]);_0x315133[_0x5d69('0x22')]=_[_0x5d69('0x20')](_0x42a13c[_0x5d69('0x21')],qs['fields'](_0x1f5540[_0x5d69('0x1d')][_0x5d69('0x23')]));_0x315133[_0x5d69('0x22')]=_0x315133[_0x5d69('0x22')][_0x5d69('0x24')]?_0x315133[_0x5d69('0x22')]:_0x42a13c[_0x5d69('0x21')];if(_0x1f5540[_0x5d69('0x1d')][_0x5d69('0x30')]){_0x315133[_0x5d69('0x31')]=[{'all':!![]}];}_0x315133=_['merge']({},_0x315133,_0x1f5540['options']);return db[_0x5d69('0x2e')][_0x5d69('0x3a')](_0x315133)[_0x5d69('0x2f')](handleEntityNotFound(_0x4e190b,null))[_0x5d69('0x2f')](function(_0x3a90aa){if(_0x3a90aa['service']===_0x5d69('0x34')){var _0x43aaa6=encryptor['decryptString'](_0x3a90aa[_0x5d69('0x36')]);_0x3a90aa[_0x5d69('0x36')]=maskClientSecret(_0x43aaa6);}return _0x3a90aa;})['then'](respondWithResult(_0x4e190b,null))[_0x5d69('0x37')](handleError(_0x4e190b,null));};exports['create']=function(_0x5dadf4,_0x2c558e){if(!_0x5dadf4['body'][_0x5d69('0x1c')])throw new Error(_0x5d69('0x3b'));if(!_0x5dadf4[_0x5d69('0x3c')][_0x5d69('0x3d')])throw new Error(_0x5d69('0x3e'));var _0x4bfcbf=db[_0x5d69('0x2e')][_0x5d69('0x19')]['service'][_0x5d69('0x3f')];if(!_0x4bfcbf[_0x5d69('0x40')](_0x5dadf4[_0x5d69('0x3c')]['service']))throw new Error(_0x5d69('0x41')+_0x4bfcbf[_0x5d69('0x42')](',\x20'));if(_0x5dadf4[_0x5d69('0x3c')][_0x5d69('0x3d')]==='MicrosoftAzure'&&_0x5dadf4[_0x5d69('0x3c')]['data3']){_0x5dadf4[_0x5d69('0x3c')]['data3']=encryptor['encryptString'](_0x5dadf4['body'][_0x5d69('0x36')]);}return db['CloudProvider']['create'](_0x5dadf4[_0x5d69('0x3c')],{})[_0x5d69('0x2f')](respondWithResult(_0x2c558e,0xc9))[_0x5d69('0x37')](handleError(_0x2c558e,null));};exports[_0x5d69('0x43')]=function(_0x5c69ed,_0x5cbecb){if(_0x5c69ed[_0x5d69('0x3c')]['id']){delete _0x5c69ed[_0x5d69('0x3c')]['id'];}return db['CloudProvider']['find']({'where':{'id':_0x5c69ed[_0x5d69('0x39')]['id']}})[_0x5d69('0x2f')](handleEntityNotFound(_0x5cbecb,null))['then'](function(_0x4e94fc){if(_0x4e94fc[_0x5d69('0x3d')]===_0x5d69('0x34')&&_0x5c69ed[_0x5d69('0x3c')][_0x5d69('0x36')]){_0x5c69ed[_0x5d69('0x3c')][_0x5d69('0x36')]=encryptor[_0x5d69('0x44')](_0x5c69ed[_0x5d69('0x3c')]['data3']);}return _0x4e94fc;})[_0x5d69('0x2f')](saveUpdates(_0x5c69ed['body'],null))['then'](respondWithResult(_0x5cbecb,null))[_0x5d69('0x37')](handleError(_0x5cbecb,null));};exports[_0x5d69('0x13')]=function(_0xe2924c,_0x3accd6){return db[_0x5d69('0x2e')][_0x5d69('0x3a')]({'where':{'id':_0xe2924c['params']['id']}})[_0x5d69('0x2f')](handleEntityNotFound(_0x3accd6,null))[_0x5d69('0x2f')](removeEntity(_0x3accd6,null))[_0x5d69('0x37')](handleError(_0x3accd6,null));};exports[_0x5d69('0x45')]=function(_0x50f459,_0x3a7bb0){return db[_0x5d69('0x2e')][_0x5d69('0x46')]({'where':{'id':_0x50f459[_0x5d69('0x39')]['id']},'raw':!![]})[_0x5d69('0x2f')](function(_0x4c0a76){if(!_0x4c0a76)return _0x3a7bb0['sendStatus'](0x194);return{'url':oauth[_0x5d69('0x47')](_0x4c0a76,_0x50f459['user']['id'])};})[_0x5d69('0x2f')](respondWithResult(_0x3a7bb0,null))[_0x5d69('0x37')](handleError(_0x3a7bb0,null));};exports[_0x5d69('0x48')]=function(_0x159ccf,_0x4982b1){var _0x152a12=_0x159ccf[_0x5d69('0x3c')];var _0x40c9c2;var _0x4e073b;if(_0x152a12[_0x5d69('0x14')])throw _0x152a12;redis['get'](_0x152a12[_0x5d69('0x49')])['then'](function(_0x4a648a){if(!_0x4a648a)throw new Error(_0x5d69('0x4a'));_0x40c9c2=JSON[_0x5d69('0x4b')](_0x4a648a);var _0x46a40c=Buffer[_0x5d69('0x4c')](_0x152a12[_0x5d69('0x49')],_0x5d69('0x4d'))[_0x5d69('0x4e')](_0x5d69('0x4f'));_0x4e073b=JSON['parse'](_0x46a40c);if(!oauth[_0x5d69('0x50')](_0x152a12['id_token'],_0x40c9c2[_0x5d69('0x51')]))throw new Error('Unable\x20to\x20validate\x20id_token');redis[_0x5d69('0x52')](_0x152a12[_0x5d69('0x49')]);return oauth[_0x5d69('0x53')](_0x152a12['code'],_0x40c9c2);})[_0x5d69('0x2f')](function(_0x685f63){_0x40c9c2['data5']=_0x685f63[_0x5d69('0x54')];_0x40c9c2['data6']=_0x685f63[_0x5d69('0x55')];return db['CloudProvider'][_0x5d69('0x43')]({'data5':_0x40c9c2[_0x5d69('0x56')],'data6':_0x40c9c2[_0x5d69('0x57')]},{'where':{'id':_0x40c9c2['id']}});})[_0x5d69('0x2f')](function(){oauth[_0x5d69('0x58')](_0x40c9c2);socket[_0x5d69('0x59')](_0x5d69('0x5a'),{'id':_0x4e073b['id']});return;})[_0x5d69('0x2f')](respondWithStatusCode(_0x4982b1,null))[_0x5d69('0x37')](function(_0x4b22dd){if(_0x4e073b){socket[_0x5d69('0x59')](_0x5d69('0x5b'),{'id':_0x4e073b['id']});}if(!_0x40c9c2){logger[_0x5d69('0x14')](_0x5d69('0x5c'),_0x4b22dd);return _0x4982b1[_0x5d69('0xc')](0x1f4)[_0x5d69('0x16')](_0x4b22dd[_0x5d69('0x5d')]);}logger[_0x5d69('0x14')](_0x5d69('0x5e'),_0x40c9c2['id'],JSON['stringify'](_0x4b22dd));});};