Built motion from commit 994c64e1.|2.6.1
[motion2.git] / server / api / cloudProvider / cloudProvider.oauth.js
index 8cc16c3..2993329 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf55=['decryptString','data3','data5','access_token','refresh_token','update','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','POST','intervals','bind','all','catch','inspect','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','lodash','crypto','moment','ioredis','request-promise','../../config/logger','api','../../config/schedule/cloud-provider','../../mysqldb','redis','defaults','localhost','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','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','type','Dynamics365','push','data7','/.default','join','replace','{TENANT_ID}','data2','id_token','from','stringify','toString','base64','randomBytes','hex','data1','response_type','redirect_uri','data4','response_mode','form_post','scope','state','nonce','login','key','oauth2/','decode','iss','aud','audience','isAfter','unix','resolve','then','CloudProvider','findOne','data6'];(function(_0x86e009,_0x1ac7ca){var _0x590dcd=function(_0x4a87da){while(--_0x4a87da){_0x86e009['push'](_0x86e009['shift']());}};_0x590dcd(++_0x1ac7ca);}(_0xbf55,0x1d1));var _0x5bf5=function(_0x540d04,_0x249c77){_0x540d04=_0x540d04-0x0;var _0x3c7b57=_0xbf55[_0x540d04];return _0x3c7b57;};'use strict';var _=require(_0x5bf5('0x0'));var crypto=require(_0x5bf5('0x1'));var jwt=require('jsonwebtoken');var moment=require(_0x5bf5('0x2'));var Redis=require(_0x5bf5('0x3'));var rp=require(_0x5bf5('0x4'));var util=require('util');var encryptor=require('../../components/encryptor');var config=require('../../config/environment');var logger=require(_0x5bf5('0x5'))(_0x5bf5('0x6'));var schedule=require(_0x5bf5('0x7'));var db=require(_0x5bf5('0x8'))['db'];config[_0x5bf5('0x9')]=_[_0x5bf5('0xa')](config[_0x5bf5('0x9')],{'host':_0x5bf5('0xb'),'port':0x18eb});var redis=new Redis(config[_0x5bf5('0x9')]);var MICROSOFT_AUTH_URL=_0x5bf5('0xc');var AZURE_AUTH_SCOPES={'Outlook365':[_0x5bf5('0xd'),_0x5bf5('0xe'),_0x5bf5('0xf'),_0x5bf5('0x10'),_0x5bf5('0x11'),_0x5bf5('0x12'),_0x5bf5('0x13')],'Dynamics365':[_0x5bf5('0xd'),'offline_access']};var MICROSOFT_AUTH_ENDPOINT='/authorize';var MICROSOFT_TOKEN_ENDPOINT='/token';var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x266ec9){var _0x590b9b=_[_0x5bf5('0x14')](AZURE_AUTH_SCOPES[_0x266ec9[_0x5bf5('0x15')]]);if(_0x266ec9[_0x5bf5('0x15')]===_0x5bf5('0x16'))_0x590b9b[_0x5bf5('0x17')](_0x266ec9[_0x5bf5('0x18')]+_0x5bf5('0x19'));return _0x590b9b[_0x5bf5('0x1a')]('\x20');}function getAccessTokenScope(_0x3f31f1){if(_0x3f31f1[_0x5bf5('0x15')]==='Outlook365')return _0x5bf5('0x11');if(_0x3f31f1[_0x5bf5('0x15')]===_0x5bf5('0x16'))return _0x3f31f1[_0x5bf5('0x18')]+_0x5bf5('0x19');}function generateMicrosoftAuthorizationUrl(_0x8d6171,_0x4fc29f){var _0x660c0=MICROSOFT_AUTH_URL[_0x5bf5('0x1b')](_0x5bf5('0x1c'),_0x8d6171[_0x5bf5('0x1d')]);var _0x3b9fd4=['code',_0x5bf5('0x1e')];var _0x503125=Buffer[_0x5bf5('0x1f')](JSON[_0x5bf5('0x20')]({'id':_0x4fc29f}))[_0x5bf5('0x21')](_0x5bf5('0x22'));var _0x339a88=crypto[_0x5bf5('0x23')](0x10)['toString'](_0x5bf5('0x24'));var _0x10c00a=getAuthorizationScopes(_0x8d6171);var _0x25dcf7=[{'key':'client_id','value':_0x8d6171[_0x5bf5('0x25')]},{'key':_0x5bf5('0x26'),'value':encodeURIComponent(_0x3b9fd4[_0x5bf5('0x1a')]('\x20'))},{'key':_0x5bf5('0x27'),'value':_0x8d6171[_0x5bf5('0x28')]},{'key':_0x5bf5('0x29'),'value':_0x5bf5('0x2a')},{'key':_0x5bf5('0x2b'),'value':encodeURIComponent(_0x10c00a)},{'key':_0x5bf5('0x2c'),'value':_0x503125},{'key':_0x5bf5('0x2d'),'value':_0x339a88},{'key':'prompt','value':_0x5bf5('0x2e')}];var _0x1f09d7=_0x660c0+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0x5bf5('0x14')](_0x25dcf7,function(_0x7ed1ee){return _0x7ed1ee[_0x5bf5('0x2f')]+'='+_0x7ed1ee['value'];})[_0x5bf5('0x1a')]('&');_0x8d6171['oauth2Claims']={'issuer':_0x660c0[_0x5bf5('0x1b')](_0x5bf5('0x30'),''),'audience':_0x8d6171[_0x5bf5('0x25')],'state':_0x503125,'nonce':_0x339a88};redis['set'](_0x503125,JSON['stringify'](_0x8d6171));return _0x1f09d7;}function isValidIdToken(_0x5ba720,_0x21699a){try{var _0x30ae23=jwt[_0x5bf5('0x31')](_0x5ba720,{'complete':!![]});var _0x2b71e3=_0x30ae23['payload'];if(_0x2b71e3[_0x5bf5('0x32')]!==_0x21699a['issuer'])return![];if(_0x2b71e3[_0x5bf5('0x33')]!==_0x21699a[_0x5bf5('0x34')])return![];if(_0x2b71e3['nonce']!==_0x21699a[_0x5bf5('0x2d')])return![];if(moment()[_0x5bf5('0x35')](moment[_0x5bf5('0x36')](_0x2b71e3['exp'])))return![];return!![];}catch(_0x369a42){throw _0x369a42;}}function refreshOauth2MicrosoftAccessToken(_0x30effc){return Promise[_0x5bf5('0x37')]()[_0x5bf5('0x38')](function(){if(_0x30effc['data3'])return _0x30effc;return db[_0x5bf5('0x39')][_0x5bf5('0x3a')]({'where':{'id':_0x30effc['id']},'raw':!![]});})[_0x5bf5('0x38')](function(_0x3b49eb){var _0x3a5202={'grant_type':'refresh_token','refresh_token':_0x3b49eb[_0x5bf5('0x3b')],'scope':getAccessTokenScope(_0x3b49eb),'redirect_uri':_0x3b49eb[_0x5bf5('0x28')],'client_id':_0x3b49eb[_0x5bf5('0x25')],'client_secret':encryptor[_0x5bf5('0x3c')](_0x3b49eb[_0x5bf5('0x3d')])};var _0x47639f={'method':'POST','uri':MICROSOFT_AUTH_URL[_0x5bf5('0x1b')]('{TENANT_ID}',_0x3b49eb[_0x5bf5('0x1d')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x3a5202,'json':!![]};return rp(_0x47639f);})['then'](function(_0x27e50c){_0x30effc[_0x5bf5('0x3e')]=_0x27e50c[_0x5bf5('0x3f')];_0x30effc[_0x5bf5('0x3b')]=_0x27e50c[_0x5bf5('0x40')];return db[_0x5bf5('0x39')][_0x5bf5('0x41')]({'data5':_0x30effc[_0x5bf5('0x3e')],'data6':_0x30effc['data6']},{'where':{'id':_0x30effc['id']}});})['then'](function(){return _0x30effc;})['catch'](function(_0x3da7e1){logger[_0x5bf5('0x42')](_0x5bf5('0x43'),_0x30effc['id'],_0x3da7e1);});}function getOauth2MicrosoftAccessToken(_0x5bab0d,_0x295015){var _0x2a4c40={'grant_type':'authorization_code','code':_0x5bab0d,'scope':getAccessTokenScope(_0x295015),'redirect_uri':_0x295015[_0x5bf5('0x28')],'client_id':_0x295015[_0x5bf5('0x25')],'client_secret':encryptor[_0x5bf5('0x3c')](_0x295015[_0x5bf5('0x3d')])};var _0x626808={'method':_0x5bf5('0x44'),'uri':MICROSOFT_AUTH_URL[_0x5bf5('0x1b')](_0x5bf5('0x1c'),_0x295015['data2'])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x2a4c40,'json':!![]};return rp(_0x626808);}function startRefreshInterval(_0x2c72a7){var _0x532737=schedule[_0x5bf5('0x45')];if(_0x532737[_0x2c72a7['id']])clearInterval(_0x532737[_0x2c72a7['id']]);_0x532737[_0x2c72a7['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0x5bf5('0x46')](this,{'id':_0x2c72a7['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0x5bf5('0x45')]=_0x532737;}function startAllRefreshIntervals(){return db['CloudProvider']['findAll']({'where':{'data6':{'$ne':null}},'raw':!![]})[_0x5bf5('0x38')](function(_0x42b722){var _0x714725=_0x42b722['map'](function(_0x5e36a4){return refreshOauth2MicrosoftAccessToken(_0x5e36a4)[_0x5bf5('0x38')](function(_0x182b55){startRefreshInterval(_0x182b55);});});return Promise[_0x5bf5('0x47')](_0x714725);})[_0x5bf5('0x48')](function(_0x3e73b6){var _0x3f9aff=_0x3e73b6?util[_0x5bf5('0x49')](_0x3e73b6,{'showHidden':![],'depth':null}):'';logger[_0x5bf5('0x42')](_0x5bf5('0x4a'),_0x3f9aff);});}module['exports']={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
+var _0x419b=['https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','/authorize','/token','map','type','Dynamics365','data7','/.default','join','Outlook365','replace','{TENANT_ID}','code','id_token','from','stringify','toString','base64','data1','response_type','data4','response_mode','nonce','login','key','value','oauth2Claims','oauth2/','set','decode','payload','iss','issuer','audience','isAfter','unix','exp','resolve','then','data3','findOne','refresh_token','data6','decryptString','data2','data5','CloudProvider','update','catch','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','intervals','findAll','all','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','exports','lodash','crypto','jsonwebtoken','ioredis','request-promise','../../config/logger','api','../../config/schedule/cloud-provider','../../mysqldb','redis','defaults','localhost','openid','offline_access'];(function(_0x2ccf59,_0x196b84){var _0x3c4cb2=function(_0x22d8d7){while(--_0x22d8d7){_0x2ccf59['push'](_0x2ccf59['shift']());}};_0x3c4cb2(++_0x196b84);}(_0x419b,0x1a8));var _0xb419=function(_0x457576,_0x3d5439){_0x457576=_0x457576-0x0;var _0x58c321=_0x419b[_0x457576];return _0x58c321;};'use strict';var _=require(_0xb419('0x0'));var crypto=require(_0xb419('0x1'));var jwt=require(_0xb419('0x2'));var moment=require('moment');var Redis=require(_0xb419('0x3'));var rp=require(_0xb419('0x4'));var util=require('util');var encryptor=require('../../components/encryptor');var config=require('../../config/environment');var logger=require(_0xb419('0x5'))(_0xb419('0x6'));var schedule=require(_0xb419('0x7'));var db=require(_0xb419('0x8'))['db'];config[_0xb419('0x9')]=_[_0xb419('0xa')](config[_0xb419('0x9')],{'host':_0xb419('0xb'),'port':0x18eb});var redis=new Redis(config[_0xb419('0x9')]);var MICROSOFT_AUTH_URL='https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0';var AZURE_AUTH_SCOPES={'Outlook365':[_0xb419('0xc'),'profile','email',_0xb419('0xd'),_0xb419('0xe'),_0xb419('0xf'),_0xb419('0x10')],'Dynamics365':[_0xb419('0xc'),_0xb419('0xd')]};var MICROSOFT_AUTH_ENDPOINT=_0xb419('0x11');var MICROSOFT_TOKEN_ENDPOINT=_0xb419('0x12');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x44d1a4){var _0x45626f=_[_0xb419('0x13')](AZURE_AUTH_SCOPES[_0x44d1a4[_0xb419('0x14')]]);if(_0x44d1a4[_0xb419('0x14')]===_0xb419('0x15'))_0x45626f['push'](_0x44d1a4[_0xb419('0x16')]+_0xb419('0x17'));return _0x45626f[_0xb419('0x18')]('\x20');}function getAccessTokenScope(_0x4425ac){if(_0x4425ac[_0xb419('0x14')]===_0xb419('0x19'))return _0xb419('0xe');if(_0x4425ac[_0xb419('0x14')]===_0xb419('0x15'))return _0x4425ac['data7']+_0xb419('0x17');}function generateMicrosoftAuthorizationUrl(_0x3aae7d,_0x40ff73){var _0x215324=MICROSOFT_AUTH_URL[_0xb419('0x1a')](_0xb419('0x1b'),_0x3aae7d['data2']);var _0x11cbc3=[_0xb419('0x1c'),_0xb419('0x1d')];var _0x462047=Buffer[_0xb419('0x1e')](JSON[_0xb419('0x1f')]({'id':_0x40ff73}))[_0xb419('0x20')](_0xb419('0x21'));var _0x4d06f0=crypto['randomBytes'](0x10)[_0xb419('0x20')]('hex');var _0x5b9c28=getAuthorizationScopes(_0x3aae7d);var _0x41bea3=[{'key':'client_id','value':_0x3aae7d[_0xb419('0x22')]},{'key':_0xb419('0x23'),'value':encodeURIComponent(_0x11cbc3['join']('\x20'))},{'key':'redirect_uri','value':_0x3aae7d[_0xb419('0x24')]},{'key':_0xb419('0x25'),'value':'form_post'},{'key':'scope','value':encodeURIComponent(_0x5b9c28)},{'key':'state','value':_0x462047},{'key':_0xb419('0x26'),'value':_0x4d06f0},{'key':'prompt','value':_0xb419('0x27')}];var _0x159ac3=_0x215324+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0xb419('0x13')](_0x41bea3,function(_0x24ff84){return _0x24ff84[_0xb419('0x28')]+'='+_0x24ff84[_0xb419('0x29')];})[_0xb419('0x18')]('&');_0x3aae7d[_0xb419('0x2a')]={'issuer':_0x215324[_0xb419('0x1a')](_0xb419('0x2b'),''),'audience':_0x3aae7d[_0xb419('0x22')],'state':_0x462047,'nonce':_0x4d06f0};redis[_0xb419('0x2c')](_0x462047,JSON[_0xb419('0x1f')](_0x3aae7d));return _0x159ac3;}function isValidIdToken(_0xf34b40,_0x3bdd31){try{var _0x24e080=jwt[_0xb419('0x2d')](_0xf34b40,{'complete':!![]});var _0x190af9=_0x24e080[_0xb419('0x2e')];if(_0x190af9[_0xb419('0x2f')]!==_0x3bdd31[_0xb419('0x30')])return![];if(_0x190af9['aud']!==_0x3bdd31[_0xb419('0x31')])return![];if(_0x190af9[_0xb419('0x26')]!==_0x3bdd31[_0xb419('0x26')])return![];if(moment()[_0xb419('0x32')](moment[_0xb419('0x33')](_0x190af9[_0xb419('0x34')])))return![];return!![];}catch(_0x4eeb54){throw _0x4eeb54;}}function refreshOauth2MicrosoftAccessToken(_0x59300d){return Promise[_0xb419('0x35')]()[_0xb419('0x36')](function(){if(_0x59300d[_0xb419('0x37')])return _0x59300d;return db['CloudProvider'][_0xb419('0x38')]({'where':{'id':_0x59300d['id']},'raw':!![]});})['then'](function(_0x4bc9b9){var _0x3c2045={'grant_type':_0xb419('0x39'),'refresh_token':_0x4bc9b9[_0xb419('0x3a')],'scope':getAccessTokenScope(_0x4bc9b9),'redirect_uri':_0x4bc9b9[_0xb419('0x24')],'client_id':_0x4bc9b9[_0xb419('0x22')],'client_secret':encryptor[_0xb419('0x3b')](_0x4bc9b9[_0xb419('0x37')])};var _0x11f93b={'method':'POST','uri':MICROSOFT_AUTH_URL[_0xb419('0x1a')](_0xb419('0x1b'),_0x4bc9b9[_0xb419('0x3c')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x3c2045,'json':!![]};return rp(_0x11f93b);})['then'](function(_0x5f29cb){_0x59300d[_0xb419('0x3d')]=_0x5f29cb['access_token'];_0x59300d[_0xb419('0x3a')]=_0x5f29cb['refresh_token'];return db[_0xb419('0x3e')][_0xb419('0x3f')]({'data5':_0x59300d[_0xb419('0x3d')],'data6':_0x59300d[_0xb419('0x3a')]},{'where':{'id':_0x59300d['id']}});})[_0xb419('0x36')](function(){return _0x59300d;})[_0xb419('0x40')](function(_0x4f9f0e){logger[_0xb419('0x41')](_0xb419('0x42'),_0x59300d['id'],_0x4f9f0e);});}function getOauth2MicrosoftAccessToken(_0x463ff1,_0x5c0ced){var _0x503a3d={'grant_type':_0xb419('0x43'),'code':_0x463ff1,'scope':getAccessTokenScope(_0x5c0ced),'redirect_uri':_0x5c0ced[_0xb419('0x24')],'client_id':_0x5c0ced[_0xb419('0x22')],'client_secret':encryptor[_0xb419('0x3b')](_0x5c0ced[_0xb419('0x37')])};var _0x5c5b58={'method':'POST','uri':MICROSOFT_AUTH_URL['replace'](_0xb419('0x1b'),_0x5c0ced[_0xb419('0x3c')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x503a3d,'json':!![]};return rp(_0x5c5b58);}function startRefreshInterval(_0x322cb1){var _0x3e5e48=schedule[_0xb419('0x44')];if(_0x3e5e48[_0x322cb1['id']])clearInterval(_0x3e5e48[_0x322cb1['id']]);_0x3e5e48[_0x322cb1['id']]=setInterval(refreshOauth2MicrosoftAccessToken['bind'](this,{'id':_0x322cb1['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0xb419('0x44')]=_0x3e5e48;}function startAllRefreshIntervals(){return db['CloudProvider'][_0xb419('0x45')]({'where':{'data6':{'$ne':null}},'raw':!![]})[_0xb419('0x36')](function(_0x2627f5){var _0x44b893=_0x2627f5[_0xb419('0x13')](function(_0x469c51){return refreshOauth2MicrosoftAccessToken(_0x469c51)[_0xb419('0x36')](function(_0x3ebc2e){startRefreshInterval(_0x3ebc2e);});});return Promise[_0xb419('0x46')](_0x44b893);})[_0xb419('0x40')](function(_0x43714b){var _0x5abd69=_0x43714b?util['inspect'](_0x43714b,{'showHidden':![],'depth':null}):'';logger[_0xb419('0x41')](_0xb419('0x47'),_0x5abd69);});}module[_0xb419('0x48')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file