Built motion from commit ecb45b58.|2.6.31
[motion2.git] / server / api / cloudProvider / cloudProvider.oauth.js
index e389dc5..c4c6306 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd11a=['response_type','redirect_uri','data4','response_mode','form_post','scope','state','nonce','key','value','oauth2/','set','decode','payload','iss','issuer','aud','audience','unix','exp','then','data3','CloudProvider','findOne','refresh_token','data6','decryptString','POST','data5','update','catch','authorization_code','intervals','all','inspect','error','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','exports','crypto','jsonwebtoken','moment','request-promise','util','../../components/encryptor','../../config/environment','../../config/logger','api','../../mysqldb','redis','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','type','Dynamics365','push','data7','/.default','join','Outlook365','replace','{TENANT_ID}','data2','code','from','stringify','toString','randomBytes','hex','client_id','data1'];(function(_0x2a597f,_0x19e010){var _0x2917d8=function(_0x58e509){while(--_0x58e509){_0x2a597f['push'](_0x2a597f['shift']());}};_0x2917d8(++_0x19e010);}(_0xd11a,0x156));var _0xad11=function(_0x4723df,_0x10910e){_0x4723df=_0x4723df-0x0;var _0x5d240d=_0xd11a[_0x4723df];return _0x5d240d;};'use strict';var _=require('lodash');var crypto=require(_0xad11('0x0'));var jwt=require(_0xad11('0x1'));var moment=require(_0xad11('0x2'));var Redis=require('ioredis');var rp=require(_0xad11('0x3'));var util=require(_0xad11('0x4'));var encryptor=require(_0xad11('0x5'));var config=require(_0xad11('0x6'));var logger=require(_0xad11('0x7'))(_0xad11('0x8'));var schedule=require('../../config/schedule/cloud-provider');var db=require(_0xad11('0x9'))['db'];config['redis']=_['defaults'](config[_0xad11('0xa')],{'host':'localhost','port':0x18eb});var redis=new Redis(config[_0xad11('0xa')]);var MICROSOFT_AUTH_URL='https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0';var AZURE_AUTH_SCOPES={'Outlook365':[_0xad11('0xb'),_0xad11('0xc'),_0xad11('0xd'),_0xad11('0xe'),_0xad11('0xf'),_0xad11('0x10'),_0xad11('0x11')],'Dynamics365':[_0xad11('0xb'),_0xad11('0xe')]};var MICROSOFT_AUTH_ENDPOINT='/authorize';var MICROSOFT_TOKEN_ENDPOINT=_0xad11('0x12');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x1c8c42){var _0x2e1e37=_[_0xad11('0x13')](AZURE_AUTH_SCOPES[_0x1c8c42[_0xad11('0x14')]]);if(_0x1c8c42[_0xad11('0x14')]===_0xad11('0x15'))_0x2e1e37[_0xad11('0x16')](_0x1c8c42[_0xad11('0x17')]+_0xad11('0x18'));return _0x2e1e37[_0xad11('0x19')]('\x20');}function getAccessTokenScope(_0x5527e9){if(_0x5527e9['type']===_0xad11('0x1a'))return _0xad11('0xf');if(_0x5527e9['type']===_0xad11('0x15'))return _0x5527e9[_0xad11('0x17')]+_0xad11('0x18');}function generateMicrosoftAuthorizationUrl(_0x4abb51,_0x3d8d99){var _0x19c6b6=MICROSOFT_AUTH_URL[_0xad11('0x1b')](_0xad11('0x1c'),_0x4abb51[_0xad11('0x1d')]);var _0x599dc1=[_0xad11('0x1e'),'id_token'];var _0x1470ec=Buffer[_0xad11('0x1f')](JSON[_0xad11('0x20')]({'id':_0x3d8d99}))[_0xad11('0x21')]('base64');var _0x571b05=crypto[_0xad11('0x22')](0x10)[_0xad11('0x21')](_0xad11('0x23'));var _0x296b75=getAuthorizationScopes(_0x4abb51);var _0x1abaf0=[{'key':_0xad11('0x24'),'value':_0x4abb51[_0xad11('0x25')]},{'key':_0xad11('0x26'),'value':encodeURIComponent(_0x599dc1[_0xad11('0x19')]('\x20'))},{'key':_0xad11('0x27'),'value':_0x4abb51[_0xad11('0x28')]},{'key':_0xad11('0x29'),'value':_0xad11('0x2a')},{'key':_0xad11('0x2b'),'value':encodeURIComponent(_0x296b75)},{'key':_0xad11('0x2c'),'value':_0x1470ec},{'key':_0xad11('0x2d'),'value':_0x571b05},{'key':'prompt','value':'login'}];var _0x4e218a=_0x19c6b6+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0xad11('0x13')](_0x1abaf0,function(_0x13d468){return _0x13d468[_0xad11('0x2e')]+'='+_0x13d468[_0xad11('0x2f')];})[_0xad11('0x19')]('&');_0x4abb51['oauth2Claims']={'issuer':_0x19c6b6['replace'](_0xad11('0x30'),''),'audience':_0x4abb51[_0xad11('0x25')],'state':_0x1470ec,'nonce':_0x571b05};redis[_0xad11('0x31')](_0x1470ec,JSON[_0xad11('0x20')](_0x4abb51));return _0x4e218a;}function isValidIdToken(_0x516087,_0x88d71a){try{var _0x25b73c=jwt[_0xad11('0x32')](_0x516087,{'complete':!![]});var _0x3294bd=_0x25b73c[_0xad11('0x33')];if(_0x3294bd[_0xad11('0x34')]!==_0x88d71a[_0xad11('0x35')])return![];if(_0x3294bd[_0xad11('0x36')]!==_0x88d71a[_0xad11('0x37')])return![];if(_0x3294bd[_0xad11('0x2d')]!==_0x88d71a[_0xad11('0x2d')])return![];if(moment()['isAfter'](moment[_0xad11('0x38')](_0x3294bd[_0xad11('0x39')])))return![];return!![];}catch(_0x3cb58d){throw _0x3cb58d;}}function refreshOauth2MicrosoftAccessToken(_0x1b2397){return Promise['resolve']()[_0xad11('0x3a')](function(){if(_0x1b2397[_0xad11('0x3b')])return _0x1b2397;return db[_0xad11('0x3c')][_0xad11('0x3d')]({'where':{'id':_0x1b2397['id']},'raw':!![]});})['then'](function(_0x54518c){var _0x10e062={'grant_type':_0xad11('0x3e'),'refresh_token':_0x54518c[_0xad11('0x3f')],'scope':getAccessTokenScope(_0x54518c),'redirect_uri':_0x54518c[_0xad11('0x28')],'client_id':_0x54518c[_0xad11('0x25')],'client_secret':encryptor[_0xad11('0x40')](_0x54518c[_0xad11('0x3b')])};var _0x55de40={'method':_0xad11('0x41'),'uri':MICROSOFT_AUTH_URL[_0xad11('0x1b')](_0xad11('0x1c'),_0x54518c['data2'])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x10e062,'json':!![]};return rp(_0x55de40);})[_0xad11('0x3a')](function(_0x255315){_0x1b2397[_0xad11('0x42')]=_0x255315['access_token'];_0x1b2397['data6']=_0x255315['refresh_token'];return db[_0xad11('0x3c')][_0xad11('0x43')]({'data5':_0x1b2397[_0xad11('0x42')],'data6':_0x1b2397[_0xad11('0x3f')]},{'where':{'id':_0x1b2397['id']}});})[_0xad11('0x3a')](function(){return _0x1b2397;})[_0xad11('0x44')](function(_0x2364f8){logger['error']('Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s',_0x1b2397['id'],_0x2364f8);});}function getOauth2MicrosoftAccessToken(_0x1d21a1,_0x4ba858){var _0x391f03={'grant_type':_0xad11('0x45'),'code':_0x1d21a1,'scope':getAccessTokenScope(_0x4ba858),'redirect_uri':_0x4ba858[_0xad11('0x28')],'client_id':_0x4ba858['data1'],'client_secret':encryptor['decryptString'](_0x4ba858['data3'])};var _0x1490c1={'method':_0xad11('0x41'),'uri':MICROSOFT_AUTH_URL['replace'](_0xad11('0x1c'),_0x4ba858['data2'])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x391f03,'json':!![]};return rp(_0x1490c1);}function startRefreshInterval(_0x2643b8){var _0x244fbd=schedule['intervals'];if(_0x244fbd[_0x2643b8['id']])clearInterval(_0x244fbd[_0x2643b8['id']]);_0x244fbd[_0x2643b8['id']]=setInterval(refreshOauth2MicrosoftAccessToken['bind'](this,{'id':_0x2643b8['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0xad11('0x46')]=_0x244fbd;}function startAllRefreshIntervals(){return db[_0xad11('0x3c')]['findAll']({'where':{'data6':{'$ne':null}},'raw':!![]})['then'](function(_0x5c94eb){var _0x40d6f6=_0x5c94eb[_0xad11('0x13')](function(_0x5ab9bf){return refreshOauth2MicrosoftAccessToken(_0x5ab9bf)[_0xad11('0x3a')](function(_0x51e798){startRefreshInterval(_0x51e798);});});return Promise[_0xad11('0x47')](_0x40d6f6);})[_0xad11('0x44')](function(_0x54ba61){var _0x30dcd1=_0x54ba61?util[_0xad11('0x48')](_0x54ba61,{'showHidden':![],'depth':null}):'';logger[_0xad11('0x49')](_0xad11('0x4a'),_0x30dcd1);});}module[_0xad11('0x4b')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
+var _0xa23f=['../../components/encryptor','../../config/environment','../../config/logger','api','../../config/schedule/cloud-provider','../../mysqldb','redis','defaults','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','openid','profile','email','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All','/authorize','/token','type','data7','/.default','join','Outlook365','Dynamics365','replace','{TENANT_ID}','data2','code','id_token','from','stringify','base64','randomBytes','toString','hex','client_id','data1','redirect_uri','data4','response_mode','form_post','scope','state','prompt','login','oauth2Claims','oauth2/','set','decode','payload','issuer','aud','nonce','isAfter','unix','data3','CloudProvider','findOne','then','data6','decryptString','data5','access_token','refresh_token','update','catch','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','POST','intervals','bind','map','all','error','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','lodash','crypto','jsonwebtoken','moment','ioredis','request-promise','util'];(function(_0x578094,_0x58de20){var _0x3901c8=function(_0x46693b){while(--_0x46693b){_0x578094['push'](_0x578094['shift']());}};_0x3901c8(++_0x58de20);}(_0xa23f,0x189));var _0xfa23=function(_0x5f4275,_0x21da82){_0x5f4275=_0x5f4275-0x0;var _0x23e065=_0xa23f[_0x5f4275];return _0x23e065;};'use strict';var _=require(_0xfa23('0x0'));var crypto=require(_0xfa23('0x1'));var jwt=require(_0xfa23('0x2'));var moment=require(_0xfa23('0x3'));var Redis=require(_0xfa23('0x4'));var rp=require(_0xfa23('0x5'));var util=require(_0xfa23('0x6'));var encryptor=require(_0xfa23('0x7'));var config=require(_0xfa23('0x8'));var logger=require(_0xfa23('0x9'))(_0xfa23('0xa'));var schedule=require(_0xfa23('0xb'));var db=require(_0xfa23('0xc'))['db'];config[_0xfa23('0xd')]=_[_0xfa23('0xe')](config['redis'],{'host':'localhost','port':0x18eb});var redis=new Redis(config['redis']);var MICROSOFT_AUTH_URL=_0xfa23('0xf');var AZURE_AUTH_SCOPES={'Outlook365':[_0xfa23('0x10'),_0xfa23('0x11'),_0xfa23('0x12'),'offline_access',_0xfa23('0x13'),_0xfa23('0x14'),'https://outlook.office.com/SMTP.Send'],'Dynamics365':['openid','offline_access']};var MICROSOFT_AUTH_ENDPOINT=_0xfa23('0x15');var MICROSOFT_TOKEN_ENDPOINT=_0xfa23('0x16');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x39a36e){var _0x869630=_['map'](AZURE_AUTH_SCOPES[_0x39a36e[_0xfa23('0x17')]]);if(_0x39a36e['type']==='Dynamics365')_0x869630['push'](_0x39a36e[_0xfa23('0x18')]+_0xfa23('0x19'));return _0x869630[_0xfa23('0x1a')]('\x20');}function getAccessTokenScope(_0x3aead2){if(_0x3aead2[_0xfa23('0x17')]===_0xfa23('0x1b'))return _0xfa23('0x13');if(_0x3aead2[_0xfa23('0x17')]===_0xfa23('0x1c'))return _0x3aead2[_0xfa23('0x18')]+_0xfa23('0x19');}function generateMicrosoftAuthorizationUrl(_0x12b254,_0xdf0ab3){var _0x92b0a2=MICROSOFT_AUTH_URL[_0xfa23('0x1d')](_0xfa23('0x1e'),_0x12b254[_0xfa23('0x1f')]);var _0x40b06c=[_0xfa23('0x20'),_0xfa23('0x21')];var _0x5ef013=Buffer[_0xfa23('0x22')](JSON[_0xfa23('0x23')]({'id':_0xdf0ab3}))['toString'](_0xfa23('0x24'));var _0x22fdad=crypto[_0xfa23('0x25')](0x10)[_0xfa23('0x26')](_0xfa23('0x27'));var _0x5ee24b=getAuthorizationScopes(_0x12b254);var _0x3e1781=[{'key':_0xfa23('0x28'),'value':_0x12b254[_0xfa23('0x29')]},{'key':'response_type','value':encodeURIComponent(_0x40b06c[_0xfa23('0x1a')]('\x20'))},{'key':_0xfa23('0x2a'),'value':_0x12b254[_0xfa23('0x2b')]},{'key':_0xfa23('0x2c'),'value':_0xfa23('0x2d')},{'key':_0xfa23('0x2e'),'value':encodeURIComponent(_0x5ee24b)},{'key':_0xfa23('0x2f'),'value':_0x5ef013},{'key':'nonce','value':_0x22fdad},{'key':_0xfa23('0x30'),'value':_0xfa23('0x31')}];var _0x5f3a48=_0x92b0a2+MICROSOFT_AUTH_ENDPOINT+'?'+_['map'](_0x3e1781,function(_0x473eb3){return _0x473eb3['key']+'='+_0x473eb3['value'];})[_0xfa23('0x1a')]('&');_0x12b254[_0xfa23('0x32')]={'issuer':_0x92b0a2[_0xfa23('0x1d')](_0xfa23('0x33'),''),'audience':_0x12b254[_0xfa23('0x29')],'state':_0x5ef013,'nonce':_0x22fdad};redis[_0xfa23('0x34')](_0x5ef013,JSON['stringify'](_0x12b254));return _0x5f3a48;}function isValidIdToken(_0x255bef,_0x411fc7){try{var _0x398a0b=jwt[_0xfa23('0x35')](_0x255bef,{'complete':!![]});var _0x2327f4=_0x398a0b[_0xfa23('0x36')];if(_0x2327f4['iss']!==_0x411fc7[_0xfa23('0x37')])return![];if(_0x2327f4[_0xfa23('0x38')]!==_0x411fc7['audience'])return![];if(_0x2327f4['nonce']!==_0x411fc7[_0xfa23('0x39')])return![];if(moment()[_0xfa23('0x3a')](moment[_0xfa23('0x3b')](_0x2327f4['exp'])))return![];return!![];}catch(_0x26241a){throw _0x26241a;}}function refreshOauth2MicrosoftAccessToken(_0xae3e1){return Promise['resolve']()['then'](function(){if(_0xae3e1[_0xfa23('0x3c')])return _0xae3e1;return db[_0xfa23('0x3d')][_0xfa23('0x3e')]({'where':{'id':_0xae3e1['id']},'raw':!![]});})[_0xfa23('0x3f')](function(_0x445feb){var _0x19c170={'grant_type':'refresh_token','refresh_token':_0x445feb[_0xfa23('0x40')],'scope':getAccessTokenScope(_0x445feb),'redirect_uri':_0x445feb['data4'],'client_id':_0x445feb[_0xfa23('0x29')],'client_secret':encryptor[_0xfa23('0x41')](_0x445feb[_0xfa23('0x3c')])};var _0x3c855c={'method':'POST','uri':MICROSOFT_AUTH_URL['replace']('{TENANT_ID}',_0x445feb[_0xfa23('0x1f')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x19c170,'json':!![]};return rp(_0x3c855c);})[_0xfa23('0x3f')](function(_0x1cc8ad){_0xae3e1[_0xfa23('0x42')]=_0x1cc8ad[_0xfa23('0x43')];_0xae3e1[_0xfa23('0x40')]=_0x1cc8ad[_0xfa23('0x44')];return db[_0xfa23('0x3d')][_0xfa23('0x45')]({'data5':_0xae3e1[_0xfa23('0x42')],'data6':_0xae3e1[_0xfa23('0x40')]},{'where':{'id':_0xae3e1['id']}});})[_0xfa23('0x3f')](function(){return _0xae3e1;})[_0xfa23('0x46')](function(_0x537c2f){logger['error'](_0xfa23('0x47'),_0xae3e1['id'],_0x537c2f);});}function getOauth2MicrosoftAccessToken(_0x1d9ae5,_0x5eb9f0){var _0x3df440={'grant_type':_0xfa23('0x48'),'code':_0x1d9ae5,'scope':getAccessTokenScope(_0x5eb9f0),'redirect_uri':_0x5eb9f0[_0xfa23('0x2b')],'client_id':_0x5eb9f0['data1'],'client_secret':encryptor[_0xfa23('0x41')](_0x5eb9f0['data3'])};var _0x585d80={'method':_0xfa23('0x49'),'uri':MICROSOFT_AUTH_URL[_0xfa23('0x1d')](_0xfa23('0x1e'),_0x5eb9f0[_0xfa23('0x1f')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x3df440,'json':!![]};return rp(_0x585d80);}function startRefreshInterval(_0x37fe8b){var _0x14ebb7=schedule[_0xfa23('0x4a')];if(_0x14ebb7[_0x37fe8b['id']])clearInterval(_0x14ebb7[_0x37fe8b['id']]);_0x14ebb7[_0x37fe8b['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0xfa23('0x4b')](this,{'id':_0x37fe8b['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0xfa23('0x4a')]=_0x14ebb7;}function startAllRefreshIntervals(){return db[_0xfa23('0x3d')]['findAll']({'where':{'data6':{'$ne':null}},'raw':!![]})[_0xfa23('0x3f')](function(_0x23f07d){var _0x4d9850=_0x23f07d[_0xfa23('0x4c')](function(_0x3c25a4){return refreshOauth2MicrosoftAccessToken(_0x3c25a4)[_0xfa23('0x3f')](function(_0x454a7c){startRefreshInterval(_0x454a7c);});});return Promise[_0xfa23('0x4d')](_0x4d9850);})[_0xfa23('0x46')](function(_0x1cfa7e){var _0x49ce9a=_0x1cfa7e?util['inspect'](_0x1cfa7e,{'showHidden':![],'depth':null}):'';logger[_0xfa23('0x4e')](_0xfa23('0x4f'),_0x49ce9a);});}module['exports']={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file