Commit graph

1,583 commits

Author SHA1 Message Date
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
abraunegg
3fb54b85c8
Update onedrive.spec.in (#3329)
* Add missing dependencies for v2.5.6
2025-06-10 05:57:42 +10:00
abraunegg
62907d4d58
Update advanced-usage.md (#3327)
* Add note about using 'ntfs-3g-onedrive' to access Microsoft Windows OneDrive folder in dual-boot scenarios
* Update allow.txt - add ntfs
2025-06-09 09:45:05 +10:00
abraunegg
51c4392411
Fix bug that 'items-dryrun.sqlite3' gets erroneously created when running a 'no sync' operation (#3325)
* Fix bug that 'items-dryrun.sqlite3' gets erroneously created when running a 'no sync' operation task such as --logout
2025-06-09 08:00:46 +10:00
abraunegg
42f7afaba8
Update application-config-options.md (#3326)
* Update 'threads' documentation details for clarity on the option and warning message generated
2025-06-09 07:43:16 +10:00
abraunegg
a640f2ff04
Catch unhandled OneDriveError exception due to libcurl failing to access the system CA certificate bundle (#3322)
* Catch unhandled OneDriveError exception when there is a SSL or disk space issue
* Add setDisableSSLVerifyPeer() and setEnableSSLVerifyPeer() functions, but ensure they are not used
* Correct warning messages from PR 3320
* Update allow.txt - add verifypeer
2025-06-08 13:36:18 +10:00
abraunegg
d8d695600a
Update OAuth2 Interactive Authorisation Flow prompts (#3323)
* Update OAuth2 Interactive Authorisation Flow prompts to remove any ambiguity on what actions a user needs to take
2025-06-08 13:20:57 +10:00
abraunegg
1963fcd006 Update readme.md
* Update readme
2025-06-08 07:29:55 +10:00
abraunegg
538ebe4be6 Revert "Update PR"
This reverts commit b020455534.
2025-06-08 07:03:02 +10:00
abraunegg
b020455534 Update PR
* Add functions, but ensure they are not used
* Correct warning messages from PR 3320
2025-06-08 07:00:54 +10:00
abraunegg
cad54dd3a1
Update readme.md (#3319)
* Add missing notable feature to readme.md
2025-06-07 07:36:45 +10:00
abraunegg
1b36249d32
Release files for 2.5.6 (#3317) v2.5.6
* Release files for 2.5.6
2025-06-05 20:06:05 +10:00
abraunegg
edc9f4d6cd
Perform thread check and set as early as possible (#3314)
* Perform thread check and set as early as possible
2025-06-03 08:36:25 +10:00
abraunegg
810197cc05
Implement FR #2693: Implement OAuth2 Device Authorisation Flow (#3313)
Adds support for Microsoft’s OAuth2 Device Authorisation Flow, enabling the client to authenticate using device and user codes on a second device. This is particularly useful for headless or limited-input environments where interactive browser login is not possible.

Includes:
- Initiating device code requests and displaying user instructions
- Polling token endpoint until user authorises the device or the code expires
- Error handling for pending, declined, and expired authorisation states
- Countdown display showing remaining authorisation window

This feature is enabled via the `use_device_auth` config option
2025-06-03 07:47:56 +10:00
abraunegg
c91eafb9b9
Fix Bug #3302: Fix regression of supporting Personal Shared Folders that have been renamed (#3308)
* Fix regression of supporting Personal Shared Folders that have been renamed in users account
2025-06-02 18:32:49 +10:00
abraunegg
0da5f3bed2
Update setLocalPathTimestamp logging output (#3310)
* Update setLocalPathTimestamp logging output
2025-06-01 14:20:17 +10:00
abraunegg
f5d6bd3cfd
Update how threads are set based on available CPUs (#3309)
* Update how threads are set based on available CPUs
2025-06-01 11:31:35 +10:00
abraunegg
2d7191fae2
Fix setting of xattr values if file fails to download (#3307)
* If a file fails to download, path fails to exist. Check path existence before setting xattr values
2025-05-31 06:51:02 +10:00
abraunegg
1725f88673
Fix Bug #3302: Add dbus libs to Docker base build (#3303)
* Add dbus libs to Docker base build
* Update readme with wording updates/tweaks
2025-05-29 06:01:30 +10:00
abraunegg
65e8b663c9
Update readme introduction (#3301)
* Update readme introduction
* Add project background
2025-05-28 06:32:51 +10:00
abraunegg
9113feac81
Ensure file is closed before renaming to improve compatibility with GCS buckets and network filesystems (#3299)
Some filesystems (e.g. GCS FUSE, Samba, NFS) may fail or behave unpredictably when attempting to rename an open file. This update explicitly closes the file before calling rename(), ensuring cross-platform and cloud storage compatibility. The original scope(exit) remains as a fallback to guarantee cleanup.
2025-05-27 05:23:59 +10:00
abraunegg
d9b8966fa4
Force rebuild post GitHub Actions outage (#3298)
* Force rebuild post GitHub Actions outage
2025-05-27 04:51:37 +10:00
abraunegg
aa85634fb2
Fix Docker build post #3274 (#3297)
* Fix Docker build post #3274 due to LDC requiring a default input for build_auth_request() not picked up in prior LDC compilation testing
2025-05-26 17:56:57 +10:00
abraunegg
61e5a1edb6
Implement FR #3209: Add native support for authentication via Intune dbus interface (#3274)
* Adds support for calling `acquireTokenInteractively` and `acquireTokenSilently` via D-Bus
* Parses and handles the full `brokerTokenResponse` object returned by the Intune broker
* Stores and reuses `account` data to enable silent token refresh without repeated interactive authentication
* Ensures the access token and its expiry time are properly calculated and stored for consistent token management
* Fallback to interactive authentication is triggered if silent authentication fails
2025-05-26 17:14:50 +10:00
abraunegg
b496c4e21f
Update 'Client Side Filtering' documentation and handling (#3296)
* Fix documentation around missing 'check_nosync' needing a --resync when enabling / disabling
* Fix documentation around missing 'skip_size' needing a --resync when enabling / disabling
* Validate 'check_nosync' and 'skip_size' when used as part of a config file to trigger --resync
* Validate 'check_nosync' and 'skip_size' when used as part of CLI to trigger --resync
2025-05-26 15:25:04 +10:00
abraunegg
7a7748d3ce
Implement FR #3287: Add validation of bools in config file (#3295)
* Ensure that bool configurations are tested correctly, and for validity as bool values, to flush out badly formatted bool configuration options
2025-05-26 06:42:53 +10:00
abraunegg
594373f8c6
Fix UTC conversion for existing file timestamp post file download (#3294)
* Fix UTC conversion for existing file timestamp post file download due to bug introduced via https://github.com/abraunegg/onedrive/pull/3256/files#diff-3d0d233780406e4f1b1c07c79cdd189b98570ce886995af58a2ce3ed802e551e
2025-05-25 12:53:56 +10:00