Built motion from commit efa66e19.|2.6.22
[motion2.git] / server / api / cloudProvider / cloudProvider.oauth.js
index 3f172d1..c51c18f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7cf=['decode','payload','issuer','aud','nonce','isAfter','unix','exp','resolve','then','data3','CloudProvider','findOne','refresh_token','data4','decryptString','data2','data5','access_token','data6','update','error','authorization_code','{TENANT_ID}','bind','intervals','findAll','catch','inspect','exports','lodash','crypto','jsonwebtoken','ioredis','request-promise','util','../../components/encryptor','api','../../config/schedule/cloud-provider','../../mysqldb','defaults','redis','localhost','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','openid','profile','email','offline_access','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','/token','map','Dynamics365','push','/.default','join','type','data7','replace','code','id_token','randomBytes','hex','client_id','data1','response_type','redirect_uri','form_post','scope','state','prompt','value','oauth2/','set','stringify'];(function(_0xf5d71c,_0x2613a6){var _0x5af672=function(_0x191f52){while(--_0x191f52){_0xf5d71c['push'](_0xf5d71c['shift']());}};_0x5af672(++_0x2613a6);}(_0xa7cf,0x1e6));var _0xfa7c=function(_0x20845e,_0x211e78){_0x20845e=_0x20845e-0x0;var _0x28cf2b=_0xa7cf[_0x20845e];return _0x28cf2b;};'use strict';var _=require(_0xfa7c('0x0'));var crypto=require(_0xfa7c('0x1'));var jwt=require(_0xfa7c('0x2'));var moment=require('moment');var Redis=require(_0xfa7c('0x3'));var rp=require(_0xfa7c('0x4'));var util=require(_0xfa7c('0x5'));var encryptor=require(_0xfa7c('0x6'));var config=require('../../config/environment');var logger=require('../../config/logger')(_0xfa7c('0x7'));var schedule=require(_0xfa7c('0x8'));var db=require(_0xfa7c('0x9'))['db'];config['redis']=_[_0xfa7c('0xa')](config[_0xfa7c('0xb')],{'host':_0xfa7c('0xc'),'port':0x18eb});var redis=new Redis(config[_0xfa7c('0xb')]);var MICROSOFT_AUTH_URL=_0xfa7c('0xd');var AZURE_AUTH_SCOPES={'Outlook365':[_0xfa7c('0xe'),_0xfa7c('0xf'),_0xfa7c('0x10'),_0xfa7c('0x11'),_0xfa7c('0x12'),_0xfa7c('0x13'),_0xfa7c('0x14')],'Dynamics365':[_0xfa7c('0xe'),_0xfa7c('0x11')]};var MICROSOFT_AUTH_ENDPOINT='/authorize';var MICROSOFT_TOKEN_ENDPOINT=_0xfa7c('0x15');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x6a4470){var _0xb7e26d=_[_0xfa7c('0x16')](AZURE_AUTH_SCOPES[_0x6a4470['type']]);if(_0x6a4470['type']===_0xfa7c('0x17'))_0xb7e26d[_0xfa7c('0x18')](_0x6a4470['data7']+_0xfa7c('0x19'));return _0xb7e26d[_0xfa7c('0x1a')]('\x20');}function getAccessTokenScope(_0x5696e3){if(_0x5696e3['type']==='Outlook365')return _0xfa7c('0x12');if(_0x5696e3[_0xfa7c('0x1b')]===_0xfa7c('0x17'))return _0x5696e3[_0xfa7c('0x1c')]+_0xfa7c('0x19');}function generateMicrosoftAuthorizationUrl(_0x57dc98,_0x105fc6){var _0x48a6ec=MICROSOFT_AUTH_URL[_0xfa7c('0x1d')]('{TENANT_ID}',_0x57dc98['data2']);var _0x13c88c=[_0xfa7c('0x1e'),_0xfa7c('0x1f')];var _0x2c320a=Buffer['from'](JSON['stringify']({'id':_0x105fc6}))['toString']('base64');var _0xd668b9=crypto[_0xfa7c('0x20')](0x10)['toString'](_0xfa7c('0x21'));var _0x8fd7f3=getAuthorizationScopes(_0x57dc98);var _0x2480ef=[{'key':_0xfa7c('0x22'),'value':_0x57dc98[_0xfa7c('0x23')]},{'key':_0xfa7c('0x24'),'value':encodeURIComponent(_0x13c88c['join']('\x20'))},{'key':_0xfa7c('0x25'),'value':_0x57dc98['data4']},{'key':'response_mode','value':_0xfa7c('0x26')},{'key':_0xfa7c('0x27'),'value':encodeURIComponent(_0x8fd7f3)},{'key':_0xfa7c('0x28'),'value':_0x2c320a},{'key':'nonce','value':_0xd668b9},{'key':_0xfa7c('0x29'),'value':'login'}];var _0x19aced=_0x48a6ec+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0xfa7c('0x16')](_0x2480ef,function(_0x550eab){return _0x550eab['key']+'='+_0x550eab[_0xfa7c('0x2a')];})[_0xfa7c('0x1a')]('&');_0x57dc98['oauth2Claims']={'issuer':_0x48a6ec[_0xfa7c('0x1d')](_0xfa7c('0x2b'),''),'audience':_0x57dc98[_0xfa7c('0x23')],'state':_0x2c320a,'nonce':_0xd668b9};redis[_0xfa7c('0x2c')](_0x2c320a,JSON[_0xfa7c('0x2d')](_0x57dc98));return _0x19aced;}function isValidIdToken(_0x1ada53,_0x4ef06c){try{var _0x439ca9=jwt[_0xfa7c('0x2e')](_0x1ada53,{'complete':!![]});var _0x1bd801=_0x439ca9[_0xfa7c('0x2f')];if(_0x1bd801['iss']!==_0x4ef06c[_0xfa7c('0x30')])return![];if(_0x1bd801[_0xfa7c('0x31')]!==_0x4ef06c['audience'])return![];if(_0x1bd801[_0xfa7c('0x32')]!==_0x4ef06c['nonce'])return![];if(moment()[_0xfa7c('0x33')](moment[_0xfa7c('0x34')](_0x1bd801[_0xfa7c('0x35')])))return![];return!![];}catch(_0x3be4eb){throw _0x3be4eb;}}function refreshOauth2MicrosoftAccessToken(_0x9453e4){return Promise[_0xfa7c('0x36')]()[_0xfa7c('0x37')](function(){if(_0x9453e4[_0xfa7c('0x38')])return _0x9453e4;return db[_0xfa7c('0x39')][_0xfa7c('0x3a')]({'where':{'id':_0x9453e4['id']},'raw':!![]});})[_0xfa7c('0x37')](function(_0x33c65d){var _0x2a4a03={'grant_type':_0xfa7c('0x3b'),'refresh_token':_0x33c65d['data6'],'scope':getAccessTokenScope(_0x33c65d),'redirect_uri':_0x33c65d[_0xfa7c('0x3c')],'client_id':_0x33c65d[_0xfa7c('0x23')],'client_secret':encryptor[_0xfa7c('0x3d')](_0x33c65d['data3'])};var _0x12b8fc={'method':'POST','uri':MICROSOFT_AUTH_URL[_0xfa7c('0x1d')]('{TENANT_ID}',_0x33c65d[_0xfa7c('0x3e')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x2a4a03,'json':!![]};return rp(_0x12b8fc);})[_0xfa7c('0x37')](function(_0x56b783){_0x9453e4[_0xfa7c('0x3f')]=_0x56b783[_0xfa7c('0x40')];_0x9453e4[_0xfa7c('0x41')]=_0x56b783[_0xfa7c('0x3b')];return db[_0xfa7c('0x39')][_0xfa7c('0x42')]({'data5':_0x9453e4[_0xfa7c('0x3f')],'data6':_0x9453e4[_0xfa7c('0x41')]},{'where':{'id':_0x9453e4['id']}});})[_0xfa7c('0x37')](function(){return _0x9453e4;})['catch'](function(_0x42f0ce){logger[_0xfa7c('0x43')]('Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s',_0x9453e4['id'],_0x42f0ce);});}function getOauth2MicrosoftAccessToken(_0x5c4891,_0x2e1e1e){var _0x45f961={'grant_type':_0xfa7c('0x44'),'code':_0x5c4891,'scope':getAccessTokenScope(_0x2e1e1e),'redirect_uri':_0x2e1e1e[_0xfa7c('0x3c')],'client_id':_0x2e1e1e[_0xfa7c('0x23')],'client_secret':encryptor[_0xfa7c('0x3d')](_0x2e1e1e[_0xfa7c('0x38')])};var _0x4f7a55={'method':'POST','uri':MICROSOFT_AUTH_URL['replace'](_0xfa7c('0x45'),_0x2e1e1e[_0xfa7c('0x3e')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x45f961,'json':!![]};return rp(_0x4f7a55);}function startRefreshInterval(_0x1b6df3){var _0x54d3dc=schedule['intervals'];if(_0x54d3dc[_0x1b6df3['id']])clearInterval(_0x54d3dc[_0x1b6df3['id']]);_0x54d3dc[_0x1b6df3['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0xfa7c('0x46')](this,{'id':_0x1b6df3['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0xfa7c('0x47')]=_0x54d3dc;}function startAllRefreshIntervals(){return db['CloudProvider'][_0xfa7c('0x48')]({'where':{'data6':{'$ne':null}},'raw':!![]})['then'](function(_0x58952c){var _0x5c7bd4=_0x58952c[_0xfa7c('0x16')](function(_0x214619){return refreshOauth2MicrosoftAccessToken(_0x214619)[_0xfa7c('0x37')](function(_0x4481d3){startRefreshInterval(_0x4481d3);});});return Promise['all'](_0x5c7bd4);})[_0xfa7c('0x49')](function(_0x37ea7f){var _0x4c0d6c=_0x37ea7f?util[_0xfa7c('0x4a')](_0x37ea7f,{'showHidden':![],'depth':null}):'';logger[_0xfa7c('0x43')]('[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s',_0x4c0d6c);});}module[_0xfa7c('0x4b')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
+var _0xcfd4=['decode','iss','issuer','aud','audience','isAfter','unix','exp','resolve','data3','CloudProvider','refresh_token','data6','decryptString','POST','then','data5','update','catch','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','intervals','bind','findAll','map','all','exports','crypto','jsonwebtoken','moment','ioredis','request-promise','../../components/encryptor','api','../../config/schedule/cloud-provider','defaults','redis','localhost','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','openid','offline_access','/token','type','data7','/.default','join','Outlook365','https://outlook.office365.com/IMAP.AccessAsUser.All','Dynamics365','replace','{TENANT_ID}','data2','code','from','stringify','toString','randomBytes','hex','client_id','data1','response_type','redirect_uri','form_post','scope','state','nonce','prompt','key','value','set'];(function(_0xe4a312,_0x30ab51){var _0x8ef3e8=function(_0x46d92d){while(--_0x46d92d){_0xe4a312['push'](_0xe4a312['shift']());}};_0x8ef3e8(++_0x30ab51);}(_0xcfd4,0x138));var _0x4cfd=function(_0x479bc2,_0xc70b03){_0x479bc2=_0x479bc2-0x0;var _0x3aa11e=_0xcfd4[_0x479bc2];return _0x3aa11e;};'use strict';var _=require('lodash');var crypto=require(_0x4cfd('0x0'));var jwt=require(_0x4cfd('0x1'));var moment=require(_0x4cfd('0x2'));var Redis=require(_0x4cfd('0x3'));var rp=require(_0x4cfd('0x4'));var util=require('util');var encryptor=require(_0x4cfd('0x5'));var config=require('../../config/environment');var logger=require('../../config/logger')(_0x4cfd('0x6'));var schedule=require(_0x4cfd('0x7'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x4cfd('0x8')](config[_0x4cfd('0x9')],{'host':_0x4cfd('0xa'),'port':0x18eb});var redis=new Redis(config[_0x4cfd('0x9')]);var MICROSOFT_AUTH_URL=_0x4cfd('0xb');var AZURE_AUTH_SCOPES={'Outlook365':[_0x4cfd('0xc'),'profile','email',_0x4cfd('0xd'),'https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send'],'Dynamics365':[_0x4cfd('0xc'),_0x4cfd('0xd')]};var MICROSOFT_AUTH_ENDPOINT='/authorize';var MICROSOFT_TOKEN_ENDPOINT=_0x4cfd('0xe');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x1d052f){var _0xdfdbcc=_['map'](AZURE_AUTH_SCOPES[_0x1d052f['type']]);if(_0x1d052f[_0x4cfd('0xf')]==='Dynamics365')_0xdfdbcc['push'](_0x1d052f[_0x4cfd('0x10')]+_0x4cfd('0x11'));return _0xdfdbcc[_0x4cfd('0x12')]('\x20');}function getAccessTokenScope(_0x338a7b){if(_0x338a7b[_0x4cfd('0xf')]===_0x4cfd('0x13'))return _0x4cfd('0x14');if(_0x338a7b[_0x4cfd('0xf')]===_0x4cfd('0x15'))return _0x338a7b[_0x4cfd('0x10')]+_0x4cfd('0x11');}function generateMicrosoftAuthorizationUrl(_0x4822df,_0x3d3a68){var _0x454bd7=MICROSOFT_AUTH_URL[_0x4cfd('0x16')](_0x4cfd('0x17'),_0x4822df[_0x4cfd('0x18')]);var _0x11e163=[_0x4cfd('0x19'),'id_token'];var _0x3d053e=Buffer[_0x4cfd('0x1a')](JSON[_0x4cfd('0x1b')]({'id':_0x3d3a68}))[_0x4cfd('0x1c')]('base64');var _0xd3ed36=crypto[_0x4cfd('0x1d')](0x10)[_0x4cfd('0x1c')](_0x4cfd('0x1e'));var _0x478562=getAuthorizationScopes(_0x4822df);var _0x1f8188=[{'key':_0x4cfd('0x1f'),'value':_0x4822df[_0x4cfd('0x20')]},{'key':_0x4cfd('0x21'),'value':encodeURIComponent(_0x11e163[_0x4cfd('0x12')]('\x20'))},{'key':_0x4cfd('0x22'),'value':_0x4822df['data4']},{'key':'response_mode','value':_0x4cfd('0x23')},{'key':_0x4cfd('0x24'),'value':encodeURIComponent(_0x478562)},{'key':_0x4cfd('0x25'),'value':_0x3d053e},{'key':_0x4cfd('0x26'),'value':_0xd3ed36},{'key':_0x4cfd('0x27'),'value':'login'}];var _0x15271a=_0x454bd7+MICROSOFT_AUTH_ENDPOINT+'?'+_['map'](_0x1f8188,function(_0x471573){return _0x471573[_0x4cfd('0x28')]+'='+_0x471573[_0x4cfd('0x29')];})[_0x4cfd('0x12')]('&');_0x4822df['oauth2Claims']={'issuer':_0x454bd7[_0x4cfd('0x16')]('oauth2/',''),'audience':_0x4822df['data1'],'state':_0x3d053e,'nonce':_0xd3ed36};redis[_0x4cfd('0x2a')](_0x3d053e,JSON[_0x4cfd('0x1b')](_0x4822df));return _0x15271a;}function isValidIdToken(_0x588f82,_0x193ca3){try{var _0xa40c08=jwt[_0x4cfd('0x2b')](_0x588f82,{'complete':!![]});var _0x2deb35=_0xa40c08['payload'];if(_0x2deb35[_0x4cfd('0x2c')]!==_0x193ca3[_0x4cfd('0x2d')])return![];if(_0x2deb35[_0x4cfd('0x2e')]!==_0x193ca3[_0x4cfd('0x2f')])return![];if(_0x2deb35['nonce']!==_0x193ca3[_0x4cfd('0x26')])return![];if(moment()[_0x4cfd('0x30')](moment[_0x4cfd('0x31')](_0x2deb35[_0x4cfd('0x32')])))return![];return!![];}catch(_0x861b89){throw _0x861b89;}}function refreshOauth2MicrosoftAccessToken(_0x1ec119){return Promise[_0x4cfd('0x33')]()['then'](function(){if(_0x1ec119[_0x4cfd('0x34')])return _0x1ec119;return db[_0x4cfd('0x35')]['findOne']({'where':{'id':_0x1ec119['id']},'raw':!![]});})['then'](function(_0x1898a9){var _0x2c15ed={'grant_type':_0x4cfd('0x36'),'refresh_token':_0x1898a9[_0x4cfd('0x37')],'scope':getAccessTokenScope(_0x1898a9),'redirect_uri':_0x1898a9['data4'],'client_id':_0x1898a9[_0x4cfd('0x20')],'client_secret':encryptor[_0x4cfd('0x38')](_0x1898a9[_0x4cfd('0x34')])};var _0x4a16ec={'method':_0x4cfd('0x39'),'uri':MICROSOFT_AUTH_URL[_0x4cfd('0x16')]('{TENANT_ID}',_0x1898a9[_0x4cfd('0x18')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x2c15ed,'json':!![]};return rp(_0x4a16ec);})[_0x4cfd('0x3a')](function(_0x1bb89f){_0x1ec119[_0x4cfd('0x3b')]=_0x1bb89f['access_token'];_0x1ec119[_0x4cfd('0x37')]=_0x1bb89f['refresh_token'];return db['CloudProvider'][_0x4cfd('0x3c')]({'data5':_0x1ec119[_0x4cfd('0x3b')],'data6':_0x1ec119['data6']},{'where':{'id':_0x1ec119['id']}});})[_0x4cfd('0x3a')](function(){return _0x1ec119;})[_0x4cfd('0x3d')](function(_0x28f95f){logger[_0x4cfd('0x3e')](_0x4cfd('0x3f'),_0x1ec119['id'],_0x28f95f);});}function getOauth2MicrosoftAccessToken(_0x2aa030,_0xb6ed7a){var _0x1f1c9e={'grant_type':_0x4cfd('0x40'),'code':_0x2aa030,'scope':getAccessTokenScope(_0xb6ed7a),'redirect_uri':_0xb6ed7a['data4'],'client_id':_0xb6ed7a[_0x4cfd('0x20')],'client_secret':encryptor['decryptString'](_0xb6ed7a[_0x4cfd('0x34')])};var _0x22d72d={'method':_0x4cfd('0x39'),'uri':MICROSOFT_AUTH_URL[_0x4cfd('0x16')](_0x4cfd('0x17'),_0xb6ed7a[_0x4cfd('0x18')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x1f1c9e,'json':!![]};return rp(_0x22d72d);}function startRefreshInterval(_0xdb5313){var _0x28e57d=schedule[_0x4cfd('0x41')];if(_0x28e57d[_0xdb5313['id']])clearInterval(_0x28e57d[_0xdb5313['id']]);_0x28e57d[_0xdb5313['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0x4cfd('0x42')](this,{'id':_0xdb5313['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0x4cfd('0x41')]=_0x28e57d;}function startAllRefreshIntervals(){return db[_0x4cfd('0x35')][_0x4cfd('0x43')]({'where':{'data6':{'$ne':null}},'raw':!![]})[_0x4cfd('0x3a')](function(_0x345b12){var _0x3f7882=_0x345b12[_0x4cfd('0x44')](function(_0x3daf39){return refreshOauth2MicrosoftAccessToken(_0x3daf39)['then'](function(_0x47ba83){startRefreshInterval(_0x47ba83);});});return Promise[_0x4cfd('0x45')](_0x3f7882);})['catch'](function(_0x3bd862){var _0x4ed3af=_0x3bd862?util['inspect'](_0x3bd862,{'showHidden':![],'depth':null}):'';logger['error']('[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s',_0x4ed3af);});}module[_0x4cfd('0x46')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file