Built motion from commit 838c2833.|2.6.24
[motion2.git] / server / api / cloudProvider / cloudProvider.oauth.js
index 79cfd16..e827894 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8999=['refresh_token','data6','decryptString','POST','access_token','CloudProvider','update','catch','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','{TENANT_ID}','intervals','bind','findAll','all','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','lodash','jsonwebtoken','moment','ioredis','util','../../components/encryptor','../../config/environment','api','../../mysqldb','defaults','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','openid','profile','offline_access','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','map','type','Dynamics365','push','data7','/.default','Outlook365','replace','data2','code','id_token','from','stringify','toString','base64','hex','data1','response_type','join','redirect_uri','data4','response_mode','form_post','scope','nonce','prompt','login','key','value','oauth2Claims','oauth2/','set','decode','payload','iss','aud','unix','resolve','then','data3','findOne'];(function(_0x126a92,_0x34a4d5){var _0x1e2fde=function(_0x1b3e6d){while(--_0x1b3e6d){_0x126a92['push'](_0x126a92['shift']());}};_0x1e2fde(++_0x34a4d5);}(_0x8999,0xef));var _0x9899=function(_0x152aad,_0x45310e){_0x152aad=_0x152aad-0x0;var _0x10e985=_0x8999[_0x152aad];return _0x10e985;};'use strict';var _=require(_0x9899('0x0'));var crypto=require('crypto');var jwt=require(_0x9899('0x1'));var moment=require(_0x9899('0x2'));var Redis=require(_0x9899('0x3'));var rp=require('request-promise');var util=require(_0x9899('0x4'));var encryptor=require(_0x9899('0x5'));var config=require(_0x9899('0x6'));var logger=require('../../config/logger')(_0x9899('0x7'));var schedule=require('../../config/schedule/cloud-provider');var db=require(_0x9899('0x8'))['db'];config['redis']=_[_0x9899('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var redis=new Redis(config['redis']);var MICROSOFT_AUTH_URL=_0x9899('0xa');var AZURE_AUTH_SCOPES={'Outlook365':[_0x9899('0xb'),_0x9899('0xc'),'email',_0x9899('0xd'),_0x9899('0xe'),'https://outlook.office.com/POP.AccessAsUser.All',_0x9899('0xf')],'Dynamics365':[_0x9899('0xb'),_0x9899('0xd')]};var MICROSOFT_AUTH_ENDPOINT='/authorize';var MICROSOFT_TOKEN_ENDPOINT='/token';var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x1d795a){var _0x299b8a=_[_0x9899('0x10')](AZURE_AUTH_SCOPES[_0x1d795a['type']]);if(_0x1d795a[_0x9899('0x11')]===_0x9899('0x12'))_0x299b8a[_0x9899('0x13')](_0x1d795a[_0x9899('0x14')]+_0x9899('0x15'));return _0x299b8a['join']('\x20');}function getAccessTokenScope(_0x7462e){if(_0x7462e[_0x9899('0x11')]===_0x9899('0x16'))return'https://outlook.office365.com/IMAP.AccessAsUser.All';if(_0x7462e[_0x9899('0x11')]===_0x9899('0x12'))return _0x7462e['data7']+_0x9899('0x15');}function generateMicrosoftAuthorizationUrl(_0x278dda,_0x19bd9e){var _0x35abac=MICROSOFT_AUTH_URL[_0x9899('0x17')]('{TENANT_ID}',_0x278dda[_0x9899('0x18')]);var _0xeda3d5=[_0x9899('0x19'),_0x9899('0x1a')];var _0x4be2dc=Buffer[_0x9899('0x1b')](JSON[_0x9899('0x1c')]({'id':_0x19bd9e}))[_0x9899('0x1d')](_0x9899('0x1e'));var _0x11442d=crypto['randomBytes'](0x10)[_0x9899('0x1d')](_0x9899('0x1f'));var _0x3a193f=getAuthorizationScopes(_0x278dda);var _0x4606e9=[{'key':'client_id','value':_0x278dda[_0x9899('0x20')]},{'key':_0x9899('0x21'),'value':encodeURIComponent(_0xeda3d5[_0x9899('0x22')]('\x20'))},{'key':_0x9899('0x23'),'value':_0x278dda[_0x9899('0x24')]},{'key':_0x9899('0x25'),'value':_0x9899('0x26')},{'key':_0x9899('0x27'),'value':encodeURIComponent(_0x3a193f)},{'key':'state','value':_0x4be2dc},{'key':_0x9899('0x28'),'value':_0x11442d},{'key':_0x9899('0x29'),'value':_0x9899('0x2a')}];var _0x3ffbc6=_0x35abac+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0x9899('0x10')](_0x4606e9,function(_0x15d6df){return _0x15d6df[_0x9899('0x2b')]+'='+_0x15d6df[_0x9899('0x2c')];})[_0x9899('0x22')]('&');_0x278dda[_0x9899('0x2d')]={'issuer':_0x35abac[_0x9899('0x17')](_0x9899('0x2e'),''),'audience':_0x278dda[_0x9899('0x20')],'state':_0x4be2dc,'nonce':_0x11442d};redis[_0x9899('0x2f')](_0x4be2dc,JSON['stringify'](_0x278dda));return _0x3ffbc6;}function isValidIdToken(_0x58fea5,_0x14df29){try{var _0x52cb5e=jwt[_0x9899('0x30')](_0x58fea5,{'complete':!![]});var _0x33337f=_0x52cb5e[_0x9899('0x31')];if(_0x33337f[_0x9899('0x32')]!==_0x14df29['issuer'])return![];if(_0x33337f[_0x9899('0x33')]!==_0x14df29['audience'])return![];if(_0x33337f[_0x9899('0x28')]!==_0x14df29[_0x9899('0x28')])return![];if(moment()['isAfter'](moment[_0x9899('0x34')](_0x33337f['exp'])))return![];return!![];}catch(_0x603edb){throw _0x603edb;}}function refreshOauth2MicrosoftAccessToken(_0xa497ec){return Promise[_0x9899('0x35')]()[_0x9899('0x36')](function(){if(_0xa497ec[_0x9899('0x37')])return _0xa497ec;return db['CloudProvider'][_0x9899('0x38')]({'where':{'id':_0xa497ec['id']},'raw':!![]});})[_0x9899('0x36')](function(_0x51be2c){var _0x375d9d={'grant_type':_0x9899('0x39'),'refresh_token':_0x51be2c[_0x9899('0x3a')],'scope':getAccessTokenScope(_0x51be2c),'redirect_uri':_0x51be2c[_0x9899('0x24')],'client_id':_0x51be2c[_0x9899('0x20')],'client_secret':encryptor[_0x9899('0x3b')](_0x51be2c[_0x9899('0x37')])};var _0x29a464={'method':_0x9899('0x3c'),'uri':MICROSOFT_AUTH_URL[_0x9899('0x17')]('{TENANT_ID}',_0x51be2c['data2'])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x375d9d,'json':!![]};return rp(_0x29a464);})[_0x9899('0x36')](function(_0x407f00){_0xa497ec['data5']=_0x407f00[_0x9899('0x3d')];_0xa497ec[_0x9899('0x3a')]=_0x407f00['refresh_token'];return db[_0x9899('0x3e')][_0x9899('0x3f')]({'data5':_0xa497ec['data5'],'data6':_0xa497ec['data6']},{'where':{'id':_0xa497ec['id']}});})[_0x9899('0x36')](function(){return _0xa497ec;})[_0x9899('0x40')](function(_0x206776){logger[_0x9899('0x41')](_0x9899('0x42'),_0xa497ec['id'],_0x206776);});}function getOauth2MicrosoftAccessToken(_0x4935de,_0x1d55dd){var _0x12f6d2={'grant_type':_0x9899('0x43'),'code':_0x4935de,'scope':getAccessTokenScope(_0x1d55dd),'redirect_uri':_0x1d55dd['data4'],'client_id':_0x1d55dd['data1'],'client_secret':encryptor['decryptString'](_0x1d55dd[_0x9899('0x37')])};var _0x3f58db={'method':_0x9899('0x3c'),'uri':MICROSOFT_AUTH_URL[_0x9899('0x17')](_0x9899('0x44'),_0x1d55dd[_0x9899('0x18')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x12f6d2,'json':!![]};return rp(_0x3f58db);}function startRefreshInterval(_0x1a4f24){var _0x3dbba0=schedule[_0x9899('0x45')];if(_0x3dbba0[_0x1a4f24['id']])clearInterval(_0x3dbba0[_0x1a4f24['id']]);_0x3dbba0[_0x1a4f24['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0x9899('0x46')](this,{'id':_0x1a4f24['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0x9899('0x45')]=_0x3dbba0;}function startAllRefreshIntervals(){return db[_0x9899('0x3e')][_0x9899('0x47')]({'where':{'data6':{'$ne':null}},'raw':!![]})[_0x9899('0x36')](function(_0x165de1){var _0x5d3aa9=_0x165de1['map'](function(_0x464885){return refreshOauth2MicrosoftAccessToken(_0x464885)[_0x9899('0x36')](function(_0x46c1ec){startRefreshInterval(_0x46c1ec);});});return Promise[_0x9899('0x48')](_0x5d3aa9);})[_0x9899('0x40')](function(_0x34286f){var _0x17c441=_0x34286f?util['inspect'](_0x34286f,{'showHidden':![],'depth':null}):'';logger['error'](_0x9899('0x49'),_0x17c441);});}module['exports']={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
+var _0xc8c2=['unix','then','data3','findOne','refresh_token','data6','data4','decryptString','POST','{TENANT_ID}','data5','access_token','CloudProvider','update','catch','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','intervals','bind','findAll','all','inspect','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','exports','lodash','crypto','moment','../../components/encryptor','api','../../config/schedule/cloud-provider','../../mysqldb','redis','defaults','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','profile','email','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','openid','offline_access','/token','map','type','data7','/.default','join','Outlook365','Dynamics365','data2','code','id_token','from','stringify','toString','base64','hex','client_id','response_type','redirect_uri','response_mode','form_post','scope','state','prompt','login','value','oauth2Claims','replace','oauth2/','data1','set','payload','iss','issuer','aud','nonce'];(function(_0x127883,_0x2733d0){var _0x332fd0=function(_0x409a16){while(--_0x409a16){_0x127883['push'](_0x127883['shift']());}};_0x332fd0(++_0x2733d0);}(_0xc8c2,0x151));var _0x2c8c=function(_0x5ee823,_0x24650b){_0x5ee823=_0x5ee823-0x0;var _0x209bd2=_0xc8c2[_0x5ee823];return _0x209bd2;};'use strict';var _=require(_0x2c8c('0x0'));var crypto=require(_0x2c8c('0x1'));var jwt=require('jsonwebtoken');var moment=require(_0x2c8c('0x2'));var Redis=require('ioredis');var rp=require('request-promise');var util=require('util');var encryptor=require(_0x2c8c('0x3'));var config=require('../../config/environment');var logger=require('../../config/logger')(_0x2c8c('0x4'));var schedule=require(_0x2c8c('0x5'));var db=require(_0x2c8c('0x6'))['db'];config[_0x2c8c('0x7')]=_[_0x2c8c('0x8')](config[_0x2c8c('0x7')],{'host':'localhost','port':0x18eb});var redis=new Redis(config[_0x2c8c('0x7')]);var MICROSOFT_AUTH_URL=_0x2c8c('0x9');var AZURE_AUTH_SCOPES={'Outlook365':['openid',_0x2c8c('0xa'),_0x2c8c('0xb'),'offline_access',_0x2c8c('0xc'),_0x2c8c('0xd'),_0x2c8c('0xe')],'Dynamics365':[_0x2c8c('0xf'),_0x2c8c('0x10')]};var MICROSOFT_AUTH_ENDPOINT='/authorize';var MICROSOFT_TOKEN_ENDPOINT=_0x2c8c('0x11');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x2bbf09){var _0x326bf7=_[_0x2c8c('0x12')](AZURE_AUTH_SCOPES[_0x2bbf09[_0x2c8c('0x13')]]);if(_0x2bbf09['type']==='Dynamics365')_0x326bf7['push'](_0x2bbf09[_0x2c8c('0x14')]+_0x2c8c('0x15'));return _0x326bf7[_0x2c8c('0x16')]('\x20');}function getAccessTokenScope(_0xcfad2){if(_0xcfad2[_0x2c8c('0x13')]===_0x2c8c('0x17'))return'https://outlook.office365.com/IMAP.AccessAsUser.All';if(_0xcfad2['type']===_0x2c8c('0x18'))return _0xcfad2[_0x2c8c('0x14')]+_0x2c8c('0x15');}function generateMicrosoftAuthorizationUrl(_0x3e9d5f,_0x400c05){var _0x51b618=MICROSOFT_AUTH_URL['replace']('{TENANT_ID}',_0x3e9d5f[_0x2c8c('0x19')]);var _0x1f63ab=[_0x2c8c('0x1a'),_0x2c8c('0x1b')];var _0x51a40e=Buffer[_0x2c8c('0x1c')](JSON[_0x2c8c('0x1d')]({'id':_0x400c05}))[_0x2c8c('0x1e')](_0x2c8c('0x1f'));var _0x708070=crypto['randomBytes'](0x10)[_0x2c8c('0x1e')](_0x2c8c('0x20'));var _0xcfa99b=getAuthorizationScopes(_0x3e9d5f);var _0x52ac10=[{'key':_0x2c8c('0x21'),'value':_0x3e9d5f['data1']},{'key':_0x2c8c('0x22'),'value':encodeURIComponent(_0x1f63ab[_0x2c8c('0x16')]('\x20'))},{'key':_0x2c8c('0x23'),'value':_0x3e9d5f['data4']},{'key':_0x2c8c('0x24'),'value':_0x2c8c('0x25')},{'key':_0x2c8c('0x26'),'value':encodeURIComponent(_0xcfa99b)},{'key':_0x2c8c('0x27'),'value':_0x51a40e},{'key':'nonce','value':_0x708070},{'key':_0x2c8c('0x28'),'value':_0x2c8c('0x29')}];var _0xb1f84f=_0x51b618+MICROSOFT_AUTH_ENDPOINT+'?'+_['map'](_0x52ac10,function(_0x4619e0){return _0x4619e0['key']+'='+_0x4619e0[_0x2c8c('0x2a')];})[_0x2c8c('0x16')]('&');_0x3e9d5f[_0x2c8c('0x2b')]={'issuer':_0x51b618[_0x2c8c('0x2c')](_0x2c8c('0x2d'),''),'audience':_0x3e9d5f[_0x2c8c('0x2e')],'state':_0x51a40e,'nonce':_0x708070};redis[_0x2c8c('0x2f')](_0x51a40e,JSON[_0x2c8c('0x1d')](_0x3e9d5f));return _0xb1f84f;}function isValidIdToken(_0xf4321c,_0x2ad6f3){try{var _0x1711c5=jwt['decode'](_0xf4321c,{'complete':!![]});var _0x43b96e=_0x1711c5[_0x2c8c('0x30')];if(_0x43b96e[_0x2c8c('0x31')]!==_0x2ad6f3[_0x2c8c('0x32')])return![];if(_0x43b96e[_0x2c8c('0x33')]!==_0x2ad6f3['audience'])return![];if(_0x43b96e[_0x2c8c('0x34')]!==_0x2ad6f3[_0x2c8c('0x34')])return![];if(moment()['isAfter'](moment[_0x2c8c('0x35')](_0x43b96e['exp'])))return![];return!![];}catch(_0x2c9057){throw _0x2c9057;}}function refreshOauth2MicrosoftAccessToken(_0x3e78a0){return Promise['resolve']()[_0x2c8c('0x36')](function(){if(_0x3e78a0[_0x2c8c('0x37')])return _0x3e78a0;return db['CloudProvider'][_0x2c8c('0x38')]({'where':{'id':_0x3e78a0['id']},'raw':!![]});})[_0x2c8c('0x36')](function(_0x31423f){var _0x5d7114={'grant_type':_0x2c8c('0x39'),'refresh_token':_0x31423f[_0x2c8c('0x3a')],'scope':getAccessTokenScope(_0x31423f),'redirect_uri':_0x31423f[_0x2c8c('0x3b')],'client_id':_0x31423f[_0x2c8c('0x2e')],'client_secret':encryptor[_0x2c8c('0x3c')](_0x31423f['data3'])};var _0x360446={'method':_0x2c8c('0x3d'),'uri':MICROSOFT_AUTH_URL[_0x2c8c('0x2c')](_0x2c8c('0x3e'),_0x31423f[_0x2c8c('0x19')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x5d7114,'json':!![]};return rp(_0x360446);})[_0x2c8c('0x36')](function(_0x5af64f){_0x3e78a0[_0x2c8c('0x3f')]=_0x5af64f[_0x2c8c('0x40')];_0x3e78a0[_0x2c8c('0x3a')]=_0x5af64f[_0x2c8c('0x39')];return db[_0x2c8c('0x41')][_0x2c8c('0x42')]({'data5':_0x3e78a0['data5'],'data6':_0x3e78a0['data6']},{'where':{'id':_0x3e78a0['id']}});})[_0x2c8c('0x36')](function(){return _0x3e78a0;})[_0x2c8c('0x43')](function(_0x53c3aa){logger[_0x2c8c('0x44')](_0x2c8c('0x45'),_0x3e78a0['id'],_0x53c3aa);});}function getOauth2MicrosoftAccessToken(_0x334960,_0x5c765b){var _0x554e6d={'grant_type':_0x2c8c('0x46'),'code':_0x334960,'scope':getAccessTokenScope(_0x5c765b),'redirect_uri':_0x5c765b[_0x2c8c('0x3b')],'client_id':_0x5c765b[_0x2c8c('0x2e')],'client_secret':encryptor['decryptString'](_0x5c765b[_0x2c8c('0x37')])};var _0x352050={'method':_0x2c8c('0x3d'),'uri':MICROSOFT_AUTH_URL['replace'](_0x2c8c('0x3e'),_0x5c765b['data2'])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x554e6d,'json':!![]};return rp(_0x352050);}function startRefreshInterval(_0x86cf16){var _0xf8857=schedule[_0x2c8c('0x47')];if(_0xf8857[_0x86cf16['id']])clearInterval(_0xf8857[_0x86cf16['id']]);_0xf8857[_0x86cf16['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0x2c8c('0x48')](this,{'id':_0x86cf16['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0x2c8c('0x47')]=_0xf8857;}function startAllRefreshIntervals(){return db[_0x2c8c('0x41')][_0x2c8c('0x49')]({'where':{'data6':{'$ne':null}},'raw':!![]})[_0x2c8c('0x36')](function(_0x1eb10c){var _0xa249b=_0x1eb10c[_0x2c8c('0x12')](function(_0xdffc9b){return refreshOauth2MicrosoftAccessToken(_0xdffc9b)['then'](function(_0x261edb){startRefreshInterval(_0x261edb);});});return Promise[_0x2c8c('0x4a')](_0xa249b);})[_0x2c8c('0x43')](function(_0x5ac049){var _0x41fe01=_0x5ac049?util[_0x2c8c('0x4b')](_0x5ac049,{'showHidden':![],'depth':null}):'';logger[_0x2c8c('0x44')](_0x2c8c('0x4c'),_0x41fe01);});}module[_0x2c8c('0x4d')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file