Built motion from commit 1ea47bf4.|2.6.34
[motion2.git] / server / api / cloudProvider / cloudProvider.oauth.js
index 7d778c6..e944e70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa26d=['findOne','refresh_token','data6','data4','decryptString','POST','data5','access_token','update','catch','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','intervals','bind','findAll','all','error','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','exports','crypto','jsonwebtoken','moment','ioredis','request-promise','util','../../components/encryptor','../../config/environment','../../config/logger','api','../../config/schedule/cloud-provider','../../mysqldb','redis','localhost','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','https://outlook.office.com/SMTP.Send','offline_access','/authorize','/token','type','push','/.default','join','Outlook365','Dynamics365','data7','replace','{TENANT_ID}','data2','code','from','base64','randomBytes','toString','hex','client_id','data1','redirect_uri','form_post','state','nonce','prompt','map','key','value','oauth2Claims','oauth2/','set','stringify','payload','aud','audience','isAfter','unix','exp','resolve','then','data3','CloudProvider'];(function(_0x9cdbe2,_0x5d2fa2){var _0x4e0f87=function(_0x224cc4){while(--_0x224cc4){_0x9cdbe2['push'](_0x9cdbe2['shift']());}};_0x4e0f87(++_0x5d2fa2);}(_0xa26d,0x108));var _0xda26=function(_0x5ef2b7,_0xfec6f9){_0x5ef2b7=_0x5ef2b7-0x0;var _0x1c5ef4=_0xa26d[_0x5ef2b7];return _0x1c5ef4;};'use strict';var _=require('lodash');var crypto=require(_0xda26('0x0'));var jwt=require(_0xda26('0x1'));var moment=require(_0xda26('0x2'));var Redis=require(_0xda26('0x3'));var rp=require(_0xda26('0x4'));var util=require(_0xda26('0x5'));var encryptor=require(_0xda26('0x6'));var config=require(_0xda26('0x7'));var logger=require(_0xda26('0x8'))(_0xda26('0x9'));var schedule=require(_0xda26('0xa'));var db=require(_0xda26('0xb'))['db'];config[_0xda26('0xc')]=_['defaults'](config[_0xda26('0xc')],{'host':_0xda26('0xd'),'port':0x18eb});var redis=new Redis(config[_0xda26('0xc')]);var MICROSOFT_AUTH_URL=_0xda26('0xe');var AZURE_AUTH_SCOPES={'Outlook365':[_0xda26('0xf'),_0xda26('0x10'),_0xda26('0x11'),'offline_access',_0xda26('0x12'),_0xda26('0x13'),_0xda26('0x14')],'Dynamics365':[_0xda26('0xf'),_0xda26('0x15')]};var MICROSOFT_AUTH_ENDPOINT=_0xda26('0x16');var MICROSOFT_TOKEN_ENDPOINT=_0xda26('0x17');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0xf832b2){var _0x3fb91f=_['map'](AZURE_AUTH_SCOPES[_0xf832b2[_0xda26('0x18')]]);if(_0xf832b2[_0xda26('0x18')]==='Dynamics365')_0x3fb91f[_0xda26('0x19')](_0xf832b2['data7']+_0xda26('0x1a'));return _0x3fb91f[_0xda26('0x1b')]('\x20');}function getAccessTokenScope(_0xe60e1){if(_0xe60e1['type']===_0xda26('0x1c'))return _0xda26('0x12');if(_0xe60e1[_0xda26('0x18')]===_0xda26('0x1d'))return _0xe60e1[_0xda26('0x1e')]+_0xda26('0x1a');}function generateMicrosoftAuthorizationUrl(_0x3d6434,_0x94274d){var _0x439410=MICROSOFT_AUTH_URL[_0xda26('0x1f')](_0xda26('0x20'),_0x3d6434[_0xda26('0x21')]);var _0x2ca64c=[_0xda26('0x22'),'id_token'];var _0xc6f7d8=Buffer[_0xda26('0x23')](JSON['stringify']({'id':_0x94274d}))['toString'](_0xda26('0x24'));var _0x282383=crypto[_0xda26('0x25')](0x10)[_0xda26('0x26')](_0xda26('0x27'));var _0x41bb92=getAuthorizationScopes(_0x3d6434);var _0x1f4a00=[{'key':_0xda26('0x28'),'value':_0x3d6434[_0xda26('0x29')]},{'key':'response_type','value':encodeURIComponent(_0x2ca64c[_0xda26('0x1b')]('\x20'))},{'key':_0xda26('0x2a'),'value':_0x3d6434['data4']},{'key':'response_mode','value':_0xda26('0x2b')},{'key':'scope','value':encodeURIComponent(_0x41bb92)},{'key':_0xda26('0x2c'),'value':_0xc6f7d8},{'key':_0xda26('0x2d'),'value':_0x282383},{'key':_0xda26('0x2e'),'value':'login'}];var _0x88e17d=_0x439410+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0xda26('0x2f')](_0x1f4a00,function(_0x2e2add){return _0x2e2add[_0xda26('0x30')]+'='+_0x2e2add[_0xda26('0x31')];})[_0xda26('0x1b')]('&');_0x3d6434[_0xda26('0x32')]={'issuer':_0x439410[_0xda26('0x1f')](_0xda26('0x33'),''),'audience':_0x3d6434[_0xda26('0x29')],'state':_0xc6f7d8,'nonce':_0x282383};redis[_0xda26('0x34')](_0xc6f7d8,JSON[_0xda26('0x35')](_0x3d6434));return _0x88e17d;}function isValidIdToken(_0x4c6972,_0x46ef95){try{var _0x422a7b=jwt['decode'](_0x4c6972,{'complete':!![]});var _0x2949d3=_0x422a7b[_0xda26('0x36')];if(_0x2949d3['iss']!==_0x46ef95['issuer'])return![];if(_0x2949d3[_0xda26('0x37')]!==_0x46ef95[_0xda26('0x38')])return![];if(_0x2949d3[_0xda26('0x2d')]!==_0x46ef95[_0xda26('0x2d')])return![];if(moment()[_0xda26('0x39')](moment[_0xda26('0x3a')](_0x2949d3[_0xda26('0x3b')])))return![];return!![];}catch(_0x404abe){throw _0x404abe;}}function refreshOauth2MicrosoftAccessToken(_0x4b1d89){return Promise[_0xda26('0x3c')]()[_0xda26('0x3d')](function(){if(_0x4b1d89[_0xda26('0x3e')])return _0x4b1d89;return db[_0xda26('0x3f')][_0xda26('0x40')]({'where':{'id':_0x4b1d89['id']},'raw':!![]});})[_0xda26('0x3d')](function(_0x4969b0){var _0x23cc98={'grant_type':_0xda26('0x41'),'refresh_token':_0x4969b0[_0xda26('0x42')],'scope':getAccessTokenScope(_0x4969b0),'redirect_uri':_0x4969b0[_0xda26('0x43')],'client_id':_0x4969b0[_0xda26('0x29')],'client_secret':encryptor[_0xda26('0x44')](_0x4969b0[_0xda26('0x3e')])};var _0x51ed92={'method':_0xda26('0x45'),'uri':MICROSOFT_AUTH_URL[_0xda26('0x1f')]('{TENANT_ID}',_0x4969b0[_0xda26('0x21')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x23cc98,'json':!![]};return rp(_0x51ed92);})['then'](function(_0x2f7eca){_0x4b1d89[_0xda26('0x46')]=_0x2f7eca[_0xda26('0x47')];_0x4b1d89[_0xda26('0x42')]=_0x2f7eca['refresh_token'];return db['CloudProvider'][_0xda26('0x48')]({'data5':_0x4b1d89[_0xda26('0x46')],'data6':_0x4b1d89[_0xda26('0x42')]},{'where':{'id':_0x4b1d89['id']}});})['then'](function(){return _0x4b1d89;})[_0xda26('0x49')](function(_0x15d0fb){logger['error'](_0xda26('0x4a'),_0x4b1d89['id'],_0x15d0fb);});}function getOauth2MicrosoftAccessToken(_0x50bb53,_0x2cc2c1){var _0x28273a={'grant_type':'authorization_code','code':_0x50bb53,'scope':getAccessTokenScope(_0x2cc2c1),'redirect_uri':_0x2cc2c1[_0xda26('0x43')],'client_id':_0x2cc2c1[_0xda26('0x29')],'client_secret':encryptor[_0xda26('0x44')](_0x2cc2c1['data3'])};var _0x557048={'method':_0xda26('0x45'),'uri':MICROSOFT_AUTH_URL[_0xda26('0x1f')]('{TENANT_ID}',_0x2cc2c1['data2'])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x28273a,'json':!![]};return rp(_0x557048);}function startRefreshInterval(_0x5726de){var _0x2f49dd=schedule[_0xda26('0x4b')];if(_0x2f49dd[_0x5726de['id']])clearInterval(_0x2f49dd[_0x5726de['id']]);_0x2f49dd[_0x5726de['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0xda26('0x4c')](this,{'id':_0x5726de['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0xda26('0x4b')]=_0x2f49dd;}function startAllRefreshIntervals(){return db[_0xda26('0x3f')][_0xda26('0x4d')]({'where':{'data6':{'$ne':null}},'raw':!![]})['then'](function(_0x45090f){var _0x52094f=_0x45090f[_0xda26('0x2f')](function(_0x24e86a){return refreshOauth2MicrosoftAccessToken(_0x24e86a)[_0xda26('0x3d')](function(_0x2797d5){startRefreshInterval(_0x2797d5);});});return Promise[_0xda26('0x4e')](_0x52094f);})[_0xda26('0x49')](function(_0x23d2a9){var _0x1b21b9=_0x23d2a9?util['inspect'](_0x23d2a9,{'showHidden':![],'depth':null}):'';logger[_0xda26('0x4f')](_0xda26('0x50'),_0x1b21b9);});}module[_0xda26('0x51')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
+var _0x8f3d=['stringify','base64','randomBytes','hex','client_id','response_type','redirect_uri','data4','form_post','scope','state','nonce','prompt','value','join','oauth2Claims','decode','payload','iss','issuer','aud','audience','isAfter','exp','resolve','then','data3','CloudProvider','refresh_token','data6','decryptString','POST','data5','update','catch','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','data1','bind','intervals','all','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','exports','crypto','jsonwebtoken','moment','ioredis','request-promise','util','../../components/encryptor','../../config/environment','api','../../config/schedule/cloud-provider','../../mysqldb','redis','defaults','openid','profile','email','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','offline_access','/authorize','/token','map','type','data7','/.default','Outlook365','replace','{TENANT_ID}','data2','code','id_token'];(function(_0x5676d3,_0x582062){var _0x573736=function(_0x3760bc){while(--_0x3760bc){_0x5676d3['push'](_0x5676d3['shift']());}};_0x573736(++_0x582062);}(_0x8f3d,0xbf));var _0xd8f3=function(_0x59617b,_0x3f3fbd){_0x59617b=_0x59617b-0x0;var _0xa9b90b=_0x8f3d[_0x59617b];return _0xa9b90b;};'use strict';var _=require('lodash');var crypto=require(_0xd8f3('0x0'));var jwt=require(_0xd8f3('0x1'));var moment=require(_0xd8f3('0x2'));var Redis=require(_0xd8f3('0x3'));var rp=require(_0xd8f3('0x4'));var util=require(_0xd8f3('0x5'));var encryptor=require(_0xd8f3('0x6'));var config=require(_0xd8f3('0x7'));var logger=require('../../config/logger')(_0xd8f3('0x8'));var schedule=require(_0xd8f3('0x9'));var db=require(_0xd8f3('0xa'))['db'];config[_0xd8f3('0xb')]=_[_0xd8f3('0xc')](config[_0xd8f3('0xb')],{'host':'localhost','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':[_0xd8f3('0xd'),_0xd8f3('0xe'),_0xd8f3('0xf'),'offline_access',_0xd8f3('0x10'),'https://outlook.office.com/POP.AccessAsUser.All',_0xd8f3('0x11')],'Dynamics365':[_0xd8f3('0xd'),_0xd8f3('0x12')]};var MICROSOFT_AUTH_ENDPOINT=_0xd8f3('0x13');var MICROSOFT_TOKEN_ENDPOINT=_0xd8f3('0x14');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x9a72fe){var _0x25e255=_[_0xd8f3('0x15')](AZURE_AUTH_SCOPES[_0x9a72fe['type']]);if(_0x9a72fe[_0xd8f3('0x16')]==='Dynamics365')_0x25e255['push'](_0x9a72fe[_0xd8f3('0x17')]+_0xd8f3('0x18'));return _0x25e255['join']('\x20');}function getAccessTokenScope(_0x186f33){if(_0x186f33[_0xd8f3('0x16')]===_0xd8f3('0x19'))return _0xd8f3('0x10');if(_0x186f33[_0xd8f3('0x16')]==='Dynamics365')return _0x186f33['data7']+_0xd8f3('0x18');}function generateMicrosoftAuthorizationUrl(_0x37f057,_0x41c4ec){var _0x11e56e=MICROSOFT_AUTH_URL[_0xd8f3('0x1a')](_0xd8f3('0x1b'),_0x37f057[_0xd8f3('0x1c')]);var _0xeac49f=[_0xd8f3('0x1d'),_0xd8f3('0x1e')];var _0x2c0a21=Buffer['from'](JSON[_0xd8f3('0x1f')]({'id':_0x41c4ec}))['toString'](_0xd8f3('0x20'));var _0xaa55e9=crypto[_0xd8f3('0x21')](0x10)['toString'](_0xd8f3('0x22'));var _0x3c94e6=getAuthorizationScopes(_0x37f057);var _0x396977=[{'key':_0xd8f3('0x23'),'value':_0x37f057['data1']},{'key':_0xd8f3('0x24'),'value':encodeURIComponent(_0xeac49f['join']('\x20'))},{'key':_0xd8f3('0x25'),'value':_0x37f057[_0xd8f3('0x26')]},{'key':'response_mode','value':_0xd8f3('0x27')},{'key':_0xd8f3('0x28'),'value':encodeURIComponent(_0x3c94e6)},{'key':_0xd8f3('0x29'),'value':_0x2c0a21},{'key':_0xd8f3('0x2a'),'value':_0xaa55e9},{'key':_0xd8f3('0x2b'),'value':'login'}];var _0x56e648=_0x11e56e+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0xd8f3('0x15')](_0x396977,function(_0x5c6e34){return _0x5c6e34['key']+'='+_0x5c6e34[_0xd8f3('0x2c')];})[_0xd8f3('0x2d')]('&');_0x37f057[_0xd8f3('0x2e')]={'issuer':_0x11e56e['replace']('oauth2/',''),'audience':_0x37f057['data1'],'state':_0x2c0a21,'nonce':_0xaa55e9};redis['set'](_0x2c0a21,JSON[_0xd8f3('0x1f')](_0x37f057));return _0x56e648;}function isValidIdToken(_0x213334,_0x2495d6){try{var _0x2ff04d=jwt[_0xd8f3('0x2f')](_0x213334,{'complete':!![]});var _0x21d598=_0x2ff04d[_0xd8f3('0x30')];if(_0x21d598[_0xd8f3('0x31')]!==_0x2495d6[_0xd8f3('0x32')])return![];if(_0x21d598[_0xd8f3('0x33')]!==_0x2495d6[_0xd8f3('0x34')])return![];if(_0x21d598['nonce']!==_0x2495d6['nonce'])return![];if(moment()[_0xd8f3('0x35')](moment['unix'](_0x21d598[_0xd8f3('0x36')])))return![];return!![];}catch(_0x2a39d0){throw _0x2a39d0;}}function refreshOauth2MicrosoftAccessToken(_0x4258da){return Promise[_0xd8f3('0x37')]()[_0xd8f3('0x38')](function(){if(_0x4258da[_0xd8f3('0x39')])return _0x4258da;return db[_0xd8f3('0x3a')]['findOne']({'where':{'id':_0x4258da['id']},'raw':!![]});})[_0xd8f3('0x38')](function(_0x4b76d8){var _0x341ad3={'grant_type':_0xd8f3('0x3b'),'refresh_token':_0x4b76d8[_0xd8f3('0x3c')],'scope':getAccessTokenScope(_0x4b76d8),'redirect_uri':_0x4b76d8[_0xd8f3('0x26')],'client_id':_0x4b76d8['data1'],'client_secret':encryptor[_0xd8f3('0x3d')](_0x4b76d8['data3'])};var _0x41e4bb={'method':_0xd8f3('0x3e'),'uri':MICROSOFT_AUTH_URL[_0xd8f3('0x1a')](_0xd8f3('0x1b'),_0x4b76d8[_0xd8f3('0x1c')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x341ad3,'json':!![]};return rp(_0x41e4bb);})[_0xd8f3('0x38')](function(_0x16c070){_0x4258da[_0xd8f3('0x3f')]=_0x16c070['access_token'];_0x4258da['data6']=_0x16c070[_0xd8f3('0x3b')];return db['CloudProvider'][_0xd8f3('0x40')]({'data5':_0x4258da[_0xd8f3('0x3f')],'data6':_0x4258da[_0xd8f3('0x3c')]},{'where':{'id':_0x4258da['id']}});})[_0xd8f3('0x38')](function(){return _0x4258da;})[_0xd8f3('0x41')](function(_0x44d2d9){logger[_0xd8f3('0x42')](_0xd8f3('0x43'),_0x4258da['id'],_0x44d2d9);});}function getOauth2MicrosoftAccessToken(_0x240a7f,_0x12b8d8){var _0x276d23={'grant_type':'authorization_code','code':_0x240a7f,'scope':getAccessTokenScope(_0x12b8d8),'redirect_uri':_0x12b8d8[_0xd8f3('0x26')],'client_id':_0x12b8d8[_0xd8f3('0x44')],'client_secret':encryptor[_0xd8f3('0x3d')](_0x12b8d8[_0xd8f3('0x39')])};var _0x4ac142={'method':_0xd8f3('0x3e'),'uri':MICROSOFT_AUTH_URL[_0xd8f3('0x1a')]('{TENANT_ID}',_0x12b8d8[_0xd8f3('0x1c')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x276d23,'json':!![]};return rp(_0x4ac142);}function startRefreshInterval(_0x45aa9d){var _0x4fbb6f=schedule['intervals'];if(_0x4fbb6f[_0x45aa9d['id']])clearInterval(_0x4fbb6f[_0x45aa9d['id']]);_0x4fbb6f[_0x45aa9d['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0xd8f3('0x45')](this,{'id':_0x45aa9d['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0xd8f3('0x46')]=_0x4fbb6f;}function startAllRefreshIntervals(){return db['CloudProvider']['findAll']({'where':{'data6':{'$ne':null}},'raw':!![]})['then'](function(_0x4678c7){var _0x1eeed4=_0x4678c7[_0xd8f3('0x15')](function(_0x15fa8c){return refreshOauth2MicrosoftAccessToken(_0x15fa8c)[_0xd8f3('0x38')](function(_0x10e7df){startRefreshInterval(_0x10e7df);});});return Promise[_0xd8f3('0x47')](_0x1eeed4);})['catch'](function(_0x48e457){var _0x5a06d9=_0x48e457?util['inspect'](_0x48e457,{'showHidden':![],'depth':null}):'';logger[_0xd8f3('0x42')](_0xd8f3('0x48'),_0x5a06d9);});}module[_0xd8f3('0x49')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file