Built motion from commit ff426b3f.|2.6.29
[motion2.git] / server / api / cloudProvider / cloudProvider.oauth.js
index 2ace7d9..d5e5787 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6007=['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','map','Dynamics365','push','data7','/.default','join','type','Outlook365','{TENANT_ID}','data2','code','id_token','from','stringify','toString','base64','randomBytes','hex','data1','redirect_uri','data4','scope','state','nonce','login','key','oauth2Claims','replace','oauth2/','decode','payload','issuer','aud','resolve','then','CloudProvider','findOne','refresh_token','decryptString','data3','POST','data5','access_token','data6','error','authorization_code','intervals','bind','findAll','catch','inspect','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','exports','lodash','jsonwebtoken','moment','request-promise','util','../../components/encryptor','../../config/environment','../../config/logger','api','../../config/schedule/cloud-provider','../../mysqldb','redis','defaults','localhost','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0'];(function(_0x1d103e,_0x58fbe1){var _0x429026=function(_0x34c60e){while(--_0x34c60e){_0x1d103e['push'](_0x1d103e['shift']());}};_0x429026(++_0x58fbe1);}(_0x6007,0x168));var _0x7600=function(_0x1573ea,_0x434f02){_0x1573ea=_0x1573ea-0x0;var _0x51c0e2=_0x6007[_0x1573ea];return _0x51c0e2;};'use strict';var _=require(_0x7600('0x0'));var crypto=require('crypto');var jwt=require(_0x7600('0x1'));var moment=require(_0x7600('0x2'));var Redis=require('ioredis');var rp=require(_0x7600('0x3'));var util=require(_0x7600('0x4'));var encryptor=require(_0x7600('0x5'));var config=require(_0x7600('0x6'));var logger=require(_0x7600('0x7'))(_0x7600('0x8'));var schedule=require(_0x7600('0x9'));var db=require(_0x7600('0xa'))['db'];config[_0x7600('0xb')]=_[_0x7600('0xc')](config[_0x7600('0xb')],{'host':_0x7600('0xd'),'port':0x18eb});var redis=new Redis(config[_0x7600('0xb')]);var MICROSOFT_AUTH_URL=_0x7600('0xe');var AZURE_AUTH_SCOPES={'Outlook365':[_0x7600('0xf'),_0x7600('0x10'),_0x7600('0x11'),_0x7600('0x12'),_0x7600('0x13'),_0x7600('0x14'),_0x7600('0x15')],'Dynamics365':[_0x7600('0xf'),_0x7600('0x12')]};var MICROSOFT_AUTH_ENDPOINT='/authorize';var MICROSOFT_TOKEN_ENDPOINT='/token';var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x33d21f){var _0x22dc93=_[_0x7600('0x16')](AZURE_AUTH_SCOPES[_0x33d21f['type']]);if(_0x33d21f['type']===_0x7600('0x17'))_0x22dc93[_0x7600('0x18')](_0x33d21f[_0x7600('0x19')]+_0x7600('0x1a'));return _0x22dc93[_0x7600('0x1b')]('\x20');}function getAccessTokenScope(_0x34ad9f){if(_0x34ad9f[_0x7600('0x1c')]===_0x7600('0x1d'))return _0x7600('0x13');if(_0x34ad9f[_0x7600('0x1c')]==='Dynamics365')return _0x34ad9f[_0x7600('0x19')]+_0x7600('0x1a');}function generateMicrosoftAuthorizationUrl(_0x1cf026,_0x52323f){var _0x1c9123=MICROSOFT_AUTH_URL['replace'](_0x7600('0x1e'),_0x1cf026[_0x7600('0x1f')]);var _0x3dcf2b=[_0x7600('0x20'),_0x7600('0x21')];var _0x249b29=Buffer[_0x7600('0x22')](JSON[_0x7600('0x23')]({'id':_0x52323f}))[_0x7600('0x24')](_0x7600('0x25'));var _0x558963=crypto[_0x7600('0x26')](0x10)[_0x7600('0x24')](_0x7600('0x27'));var _0x4f3182=getAuthorizationScopes(_0x1cf026);var _0x2fa36c=[{'key':'client_id','value':_0x1cf026[_0x7600('0x28')]},{'key':'response_type','value':encodeURIComponent(_0x3dcf2b[_0x7600('0x1b')]('\x20'))},{'key':_0x7600('0x29'),'value':_0x1cf026[_0x7600('0x2a')]},{'key':'response_mode','value':'form_post'},{'key':_0x7600('0x2b'),'value':encodeURIComponent(_0x4f3182)},{'key':_0x7600('0x2c'),'value':_0x249b29},{'key':_0x7600('0x2d'),'value':_0x558963},{'key':'prompt','value':_0x7600('0x2e')}];var _0x474a2d=_0x1c9123+MICROSOFT_AUTH_ENDPOINT+'?'+_['map'](_0x2fa36c,function(_0x133c39){return _0x133c39[_0x7600('0x2f')]+'='+_0x133c39['value'];})['join']('&');_0x1cf026[_0x7600('0x30')]={'issuer':_0x1c9123[_0x7600('0x31')](_0x7600('0x32'),''),'audience':_0x1cf026[_0x7600('0x28')],'state':_0x249b29,'nonce':_0x558963};redis['set'](_0x249b29,JSON['stringify'](_0x1cf026));return _0x474a2d;}function isValidIdToken(_0x1c221d,_0x4d65e2){try{var _0x29d508=jwt[_0x7600('0x33')](_0x1c221d,{'complete':!![]});var _0x1c3a58=_0x29d508[_0x7600('0x34')];if(_0x1c3a58['iss']!==_0x4d65e2[_0x7600('0x35')])return![];if(_0x1c3a58[_0x7600('0x36')]!==_0x4d65e2['audience'])return![];if(_0x1c3a58[_0x7600('0x2d')]!==_0x4d65e2[_0x7600('0x2d')])return![];if(moment()['isAfter'](moment['unix'](_0x1c3a58['exp'])))return![];return!![];}catch(_0x3029bb){throw _0x3029bb;}}function refreshOauth2MicrosoftAccessToken(_0x55d806){return Promise[_0x7600('0x37')]()[_0x7600('0x38')](function(){if(_0x55d806['data3'])return _0x55d806;return db[_0x7600('0x39')][_0x7600('0x3a')]({'where':{'id':_0x55d806['id']},'raw':!![]});})['then'](function(_0x3f51ed){var _0x4cd269={'grant_type':_0x7600('0x3b'),'refresh_token':_0x3f51ed['data6'],'scope':getAccessTokenScope(_0x3f51ed),'redirect_uri':_0x3f51ed[_0x7600('0x2a')],'client_id':_0x3f51ed['data1'],'client_secret':encryptor[_0x7600('0x3c')](_0x3f51ed[_0x7600('0x3d')])};var _0x69fa3a={'method':_0x7600('0x3e'),'uri':MICROSOFT_AUTH_URL[_0x7600('0x31')](_0x7600('0x1e'),_0x3f51ed[_0x7600('0x1f')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x4cd269,'json':!![]};return rp(_0x69fa3a);})[_0x7600('0x38')](function(_0x17a2cc){_0x55d806[_0x7600('0x3f')]=_0x17a2cc[_0x7600('0x40')];_0x55d806[_0x7600('0x41')]=_0x17a2cc['refresh_token'];return db[_0x7600('0x39')]['update']({'data5':_0x55d806['data5'],'data6':_0x55d806[_0x7600('0x41')]},{'where':{'id':_0x55d806['id']}});})[_0x7600('0x38')](function(){return _0x55d806;})['catch'](function(_0x25a0d7){logger[_0x7600('0x42')]('Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s',_0x55d806['id'],_0x25a0d7);});}function getOauth2MicrosoftAccessToken(_0x1b37b3,_0x2ebefd){var _0xa5901b={'grant_type':_0x7600('0x43'),'code':_0x1b37b3,'scope':getAccessTokenScope(_0x2ebefd),'redirect_uri':_0x2ebefd[_0x7600('0x2a')],'client_id':_0x2ebefd[_0x7600('0x28')],'client_secret':encryptor[_0x7600('0x3c')](_0x2ebefd['data3'])};var _0x27a998={'method':_0x7600('0x3e'),'uri':MICROSOFT_AUTH_URL[_0x7600('0x31')]('{TENANT_ID}',_0x2ebefd[_0x7600('0x1f')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0xa5901b,'json':!![]};return rp(_0x27a998);}function startRefreshInterval(_0x256314){var _0x14e51a=schedule[_0x7600('0x44')];if(_0x14e51a[_0x256314['id']])clearInterval(_0x14e51a[_0x256314['id']]);_0x14e51a[_0x256314['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0x7600('0x45')](this,{'id':_0x256314['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0x7600('0x44')]=_0x14e51a;}function startAllRefreshIntervals(){return db[_0x7600('0x39')][_0x7600('0x46')]({'where':{'data6':{'$ne':null}},'raw':!![]})['then'](function(_0xb73be3){var _0x55597d=_0xb73be3[_0x7600('0x16')](function(_0x537abc){return refreshOauth2MicrosoftAccessToken(_0x537abc)[_0x7600('0x38')](function(_0x5675b1){startRefreshInterval(_0x5675b1);});});return Promise['all'](_0x55597d);})[_0x7600('0x47')](function(_0x3ec3fb){var _0x2221f6=_0x3ec3fb?util[_0x7600('0x48')](_0x3ec3fb,{'showHidden':![],'depth':null}):'';logger[_0x7600('0x42')](_0x7600('0x49'),_0x2221f6);});}module[_0x7600('0x4a')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
+var _0x4c4b=['data6','data4','decryptString','POST','data2','data5','access_token','update','catch','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','intervals','bind','all','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','lodash','crypto','jsonwebtoken','ioredis','request-promise','util','../../components/encryptor','../../config/environment','api','../../config/schedule/cloud-provider','redis','defaults','localhost','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','profile','offline_access','https://outlook.office365.com/IMAP.AccessAsUser.All','openid','map','type','Dynamics365','push','data7','/.default','join','Outlook365','replace','{TENANT_ID}','code','id_token','from','toString','base64','hex','data1','redirect_uri','response_mode','form_post','scope','state','nonce','prompt','login','oauth2Claims','decode','payload','iss','issuer','audience','exp','resolve','then','data3','CloudProvider','findOne','refresh_token'];(function(_0x411017,_0x4a8117){var _0x2adeea=function(_0x545222){while(--_0x545222){_0x411017['push'](_0x411017['shift']());}};_0x2adeea(++_0x4a8117);}(_0x4c4b,0x130));var _0xb4c4=function(_0x13843f,_0x50422d){_0x13843f=_0x13843f-0x0;var _0x1063ae=_0x4c4b[_0x13843f];return _0x1063ae;};'use strict';var _=require(_0xb4c4('0x0'));var crypto=require(_0xb4c4('0x1'));var jwt=require(_0xb4c4('0x2'));var moment=require('moment');var Redis=require(_0xb4c4('0x3'));var rp=require(_0xb4c4('0x4'));var util=require(_0xb4c4('0x5'));var encryptor=require(_0xb4c4('0x6'));var config=require(_0xb4c4('0x7'));var logger=require('../../config/logger')(_0xb4c4('0x8'));var schedule=require(_0xb4c4('0x9'));var db=require('../../mysqldb')['db'];config[_0xb4c4('0xa')]=_[_0xb4c4('0xb')](config[_0xb4c4('0xa')],{'host':_0xb4c4('0xc'),'port':0x18eb});var redis=new Redis(config['redis']);var MICROSOFT_AUTH_URL=_0xb4c4('0xd');var AZURE_AUTH_SCOPES={'Outlook365':['openid',_0xb4c4('0xe'),'email',_0xb4c4('0xf'),_0xb4c4('0x10'),'https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send'],'Dynamics365':[_0xb4c4('0x11'),_0xb4c4('0xf')]};var MICROSOFT_AUTH_ENDPOINT='/authorize';var MICROSOFT_TOKEN_ENDPOINT='/token';var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x4b9189){var _0x552db5=_[_0xb4c4('0x12')](AZURE_AUTH_SCOPES[_0x4b9189[_0xb4c4('0x13')]]);if(_0x4b9189[_0xb4c4('0x13')]===_0xb4c4('0x14'))_0x552db5[_0xb4c4('0x15')](_0x4b9189[_0xb4c4('0x16')]+_0xb4c4('0x17'));return _0x552db5[_0xb4c4('0x18')]('\x20');}function getAccessTokenScope(_0x1ea7aa){if(_0x1ea7aa[_0xb4c4('0x13')]===_0xb4c4('0x19'))return _0xb4c4('0x10');if(_0x1ea7aa[_0xb4c4('0x13')]===_0xb4c4('0x14'))return _0x1ea7aa[_0xb4c4('0x16')]+_0xb4c4('0x17');}function generateMicrosoftAuthorizationUrl(_0x115d2d,_0xe9f8e1){var _0x1afce8=MICROSOFT_AUTH_URL[_0xb4c4('0x1a')](_0xb4c4('0x1b'),_0x115d2d['data2']);var _0x1031f0=[_0xb4c4('0x1c'),_0xb4c4('0x1d')];var _0x264a8a=Buffer[_0xb4c4('0x1e')](JSON['stringify']({'id':_0xe9f8e1}))[_0xb4c4('0x1f')](_0xb4c4('0x20'));var _0x4bee66=crypto['randomBytes'](0x10)[_0xb4c4('0x1f')](_0xb4c4('0x21'));var _0x33c6c6=getAuthorizationScopes(_0x115d2d);var _0x1a73f2=[{'key':'client_id','value':_0x115d2d[_0xb4c4('0x22')]},{'key':'response_type','value':encodeURIComponent(_0x1031f0[_0xb4c4('0x18')]('\x20'))},{'key':_0xb4c4('0x23'),'value':_0x115d2d['data4']},{'key':_0xb4c4('0x24'),'value':_0xb4c4('0x25')},{'key':_0xb4c4('0x26'),'value':encodeURIComponent(_0x33c6c6)},{'key':_0xb4c4('0x27'),'value':_0x264a8a},{'key':_0xb4c4('0x28'),'value':_0x4bee66},{'key':_0xb4c4('0x29'),'value':_0xb4c4('0x2a')}];var _0x5c51b6=_0x1afce8+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0xb4c4('0x12')](_0x1a73f2,function(_0x54e026){return _0x54e026['key']+'='+_0x54e026['value'];})[_0xb4c4('0x18')]('&');_0x115d2d[_0xb4c4('0x2b')]={'issuer':_0x1afce8[_0xb4c4('0x1a')]('oauth2/',''),'audience':_0x115d2d[_0xb4c4('0x22')],'state':_0x264a8a,'nonce':_0x4bee66};redis['set'](_0x264a8a,JSON['stringify'](_0x115d2d));return _0x5c51b6;}function isValidIdToken(_0x4e2a0d,_0x2f66cc){try{var _0x608c06=jwt[_0xb4c4('0x2c')](_0x4e2a0d,{'complete':!![]});var _0x5e3797=_0x608c06[_0xb4c4('0x2d')];if(_0x5e3797[_0xb4c4('0x2e')]!==_0x2f66cc[_0xb4c4('0x2f')])return![];if(_0x5e3797['aud']!==_0x2f66cc[_0xb4c4('0x30')])return![];if(_0x5e3797[_0xb4c4('0x28')]!==_0x2f66cc[_0xb4c4('0x28')])return![];if(moment()['isAfter'](moment['unix'](_0x5e3797[_0xb4c4('0x31')])))return![];return!![];}catch(_0x4a83d9){throw _0x4a83d9;}}function refreshOauth2MicrosoftAccessToken(_0x503920){return Promise[_0xb4c4('0x32')]()[_0xb4c4('0x33')](function(){if(_0x503920[_0xb4c4('0x34')])return _0x503920;return db[_0xb4c4('0x35')][_0xb4c4('0x36')]({'where':{'id':_0x503920['id']},'raw':!![]});})['then'](function(_0x4e1d2b){var _0x316809={'grant_type':_0xb4c4('0x37'),'refresh_token':_0x4e1d2b[_0xb4c4('0x38')],'scope':getAccessTokenScope(_0x4e1d2b),'redirect_uri':_0x4e1d2b[_0xb4c4('0x39')],'client_id':_0x4e1d2b[_0xb4c4('0x22')],'client_secret':encryptor[_0xb4c4('0x3a')](_0x4e1d2b[_0xb4c4('0x34')])};var _0x5d8a13={'method':_0xb4c4('0x3b'),'uri':MICROSOFT_AUTH_URL[_0xb4c4('0x1a')](_0xb4c4('0x1b'),_0x4e1d2b[_0xb4c4('0x3c')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x316809,'json':!![]};return rp(_0x5d8a13);})[_0xb4c4('0x33')](function(_0x5e917f){_0x503920[_0xb4c4('0x3d')]=_0x5e917f[_0xb4c4('0x3e')];_0x503920['data6']=_0x5e917f[_0xb4c4('0x37')];return db[_0xb4c4('0x35')][_0xb4c4('0x3f')]({'data5':_0x503920[_0xb4c4('0x3d')],'data6':_0x503920['data6']},{'where':{'id':_0x503920['id']}});})['then'](function(){return _0x503920;})[_0xb4c4('0x40')](function(_0x52884a){logger[_0xb4c4('0x41')](_0xb4c4('0x42'),_0x503920['id'],_0x52884a);});}function getOauth2MicrosoftAccessToken(_0x546a3c,_0x3871a3){var _0x26483e={'grant_type':_0xb4c4('0x43'),'code':_0x546a3c,'scope':getAccessTokenScope(_0x3871a3),'redirect_uri':_0x3871a3[_0xb4c4('0x39')],'client_id':_0x3871a3[_0xb4c4('0x22')],'client_secret':encryptor['decryptString'](_0x3871a3[_0xb4c4('0x34')])};var _0x3451a3={'method':_0xb4c4('0x3b'),'uri':MICROSOFT_AUTH_URL[_0xb4c4('0x1a')]('{TENANT_ID}',_0x3871a3['data2'])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x26483e,'json':!![]};return rp(_0x3451a3);}function startRefreshInterval(_0x54b0ff){var _0x550e5f=schedule[_0xb4c4('0x44')];if(_0x550e5f[_0x54b0ff['id']])clearInterval(_0x550e5f[_0x54b0ff['id']]);_0x550e5f[_0x54b0ff['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0xb4c4('0x45')](this,{'id':_0x54b0ff['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0xb4c4('0x44')]=_0x550e5f;}function startAllRefreshIntervals(){return db['CloudProvider']['findAll']({'where':{'data6':{'$ne':null}},'raw':!![]})[_0xb4c4('0x33')](function(_0x5b8028){var _0x373326=_0x5b8028['map'](function(_0x109274){return refreshOauth2MicrosoftAccessToken(_0x109274)[_0xb4c4('0x33')](function(_0x2f6f99){startRefreshInterval(_0x2f6f99);});});return Promise[_0xb4c4('0x46')](_0x373326);})[_0xb4c4('0x40')](function(_0x2320ec){var _0x3de65b=_0x2320ec?util['inspect'](_0x2320ec,{'showHidden':![],'depth':null}):'';logger['error'](_0xb4c4('0x47'),_0x3de65b);});}module['exports']={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file