2d41c8947f6577ff1563700935d8695e079e6ba8
[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 _0x7daf=['undefined','count','offset','set','Content-Range','then','error','stack','name','send','padEnd','slice','index','map','CloudProvider','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','service','MicrosoftAzure','decryptString','data3','catch','keys','length','find','create','body','Name\x20parameter\x20not\x20specified','Service\x20parameter\x20not\x20specified','values','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','join','encryptString','update','params','destroy','oauth2MicrosoftAuthorize','generateMicrosoftAuthorizationUrl','oauth2MicrosoftCallback','get','state','Invalid\x20state\x20parameter','parse','from','base64','toString','ascii','oauth2Claims','Unable\x20to\x20validate\x20id_token','del','getOauth2MicrosoftAccessToken','code','data5','access_token','data6','refresh_token','startRefreshInterval','Invalid\x20authentication\x20state\x20parameter','stringify','lodash','ioredis','../../components/parsers/qs','../../config/environment','../../config/logger','../../mysqldb','./cloudProvider.oauth','redis','localhost','socket.io-emitter','sendStatus','status','end','json','limit'];(function(_0x1489d0,_0x3807a5){var _0x305c71=function(_0xf001d6){while(--_0xf001d6){_0x1489d0['push'](_0x1489d0['shift']());}};_0x305c71(++_0x3807a5);}(_0x7daf,0x16d));var _0xf7da=function(_0x1cd3e3,_0xbeb106){_0x1cd3e3=_0x1cd3e3-0x0;var _0x4a3336=_0x7daf[_0x1cd3e3];return _0x4a3336;};'use strict';var _=require(_0xf7da('0x0'));var Redis=require(_0xf7da('0x1'));var qs=require(_0xf7da('0x2'));var encryptor=require('../../components/encryptor');var config=require(_0xf7da('0x3'));var logger=require(_0xf7da('0x4'))('api');var db=require(_0xf7da('0x5'))['db'];var oauth=require(_0xf7da('0x6'));config['redis']=_['defaults'](config[_0xf7da('0x7')],{'host':_0xf7da('0x8'),'port':0x18eb});var socket=require(_0xf7da('0x9'))(new Redis(config[_0xf7da('0x7')]));var redis=new Redis(config['redis']);function respondWithStatusCode(_0x4da60d,_0x2b413c){_0x2b413c=_0x2b413c||0xcc;return function(_0x2885e6){if(_0x2885e6){return _0x4da60d[_0xf7da('0xa')](_0x2b413c);}return _0x4da60d[_0xf7da('0xb')](_0x2b413c)[_0xf7da('0xc')]();};}function respondWithResult(_0x383cdf,_0x45179c){_0x45179c=_0x45179c||0xc8;return function(_0x2bb420){if(_0x2bb420){return _0x383cdf[_0xf7da('0xb')](_0x45179c)[_0xf7da('0xd')](_0x2bb420);}};}function respondWithFilteredResult(_0x882a18,_0x8a11f7){return function(_0x431eff){if(_0x431eff){var _0xde7a85=typeof _0x8a11f7['offset']==='undefined'&&typeof _0x8a11f7[_0xf7da('0xe')]===_0xf7da('0xf');var _0x1d7fbc=_0x431eff[_0xf7da('0x10')];var _0xaa5b1f=_0xde7a85?0x0:_0x8a11f7['offset'];var _0x3cada2=_0xde7a85?_0x431eff['count']:_0x8a11f7[_0xf7da('0x11')]+_0x8a11f7[_0xf7da('0xe')];var _0x33590e;if(_0x3cada2>=_0x1d7fbc){_0x3cada2=_0x1d7fbc;_0x33590e=0xc8;}else{_0x33590e=0xce;}_0x882a18['status'](_0x33590e);return _0x882a18[_0xf7da('0x12')](_0xf7da('0x13'),_0xaa5b1f+'-'+_0x3cada2+'/'+_0x1d7fbc)['json'](_0x431eff);}return null;};}function saveUpdates(_0x462fe7){return function(_0x41ea4d){if(_0x41ea4d){return _0x41ea4d['update'](_0x462fe7)[_0xf7da('0x14')](function(_0x1badde){return _0x1badde;});}return null;};}function removeEntity(_0x35719e){return function(_0x4f9394){if(_0x4f9394){return _0x4f9394['destroy']()[_0xf7da('0x14')](function(){_0x35719e[_0xf7da('0xb')](0xcc)['end']();});}};}function handleEntityNotFound(_0xf203ee){return function(_0x500bae){if(!_0x500bae){_0xf203ee[_0xf7da('0xa')](0x194);}return _0x500bae;};}function handleError(_0x4d5744,_0x2622e3){_0x2622e3=_0x2622e3||0x1f4;return function(_0x2e5c6b){logger[_0xf7da('0x15')](_0x2e5c6b[_0xf7da('0x16')]);if(_0x2e5c6b[_0xf7da('0x17')]){delete _0x2e5c6b[_0xf7da('0x17')];}_0x4d5744[_0xf7da('0xb')](_0x2622e3)[_0xf7da('0x18')](_0x2e5c6b);};}function maskClientSecret(_0x3cd69f){return _[_0xf7da('0x19')](_0x3cd69f[_0xf7da('0x1a')](0x0,0x3),0x14,'*');}exports[_0xf7da('0x1b')]=function(_0x3142ad,_0x59a868){var _0x5afdca={},_0x41298e={},_0xc92d35={'count':0x0,'rows':[]};var _0x480f48=_[_0xf7da('0x1c')](db[_0xf7da('0x1d')][_0xf7da('0x1e')],function(_0x27fd04){return{'name':_0x27fd04[_0xf7da('0x1f')],'type':_0x27fd04[_0xf7da('0x20')][_0xf7da('0x21')]};});_0x41298e[_0xf7da('0x22')]=_[_0xf7da('0x1c')](_0x480f48,'name');_0x41298e[_0xf7da('0x23')]=_['keys'](_0x3142ad[_0xf7da('0x23')]);_0x41298e[_0xf7da('0x24')]=_[_0xf7da('0x25')](_0x41298e[_0xf7da('0x22')],_0x41298e[_0xf7da('0x23')]);_0x5afdca[_0xf7da('0x26')]=_[_0xf7da('0x25')](_0x41298e[_0xf7da('0x22')],qs[_0xf7da('0x27')](_0x3142ad['query'][_0xf7da('0x27')]));_0x5afdca[_0xf7da('0x26')]=_0x5afdca[_0xf7da('0x26')]['length']?_0x5afdca[_0xf7da('0x26')]:_0x41298e[_0xf7da('0x22')];if(!_0x3142ad['query']['hasOwnProperty'](_0xf7da('0x28'))){_0x5afdca[_0xf7da('0xe')]=qs[_0xf7da('0xe')](_0x3142ad[_0xf7da('0x23')][_0xf7da('0xe')]);_0x5afdca[_0xf7da('0x11')]=qs[_0xf7da('0x11')](_0x3142ad[_0xf7da('0x23')][_0xf7da('0x11')]);}_0x5afdca[_0xf7da('0x29')]=qs[_0xf7da('0x2a')](_0x3142ad['query'][_0xf7da('0x2a')]);_0x5afdca[_0xf7da('0x2b')]=qs['filters'](_[_0xf7da('0x2c')](_0x3142ad[_0xf7da('0x23')],_0x41298e[_0xf7da('0x24')]),_0x480f48);if(_0x3142ad[_0xf7da('0x23')][_0xf7da('0x2d')]){_0x5afdca[_0xf7da('0x2b')]=_[_0xf7da('0x2e')](_0x5afdca[_0xf7da('0x2b')],{'$or':_['map'](_0x480f48,function(_0x1bd742){if(_0x1bd742[_0xf7da('0x20')]!==_0xf7da('0x2f')){var _0x39028f={};_0x39028f[_0x1bd742[_0xf7da('0x17')]]={'$like':'%'+_0x3142ad[_0xf7da('0x23')][_0xf7da('0x2d')]+'%'};return _0x39028f;}})});}_0x5afdca=_[_0xf7da('0x2e')]({},_0x5afdca,_0x3142ad[_0xf7da('0x30')]);var _0x142b18={'where':_0x5afdca[_0xf7da('0x2b')]};return db[_0xf7da('0x1d')][_0xf7da('0x10')](_0x142b18)[_0xf7da('0x14')](function(_0x5b2b48){_0xc92d35[_0xf7da('0x10')]=_0x5b2b48;if(_0x3142ad['query'][_0xf7da('0x31')]){_0x5afdca[_0xf7da('0x32')]=[{'all':!![]}];}return db[_0xf7da('0x1d')][_0xf7da('0x33')](_0x5afdca);})[_0xf7da('0x14')](function(_0x5e1b5f){_0xc92d35['rows']=_[_0xf7da('0x1c')](_0x5e1b5f,function(_0x1b001f){if(_0x1b001f[_0xf7da('0x34')]===_0xf7da('0x35')){var _0x44d76a=encryptor[_0xf7da('0x36')](_0x1b001f['data3']);_0x1b001f[_0xf7da('0x37')]=maskClientSecret(_0x44d76a);}return _0x1b001f;});return _0xc92d35;})[_0xf7da('0x14')](respondWithFilteredResult(_0x59a868,_0x5afdca))[_0xf7da('0x38')](handleError(_0x59a868,null));};exports['show']=function(_0x529df1,_0x4a8f08){var _0xc8b736={'raw':!![],'where':{'id':_0x529df1['params']['id']}},_0xfec3a0={};_0xfec3a0[_0xf7da('0x22')]=_[_0xf7da('0x39')](db[_0xf7da('0x1d')][_0xf7da('0x1e')]);_0xfec3a0[_0xf7da('0x23')]=_['keys'](_0x529df1[_0xf7da('0x23')]);_0xfec3a0[_0xf7da('0x24')]=_['intersection'](_0xfec3a0['model'],_0xfec3a0['query']);_0xc8b736[_0xf7da('0x26')]=_[_0xf7da('0x25')](_0xfec3a0['model'],qs[_0xf7da('0x27')](_0x529df1['query'][_0xf7da('0x27')]));_0xc8b736[_0xf7da('0x26')]=_0xc8b736[_0xf7da('0x26')][_0xf7da('0x3a')]?_0xc8b736[_0xf7da('0x26')]:_0xfec3a0['model'];if(_0x529df1[_0xf7da('0x23')]['includeAll']){_0xc8b736[_0xf7da('0x32')]=[{'all':!![]}];}_0xc8b736=_[_0xf7da('0x2e')]({},_0xc8b736,_0x529df1[_0xf7da('0x30')]);return db[_0xf7da('0x1d')][_0xf7da('0x3b')](_0xc8b736)[_0xf7da('0x14')](handleEntityNotFound(_0x4a8f08,null))[_0xf7da('0x14')](function(_0x2e9200){if(_0x2e9200['service']===_0xf7da('0x35')){var _0x1244bd=encryptor[_0xf7da('0x36')](_0x2e9200[_0xf7da('0x37')]);_0x2e9200['data3']=maskClientSecret(_0x1244bd);}return _0x2e9200;})[_0xf7da('0x14')](respondWithResult(_0x4a8f08,null))[_0xf7da('0x38')](handleError(_0x4a8f08,null));};exports[_0xf7da('0x3c')]=function(_0x3a54b9,_0x1741da){if(!_0x3a54b9[_0xf7da('0x3d')][_0xf7da('0x17')])throw new Error(_0xf7da('0x3e'));if(!_0x3a54b9[_0xf7da('0x3d')]['service'])throw new Error(_0xf7da('0x3f'));var _0xafbf15=db[_0xf7da('0x1d')][_0xf7da('0x1e')]['service'][_0xf7da('0x40')];if(!_0xafbf15[_0xf7da('0x41')](_0x3a54b9[_0xf7da('0x3d')][_0xf7da('0x34')]))throw new Error(_0xf7da('0x42')+_0xafbf15[_0xf7da('0x43')](',\x20'));if(_0x3a54b9[_0xf7da('0x3d')]['service']===_0xf7da('0x35')&&_0x3a54b9[_0xf7da('0x3d')]['data3']){_0x3a54b9['body'][_0xf7da('0x37')]=encryptor[_0xf7da('0x44')](_0x3a54b9[_0xf7da('0x3d')][_0xf7da('0x37')]);}return db[_0xf7da('0x1d')][_0xf7da('0x3c')](_0x3a54b9[_0xf7da('0x3d')],{})[_0xf7da('0x14')](respondWithResult(_0x1741da,0xc9))[_0xf7da('0x38')](handleError(_0x1741da,null));};exports[_0xf7da('0x45')]=function(_0xbbcbb8,_0x9fe1f2){if(_0xbbcbb8[_0xf7da('0x3d')]['id']){delete _0xbbcbb8[_0xf7da('0x3d')]['id'];}return db[_0xf7da('0x1d')]['find']({'where':{'id':_0xbbcbb8[_0xf7da('0x46')]['id']}})[_0xf7da('0x14')](handleEntityNotFound(_0x9fe1f2,null))[_0xf7da('0x14')](function(_0x4f0c7e){if(_0x4f0c7e['service']==='MicrosoftAzure'&&_0xbbcbb8[_0xf7da('0x3d')][_0xf7da('0x37')]){_0xbbcbb8[_0xf7da('0x3d')][_0xf7da('0x37')]=encryptor['encryptString'](_0xbbcbb8[_0xf7da('0x3d')][_0xf7da('0x37')]);}return _0x4f0c7e;})['then'](saveUpdates(_0xbbcbb8[_0xf7da('0x3d')],null))[_0xf7da('0x14')](respondWithResult(_0x9fe1f2,null))['catch'](handleError(_0x9fe1f2,null));};exports[_0xf7da('0x47')]=function(_0x5b87a8,_0x211ddc){return db['CloudProvider']['find']({'where':{'id':_0x5b87a8[_0xf7da('0x46')]['id']}})[_0xf7da('0x14')](handleEntityNotFound(_0x211ddc,null))[_0xf7da('0x14')](removeEntity(_0x211ddc,null))[_0xf7da('0x38')](handleError(_0x211ddc,null));};exports[_0xf7da('0x48')]=function(_0x4809ed,_0x2afd8e){return db[_0xf7da('0x1d')]['findOne']({'where':{'id':_0x4809ed[_0xf7da('0x46')]['id']},'raw':!![]})[_0xf7da('0x14')](function(_0x4bc1fe){if(!_0x4bc1fe)return _0x2afd8e[_0xf7da('0xa')](0x194);return{'url':oauth[_0xf7da('0x49')](_0x4bc1fe,_0x4809ed['user']['id'])};})['then'](respondWithResult(_0x2afd8e,null))[_0xf7da('0x38')](handleError(_0x2afd8e,null));};exports[_0xf7da('0x4a')]=function(_0x44c1b7,_0x470664){var _0x4e597c=_0x44c1b7['body'];var _0x2676a6;var _0x2a6121;if(_0x4e597c[_0xf7da('0x15')])throw _0x4e597c;redis[_0xf7da('0x4b')](_0x4e597c[_0xf7da('0x4c')])[_0xf7da('0x14')](function(_0xcd5968){if(!_0xcd5968)throw new Error(_0xf7da('0x4d'));_0x2676a6=JSON[_0xf7da('0x4e')](_0xcd5968);var _0x88eba9=Buffer[_0xf7da('0x4f')](_0x4e597c[_0xf7da('0x4c')],_0xf7da('0x50'))[_0xf7da('0x51')](_0xf7da('0x52'));_0x2a6121=JSON[_0xf7da('0x4e')](_0x88eba9);if(!oauth['isValidIdToken'](_0x4e597c['id_token'],_0x2676a6[_0xf7da('0x53')]))throw new Error(_0xf7da('0x54'));redis[_0xf7da('0x55')](_0x4e597c['state']);return oauth[_0xf7da('0x56')](_0x4e597c[_0xf7da('0x57')],_0x2676a6);})[_0xf7da('0x14')](function(_0x1a636c){_0x2676a6[_0xf7da('0x58')]=_0x1a636c[_0xf7da('0x59')];_0x2676a6[_0xf7da('0x5a')]=_0x1a636c[_0xf7da('0x5b')];return db[_0xf7da('0x1d')]['update']({'data5':_0x2676a6['data5'],'data6':_0x2676a6[_0xf7da('0x5a')]},{'where':{'id':_0x2676a6['id']}});})[_0xf7da('0x14')](function(){oauth[_0xf7da('0x5c')](_0x2676a6);socket['emit']('microsoftAuthorization:success',{'id':_0x2a6121['id']});return;})[_0xf7da('0x14')](respondWithStatusCode(_0x470664,null))[_0xf7da('0x38')](function(_0x5028e2){if(_0x2a6121){socket['emit']('microsoftAuthorization:error',{'id':_0x2a6121['id']});}if(!_0x2676a6){logger[_0xf7da('0x15')](_0xf7da('0x5d'),_0x5028e2);return _0x470664[_0xf7da('0xb')](0x1f4)['send'](_0x5028e2['message']);}logger[_0xf7da('0x15')]('Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s',_0x2676a6['id'],JSON[_0xf7da('0x5e')](_0x5028e2));});};