From 1c10effb9b0aa9ad9a8879566f89bb1c50d50987 Mon Sep 17 00:00:00 2001 From: abraunegg Date: Wed, 17 Jun 2020 07:57:14 +1000 Subject: [PATCH] Implement support for National cloud deployments (Issue #937) (#938) * Implement support for National cloud deployments as per https://docs.microsoft.com/en-us/graph/deployments --- README.md | 8 +- docs/Office365.md | 2 +- docs/images/application_registration.jpg | Bin 0 -> 66392 bytes docs/images/application_registration_done.jpg | Bin 0 -> 73999 bytes docs/images/authentication_response_uri.jpg | Bin 0 -> 90909 bytes docs/images/authentication_scopes.jpg | Bin 0 -> 84248 bytes docs/national-cloud-deployments.md | 113 +++ src/config.d | 40 + src/itemdb.d | 40 +- src/main.d | 9 + src/onedrive.d | 147 +++- src/sync.d | 768 +++++++++++++----- 12 files changed, 906 insertions(+), 221 deletions(-) create mode 100644 docs/images/application_registration.jpg create mode 100644 docs/images/application_registration_done.jpg create mode 100644 docs/images/authentication_response_uri.jpg create mode 100644 docs/images/authentication_scopes.jpg create mode 100644 docs/national-cloud-deployments.md diff --git a/README.md b/README.md index f05cffee..4b095b14 100644 --- a/README.md +++ b/README.md @@ -18,10 +18,11 @@ This client is a 'fork' of the [skilion](https://github.com/skilion/onedrive) cl * Resumable uploads * Support OneDrive for Business (part of Office 365) * Shared folders (OneDrive Personal) -* SharePoint / Office 365 Shared Libraries (refer to [docs/Office365.md](https://github.com/abraunegg/onedrive/blob/master/docs/Office365.md) to configure) +* SharePoint / Office 365 Shared Libraries * Desktop notifications via libnotify * Dry-run capability to test configuration changes * Prevent major OneDrive accidental data deletion after configuration change +* Support for National cloud deployments (Microsoft Cloud for US Government, Microsoft Cloud Germany, Azure and Office 365 operated by 21Vianet in China) ## What's missing * While local changes are uploaded right away, remote changes are delayed until next sync when using --monitor @@ -36,9 +37,12 @@ See [docs/USAGE.md](https://github.com/abraunegg/onedrive/blob/master/docs/USAGE ## Docker support See [docs/Docker.md](https://github.com/abraunegg/onedrive/blob/master/docs/Docker.md) -## Sharepoint group drive in Office 365 business or education +## SharePoint / Office 365 Shared Libraries (Business or Education) See [docs/Office365.md](https://github.com/abraunegg/onedrive/blob/master/docs/Office365.md) +## National Cloud support +See [docs/national-cloud-deployments.md](https://github.com/abraunegg/onedrive/blob/master/docs/national-cloud-deployments.md) + ## Reporting issues If you encounter any bugs you can report them here on Github. Before filing an issue be sure to: diff --git a/docs/Office365.md b/docs/Office365.md index 990de5bd..f61522f1 100644 --- a/docs/Office365.md +++ b/docs/Office365.md @@ -15,7 +15,7 @@ URL: ``` ## Configuring the onedrive client -Once you have obtained the 'drive_id' above, add to your 'onedrive' configuration file (`~/.config/onedrive/config`)the following: +Once you have obtained the 'drive_id' above, add to your 'onedrive' configuration file (`~/.config/onedrive/config`) the following: ```text drive_id = "insert the drive id from above here" ``` diff --git a/docs/images/application_registration.jpg b/docs/images/application_registration.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0dfbfda90b62abeaa56df0e87cf41298c3467ef7 GIT binary patch literal 66392 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 literal 0 HcmV?d00001 diff --git a/docs/images/application_registration_done.jpg b/docs/images/application_registration_done.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e9559d606a0beffa6400a27a1d9cc38f520df159 GIT binary patch literal 73999 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 J~(?Xwh~0x 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%0D;Uu#J9u(M{lxo8+H3- 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 Z5)q$K1m0D(zry<0)b_9O0o>na{sTFFUN!&# literal 0 HcmV?d00001 diff --git a/docs/national-cloud-deployments.md b/docs/national-cloud-deployments.md new file mode 100644 index 00000000..2edec13c --- /dev/null +++ b/docs/national-cloud-deployments.md @@ -0,0 +1,113 @@ +# How to configure access to specific Microsoft Azure deployments +In some cases it is a requirement to utilise specific Microsoft Azure cloud deployments to conform with data and security reuqirements that requires data to reside within the geographic borders of that country. +Current national clouds that are supported are: +* Microsoft Cloud for US Government +* Microsoft Cloud Germany +* Azure and Office 365 operated by 21Vianet in China + +In order to sucessfully use these specific Microsoft Azure deployments, the following steps are required: +1. Register an application with the Microsoft identity platform using the Azure portal +2. Configure the new application with the appropriate authentication scopes +3. Validate that the authentication / redirect URI is correct for your application registration +4. Configure the onedrive client to use the new application id as provided during application registration +5. Configure the onedrive client to use the right Microsoft Azure deployment region that your application was registered with +6. Authenticate the client + +## Step 1: Register a new application with Microsoft Azure +1. Log into [Microsoft Azure](https://portal.azure.com/) with your applicable identity +2. Select 'Azure Active Directory' as the service you wish to configure +3. Under 'Manage', select 'App registrations' to register a new application +4. Click 'New registration' +5. Type in the appropriate details required as per below: + +![application_registration](./images/application_registration.jpg) + +6. To save the application registration, click 'Register' and something similar to the following will be displayed: + +![application_registration_done](./images/application_registration_done.jpg) + +**Note:** The Application (client) ID UUID as displayed after client registration, is what is required as the 'application_id' for Step 4 below. + +## Step 2: Configure application authentication scopes +Configure the API permissions as per the following: + +| API / Permissions name | Type | Description | Admin consent required | +|---|---|---|---| +| Files.ReadWrite | Delegated | Have full access to user files | No | +| Files.ReadWrite.All | Delegated | Have full access to all files user can access | No | +| offline_access | Delegated | Maintain access to data you have given it access to | No | +| Sites.Read.All | Delegated | Read items in all site collections | No | +| Sites.ReadWrite.All | Delegated | Edit or delete items in all site collections | No | + +![authentication_scopes](./images/authentication_scopes.jpg) + +## Step 3: Validate that the authentication / redirect URI is correct +Add the appropriate redirect URI for your Azure deployment: + +![authentication_response_uri](./images/authentication_response_uri.jpg) + +A valid entry for the response URI should be one of: +* https://login.microsoftonline.us/common/oauth2/nativeclient (Microsoft Cloud for US Government) +* https://login.microsoftonline.de/common/oauth2/nativeclient (Microsoft Cloud Germany) +* https://login.chinacloudapi.cn/common/oauth2/nativeclient (Azure and Office 365 operated by 21Vianet in China) + +## Step 4: Configure the onedrive client to use new application registration +Update to your 'onedrive' configuration file (`~/.config/onedrive/config`) the following: +```text +application_id = "insert valid entry here" +``` + +This will reconfigure the client to use the new application registration you have created. + +**Example:** +```text +application_id = "22c49a0d-d21c-4792-aed1-8f163c982546" +``` + +## Step 5: Confgure the onedrive client to use the specific Microsoft Azure deployment +Update to your 'onedrive' configuration file (`~/.config/onedrive/config`) the following: +```text +azure_ad_endpoint = "insert valid entry here" +``` + +Valid entries are: +* USL4 (Microsoft Cloud for US Government) +* USL5 (Microsoft Cloud for US Government - DOD) +* DE (Microsoft Cloud Germany) +* CN (Azure and Office 365 operated by 21Vianet in China) + +This will configure your client to use the correct Azure AD and Graph endpoints as per [https://docs.microsoft.com/en-us/graph/deployments](https://docs.microsoft.com/en-us/graph/deployments) + +**Example:** +```text +azure_ad_endpoint = "USL4" +``` + +## Step 6: Authenticate the client +Run the application without any additional command switches. + +You will be asked to open a specific URL by using your web browser where you will have to login into your Microsoft Account and give the application the permission to access your files. After giving permission to the application, you will be redirected to a blank page. Copy the URI of the blank page into the application. +```text +[user@hostname ~]$ onedrive + +Authorize this app visiting: + +https://..... + +Enter the response uri: + +``` + +**Example:** +``` +[user@hostname ~]$ onedrive +Authorize this app visiting: + +https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=22c49a0d-d21c-4792-aed1-8f163c982546&scope=Files.ReadWrite%20Files.ReadWrite.all%20Sites.ReadWrite.All%20offline_access&response_type=code&redirect_uri=https://login.microsoftonline.com/common/oauth2/nativeclient + +Enter the response uri: https://login.microsoftonline.com/common/oauth2/nativeclient?code= + +Application has been successfully authorised, however no additional command switches were provided. + +Please use --help for further assistance in regards to running this application. +``` diff --git a/src/config.d b/src/config.d index 050b5822..437b4d97 100644 --- a/src/config.d +++ b/src/config.d @@ -84,6 +84,22 @@ final class Config // Ignore data safety checks and overwrite local data rather than preserve & rename // This is a config file option ONLY boolValues["bypass_data_preservation"] = false; + // Support National Azure AD endpoints as per https://docs.microsoft.com/en-us/graph/deployments + // By default, if empty, use standard Azure AD URL's + // Will support the following options: + // - USL4 + // AD Endpoint: https://login.microsoftonline.us + // Graph Endpoint: https://graph.microsoft.us + // - USL5 + // AD Endpoint: https://login.microsoftonline.us + // Graph Endpoint: https://dod-graph.microsoft.us + // - DE + // AD Endpoint: https://portal.microsoftazure.de + // Graph Endpoint: https://graph.microsoft.de + // - CN + // AD Endpoint: https://login.chinacloudapi.cn + // Graph Endpoint: https://microsoftgraph.chinacloudapi.cn + stringValues["azure_ad_endpoint"] = ""; // DEVELOPER OPTIONS // display_memory = true | false @@ -512,6 +528,30 @@ final class Config if (key == "sync_dir") configFileSyncDir = c.front.dup; if (key == "skip_file") configFileSkipFile = c.front.dup; if (key == "skip_dir") configFileSkipDir = c.front.dup; + // Azure AD Configuration + if (key == "azure_ad_endpoint") { + string azureConfigValue = c.front.dup; + switch(azureConfigValue) { + case "": + log.log("Using config option for Global Azure AD Endpoints"); + break; + case "USL4": + log.log("Using config option for Azure AD for US Government Endpoints"); + break; + case "USL5": + log.log("Using config option for Azure AD for US Government Endpoints (DOD)"); + break; + case "DE": + log.log("Using config option for Azure AD Germany"); + break; + case "CN": + log.log("Using config option for Azure AD China operated by 21Vianet"); + break; + // Default - all other entries + default: + log.log("Unknown Azure AD Endpoint - using Global Azure AD Endpoints"); + } + } } else { auto ppp = key in longValues; if (ppp) { diff --git a/src/itemdb.d b/src/itemdb.d index a8e93807..90568790 100644 --- a/src/itemdb.d +++ b/src/itemdb.d @@ -26,12 +26,13 @@ struct Item { string quickXorHash; string remoteDriveId; string remoteId; + string syncStatus; } final class ItemDatabase { // increment this for every change in the db schema - immutable int itemDatabaseVersion = 9; + immutable int itemDatabaseVersion = 10; Database db; string insertItemStmt; @@ -83,12 +84,12 @@ final class ItemDatabase db.exec("PRAGMA auto_vacuum = FULL"); insertItemStmt = " - INSERT OR REPLACE INTO item (driveId, id, name, type, eTag, cTag, mtime, parentId, crc32Hash, sha1Hash, quickXorHash, remoteDriveId, remoteId) - VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13) + INSERT OR REPLACE INTO item (driveId, id, name, type, eTag, cTag, mtime, parentId, crc32Hash, sha1Hash, quickXorHash, remoteDriveId, remoteId, syncStatus) + VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14) "; updateItemStmt = " UPDATE item - SET name = ?3, type = ?4, eTag = ?5, cTag = ?6, mtime = ?7, parentId = ?8, crc32Hash = ?9, sha1Hash = ?10, quickXorHash = ?11, remoteDriveId = ?12, remoteId = ?13 + SET name = ?3, type = ?4, eTag = ?5, cTag = ?6, mtime = ?7, parentId = ?8, crc32Hash = ?9, sha1Hash = ?10, quickXorHash = ?11, remoteDriveId = ?12, remoteId = ?13, syncStatus = ?14 WHERE driveId = ?1 AND id = ?2 "; selectItemByIdStmt = " @@ -117,6 +118,7 @@ final class ItemDatabase remoteDriveId TEXT, remoteId TEXT, deltaLink TEXT, + syncStatus TEXT, PRIMARY KEY (driveId, id), FOREIGN KEY (driveId, parentId) REFERENCES item (driveId, id) @@ -300,13 +302,14 @@ final class ItemDatabase bind(11, quickXorHash); bind(12, remoteDriveId); bind(13, remoteId); + bind(14, syncStatus); } } private Item buildItem(Statement.Result result) { assert(!result.empty, "The result must not be empty"); - assert(result.front.length == 14, "The result must have 14 columns"); + assert(result.front.length == 15, "The result must have 15 columns"); Item item = { driveId: result.front[0].dup, id: result.front[1].dup, @@ -319,7 +322,8 @@ final class ItemDatabase sha1Hash: result.front[9].dup, quickXorHash: result.front[10].dup, remoteDriveId: result.front[11].dup, - remoteId: result.front[12].dup + remoteId: result.front[12].dup, + syncStatus: result.front[14].dup }; switch (result.front[3]) { case "file": item.type = ItemType.file; break; @@ -417,4 +421,28 @@ final class ItemDatabase stmt.bind(3, deltaLink); stmt.exec(); } + + // National Cloud Deployments (US and DE) do not support /delta as a query + // We need to track in the database that this item is in sync + // As we query /children to get all children from OneDrive, update anything in the database + // to be flagged as not-in-sync, thus, we can use that flag to determing what was previously + // in-sync, but now deleted on OneDrive + void downgradeSyncStatusFlag() + { + db.exec("UPDATE item SET syncStatus = 'N'"); + } + + // National Cloud Deployments (US and DE) do not support /delta as a query + // Select items that have a out-of-sync flag set + Item[] selectOutOfSyncItems() + { + Item[] items; + auto stmt = db.prepare("SELECT * FROM item WHERE syncStatus = 'N'"); + auto res = stmt.exec(); + while (!res.empty) { + items ~= buildItem(res); + res.step(); + } + return items; + } } diff --git a/src/main.d b/src/main.d index ddad65f1..878d4b45 100644 --- a/src/main.d +++ b/src/main.d @@ -681,6 +681,15 @@ int main(string[] args) sync.setBypassDataPreservation(); } + // Are we configured to use a National Cloud Deployment + if (cfg.getValueString("azure_ad_endpoint") != "") { + // value is configured, is it a valid value? + if ((cfg.getValueString("azure_ad_endpoint") == "USL4") || (cfg.getValueString("azure_ad_endpoint") == "USL5") || (cfg.getValueString("azure_ad_endpoint") == "DE") || (cfg.getValueString("azure_ad_endpoint") == "CN")) { + // valid entries to flag we are using a National Cloud Deployment + sync.setNationalCloudDeployment(); + } + } + // Do we need to validate the syncDir to check for the presence of a '.nosync' file if (cfg.getValueBool("check_nomount")) { // we were asked to check the mounts diff --git a/src/onedrive.d b/src/onedrive.d index 0412a97b..1d68e983 100644 --- a/src/onedrive.d +++ b/src/onedrive.d @@ -15,15 +15,26 @@ private bool simulateNoRefreshTokenFile = false; private ulong retryAfterValue = 0; private immutable { - // Personal & Business Queries - string authUrl = "https://login.microsoftonline.com/common/oauth2/v2.0/authorize"; - string redirectUrl = "https://login.microsoftonline.com/common/oauth2/nativeclient"; - string tokenUrl = "https://login.microsoftonline.com/common/oauth2/v2.0/token"; - string driveByIdUrl = "https://graph.microsoft.com/v1.0/drives/"; + // Azure Active Directory & Graph Explorer Endpoints + // Global & Defaults + string globalAuthEndpoint = "https://login.microsoftonline.com"; + string globalGraphEndpoint = "https://graph.microsoft.com"; - // Office 365 / SharePoint Queries - string siteSearchUrl = "https://graph.microsoft.com/v1.0/sites?search"; - string siteDriveUrl = "https://graph.microsoft.com/v1.0/sites/"; + // US Government L4 + string usl4AuthEndpoint = "https://login.microsoftonline.us"; + string usl4GraphEndpoint = "https://graph.microsoft.us"; + + // US Government L5 + string usl5AuthEndpoint = "https://login.microsoftonline.us"; + string usl5GraphEndpoint = "https://dod-graph.microsoft.us"; + + // Germany + string deAuthEndpoint = "https://login.microsoftonline.de"; + string deGraphEndpoint = "https://graph.microsoft.de"; + + // China + string cnAuthEndpoint = "https://login.chinacloudapi.cn"; + string cnGraphEndpoint = "https://microsoftgraph.chinacloudapi.cn"; } private { @@ -38,11 +49,24 @@ private { // Default Drive ID string driveId = ""; - - // Common URL's - string driveUrl = "https://graph.microsoft.com/v1.0/me/drive"; - string itemByIdUrl = "https://graph.microsoft.com/v1.0/me/drive/items/"; - string itemByPathUrl = "https://graph.microsoft.com/v1.0/me/drive/root:/"; + + // API Query URL's, based on using defaults, but can be updated by config option 'azure_ad_endpoint' + // Authentication + string authUrl = globalAuthEndpoint ~ "/common/oauth2/v2.0/authorize"; + string redirectUrl = globalAuthEndpoint ~ "/common/oauth2/nativeclient"; + string tokenUrl = globalAuthEndpoint ~ "/common/oauth2/v2.0/token"; + + // Drive Queries + string driveUrl = globalGraphEndpoint ~ "/v1.0/me/drive"; + string driveByIdUrl = globalGraphEndpoint ~ "/v1.0/drives/"; + + // Item Queries + string itemByIdUrl = globalGraphEndpoint ~ "/v1.0/me/drive/items/"; + string itemByPathUrl = globalGraphEndpoint ~ "/v1.0/me/drive/root:/"; + + // Office 365 / SharePoint Queries + string siteSearchUrl = globalGraphEndpoint ~ "/v1.0/sites?search"; + string siteDriveUrl = globalGraphEndpoint ~ "/v1.0/sites/"; } class OneDriveException: Exception @@ -110,7 +134,82 @@ final class OneDriveApi http.verbose = true; .debugResponse = true; } - + + // Configure Azure AD endpoints if 'azure_ad_endpoint' is configured + string azureConfigValue = cfg.getValueString("azure_ad_endpoint"); + switch(azureConfigValue) { + case "": + log.log("Configuring Global Azure AD Endpoints"); + break; + case "USL4": + log.log("Configuring Azure AD for US Government Endpoints"); + // Authentication + authUrl = usl4AuthEndpoint ~ "/common/oauth2/v2.0/authorize"; + redirectUrl = usl4AuthEndpoint ~ "/common/oauth2/nativeclient"; + tokenUrl = usl4AuthEndpoint ~ "/common/oauth2/v2.0/token"; + // Drive Queries + driveUrl = usl4GraphEndpoint ~ "/v1.0/me/drive"; + driveByIdUrl = usl4GraphEndpoint ~ "/v1.0/drives/"; + // Item Queries + itemByIdUrl = usl4GraphEndpoint ~ "/v1.0/me/drive/items/"; + itemByPathUrl = usl4GraphEndpoint ~ "/v1.0/me/drive/root:/"; + // Office 365 / SharePoint Queries + siteSearchUrl = usl4GraphEndpoint ~ "/v1.0/sites?search"; + siteDriveUrl = usl4GraphEndpoint ~ "/v1.0/sites/"; + break; + case "USL5": + log.log("Configuring Azure AD for US Government Endpoints (DOD)"); + // Authentication + authUrl = usl5AuthEndpoint ~ "/common/oauth2/v2.0/authorize"; + redirectUrl = usl5AuthEndpoint ~ "/common/oauth2/nativeclient"; + tokenUrl = usl5AuthEndpoint ~ "/common/oauth2/v2.0/token"; + // Drive Queries + driveUrl = usl5GraphEndpoint ~ "/v1.0/me/drive"; + driveByIdUrl = usl5GraphEndpoint ~ "/v1.0/drives/"; + // Item Queries + itemByIdUrl = usl5GraphEndpoint ~ "/v1.0/me/drive/items/"; + itemByPathUrl = usl5GraphEndpoint ~ "/v1.0/me/drive/root:/"; + // Office 365 / SharePoint Queries + siteSearchUrl = usl5GraphEndpoint ~ "/v1.0/sites?search"; + siteDriveUrl = usl5GraphEndpoint ~ "/v1.0/sites/"; + break; + case "DE": + log.log("Configuring Azure AD Germany"); + // Authentication + authUrl = deAuthEndpoint ~ "/common/oauth2/v2.0/authorize"; + redirectUrl = deAuthEndpoint ~ "/common/oauth2/nativeclient"; + tokenUrl = deAuthEndpoint ~ "/common/oauth2/v2.0/token"; + // Drive Queries + driveUrl = deGraphEndpoint ~ "/v1.0/me/drive"; + driveByIdUrl = deGraphEndpoint ~ "/v1.0/drives/"; + // Item Queries + itemByIdUrl = deGraphEndpoint ~ "/v1.0/me/drive/items/"; + itemByPathUrl = deGraphEndpoint ~ "/v1.0/me/drive/root:/"; + // Office 365 / SharePoint Queries + siteSearchUrl = deGraphEndpoint ~ "/v1.0/sites?search"; + siteDriveUrl = deGraphEndpoint ~ "/v1.0/sites/"; + break; + case "CN": + log.log("Configuring AD China operated by 21Vianet"); + // Authentication + authUrl = cnAuthEndpoint ~ "/common/oauth2/v2.0/authorize"; + redirectUrl = cnAuthEndpoint ~ "/common/oauth2/nativeclient"; + tokenUrl = cnAuthEndpoint ~ "/common/oauth2/v2.0/token"; + // Drive Queries + driveUrl = cnGraphEndpoint ~ "/v1.0/me/drive"; + driveByIdUrl = cnGraphEndpoint ~ "/v1.0/drives/"; + // Item Queries + itemByIdUrl = cnGraphEndpoint ~ "/v1.0/me/drive/items/"; + itemByPathUrl = cnGraphEndpoint ~ "/v1.0/me/drive/root:/"; + // Office 365 / SharePoint Queries + siteSearchUrl = cnGraphEndpoint ~ "/v1.0/sites?search"; + siteDriveUrl = cnGraphEndpoint ~ "/v1.0/sites/"; + break; + // Default - all other entries + default: + log.log("Unknown Azure AD Endpoint request - using Global Azure AD Endpoints"); + } + // Configure the User Agent string if (cfg.getValueString("user_agent") == "") { // Application User Agent string defaults @@ -308,7 +407,22 @@ final class OneDriveApi } return get(url); } - + + // https://docs.microsoft.com/en-us/onedrive/developer/rest-api/api/driveitem_list_children + JSONValue listChildren(const(char)[] driveId, const(char)[] id, const(char)[] nextLink) + { + checkAccessTokenExpired(); + const(char)[] url; + // configure URL to query + if (nextLink.empty) { + url = driveByIdUrl ~ driveId ~ "/items/" ~ id ~ "/children"; + url ~= "?select=id,name,eTag,cTag,deleted,file,folder,root,fileSystemInfo,remoteItem,parentReference,size"; + } else { + url = nextLink; + } + return get(url); + } + // https://docs.microsoft.com/en-us/onedrive/developer/rest-api/api/driveitem_get_content void downloadById(const(char)[] driveId, const(char)[] id, string saveToPath, long fileSize) { @@ -375,7 +489,6 @@ final class OneDriveApi { checkAccessTokenExpired(); const(char)[] url; - // string itemByPathUrl = "https://graph.microsoft.com/v1.0/me/drive/root:/"; if ((path == ".")||(path == "/")) url = driveUrl ~ "/root/"; else url = itemByPathUrl ~ encodeComponent(path) ~ ":/"; url ~= "?select=id,name,eTag,cTag,deleted,file,folder,root,fileSystemInfo,remoteItem,parentReference,size"; @@ -388,7 +501,6 @@ final class OneDriveApi { checkAccessTokenExpired(); const(char)[] url; - // string driveByIdUrl = "https://graph.microsoft.com/v1.0/drives/"; url = driveByIdUrl ~ driveId ~ "/items/" ~ id; url ~= "?select=id,name,eTag,cTag,deleted,file,folder,root,fileSystemInfo,remoteItem,parentReference,size"; return get(url); @@ -400,7 +512,6 @@ final class OneDriveApi { checkAccessTokenExpired(); const(char)[] url; - // string driveByIdUrl = "https://graph.microsoft.com/v1.0/drives/"; url = driveByIdUrl ~ driveId ~ "/items/" ~ id; url ~= "?select=size,malware,file,webUrl"; return get(url); diff --git a/src/sync.d b/src/sync.d index 138ad1cd..41b025a1 100644 --- a/src/sync.d +++ b/src/sync.d @@ -171,6 +171,13 @@ private Item makeItem(const ref JSONValue driveItem) item.remoteDriveId = driveItem["remoteItem"]["parentReference"]["driveId"].str; item.remoteId = driveItem["remoteItem"]["id"].str; } + + // National Cloud Deployments (US and DE) do not support /delta as a query + // Thus we need to track in the database that this item is in sync + // As we are making an item, set the syncStatus to Y + // ONLY when using a National Cloud Deployment, all the existing DB entries will get set to N + // so when processing /children, it can be identified what the 'deleted' difference is + item.syncStatus = "Y"; return item; } @@ -241,6 +248,8 @@ final class SyncEngine // is bypass_data_preservation set via config file // Local data loss MAY occur in this scenario private bool bypassDataPreservation = false; + // is National Cloud Deployments configured + private bool nationalCloudDeployment = false; this(Config cfg, OneDriveApi onedrive, ItemDatabase itemdb, SelectiveSync selectiveSync) { @@ -492,6 +501,13 @@ final class SyncEngine log.vdebug("Setting bypassDataPreservation = true"); } + // set nationalCloudDeployment to true + void setNationalCloudDeployment() + { + nationalCloudDeployment = true; + log.vdebug("Setting nationalCloudDeployment = true"); + } + // download all new changes from OneDrive void applyDifferences(bool performFullItemScan) { @@ -715,6 +731,7 @@ final class SyncEngine string syncFolderChildPath; string deltaLink; string deltaLinkAvailable; + bool nationalCloudChildrenScan = false; // Query the name of this folder id try { @@ -925,207 +942,281 @@ final class SyncEngine } // what path id are we going to query? log.vdebug("path idToQuery = ", idToQuery); - - // query for changes = onedrive.viewChangesById(driveId, idToQuery, deltaLink); - try { - // Fetch the changes relative to the path id we want to query - // changes with or without deltaLink - changes = onedrive.viewChangesById(driveId, idToQuery, deltaLink); - if (changes.type() == JSONType.object) { - log.vdebug("Query 'changes = onedrive.viewChangesById(driveId, idToQuery, deltaLink)' performed successfully"); - } - } catch (OneDriveException e) { - // OneDrive threw an error - log.vdebug("------------------------------------------------------------------"); - log.vdebug("Query Error: changes = onedrive.viewChangesById(driveId, idToQuery, deltaLink)"); - log.vdebug("driveId: ", driveId); - log.vdebug("idToQuery: ", idToQuery); - log.vdebug("deltaLink: ", deltaLink); - - // HTTP request returned status code 404 (Not Found) - if (e.httpStatusCode == 404) { - // Stop application - log.log("\n\nOneDrive returned a 'HTTP 404 - Item not found'"); - log.log("The item id to query was not found on OneDrive"); - log.log("\nRemove your '", cfg.databaseFilePath, "' file and try to sync again\n"); - return; - } - - // HTTP request returned status code 410 (The requested resource is no longer available at the server) - if (e.httpStatusCode == 410) { - log.vdebug("Delta link expired for 'onedrive.viewChangesById(driveId, idToQuery, deltaLink)', setting 'deltaLink = null'"); - deltaLink = null; - continue; - } - - // HTTP request returned status code 429 (Too Many Requests) - if (e.httpStatusCode == 429) { - // HTTP request returned status code 429 (Too Many Requests). We need to leverage the response Retry-After HTTP header to ensure minimum delay until the throttle is removed. - handleOneDriveThrottleRequest(); - log.vdebug("Retrying original request that generated the OneDrive HTTP 429 Response Code (Too Many Requests) - attempting to query changes from OneDrive using deltaLink"); - } - - // HTTP request returned status code 500 (Internal Server Error) - if (e.httpStatusCode == 500) { - // display what the error is - displayOneDriveErrorMessage(e.msg); - return; - } - - // HTTP request returned status code 504 (Gateway Timeout) or 429 retry - if ((e.httpStatusCode == 429) || (e.httpStatusCode == 504)) { - // If an error is returned when querying 'changes' and we recall the original function, we go into a never ending loop where the sync never ends - // re-try the specific changes queries - if (e.httpStatusCode == 504) { - log.log("OneDrive returned a 'HTTP 504 - Gateway Timeout' when attempting to query for changes - retrying applicable request"); - log.vdebug("changes = onedrive.viewChangesById(driveId, idToQuery, deltaLink) previously threw an error - retrying"); - // The server, while acting as a proxy, did not receive a timely response from the upstream server it needed to access in attempting to complete the request. - log.vdebug("Thread sleeping for 30 seconds as the server did not receive a timely response from the upstream server it needed to access in attempting to complete the request"); - Thread.sleep(dur!"seconds"(30)); - log.vdebug("Retrying Query - using original deltaLink after delay"); - } - // re-try original request - retried for 429 and 504 - try { - log.vdebug("Retrying Query: changes = onedrive.viewChangesById(driveId, idToQuery, deltaLink)"); - changes = onedrive.viewChangesById(driveId, idToQuery, deltaLink); - log.vdebug("Query 'changes = onedrive.viewChangesById(driveId, idToQuery, deltaLink)' performed successfully on re-try"); - } catch (OneDriveException e) { - // display what the error is - log.vdebug("Query Error: changes = onedrive.viewChangesById(driveId, idToQuery, deltaLink) on re-try after delay"); - if (e.httpStatusCode == 504) { - log.log("OneDrive returned a 'HTTP 504 - Gateway Timeout' when attempting to query for changes - retrying applicable request"); - log.vdebug("changes = onedrive.viewChangesById(driveId, idToQuery, deltaLink) previously threw an error - retrying with empty deltaLink"); - try { - // try query with empty deltaLink value - deltaLink = null; - changes = onedrive.viewChangesById(driveId, idToQuery, deltaLink); - log.vdebug("Query 'changes = onedrive.viewChangesById(driveId, idToQuery, deltaLink)' performed successfully on re-try"); - } catch (OneDriveException e) { - // Tried 3 times, give up - displayOneDriveErrorMessage(e.msg); - return; - } - } else { - // error was not a 504 this time - displayOneDriveErrorMessage(e.msg); - return; - } - } - } else { - // Default operation if not 404, 410, 429, 500 or 504 errors - // display what the error is - displayOneDriveErrorMessage(e.msg); - return; - } - } - - // query for changesAvailable = onedrive.viewChangesById(driveId, idToQuery, deltaLinkAvailable); - try { - // Fetch the changes relative to the path id we want to query - // changes based on deltaLink - changesAvailable = onedrive.viewChangesById(driveId, idToQuery, deltaLinkAvailable); - if (changesAvailable.type() == JSONType.object) { - log.vdebug("Query 'changesAvailable = onedrive.viewChangesById(driveId, idToQuery, deltaLinkAvailable)' performed successfully"); - } - } catch (OneDriveException e) { - // OneDrive threw an error - log.vdebug("------------------------------------------------------------------"); - log.vdebug("Query Error: changesAvailable = onedrive.viewChangesById(driveId, idToQuery, deltaLinkAvailable)"); - log.vdebug("driveId: ", driveId); - log.vdebug("idToQuery: ", idToQuery); - log.vdebug("deltaLink: ", deltaLink); - - // HTTP request returned status code 404 (Not Found) - if (e.httpStatusCode == 404) { - // Stop application - log.log("\n\nOneDrive returned a 'HTTP 404 - Item not found'"); - log.log("The item id to query was not found on OneDrive"); - log.log("\nRemove your '", cfg.databaseFilePath, "' file and try to sync again\n"); - return; - } - - // HTTP request returned status code 410 (The requested resource is no longer available at the server) - if (e.httpStatusCode == 410) { - log.vdebug("Delta link expired for 'onedrive.viewChangesById(driveId, idToQuery, deltaLinkAvailable)', setting 'deltaLinkAvailable = null'"); - deltaLinkAvailable = null; - continue; - } - - // HTTP request returned status code 429 (Too Many Requests) - if (e.httpStatusCode == 429) { - // HTTP request returned status code 429 (Too Many Requests). We need to leverage the response Retry-After HTTP header to ensure minimum delay until the throttle is removed. - handleOneDriveThrottleRequest(); - log.vdebug("Retrying original request that generated the OneDrive HTTP 429 Response Code (Too Many Requests) - attempting to query changes from OneDrive using deltaLink"); - } - - // HTTP request returned status code 500 (Internal Server Error) - if (e.httpStatusCode == 500) { - // display what the error is - displayOneDriveErrorMessage(e.msg); - return; - } - - // HTTP request returned status code 504 (Gateway Timeout) or 429 retry - if ((e.httpStatusCode == 429) || (e.httpStatusCode == 504)) { - // If an error is returned when querying 'changes' and we recall the original function, we go into a never ending loop where the sync never ends - // re-try the specific changes queries - if (e.httpStatusCode == 504) { - log.log("OneDrive returned a 'HTTP 504 - Gateway Timeout' when attempting to query for changes - retrying applicable request"); - log.vdebug("changesAvailable = onedrive.viewChangesById(driveId, idToQuery, deltaLinkAvailable) previously threw an error - retrying"); - // The server, while acting as a proxy, did not receive a timely response from the upstream server it needed to access in attempting to complete the request. - log.vdebug("Thread sleeping for 30 seconds as the server did not receive a timely response from the upstream server it needed to access in attempting to complete the request"); - Thread.sleep(dur!"seconds"(30)); - log.vdebug("Retrying Query - using original deltaLink after delay"); - } - // re-try original request - retried for 429 and 504 - try { - log.vdebug("Retrying Query: changesAvailable = onedrive.viewChangesById(driveId, idToQuery, deltaLinkAvailable)"); - changesAvailable = onedrive.viewChangesById(driveId, idToQuery, deltaLinkAvailable); - log.vdebug("Query 'changesAvailable = onedrive.viewChangesById(driveId, idToQuery, deltaLinkAvailable)' performed successfully on re-try"); - } catch (OneDriveException e) { - // display what the error is - log.vdebug("Query Error: changesAvailable = onedrive.viewChangesById(driveId, idToQuery, deltaLinkAvailable) on re-try after delay"); - if (e.httpStatusCode == 504) { - log.log("OneDrive returned a 'HTTP 504 - Gateway Timeout' when attempting to query for changes - retrying applicable request"); - log.vdebug("changesAvailable = onedrive.viewChangesById(driveId, idToQuery, deltaLinkAvailable) previously threw an error - retrying with empty deltaLinkAvailable"); - try { - // try query with empty deltaLinkAvailable value - deltaLinkAvailable = null; - changesAvailable = onedrive.viewChangesById(driveId, idToQuery, deltaLinkAvailable); - log.vdebug("Query 'changesAvailable = onedrive.viewChangesById(driveId, idToQuery, deltaLinkAvailable)' performed successfully on re-try"); - } catch (OneDriveException e) { - // Tried 3 times, give up - displayOneDriveErrorMessage(e.msg); - return; - } - } else { - // error was not a 504 this time - displayOneDriveErrorMessage(e.msg); - return; - } - } - } else { - // Default operation if not 404, 410, 429, 500 or 504 errors - // display what the error is - displayOneDriveErrorMessage(e.msg); - return; - } - } - - // is changesAvailable a valid JSON response long deltaChanges = 0; - if (changesAvailable.type() == JSONType.object) { - // are there any delta changes? - if (("value" in changesAvailable) != null) { - deltaChanges = count(changesAvailable["value"].array); - log.vdebug("changesAvailable query reports that there are " , deltaChanges , " changes that need processing on OneDrive"); + + // What query do we use? + // National Cloud Deployments (US and DE) do not support /delta as a query + // https://docs.microsoft.com/en-us/graph/deployments#supported-features + // Are we running against a National Cloud Deployments that does not support /delta + if (nationalCloudDeployment) { + // have to query /children rather than /delta + nationalCloudChildrenScan = true; + // Before we get any data, flag any object in the database as out of sync + itemdb.downgradeSyncStatusFlag(); + try { + // we have to 'build' our own JSON response that looks like /delta + changes = generateDeltaResponse(driveId, idToQuery); + if (changes.type() == JSONType.object) { + log.vdebug("Query 'changes = generateDeltaResponse(driveId, idToQuery)' performed successfully"); + } + } catch (OneDriveException e) { + // OneDrive threw an error + log.vdebug("------------------------------------------------------------------"); + log.vdebug("Query Error: changes = generateDeltaResponse(driveId, idToQuery)"); + log.vdebug("driveId: ", driveId); + log.vdebug("idToQuery: ", idToQuery); + + // HTTP request returned status code 404 (Not Found) + if (e.httpStatusCode == 404) { + // Stop application + log.log("\n\nOneDrive returned a 'HTTP 404 - Item not found'"); + log.log("The item id to query was not found on OneDrive"); + log.log("\nRemove your '", cfg.databaseFilePath, "' file and try to sync again\n"); + return; + } + + // HTTP request returned status code 429 (Too Many Requests) + if (e.httpStatusCode == 429) { + // HTTP request returned status code 429 (Too Many Requests). We need to leverage the response Retry-After HTTP header to ensure minimum delay until the throttle is removed. + handleOneDriveThrottleRequest(); + log.vdebug("Retrying original request that generated the OneDrive HTTP 429 Response Code (Too Many Requests) - attempting to query OneDrive drive items"); + } + + // HTTP request returned status code 500 (Internal Server Error) + if (e.httpStatusCode == 500) { + // display what the error is + displayOneDriveErrorMessage(e.msg); + return; + } + + // HTTP request returned status code 504 (Gateway Timeout) or 429 retry + if ((e.httpStatusCode == 429) || (e.httpStatusCode == 504)) { + // If an error is returned when querying 'changes' and we recall the original function, we go into a never ending loop where the sync never ends + // re-try the specific changes queries + if (e.httpStatusCode == 504) { + log.log("OneDrive returned a 'HTTP 504 - Gateway Timeout' when attempting to query OneDrive drive items - retrying applicable request"); + log.vdebug("changes = generateDeltaResponse(driveId, idToQuery) previously threw an error - retrying"); + // The server, while acting as a proxy, did not receive a timely response from the upstream server it needed to access in attempting to complete the request. + log.vdebug("Thread sleeping for 30 seconds as the server did not receive a timely response from the upstream server it needed to access in attempting to complete the request"); + Thread.sleep(dur!"seconds"(30)); + log.vdebug("Retrying Query - using original deltaLink after delay"); + } + // re-try original request - retried for 429 and 504 + try { + log.vdebug("Retrying Query: changes = generateDeltaResponse(driveId, idToQuery)"); + changes = generateDeltaResponse(driveId, idToQuery); + log.vdebug("Query 'changes = generateDeltaResponse(driveId, idToQuery)' performed successfully on re-try"); + } catch (OneDriveException e) { + // display what the error is + log.vdebug("Query Error: changes = generateDeltaResponse(driveId, idToQuery) on re-try after delay"); + // error was not a 504 this time + displayOneDriveErrorMessage(e.msg); + return; + } + } else { + // Default operation if not 404, 410, 429, 500 or 504 errors + // display what the error is + displayOneDriveErrorMessage(e.msg); + return; + } + } + } else { + // query for changes = onedrive.viewChangesById(driveId, idToQuery, deltaLink); + try { + // Fetch the changes relative to the path id we want to query + // changes with or without deltaLink + changes = onedrive.viewChangesById(driveId, idToQuery, deltaLink); + if (changes.type() == JSONType.object) { + log.vdebug("Query 'changes = onedrive.viewChangesById(driveId, idToQuery, deltaLink)' performed successfully"); + } + } catch (OneDriveException e) { + // OneDrive threw an error + log.vdebug("------------------------------------------------------------------"); + log.vdebug("Query Error: changes = onedrive.viewChangesById(driveId, idToQuery, deltaLink)"); + log.vdebug("driveId: ", driveId); + log.vdebug("idToQuery: ", idToQuery); + log.vdebug("deltaLink: ", deltaLink); + + // HTTP request returned status code 404 (Not Found) + if (e.httpStatusCode == 404) { + // Stop application + log.log("\n\nOneDrive returned a 'HTTP 404 - Item not found'"); + log.log("The item id to query was not found on OneDrive"); + log.log("\nRemove your '", cfg.databaseFilePath, "' file and try to sync again\n"); + return; + } + + // HTTP request returned status code 410 (The requested resource is no longer available at the server) + if (e.httpStatusCode == 410) { + log.vdebug("Delta link expired for 'onedrive.viewChangesById(driveId, idToQuery, deltaLink)', setting 'deltaLink = null'"); + deltaLink = null; + continue; + } + + // HTTP request returned status code 429 (Too Many Requests) + if (e.httpStatusCode == 429) { + // HTTP request returned status code 429 (Too Many Requests). We need to leverage the response Retry-After HTTP header to ensure minimum delay until the throttle is removed. + handleOneDriveThrottleRequest(); + log.vdebug("Retrying original request that generated the OneDrive HTTP 429 Response Code (Too Many Requests) - attempting to query changes from OneDrive using deltaLink"); + } + + // HTTP request returned status code 500 (Internal Server Error) + if (e.httpStatusCode == 500) { + // display what the error is + displayOneDriveErrorMessage(e.msg); + return; + } + + // HTTP request returned status code 504 (Gateway Timeout) or 429 retry + if ((e.httpStatusCode == 429) || (e.httpStatusCode == 504)) { + // If an error is returned when querying 'changes' and we recall the original function, we go into a never ending loop where the sync never ends + // re-try the specific changes queries + if (e.httpStatusCode == 504) { + log.log("OneDrive returned a 'HTTP 504 - Gateway Timeout' when attempting to query for changes - retrying applicable request"); + log.vdebug("changes = onedrive.viewChangesById(driveId, idToQuery, deltaLink) previously threw an error - retrying"); + // The server, while acting as a proxy, did not receive a timely response from the upstream server it needed to access in attempting to complete the request. + log.vdebug("Thread sleeping for 30 seconds as the server did not receive a timely response from the upstream server it needed to access in attempting to complete the request"); + Thread.sleep(dur!"seconds"(30)); + log.vdebug("Retrying Query - using original deltaLink after delay"); + } + // re-try original request - retried for 429 and 504 + try { + log.vdebug("Retrying Query: changes = onedrive.viewChangesById(driveId, idToQuery, deltaLink)"); + changes = onedrive.viewChangesById(driveId, idToQuery, deltaLink); + log.vdebug("Query 'changes = onedrive.viewChangesById(driveId, idToQuery, deltaLink)' performed successfully on re-try"); + } catch (OneDriveException e) { + // display what the error is + log.vdebug("Query Error: changes = onedrive.viewChangesById(driveId, idToQuery, deltaLink) on re-try after delay"); + if (e.httpStatusCode == 504) { + log.log("OneDrive returned a 'HTTP 504 - Gateway Timeout' when attempting to query for changes - retrying applicable request"); + log.vdebug("changes = onedrive.viewChangesById(driveId, idToQuery, deltaLink) previously threw an error - retrying with empty deltaLink"); + try { + // try query with empty deltaLink value + deltaLink = null; + changes = onedrive.viewChangesById(driveId, idToQuery, deltaLink); + log.vdebug("Query 'changes = onedrive.viewChangesById(driveId, idToQuery, deltaLink)' performed successfully on re-try"); + } catch (OneDriveException e) { + // Tried 3 times, give up + displayOneDriveErrorMessage(e.msg); + return; + } + } else { + // error was not a 504 this time + displayOneDriveErrorMessage(e.msg); + return; + } + } + } else { + // Default operation if not 404, 410, 429, 500 or 504 errors + // display what the error is + displayOneDriveErrorMessage(e.msg); + return; + } + } + + // query for changesAvailable = onedrive.viewChangesById(driveId, idToQuery, deltaLinkAvailable); + try { + // Fetch the changes relative to the path id we want to query + // changes based on deltaLink + changesAvailable = onedrive.viewChangesById(driveId, idToQuery, deltaLinkAvailable); + if (changesAvailable.type() == JSONType.object) { + log.vdebug("Query 'changesAvailable = onedrive.viewChangesById(driveId, idToQuery, deltaLinkAvailable)' performed successfully"); + // are there any delta changes? + if (("value" in changesAvailable) != null) { + deltaChanges = count(changesAvailable["value"].array); + log.vdebug("changesAvailable query reports that there are " , deltaChanges , " changes that need processing on OneDrive"); + } + } + } catch (OneDriveException e) { + // OneDrive threw an error + log.vdebug("------------------------------------------------------------------"); + log.vdebug("Query Error: changesAvailable = onedrive.viewChangesById(driveId, idToQuery, deltaLinkAvailable)"); + log.vdebug("driveId: ", driveId); + log.vdebug("idToQuery: ", idToQuery); + log.vdebug("deltaLink: ", deltaLink); + + // HTTP request returned status code 404 (Not Found) + if (e.httpStatusCode == 404) { + // Stop application + log.log("\n\nOneDrive returned a 'HTTP 404 - Item not found'"); + log.log("The item id to query was not found on OneDrive"); + log.log("\nRemove your '", cfg.databaseFilePath, "' file and try to sync again\n"); + return; + } + + // HTTP request returned status code 410 (The requested resource is no longer available at the server) + if (e.httpStatusCode == 410) { + log.vdebug("Delta link expired for 'onedrive.viewChangesById(driveId, idToQuery, deltaLinkAvailable)', setting 'deltaLinkAvailable = null'"); + deltaLinkAvailable = null; + continue; + } + + // HTTP request returned status code 429 (Too Many Requests) + if (e.httpStatusCode == 429) { + // HTTP request returned status code 429 (Too Many Requests). We need to leverage the response Retry-After HTTP header to ensure minimum delay until the throttle is removed. + handleOneDriveThrottleRequest(); + log.vdebug("Retrying original request that generated the OneDrive HTTP 429 Response Code (Too Many Requests) - attempting to query changes from OneDrive using deltaLink"); + } + + // HTTP request returned status code 500 (Internal Server Error) + if (e.httpStatusCode == 500) { + // display what the error is + displayOneDriveErrorMessage(e.msg); + return; + } + + // HTTP request returned status code 504 (Gateway Timeout) or 429 retry + if ((e.httpStatusCode == 429) || (e.httpStatusCode == 504)) { + // If an error is returned when querying 'changes' and we recall the original function, we go into a never ending loop where the sync never ends + // re-try the specific changes queries + if (e.httpStatusCode == 504) { + log.log("OneDrive returned a 'HTTP 504 - Gateway Timeout' when attempting to query for changes - retrying applicable request"); + log.vdebug("changesAvailable = onedrive.viewChangesById(driveId, idToQuery, deltaLinkAvailable) previously threw an error - retrying"); + // The server, while acting as a proxy, did not receive a timely response from the upstream server it needed to access in attempting to complete the request. + log.vdebug("Thread sleeping for 30 seconds as the server did not receive a timely response from the upstream server it needed to access in attempting to complete the request"); + Thread.sleep(dur!"seconds"(30)); + log.vdebug("Retrying Query - using original deltaLink after delay"); + } + // re-try original request - retried for 429 and 504 + try { + log.vdebug("Retrying Query: changesAvailable = onedrive.viewChangesById(driveId, idToQuery, deltaLinkAvailable)"); + changesAvailable = onedrive.viewChangesById(driveId, idToQuery, deltaLinkAvailable); + log.vdebug("Query 'changesAvailable = onedrive.viewChangesById(driveId, idToQuery, deltaLinkAvailable)' performed successfully on re-try"); + } catch (OneDriveException e) { + // display what the error is + log.vdebug("Query Error: changesAvailable = onedrive.viewChangesById(driveId, idToQuery, deltaLinkAvailable) on re-try after delay"); + if (e.httpStatusCode == 504) { + log.log("OneDrive returned a 'HTTP 504 - Gateway Timeout' when attempting to query for changes - retrying applicable request"); + log.vdebug("changesAvailable = onedrive.viewChangesById(driveId, idToQuery, deltaLinkAvailable) previously threw an error - retrying with empty deltaLinkAvailable"); + try { + // try query with empty deltaLinkAvailable value + deltaLinkAvailable = null; + changesAvailable = onedrive.viewChangesById(driveId, idToQuery, deltaLinkAvailable); + log.vdebug("Query 'changesAvailable = onedrive.viewChangesById(driveId, idToQuery, deltaLinkAvailable)' performed successfully on re-try"); + } catch (OneDriveException e) { + // Tried 3 times, give up + displayOneDriveErrorMessage(e.msg); + return; + } + } else { + // error was not a 504 this time + displayOneDriveErrorMessage(e.msg); + return; + } + } + } else { + // Default operation if not 404, 410, 429, 500 or 504 errors + // display what the error is + displayOneDriveErrorMessage(e.msg); + return; + } } } // is changes a valid JSON response if (changes.type() == JSONType.object) { // Are there any changes to process? - if ((("value" in changes) != null) && ((deltaChanges > 0) || (oneDriveFullScanTrigger))) { + if ((("value" in changes) != null) && ((deltaChanges > 0) || (oneDriveFullScanTrigger) ||(nationalCloudChildrenScan))) { auto nrChanges = count(changes["value"].array); auto changeCount = 0; @@ -2239,6 +2330,27 @@ final class SyncEngine // scan the given directory for differences and new items void scanForDifferences(const(string) path) { + // Are we configured to use a National Cloud Deployment + // Any entry in the DB than is flagged as out-of-sync needs to be cleaned up locally first before we scan the entire DB + // Normally, this is done at the end of processing all /delta queries, but National Cloud Deployments (US and DE) do not support /delta as a query + if (nationalCloudDeployment) { + // Select items that have a out-of-sync flag set + Item[] outOfSyncItems = itemdb.selectOutOfSyncItems(); + foreach (item; outOfSyncItems) { + if (!dryRun) { + // clean up idsToDelete + idsToDelete.length = 0; + assumeSafeAppend(idsToDelete); + // flag to delete local file as it now is no longer in sync with OneDrive + log.vdebug("Flagging to delete local item as it now is no longer in sync with OneDrive"); + log.vdebug("item: ", item); + idsToDelete ~= [item.driveId, item.id]; + // delete items in idsToDelete + if (idsToDelete.length > 0) deleteItems(); + } + } + } + // scan for changes in the path provided log.vlog("Uploading differences of ", path); Item item; @@ -2260,6 +2372,27 @@ final class SyncEngine // scan the given directory for differences only - for use with --monitor void scanForDifferencesDatabaseScan(const(string) path) { + // Are we configured to use a National Cloud Deployment + // Any entry in the DB than is flagged as out-of-sync needs to be cleaned up locally first before we scan the entire DB + // Normally, this is done at the end of processing all /delta queries, but National Cloud Deployments (US and DE) do not support /delta as a query + if (nationalCloudDeployment) { + // Select items that have a out-of-sync flag set + Item[] outOfSyncItems = itemdb.selectOutOfSyncItems(); + foreach (item; outOfSyncItems) { + if (!dryRun) { + // clean up idsToDelete + idsToDelete.length = 0; + assumeSafeAppend(idsToDelete); + // flag to delete local file as it now is no longer in sync with OneDrive + log.vdebug("Flagging to delete local item as it now is no longer in sync with OneDrive"); + log.vdebug("item: ", item); + idsToDelete ~= [item.driveId, item.id]; + // delete items in idsToDelete + if (idsToDelete.length > 0) deleteItems(); + } + } + } + // scan for changes in the path provided log.vlog("Uploading differences of ", path); Item item; @@ -4684,4 +4817,251 @@ final class SyncEngine // Reset retry-after value to zero as we have used this value now and it may be changed in the future to a different value onedrive.resetRetryAfterValue(); } + + // Generage a /delta compatible response when using National Azure AD deployments that do not support /delta queries + // see: https://docs.microsoft.com/en-us/graph/deployments#supported-features + JSONValue generateDeltaResponse(const(char)[] driveId, const(char)[] idToQuery) { + // JSON value which will be responded with + JSONValue deltaResponse; + // initial data + JSONValue rootData; + JSONValue topLevelChildren; + JSONValue[] childrenData; + string nextLink; + + // Get Default Root + try { + rootData = onedrive.getDefaultRoot(); + } catch (OneDriveException e) { + log.vdebug("oneDriveRootDetails = onedrive.getDefaultRoot() generated a OneDriveException"); + // HTTP request returned status code 504 (Gateway Timeout) or 429 retry + if ((e.httpStatusCode == 429) || (e.httpStatusCode == 504)) { + // HTTP request returned status code 429 (Too Many Requests). We need to leverage the response Retry-After HTTP header to ensure minimum delay until the throttle is removed. + if (e.httpStatusCode == 429) { + log.vdebug("Retrying original request that generated the OneDrive HTTP 429 Response Code (Too Many Requests) - retrying applicable request"); + handleOneDriveThrottleRequest(); + } + if (e.httpStatusCode == 504) { + log.vdebug("Retrying original request that generated the HTTP 504 (Gateway Timeout) - retrying applicable request"); + Thread.sleep(dur!"seconds"(30)); + } + // Retry original request by calling function again to avoid replicating any further error handling + rootData = onedrive.getDefaultRoot(); + } else { + // There was a HTTP 5xx Server Side Error + displayOneDriveErrorMessage(e.msg); + // Must exit here + exit(-1); + } + } + // add root JSON data to array + log.vlog("Adding OneDrive root details for processing"); + childrenData ~= rootData; + + for (;;) { + // query top level children + try { + topLevelChildren = onedrive.listChildren(driveId, idToQuery, nextLink); + } catch (OneDriveException e) { + // OneDrive threw an error + log.vdebug("------------------------------------------------------------------"); + log.vdebug("Query Error: topLevelChildren = onedrive.listChildren(driveId, idToQuery, nextLink)"); + log.vdebug("driveId: ", driveId); + log.vdebug("idToQuery: ", idToQuery); + log.vdebug("nextLink: ", nextLink); + + // HTTP request returned status code 404 (Not Found) + if (e.httpStatusCode == 404) { + // Stop application + log.log("\n\nOneDrive returned a 'HTTP 404 - Item not found'"); + log.log("The item id to query was not found on OneDrive"); + log.log("\nRemove your '", cfg.databaseFilePath, "' file and try to sync again\n"); + } + + // HTTP request returned status code 429 (Too Many Requests) + if (e.httpStatusCode == 429) { + // HTTP request returned status code 429 (Too Many Requests). We need to leverage the response Retry-After HTTP header to ensure minimum delay until the throttle is removed. + handleOneDriveThrottleRequest(); + log.vdebug("Retrying original request that generated the OneDrive HTTP 429 Response Code (Too Many Requests) - attempting to query OneDrive drive children"); + } + + // HTTP request returned status code 500 (Internal Server Error) + if (e.httpStatusCode == 500) { + // display what the error is + displayOneDriveErrorMessage(e.msg); + } + + // HTTP request returned status code 504 (Gateway Timeout) or 429 retry + if ((e.httpStatusCode == 429) || (e.httpStatusCode == 504)) { + // re-try the specific changes queries + if (e.httpStatusCode == 504) { + log.log("OneDrive returned a 'HTTP 504 - Gateway Timeout' when attempting to query OneDrive drive children - retrying applicable request"); + log.vdebug("topLevelChildren = onedrive.listChildren(driveId, idToQuery, nextLink) previously threw an error - retrying"); + // The server, while acting as a proxy, did not receive a timely response from the upstream server it needed to access in attempting to complete the request. + log.vdebug("Thread sleeping for 30 seconds as the server did not receive a timely response from the upstream server it needed to access in attempting to complete the request"); + Thread.sleep(dur!"seconds"(30)); + } + // re-try original request - retried for 429 and 504 + try { + log.vdebug("Retrying Query: topLevelChildren = onedrive.listChildren(driveId, idToQuery, nextLink)"); + topLevelChildren = onedrive.listChildren(driveId, idToQuery, nextLink); + log.vdebug("Query 'topLevelChildren = onedrive.listChildren(driveId, idToQuery, nextLink)' performed successfully on re-try"); + } catch (OneDriveException e) { + // display what the error is + log.vdebug("Query Error: topLevelChildren = onedrive.listChildren(driveId, idToQuery, nextLink) on re-try after delay"); + // error was not a 504 this time + displayOneDriveErrorMessage(e.msg); + } + } else { + // Default operation if not 404, 410, 429, 500 or 504 errors + // display what the error is + displayOneDriveErrorMessage(e.msg); + } + } + + // process top level children + log.vlog("Adding ", count(topLevelChildren["value"].array), " OneDrive items for processing from OneDrive root"); + foreach (child; topLevelChildren["value"].array) { + // add this child to the array of objects + childrenData ~= child; + // is this child a folder? + if (isItemFolder(child)){ + // We have to query this folders children if childCount > 0 + if (child["folder"]["childCount"].integer > 0){ + // This child folder has children + string childIdToQuery = child["id"].str; + string childDriveToQuery = child["parentReference"]["driveId"].str; + auto childParentPath = child["parentReference"]["path"].str.split(":"); + string folderPathToScan = childParentPath[1] ~ "/" ~ child["name"].str; + JSONValue[] grandChildrenData = queryForChildren(childDriveToQuery, childIdToQuery, folderPathToScan); + foreach (grandChild; grandChildrenData.array) { + // add the grandchild to the array + childrenData ~= grandChild; + } + } + } + } + // If a collection exceeds the default page size (200 items), the @odata.nextLink property is returned in the response + // to indicate more items are available and provide the request URL for the next page of items. + if ("@odata.nextLink" in topLevelChildren) { + // Update nextLink to next changeSet bundle + log.vdebug("Setting nextLink to (@odata.nextLink): ", nextLink); + nextLink = topLevelChildren["@odata.nextLink"].str; + } else break; + } + + // craft response from all returned elements + deltaResponse = [ + "@odata.context": JSONValue("https://graph.microsoft.com/v1.0/$metadata#Collection(driveItem)"), + "value": JSONValue(childrenData.array) + ]; + + // return response + return deltaResponse; + } + + // query child for children + JSONValue[] queryForChildren(const(char)[] driveId, const(char)[] idToQuery, const(char)[] childParentPath) { + // function variables + JSONValue thisLevelChildren; + JSONValue[] thisLevelChildrenData; + string nextLink; + + for (;;) { + // query children + try { + thisLevelChildren = onedrive.listChildren(driveId, idToQuery, nextLink); + } catch (OneDriveException e) { + // OneDrive threw an error + log.vdebug("------------------------------------------------------------------"); + log.vdebug("Query Error: thisLevelChildren = onedrive.listChildren(driveId, idToQuery, nextLink)"); + log.vdebug("driveId: ", driveId); + log.vdebug("idToQuery: ", idToQuery); + log.vdebug("nextLink: ", nextLink); + + // HTTP request returned status code 404 (Not Found) + if (e.httpStatusCode == 404) { + // Stop application + log.log("\n\nOneDrive returned a 'HTTP 404 - Item not found'"); + log.log("The item id to query was not found on OneDrive"); + log.log("\nRemove your '", cfg.databaseFilePath, "' file and try to sync again\n"); + } + + // HTTP request returned status code 429 (Too Many Requests) + if (e.httpStatusCode == 429) { + // HTTP request returned status code 429 (Too Many Requests). We need to leverage the response Retry-After HTTP header to ensure minimum delay until the throttle is removed. + handleOneDriveThrottleRequest(); + log.vdebug("Retrying original request that generated the OneDrive HTTP 429 Response Code (Too Many Requests) - attempting to query OneDrive drive children"); + } + + // HTTP request returned status code 500 (Internal Server Error) + if (e.httpStatusCode == 500) { + // display what the error is + displayOneDriveErrorMessage(e.msg); + } + + // HTTP request returned status code 504 (Gateway Timeout) or 429 retry + if ((e.httpStatusCode == 429) || (e.httpStatusCode == 504)) { + // re-try the specific changes queries + if (e.httpStatusCode == 504) { + log.log("OneDrive returned a 'HTTP 504 - Gateway Timeout' when attempting to query OneDrive drive children - retrying applicable request"); + log.vdebug("thisLevelChildren = onedrive.listChildren(driveId, idToQuery, nextLink) previously threw an error - retrying"); + // The server, while acting as a proxy, did not receive a timely response from the upstream server it needed to access in attempting to complete the request. + log.vdebug("Thread sleeping for 30 seconds as the server did not receive a timely response from the upstream server it needed to access in attempting to complete the request"); + Thread.sleep(dur!"seconds"(30)); + } + // re-try original request - retried for 429 and 504 + try { + log.vdebug("Retrying Query: thisLevelChildren = onedrive.listChildren(driveId, idToQuery, nextLink)"); + thisLevelChildren = onedrive.listChildren(driveId, idToQuery, nextLink); + log.vdebug("Query 'thisLevelChildren = onedrive.listChildren(driveId, idToQuery, nextLink)' performed successfully on re-try"); + } catch (OneDriveException e) { + // display what the error is + log.vdebug("Query Error: thisLevelChildren = onedrive.listChildren(driveId, idToQuery, nextLink) on re-try after delay"); + // error was not a 504 this time + displayOneDriveErrorMessage(e.msg); + } + } else { + // Default operation if not 404, 410, 429, 500 or 504 errors + // display what the error is + displayOneDriveErrorMessage(e.msg); + } + } + + // process this level children + if (!childParentPath.empty) { + log.vlog("Adding ", count(thisLevelChildren["value"].array), " OneDrive items for processing from ", childParentPath); + } + foreach (child; thisLevelChildren["value"].array) { + // add this child to the array of objects + thisLevelChildrenData ~= child; + // is this child a folder? + if (isItemFolder(child)){ + // We have to query this folders children if childCount > 0 + if (child["folder"]["childCount"].integer > 0){ + // This child folder has children + string childIdToQuery = child["id"].str; + string childDriveToQuery = child["parentReference"]["driveId"].str; + auto grandchildParentPath = child["parentReference"]["path"].str.split(":"); + string folderPathToScan = grandchildParentPath[1] ~ "/" ~ child["name"].str; + JSONValue[] grandChildrenData = queryForChildren(childDriveToQuery, childIdToQuery, folderPathToScan); + foreach (grandChild; grandChildrenData.array) { + // add the grandchild to the array + thisLevelChildrenData ~= grandChild; + } + } + } + } + // If a collection exceeds the default page size (200 items), the @odata.nextLink property is returned in the response + // to indicate more items are available and provide the request URL for the next page of items. + if ("@odata.nextLink" in thisLevelChildren) { + // Update nextLink to next changeSet bundle + log.vdebug("Setting nextLink to (@odata.nextLink): ", nextLink); + nextLink = thisLevelChildren["@odata.nextLink"].str; + } else break; + } + + // return response + return thisLevelChildrenData; + } }