Commit graph

1,609 commits

Author SHA1 Message Date
abraunegg
10048d8bca
Implement FR #2360: Add websocket notification support (#3413)
* Implement FR #2360: Add websocket notification support
2025-10-05 07:09:27 +11:00
abraunegg
566e4feeb0
Implement FR #3416: Dotfiles in sync_list should be synced even when skip_dotfiles = "true" (#3456)
* Add feature request to sync dotfiles in sync_list should be synced even when skip_dotfiles = "true"
2025-10-04 19:55:59 +10:00
abraunegg
f4cb8ca0aa
Update Client Architecture Documentation: Add details around how the client processes the online state (#3458)
* Add new sections to documentation around how the client processes the online state
2025-10-04 07:35:08 +10:00
abraunegg
5d11ea64ed
Fix Bug #3452: 'use_intune_sso' and 'use_device_auth' cannot be used together (#3453)
* Add operational conflict as 'use_intune_sso' and 'use_device_auth' cannot be used together
2025-09-29 17:28:51 +10:00
abraunegg
4f501b4aaf
Fix Bug #3451: Ensure driveId target is cached (#3454)
* Ensure that the driveId of a modified file that is to be uploaded to, exists in the cached array
2025-09-29 17:03:14 +10:00
abraunegg
0e76dc4ef8
Release files for 2.5.7 (#3447) v2.5.7
* Release files for 2.5.7
2025-09-23 10:15:08 +10:00
abraunegg
8711b9bc92
Update Debian Docker Build (#3446)
* Update Debian Docker Build - force to 'bookworm' for Debian 12
2025-09-23 08:14:09 +10:00
Andreas Dieckmann
bd80f62e65
Update documentation regarding own app registrations in Entra ID (#3436)
Added link to instructions for configuring app registration in national-cloud-deployments.md.

Co-authored-by: abraunegg <alex.braunegg@gmail.com>
2025-09-23 07:38:31 +10:00
abraunegg
0e1ac90840
Update safeBackup() function (#3445)
* Update safeBackup() function to ensure that the 'safeBackup' path addition is only added once
* Ensure that 'directories' are not renamed
2025-09-23 05:46:58 +10:00
abraunegg
b4179d1f27
Add Debian 13 details (#3424)
* Add Debian 13 details
2025-08-12 11:43:16 +10:00
abraunegg
7bc4266e05
Fix Bug #3414: Fix SharePoint Shared Library DB Tie creation (#3419)
* Fix SharePoint Shared Library DB Tie creation
2025-08-11 06:34:14 +10:00
abraunegg
37ba8ccb8e
Remove OpenSSL Test (#3420)
* Remove OpenSSL Test
2025-08-10 14:01:21 +10:00
abraunegg
52894d039c
Fix the computePath() to track the parental path anchor (#3417)
* Fix the computePath() to track the parental path anchor when a Shared Folder is relocated with a deeper path
2025-08-09 10:32:56 +10:00
abraunegg
5ee95b8e5c
Fix Bug #3410: Fix infinite loop after a failed network connection due to changed curl messaging (#3412)
* Curl 8.14.1 (or maybe earlier) has changed output messaging when curl exceptions are raised. This has caused the curl exception handling / retry handling to fail due to unable to match error log output.
* Add an exception fallback to ensure retry interval is enforced in case of unknown CurlException event
* Update calculateBackoff() function to prevent integer overflow
2025-08-06 05:23:36 +10:00
abraunegg
ed4880f9a6
Fix Bug #3407: Fix the support of relocated shared folders for OneDrive Personal (#3411)
* OneDrive Personal and Business supports the relocation of Shared Folder links to other folders. Fix the support of relocated shared folders for OneDrive Personal
2025-08-05 14:25:34 +10:00
abraunegg
bb71cc7e66
Fix Bug #3404: Fix crash when a file is created and deleted quickly (#3405)
* If the file is a very short lived file, and exists when an initial exists() check is done, but then is removed shortly thereafter, we need to catch this as a filesystem exception
2025-08-02 11:50:18 +10:00
abraunegg
5f14530745
Fix resumable downloads so that the curl engine offset point is reset post successful download (#3406)
* Ensure that post successful download, the resumable offset point is reset to avoid `HTTP request returned status code 416 (Requested Range Not Satisfiable)` if the offset point is not reset and curl engine reused for another download
2025-08-02 11:15:23 +10:00
abraunegg
b6fa6f8fe4
Fix issue of trying to create the root folder online (#3403)
* Fix issue of trying to create the root folder online (which is denoted by a '.') as this will never be possible.
2025-08-02 07:22:32 +10:00
abraunegg
298e8896b3
Update Debian Dockerfile to use upstream gosu (#3402)
* Update Debian Dockerfile to use upstream gosu version rather than Debian provided version
2025-08-01 12:08:44 +10:00
abraunegg
1321ae6306
Implement FR #2576: Implement resumable downloads (#3354)
* Implement resumable downloads (FR #2576) by using a state JSON file to track download progress and resuming the download from that offset, post validation of:
  * offset point is where the local point is at
  * hash has not changed online, thus file has not changed online in-between failed download
2025-08-01 06:33:33 +10:00
abraunegg
3e61081515
Clarify using .nosync in mounted directories (#3401)
* Clarify using .nosync in mounted directories
2025-07-31 06:41:16 +10:00
abraunegg
f89cfaa6fc
Update usage.md (#3399)
* Clarify caution message about using bad curl versions to remove ambiguity and clarify that other bugs, not related to HTTP/2 will still impact operational use of this client
2025-07-27 10:15:19 +10:00
abraunegg
4301c2ee67
Update wording within first steps for clarity (#3391)
* Update wording within first steps for clarity
2025-07-22 08:23:28 +10:00
abraunegg
b36fe0a47d
Update 'threads' usage notes (#3389)
* Update 'threads' usage notes to ensure clarity around this application configuration option
2025-07-21 08:07:09 +10:00
abraunegg
a82595ad5d
Implement FR #3387: Show GUI notification when sync suspends due to 'large delete' threshold (#3388)
* Implement #3387 to show GUI notification when sync suspends due to 'large delete' threshold
2025-07-19 16:06:54 +10:00
abraunegg
4380ddafa8
Fix Bug #3375,3376: Ensure 'sync_list' inclusion rules are correctly evaluated (#3381)
* Add new 'sync_list' rule test to evaluate only inclusion rules
* Test path against inclusion rules
* When scanning for new data, before traversing to that directory ensure that the directory is actually included when using 'sync_list' rules
* Handle the local scanning of new data when 'anywhere' sync_list rules exist
* Only traverse into local directories to test if these should be included for monitoring, if parent path is excluded but 'include anywhere' rules exist
* Add a check for a paging token error due to potentially data changing online?
* Add missing lowercase conversion from Issue #3336
* Ensure that items that are 'matched' via 'sync_list' - ensure that these if they are a directory, are added to the database so that paths can be built
* If a JSON object is a 'remote' item, ensure the Shared Folder DB entries are created as early as possible so that paths can be built
2025-07-18 18:48:50 +10:00
abraunegg
3fff182812
Update how the ETA values are calculated to avoid negative values (#3386)
* Update calculation of ETA values to guard against incorrect Unix Epoch / time skew impacting calculation outcome.
* Use common function for ETA string calculation for upload|download operations to avoid negative values
2025-07-15 06:08:41 +10:00
abraunegg
6248f27b87
Fix foreign key issue when performing a --resync (#3383)
* Fix foreign key issue when performing a --resync due to a missed conversion of driveId to lowercase values (#3336) and path is covered by 'sync_list' entries
2025-07-13 08:01:22 +10:00
abraunegg
4283e95f16
Update install.md with updated AUR and Homebrew details (#3380)
* Add note about which AUR package follows which code release
* Update homebrew post namechange and update ARM64 compatibility
2025-07-12 07:38:31 +10:00
abraunegg
56521bdd4c
Update GitHub Action versions for building Docker containers (#3378)
* Update GitHub Action versions for building Docker containers
* Fix documentation on OS versions used in containers
2025-07-12 07:20:46 +10:00
abraunegg
7e3d4a8f56
Handle invalid JSON response when querying parental details (#3379)
* A valid JSON response is needed back from the OneDrive API post querying the parental details when attempting to create the local path structure
2025-07-12 06:48:34 +10:00
abraunegg
bbae43d310
Fix logging output and use of grandparent identifiers (#3377)
* Fix logging output and use of grandparent identifiers when using --dry-run
2025-07-11 05:35:10 +10:00
abraunegg
f686b315c9
Update logging output when processing online deletion events (#3373)
* Update logging output when processing online deletion events
2025-07-09 07:02:54 +10:00
abraunegg
c3c5bf38bc
Fix Bug #3336: Handle inconsistent OneDrive Personal driveId casing across multiple Microsoft Graph API Endpoints (#3347)
* Handle inconsistent OneDrive Personal driveId casing across multiple Microsoft Graph API Endpoints by ensuring that where ever there is a use of a driveId for a comparison, ensure the value to compare has been transformed to 'lowercase' to avoid the situation where Microsoft Graph API sends the driveId as 'lowercase' in one API response and 'UPPERCASE' in other responses.
2025-07-05 07:14:47 +10:00
abraunegg
f2aecf650e
Fix Bug #3345: Update Microsoft OneNote handling for 'OneNote_RecycleBin' objects (#3350)
* Update Microsoft OneNote handling for 'OneNote_RecycleBin' objects
* Update allow.txt - add onenote
2025-07-04 20:46:58 +10:00
abraunegg
e9e5274253
Remove auto configuration of using a larger fragment size (#3370)
* Remove auto configuration of using a larger fragment size
* Update documentation around safe values to use
2025-07-04 07:20:03 +10:00
abraunegg
ea7c3abd2d
Fix Bug #3355: Fix that long running big upload (250GB+) fails because of an expired access token (#3361)
* Revert back to v2.5.5 performSessionFileUpload() and apply minimal change for upload session offset handling to prevent desynchronisation on large files
* Add specific 403 handler for when the upload session URL itself expires
* Add 'file_fragment_size'
* Clean up debug logging output
* Add 'tempauth' to spelling words
* Update documentation URL's
* Ensure that on each fragment upload, whilst the application is using the 'tempauth' for session upload, the global OAuth2 token needs to be checked for validity and refreshed if required
* Add limit check for 'file_fragment_size' option
* Add to default 'config' file
* Update documentation for 'file_fragment_size'
* Add 'file_fragment_size' to --display-config output
* Add --file-fragment-size option to enable use via Docker option
* Add to manpage
* Update Docker entrypoint
* Update Docker | Podman documentation
* Update logging output to include connection method to URL
* Update Upload Session URL expiry update to include UTC and LocalTime values
* Update comment which was dropped / missed
* Clarify that this is the OAuth2 Access Token
* Clarify that the expiry timestamp is localTime
* Update PR with dynamic use of fragment size if fileSize > 100MiB
* Enforce multiple 320KiB for fragment size to align to Microsoft documentation
* Fix Docker entrypoint and confirm working for ONEDRIVE_FILE_FRAGMENT_SIZE
* Change 'defaultMaxFileFragmentSize' to 60
* Revise fragmentSize calculation to be as close to 60 MiB as possible without breaching Microsoft documented threshold
2025-07-03 17:21:16 +10:00
abraunegg
5ff8c01d3a
Fix Bug #3367: Fix that resync state remains true post first successful full sync (#3368)
* Reset internal 'resync' flag post first successful sync when --resync is used at application startup
2025-07-03 17:14:26 +10:00
abraunegg
0d7c90ccfc
Fix Bug #3341: Update searchDriveItemForFile() to handle specific 404 response when file cannot be found (#3365)
* Fix that when searching for a parent object online, if the object cannot be found, handle the 404 error response.
* If a 404 response is generated, we have no response JSON to process
2025-07-02 09:11:52 +10:00
abraunegg
a1a8b46673
Add curl 8.13.x and 8.14.0 to known bad curl versions (#3356)
* Add curl 8.13.x and 8.14.0 to known bad curl versions that when used, have operational impacts to this client
2025-06-25 08:06:44 +10:00
abraunegg
a6839ffda8
Fix Bug #3344: Fix that a failed file download can lead to online deletion (#3351)
* When a file fails to download, perform an additional test to ensure that the failed download does not exist on the local path, and if this does not exist, ensure that that identifiers used to download the file do not exist in the database.
2025-06-24 18:10:15 +10:00
abraunegg
003d223e55
Add missing 'config' options to --display-config (#3353)
* Add missing 'config' options to --display-config
2025-06-22 14:30:00 +10:00
abraunegg
4c1d242a9e
Update documentation and function for how 'threads' is used (#3352)
* Update documentation for 'threads' to be clearer
* Update setDefaultApplicationThreads()
2025-06-22 10:05:47 +10:00
abraunegg
3eaff76b36
Fix Bug #3342: When using --upload-only do not try and update the local file timestamp post upload (#3349)
* In an --upload-only scenario, do not try and update the local file timestamp post upload
2025-06-20 06:09:20 +10:00
abraunegg
0aef31d057
Fix Bug #3337: Fix issue with ExecStartPre statement to be more OS independent (#3348)
* Fix issue with ExecStartPre statement to be more OS independent
2025-06-18 20:53:56 +10:00
abraunegg
f5ec4ab5ff
Fix Bug #3331: Handle a 409 online folder creation response with a re-query of the API (#3335)
* When attempting to create a folder online, generally if the folder is not online, this will generate a 404 error, indicating to this client that the folder must be created. However, if the client then attempts to create it, and this folder now exists, a 409 response is generated. Handle the 409 response better by then performing a re-query of the API for the previously failed attempt and save those details to the database.

* Update process by which selfBuiltPath is calculated, when using 'sync_list' in a --resync scenario against Shared Folders to avoid double adding the Shared Folder Name to the path
2025-06-14 19:13:37 +10:00
abraunegg
95938807b0
Fix Bug #3320: Reduce I/O pressure on SQLite DB Operations (#3334)
* Reduce I/O pressure on SQLite DB Operations
* Update allow.txt - add autocheckpoint
2025-06-14 12:18:02 +10:00
abraunegg
6e5e83843d
Update logging for upsert() function (#3333)
* Add additional logging for upsert() function
* Add missing finalise() for orphan deletion
2025-06-11 16:57:18 +10:00
abraunegg
8ed3ed2bb4
Handle online folder deletion|creation with same name that causes 'id' to change (#3332)
* When an online folder is deleted, then re-created with the same name, the folder 'id' changes. In normal circumstances this is not an issue, but when running the client at the same time, on two separate systems, despite the path being removed and re-created, the 2nd (and subsequent systems) fail to correctly handle this online change correctly as expected, thus, upload|download of data into this changed folder fails to occur. This PR changes the upsert() function to check for this corner case and correct the DB entry for the now updated item id online. This then avoids creating orphan DB records that breaks other functions that rely on correct DB record traversal.
2025-06-11 12:12:47 +10:00
abraunegg
76f616f267
Update minimum compiler version details (#3330)
* Update minimum compiler version details
* Update RHEL RPM documentation
* Update spelling words
2025-06-10 13:31:45 +10:00