Built motion from commit 10af8726.|2.6.34
[motion2.git] / server / api / cloudProvider / cloudProvider.oauth.js
index ff1c043..0f7d9bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ba9=['Outlook365','data2','code','id_token','from','stringify','randomBytes','toString','hex','client_id','data1','response_type','redirect_uri','response_mode','form_post','scope','state','nonce','prompt','login','map','key','value','join','oauth2Claims','replace','set','decode','payload','iss','issuer','aud','unix','then','data3','CloudProvider','findOne','refresh_token','data6','data4','decryptString','POST','{TENANT_ID}','access_token','update','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','findAll','all','catch','inspect','error','lodash','crypto','jsonwebtoken','moment','ioredis','request-promise','util','../../components/encryptor','api','localhost','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','type','Dynamics365','push','data7'];(function(_0x17f4f9,_0x376cf8){var _0x141347=function(_0x25d890){while(--_0x25d890){_0x17f4f9['push'](_0x17f4f9['shift']());}};_0x141347(++_0x376cf8);}(_0x6ba9,0x1a1));var _0x96ba=function(_0x2c8a94,_0x3891e8){_0x2c8a94=_0x2c8a94-0x0;var _0x58ac54=_0x6ba9[_0x2c8a94];return _0x58ac54;};'use strict';var _=require(_0x96ba('0x0'));var crypto=require(_0x96ba('0x1'));var jwt=require(_0x96ba('0x2'));var moment=require(_0x96ba('0x3'));var Redis=require(_0x96ba('0x4'));var rp=require(_0x96ba('0x5'));var util=require(_0x96ba('0x6'));var encryptor=require(_0x96ba('0x7'));var config=require('../../config/environment');var logger=require('../../config/logger')(_0x96ba('0x8'));var schedule=require('../../config/schedule/cloud-provider');var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config['redis'],{'host':_0x96ba('0x9'),'port':0x18eb});var redis=new Redis(config['redis']);var MICROSOFT_AUTH_URL='https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0';var AZURE_AUTH_SCOPES={'Outlook365':[_0x96ba('0xa'),_0x96ba('0xb'),_0x96ba('0xc'),_0x96ba('0xd'),_0x96ba('0xe'),_0x96ba('0xf'),_0x96ba('0x10')],'Dynamics365':['openid',_0x96ba('0xd')]};var MICROSOFT_AUTH_ENDPOINT='/authorize';var MICROSOFT_TOKEN_ENDPOINT='/token';var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x44c31c){var _0x4bdda5=_['map'](AZURE_AUTH_SCOPES[_0x44c31c['type']]);if(_0x44c31c[_0x96ba('0x11')]===_0x96ba('0x12'))_0x4bdda5[_0x96ba('0x13')](_0x44c31c[_0x96ba('0x14')]+'/.default');return _0x4bdda5['join']('\x20');}function getAccessTokenScope(_0x1b1808){if(_0x1b1808[_0x96ba('0x11')]===_0x96ba('0x15'))return'https://outlook.office365.com/IMAP.AccessAsUser.All';if(_0x1b1808['type']==='Dynamics365')return _0x1b1808[_0x96ba('0x14')]+'/.default';}function generateMicrosoftAuthorizationUrl(_0x3aad9f,_0x123c11){var _0x2af30a=MICROSOFT_AUTH_URL['replace']('{TENANT_ID}',_0x3aad9f[_0x96ba('0x16')]);var _0x1e6885=[_0x96ba('0x17'),_0x96ba('0x18')];var _0x117932=Buffer[_0x96ba('0x19')](JSON[_0x96ba('0x1a')]({'id':_0x123c11}))['toString']('base64');var _0x2f693e=crypto[_0x96ba('0x1b')](0x10)[_0x96ba('0x1c')](_0x96ba('0x1d'));var _0x489309=getAuthorizationScopes(_0x3aad9f);var _0x59cff0=[{'key':_0x96ba('0x1e'),'value':_0x3aad9f[_0x96ba('0x1f')]},{'key':_0x96ba('0x20'),'value':encodeURIComponent(_0x1e6885['join']('\x20'))},{'key':_0x96ba('0x21'),'value':_0x3aad9f['data4']},{'key':_0x96ba('0x22'),'value':_0x96ba('0x23')},{'key':_0x96ba('0x24'),'value':encodeURIComponent(_0x489309)},{'key':_0x96ba('0x25'),'value':_0x117932},{'key':_0x96ba('0x26'),'value':_0x2f693e},{'key':_0x96ba('0x27'),'value':_0x96ba('0x28')}];var _0x4d7c2f=_0x2af30a+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0x96ba('0x29')](_0x59cff0,function(_0x5caf41){return _0x5caf41[_0x96ba('0x2a')]+'='+_0x5caf41[_0x96ba('0x2b')];})[_0x96ba('0x2c')]('&');_0x3aad9f[_0x96ba('0x2d')]={'issuer':_0x2af30a[_0x96ba('0x2e')]('oauth2/',''),'audience':_0x3aad9f[_0x96ba('0x1f')],'state':_0x117932,'nonce':_0x2f693e};redis[_0x96ba('0x2f')](_0x117932,JSON[_0x96ba('0x1a')](_0x3aad9f));return _0x4d7c2f;}function isValidIdToken(_0x3c305f,_0x42403f){try{var _0x2a1606=jwt[_0x96ba('0x30')](_0x3c305f,{'complete':!![]});var _0x4ab9e9=_0x2a1606[_0x96ba('0x31')];if(_0x4ab9e9[_0x96ba('0x32')]!==_0x42403f[_0x96ba('0x33')])return![];if(_0x4ab9e9[_0x96ba('0x34')]!==_0x42403f['audience'])return![];if(_0x4ab9e9[_0x96ba('0x26')]!==_0x42403f['nonce'])return![];if(moment()['isAfter'](moment[_0x96ba('0x35')](_0x4ab9e9['exp'])))return![];return!![];}catch(_0x7ce772){throw _0x7ce772;}}function refreshOauth2MicrosoftAccessToken(_0x1962e1){return Promise['resolve']()[_0x96ba('0x36')](function(){if(_0x1962e1[_0x96ba('0x37')])return _0x1962e1;return db[_0x96ba('0x38')][_0x96ba('0x39')]({'where':{'id':_0x1962e1['id']},'raw':!![]});})[_0x96ba('0x36')](function(_0xfeff8c){var _0x2db1bf={'grant_type':_0x96ba('0x3a'),'refresh_token':_0xfeff8c[_0x96ba('0x3b')],'scope':getAccessTokenScope(_0xfeff8c),'redirect_uri':_0xfeff8c[_0x96ba('0x3c')],'client_id':_0xfeff8c[_0x96ba('0x1f')],'client_secret':encryptor[_0x96ba('0x3d')](_0xfeff8c[_0x96ba('0x37')])};var _0x4d62ae={'method':_0x96ba('0x3e'),'uri':MICROSOFT_AUTH_URL[_0x96ba('0x2e')](_0x96ba('0x3f'),_0xfeff8c['data2'])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x2db1bf,'json':!![]};return rp(_0x4d62ae);})[_0x96ba('0x36')](function(_0x348759){_0x1962e1['data5']=_0x348759[_0x96ba('0x40')];_0x1962e1[_0x96ba('0x3b')]=_0x348759[_0x96ba('0x3a')];return db[_0x96ba('0x38')][_0x96ba('0x41')]({'data5':_0x1962e1['data5'],'data6':_0x1962e1[_0x96ba('0x3b')]},{'where':{'id':_0x1962e1['id']}});})[_0x96ba('0x36')](function(){return _0x1962e1;})['catch'](function(_0x1611a8){logger['error'](_0x96ba('0x42'),_0x1962e1['id'],_0x1611a8);});}function getOauth2MicrosoftAccessToken(_0x166fdf,_0x19013a){var _0x563e85={'grant_type':_0x96ba('0x43'),'code':_0x166fdf,'scope':getAccessTokenScope(_0x19013a),'redirect_uri':_0x19013a[_0x96ba('0x3c')],'client_id':_0x19013a[_0x96ba('0x1f')],'client_secret':encryptor[_0x96ba('0x3d')](_0x19013a['data3'])};var _0x2c61b3={'method':_0x96ba('0x3e'),'uri':MICROSOFT_AUTH_URL[_0x96ba('0x2e')](_0x96ba('0x3f'),_0x19013a[_0x96ba('0x16')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x563e85,'json':!![]};return rp(_0x2c61b3);}function startRefreshInterval(_0x45e54f){var _0x1cb2be=schedule['intervals'];if(_0x1cb2be[_0x45e54f['id']])clearInterval(_0x1cb2be[_0x45e54f['id']]);_0x1cb2be[_0x45e54f['id']]=setInterval(refreshOauth2MicrosoftAccessToken['bind'](this,{'id':_0x45e54f['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule['intervals']=_0x1cb2be;}function startAllRefreshIntervals(){return db[_0x96ba('0x38')][_0x96ba('0x44')]({'where':{'data6':{'$ne':null}},'raw':!![]})[_0x96ba('0x36')](function(_0x4b0fdc){var _0x3855a9=_0x4b0fdc[_0x96ba('0x29')](function(_0x2a2697){return refreshOauth2MicrosoftAccessToken(_0x2a2697)[_0x96ba('0x36')](function(_0x397335){startRefreshInterval(_0x397335);});});return Promise[_0x96ba('0x45')](_0x3855a9);})[_0x96ba('0x46')](function(_0x4b7dc1){var _0x599911=_0x4b7dc1?util[_0x96ba('0x47')](_0x4b7dc1,{'showHidden':![],'depth':null}):'';logger[_0x96ba('0x48')]('[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s',_0x599911);});}module['exports']={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
+var _0x0d30=['oauth2Claims','oauth2/','data1','payload','iss','issuer','aud','isAfter','unix','exp','resolve','then','data3','findOne','refresh_token','POST','{TENANT_ID}','data2','data5','data6','CloudProvider','update','catch','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','intervals','inspect','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','lodash','jsonwebtoken','moment','ioredis','request-promise','util','../../components/encryptor','../../config/environment','../../config/logger','../../config/schedule/cloud-provider','../../mysqldb','defaults','redis','localhost','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','openid','profile','email','https://outlook.office365.com/IMAP.AccessAsUser.All','offline_access','/authorize','/token','type','Dynamics365','push','data7','join','Outlook365','/.default','replace','stringify','toString','base64','randomBytes','hex','client_id','redirect_uri','data4','response_mode','form_post','scope','state','nonce','prompt','map','value'];(function(_0x1cd034,_0x2e7c4a){var _0x2e7e20=function(_0x2e5a03){while(--_0x2e5a03){_0x1cd034['push'](_0x1cd034['shift']());}};_0x2e7e20(++_0x2e7c4a);}(_0x0d30,0x194));var _0x00d3=function(_0x25b439,_0xb20872){_0x25b439=_0x25b439-0x0;var _0xbf2210=_0x0d30[_0x25b439];return _0xbf2210;};'use strict';var _=require(_0x00d3('0x0'));var crypto=require('crypto');var jwt=require(_0x00d3('0x1'));var moment=require(_0x00d3('0x2'));var Redis=require(_0x00d3('0x3'));var rp=require(_0x00d3('0x4'));var util=require(_0x00d3('0x5'));var encryptor=require(_0x00d3('0x6'));var config=require(_0x00d3('0x7'));var logger=require(_0x00d3('0x8'))('api');var schedule=require(_0x00d3('0x9'));var db=require(_0x00d3('0xa'))['db'];config['redis']=_[_0x00d3('0xb')](config[_0x00d3('0xc')],{'host':_0x00d3('0xd'),'port':0x18eb});var redis=new Redis(config['redis']);var MICROSOFT_AUTH_URL=_0x00d3('0xe');var AZURE_AUTH_SCOPES={'Outlook365':[_0x00d3('0xf'),_0x00d3('0x10'),_0x00d3('0x11'),'offline_access',_0x00d3('0x12'),'https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send'],'Dynamics365':[_0x00d3('0xf'),_0x00d3('0x13')]};var MICROSOFT_AUTH_ENDPOINT=_0x00d3('0x14');var MICROSOFT_TOKEN_ENDPOINT=_0x00d3('0x15');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x4fdff6){var _0x278068=_['map'](AZURE_AUTH_SCOPES[_0x4fdff6[_0x00d3('0x16')]]);if(_0x4fdff6[_0x00d3('0x16')]===_0x00d3('0x17'))_0x278068[_0x00d3('0x18')](_0x4fdff6[_0x00d3('0x19')]+'/.default');return _0x278068[_0x00d3('0x1a')]('\x20');}function getAccessTokenScope(_0x46c9e6){if(_0x46c9e6[_0x00d3('0x16')]===_0x00d3('0x1b'))return _0x00d3('0x12');if(_0x46c9e6[_0x00d3('0x16')]==='Dynamics365')return _0x46c9e6[_0x00d3('0x19')]+_0x00d3('0x1c');}function generateMicrosoftAuthorizationUrl(_0x19819b,_0x4c56ac){var _0x17dca8=MICROSOFT_AUTH_URL[_0x00d3('0x1d')]('{TENANT_ID}',_0x19819b['data2']);var _0x2de926=['code','id_token'];var _0x53ca57=Buffer['from'](JSON[_0x00d3('0x1e')]({'id':_0x4c56ac}))[_0x00d3('0x1f')](_0x00d3('0x20'));var _0x2296cb=crypto[_0x00d3('0x21')](0x10)[_0x00d3('0x1f')](_0x00d3('0x22'));var _0x129c43=getAuthorizationScopes(_0x19819b);var _0x5a8e12=[{'key':_0x00d3('0x23'),'value':_0x19819b['data1']},{'key':'response_type','value':encodeURIComponent(_0x2de926[_0x00d3('0x1a')]('\x20'))},{'key':_0x00d3('0x24'),'value':_0x19819b[_0x00d3('0x25')]},{'key':_0x00d3('0x26'),'value':_0x00d3('0x27')},{'key':_0x00d3('0x28'),'value':encodeURIComponent(_0x129c43)},{'key':_0x00d3('0x29'),'value':_0x53ca57},{'key':_0x00d3('0x2a'),'value':_0x2296cb},{'key':_0x00d3('0x2b'),'value':'login'}];var _0x47c6c2=_0x17dca8+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0x00d3('0x2c')](_0x5a8e12,function(_0x58132c){return _0x58132c['key']+'='+_0x58132c[_0x00d3('0x2d')];})[_0x00d3('0x1a')]('&');_0x19819b[_0x00d3('0x2e')]={'issuer':_0x17dca8[_0x00d3('0x1d')](_0x00d3('0x2f'),''),'audience':_0x19819b[_0x00d3('0x30')],'state':_0x53ca57,'nonce':_0x2296cb};redis['set'](_0x53ca57,JSON['stringify'](_0x19819b));return _0x47c6c2;}function isValidIdToken(_0x4ff7c7,_0x779689){try{var _0x38f2b8=jwt['decode'](_0x4ff7c7,{'complete':!![]});var _0x3ec6a6=_0x38f2b8[_0x00d3('0x31')];if(_0x3ec6a6[_0x00d3('0x32')]!==_0x779689[_0x00d3('0x33')])return![];if(_0x3ec6a6[_0x00d3('0x34')]!==_0x779689['audience'])return![];if(_0x3ec6a6[_0x00d3('0x2a')]!==_0x779689[_0x00d3('0x2a')])return![];if(moment()[_0x00d3('0x35')](moment[_0x00d3('0x36')](_0x3ec6a6[_0x00d3('0x37')])))return![];return!![];}catch(_0x5ee298){throw _0x5ee298;}}function refreshOauth2MicrosoftAccessToken(_0x42c13e){return Promise[_0x00d3('0x38')]()[_0x00d3('0x39')](function(){if(_0x42c13e[_0x00d3('0x3a')])return _0x42c13e;return db['CloudProvider'][_0x00d3('0x3b')]({'where':{'id':_0x42c13e['id']},'raw':!![]});})[_0x00d3('0x39')](function(_0x498cd0){var _0xb5a18d={'grant_type':_0x00d3('0x3c'),'refresh_token':_0x498cd0['data6'],'scope':getAccessTokenScope(_0x498cd0),'redirect_uri':_0x498cd0[_0x00d3('0x25')],'client_id':_0x498cd0['data1'],'client_secret':encryptor['decryptString'](_0x498cd0[_0x00d3('0x3a')])};var _0x457336={'method':_0x00d3('0x3d'),'uri':MICROSOFT_AUTH_URL[_0x00d3('0x1d')](_0x00d3('0x3e'),_0x498cd0[_0x00d3('0x3f')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0xb5a18d,'json':!![]};return rp(_0x457336);})[_0x00d3('0x39')](function(_0x34c11a){_0x42c13e[_0x00d3('0x40')]=_0x34c11a['access_token'];_0x42c13e[_0x00d3('0x41')]=_0x34c11a[_0x00d3('0x3c')];return db[_0x00d3('0x42')][_0x00d3('0x43')]({'data5':_0x42c13e[_0x00d3('0x40')],'data6':_0x42c13e[_0x00d3('0x41')]},{'where':{'id':_0x42c13e['id']}});})[_0x00d3('0x39')](function(){return _0x42c13e;})[_0x00d3('0x44')](function(_0x243f0e){logger[_0x00d3('0x45')](_0x00d3('0x46'),_0x42c13e['id'],_0x243f0e);});}function getOauth2MicrosoftAccessToken(_0x1f168d,_0x53ba34){var _0xe89c21={'grant_type':_0x00d3('0x47'),'code':_0x1f168d,'scope':getAccessTokenScope(_0x53ba34),'redirect_uri':_0x53ba34['data4'],'client_id':_0x53ba34[_0x00d3('0x30')],'client_secret':encryptor['decryptString'](_0x53ba34[_0x00d3('0x3a')])};var _0x4e50df={'method':'POST','uri':MICROSOFT_AUTH_URL[_0x00d3('0x1d')](_0x00d3('0x3e'),_0x53ba34['data2'])+MICROSOFT_TOKEN_ENDPOINT,'form':_0xe89c21,'json':!![]};return rp(_0x4e50df);}function startRefreshInterval(_0x478dcc){var _0x266e94=schedule['intervals'];if(_0x266e94[_0x478dcc['id']])clearInterval(_0x266e94[_0x478dcc['id']]);_0x266e94[_0x478dcc['id']]=setInterval(refreshOauth2MicrosoftAccessToken['bind'](this,{'id':_0x478dcc['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0x00d3('0x48')]=_0x266e94;}function startAllRefreshIntervals(){return db[_0x00d3('0x42')]['findAll']({'where':{'data6':{'$ne':null}},'raw':!![]})[_0x00d3('0x39')](function(_0x5763d9){var _0x4bbce6=_0x5763d9[_0x00d3('0x2c')](function(_0x540317){return refreshOauth2MicrosoftAccessToken(_0x540317)[_0x00d3('0x39')](function(_0x34c84a){startRefreshInterval(_0x34c84a);});});return Promise['all'](_0x4bbce6);})[_0x00d3('0x44')](function(_0x50956b){var _0x459b53=_0x50956b?util[_0x00d3('0x49')](_0x50956b,{'showHidden':![],'depth':null}):'';logger[_0x00d3('0x45')](_0x00d3('0x4a'),_0x459b53);});}module['exports']={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file