From 0452f7f278d01fc586a6fdeeee89f9567b710d6c Mon Sep 17 00:00:00 2001 From: qkqpttgf <45693631+qkqpttgf@users.noreply.github.com> Date: Thu, 26 Mar 2020 00:03:35 +0800 Subject: [PATCH] add sharepoint site disk --- function/common.php | 125 +++++++++++++++++++++++++++++++++----------- 1 file changed, 94 insertions(+), 31 deletions(-) diff --git a/function/common.php b/function/common.php index bdac631..7bba7e7 100644 --- a/function/common.php +++ b/function/common.php @@ -17,11 +17,15 @@ $Base64Env = [ //'passfile', 'sitename', //'theme', - //'Onedrive_ver', + //'Drive_ver', + //'Drive_custom', //'client_id', 'client_secret', 'domain_path', 'guestup_path', + //'usesharepoint', + 'sharepointname', + //'siteid', 'public_path', //'refresh_token', //'token_expires', @@ -62,26 +66,34 @@ $ShowedCommonEnv = [ ]; $InnerEnv = [ - 'Onedrive_ver', + 'Drive_ver', + 'Drive_custom', 'client_id', 'client_secret', 'diskname', 'domain_path', 'downloadencrypt', 'guestup_path', + 'usesharepoint', + 'sharepointname', + 'siteid', 'public_path', 'refresh_token', 'token_expires', ]; $ShowedInnerEnv = [ - //'Onedrive_ver', + //'Drive_ver', + //'Drive_custom', //'client_id', //'client_secret', 'diskname', 'domain_path', 'downloadencrypt', 'guestup_path', + //'usesharepoint', + //'sharepointname', + //'siteid', 'public_path', //'refresh_token', //'token_expires', @@ -127,17 +139,19 @@ function config_oauth() $_SERVER['sitename'] = getConfig('sitename'); if (empty($_SERVER['sitename'])) $_SERVER['sitename'] = getconstStr('defaultSitename'); $_SERVER['redirect_uri'] = 'https://scfonedrive.github.io'; - - if (getConfig('Onedrive_ver')=='MS') { + if (getConfig('Drive_ver')=='MS') { // MS // https://portal.azure.com - $_SERVER['client_id'] = '4da3e7f2-bf6d-467c-aaf0-578078f0bf7c'; - $_SERVER['client_secret'] = '7/+ykq2xkfx:.DWjacuIRojIaaWL0QI6'; + //$_SERVER['client_id'] = '4da3e7f2-bf6d-467c-aaf0-578078f0bf7c'; + //$_SERVER['client_secret'] = '7/+ykq2xkfx:.DWjacuIRojIaaWL0QI6'; + $_SERVER['client_id'] = '734ef928-d74c-4555-8d1b-d942fa0a1a41'; + $_SERVER['client_secret'] = ':EK[e0/4vQ@mQgma8LmnWb6j4_C1CSIW'; $_SERVER['oauth_url'] = 'https://login.microsoftonline.com/common/oauth2/v2.0/'; $_SERVER['api_url'] = 'https://graph.microsoft.com/v1.0/me/drive/root'; $_SERVER['scope'] = 'https://graph.microsoft.com/Files.ReadWrite.All offline_access'; + if (getConfig('usesharepoint')=='on') $_SERVER['api_url'] = 'https://graph.microsoft.com/v1.0/sites/' . getConfig('siteid') . '/drive/root'; } - if (getConfig('Onedrive_ver')=='CN') { + if (getConfig('Drive_ver')=='CN') { // CN // https://portal.azure.cn $_SERVER['client_id'] = '04c3ca0b-8d07-4773-85ad-98b037d25631'; @@ -145,21 +159,36 @@ function config_oauth() $_SERVER['oauth_url'] = 'https://login.partner.microsoftonline.cn/common/oauth2/v2.0/'; $_SERVER['api_url'] = 'https://microsoftgraph.chinacloudapi.cn/v1.0/me/drive/root'; $_SERVER['scope'] = 'https://microsoftgraph.chinacloudapi.cn/Files.ReadWrite.All offline_access'; - } - if (getConfig('Onedrive_ver')=='MSC') { - // MS Customer - // https://portal.azure.com - $_SERVER['client_id'] = getConfig('client_id'); - $_SERVER['client_secret'] = getConfig('client_secret'); - $_SERVER['oauth_url'] = 'https://login.microsoftonline.com/common/oauth2/v2.0/'; - $_SERVER['api_url'] = 'https://graph.microsoft.com/v1.0/me/drive/root'; - $_SERVER['scope'] = 'https://graph.microsoft.com/Files.ReadWrite.All offline_access'; + if (getConfig('usesharepoint')=='on') $_SERVER['api_url'] = 'https://microsoftgraph.chinacloudapi.cn/v1.0/sites/' . getConfig('siteid') . '/drive/root'; } + if (getConfig('Drive_custom')=='on') { + // Customer + $_SERVER['client_id'] = getConfig('client_id'); + $_SERVER['client_secret'] = getConfig('client_secret'); + } $_SERVER['client_secret'] = urlencode($_SERVER['client_secret']); $_SERVER['scope'] = urlencode($_SERVER['scope']); } +function get_siteid($access_token) +{ + $i=0; + $response = []; + while ($response['stat']!=200&&$i<4) { + $response = curl_request('https://graph.microsoft.com/v1.0/sites/root:/sites/'.getConfig('sharepointname'), false, ['Authorization' => 'Bearer ' . $access_token]); + $i++; + echo 'https://graph.microsoft.com/v1.0/sites/root:/sites/'.getConfig('sharepointname').$response['stat'].$response['body'].' + '; + } + return json_decode($response['body'],true)['id']; + //$_SERVER['api_url'] = 'https://graph.microsoft.com/v1.0/sites/' . $tmp['siteid'] . '/drive/root'; + //setConfig($tmp); + + //error_log('failed to get siteid. response' . json_encode($response)); + //throw new Exception($response['stat'].', failed to get siteid.'.$response['body']); +} + function getListpath($domain) { $domain_path1 = getConfig('domain_path'); @@ -1189,11 +1218,11 @@ function get_refresh_token() $tmp = curl_request($_SERVER['oauth_url'] . 'token', 'client_id=' . $_SERVER['client_id'] .'&client_secret=' . $_SERVER['client_secret'] . '&grant_type=authorization_code&requested_token_use=on_behalf_of&redirect_uri=' . $_SERVER['redirect_uri'] .'&code=' . $_GET['code']); if ($tmp['stat']==200) $ret = json_decode($tmp['body'], true); if (isset($ret['refresh_token'])) { - $tmptoken = $ret['refresh_token']; + $refresh_token = $ret['refresh_token']; $str = ' refresh_token :
'; $str .= ' -

+

'.getconstStr('SavingToken').' '; - setConfig([ 'refresh_token' => $tmptoken, 'token_expires' => time()+30*24*60*60 ], $_COOKIE['disktag']); + $tmptoken['refresh_token'] = $refresh_token; + $tmptoken['token_expires'] = time()+7*24*60*60; + if (getConfig('usesharepoint')=='on') $tmptoken['siteid'] = get_siteid($ret['access_token']); + setConfig($tmptoken, $_COOKIE['disktag']); savecache('access_token', $ret['access_token'], $ret['expires_in'] - 60); //WaitSCFStat(); $str .= ' @@ -1216,7 +1248,7 @@ function get_refresh_token() if (isset($_GET['install1'])) { $_SERVER['disktag'] = $_COOKIE['disktag']; config_oauth(); - if (getConfig('Onedrive_ver')=='MS' || getConfig('Onedrive_ver')=='CN' || getConfig('Onedrive_ver')=='MSC') { + if (getConfig('Drive_ver')=='MS' || getConfig('Drive_ver')=='CN') { return message(' '.getconstStr('JumptoOffice').' ', 'Error', 201); } $_SERVER['disktag'] = $_COOKIE['disktag']; $tmp['disktag_add'] = $_POST['disktag_add']; $tmp['diskname'] = $_POST['diskname']; - $tmp['Onedrive_ver'] = $_POST['Onedrive_ver']; - if ($_POST['Onedrive_ver']=='MSC') { + $tmp['Drive_ver'] = $_POST['Drive_ver']; + if ($_POST['Drive_custom']=='on') { + $tmp['Drive_custom'] = $_POST['Drive_custom']; $tmp['client_id'] = $_POST['client_id']; $tmp['client_secret'] = $_POST['client_secret']; } + if ($_POST['usesharepoint']=='on') { + $tmp['usesharepoint'] = $_POST['usesharepoint']; + $tmp['sharepointname'] = $_POST['sharepointname']; + } $response = setConfigResponse( setConfig($tmp, $_COOKIE['disktag']) ); if (api_error($response)) { $html = api_error_msg($response); @@ -1263,26 +1300,40 @@ function get_refresh_token() $deepLink = "/quickstart/graphIO?publicClientSupport=false&appName=OneManager&redirectUrl=".$_SERVER['redirect_uri']."&allowImplicitFlow=false&ru=".urlencode($ru); $app_url = "https://apps.dev.microsoft.com/?deepLink=".urlencode($deepLink); $html = ' +
'.getconstStr('OnedriveDiskTag').': ('.getConfig('disktag').')
'.getconstStr('OnedriveDiskName').':
- Onedrive_Ver:
-
-
-