Built motion from commit fd055180.|2.6.30
[motion2.git] / server / api / cloudProvider / cloudProvider.oauth.js
index aad91c5..11696d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d96=['authorization_code','intervals','bind','findAll','all','catch','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','exports','lodash','crypto','jsonwebtoken','moment','ioredis','request-promise','util','../../components/encryptor','../../config/logger','api','../../config/schedule/cloud-provider','redis','localhost','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','profile','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','openid','offline_access','/authorize','map','type','Dynamics365','push','/.default','join','data7','replace','{TENANT_ID}','data2','code','id_token','from','stringify','toString','base64','randomBytes','client_id','response_type','redirect_uri','response_mode','form_post','state','nonce','login','value','oauth2Claims','oauth2/','data1','set','decode','iss','issuer','aud','audience','isAfter','unix','exp','then','CloudProvider','findOne','data6','data4','decryptString','data3','POST','access_token','update','data5','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s'];(function(_0x18c864,_0x5724b1){var _0x5c5373=function(_0x1e3d7b){while(--_0x1e3d7b){_0x18c864['push'](_0x18c864['shift']());}};_0x5c5373(++_0x5724b1);}(_0x8d96,0xa6));var _0x68d9=function(_0x470ada,_0x453059){_0x470ada=_0x470ada-0x0;var _0x5a71e0=_0x8d96[_0x470ada];return _0x5a71e0;};'use strict';var _=require(_0x68d9('0x0'));var crypto=require(_0x68d9('0x1'));var jwt=require(_0x68d9('0x2'));var moment=require(_0x68d9('0x3'));var Redis=require(_0x68d9('0x4'));var rp=require(_0x68d9('0x5'));var util=require(_0x68d9('0x6'));var encryptor=require(_0x68d9('0x7'));var config=require('../../config/environment');var logger=require(_0x68d9('0x8'))(_0x68d9('0x9'));var schedule=require(_0x68d9('0xa'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x68d9('0xb')],{'host':_0x68d9('0xc'),'port':0x18eb});var redis=new Redis(config[_0x68d9('0xb')]);var MICROSOFT_AUTH_URL=_0x68d9('0xd');var AZURE_AUTH_SCOPES={'Outlook365':['openid',_0x68d9('0xe'),'email','offline_access',_0x68d9('0xf'),'https://outlook.office.com/POP.AccessAsUser.All',_0x68d9('0x10')],'Dynamics365':[_0x68d9('0x11'),_0x68d9('0x12')]};var MICROSOFT_AUTH_ENDPOINT=_0x68d9('0x13');var MICROSOFT_TOKEN_ENDPOINT='/token';var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x4a9b27){var _0x116179=_[_0x68d9('0x14')](AZURE_AUTH_SCOPES[_0x4a9b27[_0x68d9('0x15')]]);if(_0x4a9b27[_0x68d9('0x15')]===_0x68d9('0x16'))_0x116179[_0x68d9('0x17')](_0x4a9b27['data7']+_0x68d9('0x18'));return _0x116179[_0x68d9('0x19')]('\x20');}function getAccessTokenScope(_0x257f6d){if(_0x257f6d[_0x68d9('0x15')]==='Outlook365')return _0x68d9('0xf');if(_0x257f6d[_0x68d9('0x15')]===_0x68d9('0x16'))return _0x257f6d[_0x68d9('0x1a')]+_0x68d9('0x18');}function generateMicrosoftAuthorizationUrl(_0x1d42ff,_0xd3feb5){var _0x399c2e=MICROSOFT_AUTH_URL[_0x68d9('0x1b')](_0x68d9('0x1c'),_0x1d42ff[_0x68d9('0x1d')]);var _0x51e3b5=[_0x68d9('0x1e'),_0x68d9('0x1f')];var _0x6e99f=Buffer[_0x68d9('0x20')](JSON[_0x68d9('0x21')]({'id':_0xd3feb5}))[_0x68d9('0x22')](_0x68d9('0x23'));var _0x4774a4=crypto[_0x68d9('0x24')](0x10)[_0x68d9('0x22')]('hex');var _0x3204e8=getAuthorizationScopes(_0x1d42ff);var _0x4a6dbf=[{'key':_0x68d9('0x25'),'value':_0x1d42ff['data1']},{'key':_0x68d9('0x26'),'value':encodeURIComponent(_0x51e3b5[_0x68d9('0x19')]('\x20'))},{'key':_0x68d9('0x27'),'value':_0x1d42ff['data4']},{'key':_0x68d9('0x28'),'value':_0x68d9('0x29')},{'key':'scope','value':encodeURIComponent(_0x3204e8)},{'key':_0x68d9('0x2a'),'value':_0x6e99f},{'key':_0x68d9('0x2b'),'value':_0x4774a4},{'key':'prompt','value':_0x68d9('0x2c')}];var _0x3b3fe2=_0x399c2e+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0x68d9('0x14')](_0x4a6dbf,function(_0x586529){return _0x586529['key']+'='+_0x586529[_0x68d9('0x2d')];})[_0x68d9('0x19')]('&');_0x1d42ff[_0x68d9('0x2e')]={'issuer':_0x399c2e[_0x68d9('0x1b')](_0x68d9('0x2f'),''),'audience':_0x1d42ff[_0x68d9('0x30')],'state':_0x6e99f,'nonce':_0x4774a4};redis[_0x68d9('0x31')](_0x6e99f,JSON['stringify'](_0x1d42ff));return _0x3b3fe2;}function isValidIdToken(_0x3de123,_0x3c3b98){try{var _0x22b6e1=jwt[_0x68d9('0x32')](_0x3de123,{'complete':!![]});var _0x29b968=_0x22b6e1['payload'];if(_0x29b968[_0x68d9('0x33')]!==_0x3c3b98[_0x68d9('0x34')])return![];if(_0x29b968[_0x68d9('0x35')]!==_0x3c3b98[_0x68d9('0x36')])return![];if(_0x29b968[_0x68d9('0x2b')]!==_0x3c3b98[_0x68d9('0x2b')])return![];if(moment()[_0x68d9('0x37')](moment[_0x68d9('0x38')](_0x29b968[_0x68d9('0x39')])))return![];return!![];}catch(_0x521bcd){throw _0x521bcd;}}function refreshOauth2MicrosoftAccessToken(_0x4a1fa4){return Promise['resolve']()[_0x68d9('0x3a')](function(){if(_0x4a1fa4['data3'])return _0x4a1fa4;return db[_0x68d9('0x3b')][_0x68d9('0x3c')]({'where':{'id':_0x4a1fa4['id']},'raw':!![]});})['then'](function(_0x2c6534){var _0x4e3871={'grant_type':'refresh_token','refresh_token':_0x2c6534[_0x68d9('0x3d')],'scope':getAccessTokenScope(_0x2c6534),'redirect_uri':_0x2c6534[_0x68d9('0x3e')],'client_id':_0x2c6534['data1'],'client_secret':encryptor[_0x68d9('0x3f')](_0x2c6534[_0x68d9('0x40')])};var _0x2ff640={'method':_0x68d9('0x41'),'uri':MICROSOFT_AUTH_URL[_0x68d9('0x1b')](_0x68d9('0x1c'),_0x2c6534[_0x68d9('0x1d')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x4e3871,'json':!![]};return rp(_0x2ff640);})[_0x68d9('0x3a')](function(_0x507c5f){_0x4a1fa4['data5']=_0x507c5f[_0x68d9('0x42')];_0x4a1fa4[_0x68d9('0x3d')]=_0x507c5f['refresh_token'];return db[_0x68d9('0x3b')][_0x68d9('0x43')]({'data5':_0x4a1fa4[_0x68d9('0x44')],'data6':_0x4a1fa4[_0x68d9('0x3d')]},{'where':{'id':_0x4a1fa4['id']}});})['then'](function(){return _0x4a1fa4;})['catch'](function(_0x4e29e9){logger[_0x68d9('0x45')](_0x68d9('0x46'),_0x4a1fa4['id'],_0x4e29e9);});}function getOauth2MicrosoftAccessToken(_0x2e014a,_0x40221d){var _0x12de98={'grant_type':_0x68d9('0x47'),'code':_0x2e014a,'scope':getAccessTokenScope(_0x40221d),'redirect_uri':_0x40221d[_0x68d9('0x3e')],'client_id':_0x40221d['data1'],'client_secret':encryptor[_0x68d9('0x3f')](_0x40221d['data3'])};var _0x2939b0={'method':_0x68d9('0x41'),'uri':MICROSOFT_AUTH_URL[_0x68d9('0x1b')](_0x68d9('0x1c'),_0x40221d[_0x68d9('0x1d')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x12de98,'json':!![]};return rp(_0x2939b0);}function startRefreshInterval(_0x96b677){var _0xb5ddf3=schedule[_0x68d9('0x48')];if(_0xb5ddf3[_0x96b677['id']])clearInterval(_0xb5ddf3[_0x96b677['id']]);_0xb5ddf3[_0x96b677['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0x68d9('0x49')](this,{'id':_0x96b677['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0x68d9('0x48')]=_0xb5ddf3;}function startAllRefreshIntervals(){return db[_0x68d9('0x3b')][_0x68d9('0x4a')]({'where':{'data6':{'$ne':null}},'raw':!![]})[_0x68d9('0x3a')](function(_0x2aae20){var _0x3f0ce0=_0x2aae20[_0x68d9('0x14')](function(_0x11c616){return refreshOauth2MicrosoftAccessToken(_0x11c616)[_0x68d9('0x3a')](function(_0x53f47b){startRefreshInterval(_0x53f47b);});});return Promise[_0x68d9('0x4b')](_0x3f0ce0);})[_0x68d9('0x4c')](function(_0x394abd){var _0x2535a6=_0x394abd?util['inspect'](_0x394abd,{'showHidden':![],'depth':null}):'';logger[_0x68d9('0x45')](_0x68d9('0x4d'),_0x2535a6);});}module[_0x68d9('0x4e')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
+var _0xad66=['all','inspect','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','exports','lodash','crypto','moment','ioredis','request-promise','util','../../components/encryptor','../../config/environment','api','../../config/schedule/cloud-provider','../../mysqldb','redis','defaults','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','openid','profile','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','offline_access','/authorize','map','type','Dynamics365','push','data7','/.default','replace','{TENANT_ID}','data2','code','id_token','from','toString','base64','hex','client_id','data1','response_type','join','data4','response_mode','form_post','scope','state','nonce','key','value','oauth2Claims','decode','iss','audience','exp','resolve','CloudProvider','findOne','then','refresh_token','data6','data3','POST','data5','access_token','catch','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','decryptString','bind','intervals','findAll'];(function(_0x4b03c9,_0x17ce03){var _0x161ba2=function(_0xb952db){while(--_0xb952db){_0x4b03c9['push'](_0x4b03c9['shift']());}};_0x161ba2(++_0x17ce03);}(_0xad66,0xe5));var _0x6ad6=function(_0x5e06f0,_0x12f101){_0x5e06f0=_0x5e06f0-0x0;var _0x57673c=_0xad66[_0x5e06f0];return _0x57673c;};'use strict';var _=require(_0x6ad6('0x0'));var crypto=require(_0x6ad6('0x1'));var jwt=require('jsonwebtoken');var moment=require(_0x6ad6('0x2'));var Redis=require(_0x6ad6('0x3'));var rp=require(_0x6ad6('0x4'));var util=require(_0x6ad6('0x5'));var encryptor=require(_0x6ad6('0x6'));var config=require(_0x6ad6('0x7'));var logger=require('../../config/logger')(_0x6ad6('0x8'));var schedule=require(_0x6ad6('0x9'));var db=require(_0x6ad6('0xa'))['db'];config[_0x6ad6('0xb')]=_[_0x6ad6('0xc')](config[_0x6ad6('0xb')],{'host':'localhost','port':0x18eb});var redis=new Redis(config[_0x6ad6('0xb')]);var MICROSOFT_AUTH_URL=_0x6ad6('0xd');var AZURE_AUTH_SCOPES={'Outlook365':[_0x6ad6('0xe'),_0x6ad6('0xf'),'email','offline_access',_0x6ad6('0x10'),_0x6ad6('0x11'),_0x6ad6('0x12')],'Dynamics365':['openid',_0x6ad6('0x13')]};var MICROSOFT_AUTH_ENDPOINT=_0x6ad6('0x14');var MICROSOFT_TOKEN_ENDPOINT='/token';var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0xbf9d22){var _0x5c970e=_[_0x6ad6('0x15')](AZURE_AUTH_SCOPES[_0xbf9d22['type']]);if(_0xbf9d22[_0x6ad6('0x16')]===_0x6ad6('0x17'))_0x5c970e[_0x6ad6('0x18')](_0xbf9d22[_0x6ad6('0x19')]+_0x6ad6('0x1a'));return _0x5c970e['join']('\x20');}function getAccessTokenScope(_0x5c69b2){if(_0x5c69b2[_0x6ad6('0x16')]==='Outlook365')return _0x6ad6('0x10');if(_0x5c69b2['type']===_0x6ad6('0x17'))return _0x5c69b2[_0x6ad6('0x19')]+_0x6ad6('0x1a');}function generateMicrosoftAuthorizationUrl(_0x1796cd,_0x49c889){var _0x277814=MICROSOFT_AUTH_URL[_0x6ad6('0x1b')](_0x6ad6('0x1c'),_0x1796cd[_0x6ad6('0x1d')]);var _0x21f974=[_0x6ad6('0x1e'),_0x6ad6('0x1f')];var _0x1b0ced=Buffer[_0x6ad6('0x20')](JSON['stringify']({'id':_0x49c889}))[_0x6ad6('0x21')](_0x6ad6('0x22'));var _0x518f1f=crypto['randomBytes'](0x10)[_0x6ad6('0x21')](_0x6ad6('0x23'));var _0x5cf3ec=getAuthorizationScopes(_0x1796cd);var _0xef93be=[{'key':_0x6ad6('0x24'),'value':_0x1796cd[_0x6ad6('0x25')]},{'key':_0x6ad6('0x26'),'value':encodeURIComponent(_0x21f974[_0x6ad6('0x27')]('\x20'))},{'key':'redirect_uri','value':_0x1796cd[_0x6ad6('0x28')]},{'key':_0x6ad6('0x29'),'value':_0x6ad6('0x2a')},{'key':_0x6ad6('0x2b'),'value':encodeURIComponent(_0x5cf3ec)},{'key':_0x6ad6('0x2c'),'value':_0x1b0ced},{'key':_0x6ad6('0x2d'),'value':_0x518f1f},{'key':'prompt','value':'login'}];var _0x45111e=_0x277814+MICROSOFT_AUTH_ENDPOINT+'?'+_['map'](_0xef93be,function(_0x22efa8){return _0x22efa8[_0x6ad6('0x2e')]+'='+_0x22efa8[_0x6ad6('0x2f')];})[_0x6ad6('0x27')]('&');_0x1796cd[_0x6ad6('0x30')]={'issuer':_0x277814[_0x6ad6('0x1b')]('oauth2/',''),'audience':_0x1796cd['data1'],'state':_0x1b0ced,'nonce':_0x518f1f};redis['set'](_0x1b0ced,JSON['stringify'](_0x1796cd));return _0x45111e;}function isValidIdToken(_0x52c4d2,_0x405dd1){try{var _0x106acc=jwt[_0x6ad6('0x31')](_0x52c4d2,{'complete':!![]});var _0x3eb8ef=_0x106acc['payload'];if(_0x3eb8ef[_0x6ad6('0x32')]!==_0x405dd1['issuer'])return![];if(_0x3eb8ef['aud']!==_0x405dd1[_0x6ad6('0x33')])return![];if(_0x3eb8ef[_0x6ad6('0x2d')]!==_0x405dd1['nonce'])return![];if(moment()['isAfter'](moment['unix'](_0x3eb8ef[_0x6ad6('0x34')])))return![];return!![];}catch(_0x1a8f7a){throw _0x1a8f7a;}}function refreshOauth2MicrosoftAccessToken(_0x329eef){return Promise[_0x6ad6('0x35')]()['then'](function(){if(_0x329eef['data3'])return _0x329eef;return db[_0x6ad6('0x36')][_0x6ad6('0x37')]({'where':{'id':_0x329eef['id']},'raw':!![]});})[_0x6ad6('0x38')](function(_0x4b8392){var _0x93870d={'grant_type':_0x6ad6('0x39'),'refresh_token':_0x4b8392[_0x6ad6('0x3a')],'scope':getAccessTokenScope(_0x4b8392),'redirect_uri':_0x4b8392[_0x6ad6('0x28')],'client_id':_0x4b8392[_0x6ad6('0x25')],'client_secret':encryptor['decryptString'](_0x4b8392[_0x6ad6('0x3b')])};var _0xb6f93a={'method':_0x6ad6('0x3c'),'uri':MICROSOFT_AUTH_URL[_0x6ad6('0x1b')](_0x6ad6('0x1c'),_0x4b8392[_0x6ad6('0x1d')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x93870d,'json':!![]};return rp(_0xb6f93a);})[_0x6ad6('0x38')](function(_0x34bf15){_0x329eef[_0x6ad6('0x3d')]=_0x34bf15[_0x6ad6('0x3e')];_0x329eef[_0x6ad6('0x3a')]=_0x34bf15[_0x6ad6('0x39')];return db[_0x6ad6('0x36')]['update']({'data5':_0x329eef[_0x6ad6('0x3d')],'data6':_0x329eef['data6']},{'where':{'id':_0x329eef['id']}});})[_0x6ad6('0x38')](function(){return _0x329eef;})[_0x6ad6('0x3f')](function(_0x55b4cb){logger[_0x6ad6('0x40')](_0x6ad6('0x41'),_0x329eef['id'],_0x55b4cb);});}function getOauth2MicrosoftAccessToken(_0x415c99,_0x2d702b){var _0x51a4d8={'grant_type':_0x6ad6('0x42'),'code':_0x415c99,'scope':getAccessTokenScope(_0x2d702b),'redirect_uri':_0x2d702b[_0x6ad6('0x28')],'client_id':_0x2d702b[_0x6ad6('0x25')],'client_secret':encryptor[_0x6ad6('0x43')](_0x2d702b[_0x6ad6('0x3b')])};var _0x233a8d={'method':'POST','uri':MICROSOFT_AUTH_URL['replace'](_0x6ad6('0x1c'),_0x2d702b[_0x6ad6('0x1d')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x51a4d8,'json':!![]};return rp(_0x233a8d);}function startRefreshInterval(_0x1353ca){var _0x5a03d1=schedule['intervals'];if(_0x5a03d1[_0x1353ca['id']])clearInterval(_0x5a03d1[_0x1353ca['id']]);_0x5a03d1[_0x1353ca['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0x6ad6('0x44')](this,{'id':_0x1353ca['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0x6ad6('0x45')]=_0x5a03d1;}function startAllRefreshIntervals(){return db[_0x6ad6('0x36')][_0x6ad6('0x46')]({'where':{'data6':{'$ne':null}},'raw':!![]})[_0x6ad6('0x38')](function(_0x528198){var _0x5101cc=_0x528198[_0x6ad6('0x15')](function(_0x1344b9){return refreshOauth2MicrosoftAccessToken(_0x1344b9)[_0x6ad6('0x38')](function(_0x492ca8){startRefreshInterval(_0x492ca8);});});return Promise[_0x6ad6('0x47')](_0x5101cc);})[_0x6ad6('0x3f')](function(_0x49d3e8){var _0x56768c=_0x49d3e8?util[_0x6ad6('0x48')](_0x49d3e8,{'showHidden':![],'depth':null}):'';logger[_0x6ad6('0x40')](_0x6ad6('0x49'),_0x56768c);});}module[_0x6ad6('0x4a')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file