Commit Graph

8480 Commits

Author SHA1 Message Date
59a5530ce7 sync: implement --list-cutoff to allow on disk sorting for reduced memory use
Before this change, rclone had to load an entire directory into RAM in
order to sort it so it could be synced.

With directories with millions of entries, this used too much memory.

This fixes the probem by using an on disk sort when there are more
than --list-cutoff entries in a directory.

Fixes #7974
2024-12-18 15:30:13 +00:00
d523f00d31 march: Implement callback based syncing
This changes the syncing method to take callbacks for directory
listings rather than being passed the entire directory listing at
once.

This will enable out of memory syncing.
2024-12-18 15:30:13 +00:00
56bcdc552b list: add ListDirSortedFn for callback oriented directory listing
This will be used for the out of memory sync
2024-12-18 15:30:13 +00:00
3e0af30704 list: Implement Sorter to sort directory entries
Later this will be extended to do out of memory sorts
2024-12-18 15:30:12 +00:00
1a6f575e93 cache: mark ListP as not supported yet 2024-12-18 15:30:12 +00:00
9b6b302313 hasher: implement ListP interface 2024-12-18 15:30:12 +00:00
7d2eb53019 compress: implement ListP interface 2024-12-18 15:30:12 +00:00
562be23fde chunker: mark ListP as not supported yet 2024-12-18 15:30:12 +00:00
893b4e4c13 union: mark ListP as not supported yet 2024-12-18 15:30:12 +00:00
e3392c3460 crypt: implement ListP interface 2024-12-18 15:30:12 +00:00
0ebacba3d5 combine: implement ListP interface 2024-12-18 15:30:12 +00:00
e8c271d352 s3: Implement paged listing interface ListP 2024-12-18 15:30:12 +00:00
fe2dc38aff list: add WithListP helper to implement List for ListP backends 2024-12-18 15:30:12 +00:00
96afeb1435 walk: move NewListRHelper into list.Helper to avoid circular dependency
It turns out that the list helpers were at the wrong level and needed
to be pushed down into the fs/list for future work.
2024-12-18 15:30:12 +00:00
182fce9914 fs: define ListP interface for paged listing #4788 2024-12-18 15:30:12 +00:00
d48cf0ade1 accounting: Add listed stat for number of directory entries listed 2024-12-18 15:30:12 +00:00
65123037d6 walk: factor Listing helpers into their own file and add tests 2024-12-18 15:30:12 +00:00
0ce2e12d9f docs: link to the outstanding vfs symlinks issue 2024-12-16 11:01:03 +00:00
7224b76801 Add Yxxx to contributors 2024-12-16 11:01:03 +00:00
d2398ccb59 Add hayden.pan to contributors 2024-12-16 11:01:03 +00:00
0988fd9e9f docs: update pcloud doc to avoid puzzling token error when use remote rclone authorize 2024-12-16 10:29:24 +00:00
51cde23e82 pikpak: add option to use original file links - fixes #8246 2024-12-16 01:17:58 +09:00
caac95ff54 rc/job: use mutex for adding listeners thread safety
Fix in extreme cases, when the job is executing finish(), the listener added by calling OnFinish() will never be executed.

This change should not cause compatibility issues, as consumers should not make assumptions about whether listeners will be run in a new goroutine
2024-12-15 13:05:29 +00:00
19f4580aca docs: mention in serve tls options when value is path to file - fixes #8232 2024-12-14 11:48:38 +00:00
27f448d14d build: update all dependencies 2024-12-13 16:07:45 +00:00
500698c5be accounting: fix debug printing when debug wasn't set 2024-12-13 15:34:44 +00:00
91af6da068 Add Filipe Azevedo to contributors 2024-12-13 15:34:44 +00:00
b8835fe7b4 fs: make --links flag global and add new --local-links and --vfs-links flag
Before this change the --links flag when using the VFS override the
--links flag for the local backend which meant the local backend
needed explicit config to use links.

This fixes the problem by making the --links flag global and adding a
new --local-links flag and --vfs-links flags to control the features
individually if required.
2024-12-13 12:43:20 +00:00
48d9e88e8f vfs: add docs for -l/--links flag 2024-12-13 12:43:20 +00:00
4e7ee9310e nfsmount,serve nfs: introduce symlink support #2975 2024-12-13 12:43:20 +00:00
d629102fa6 mount2: introduce symlink support #2975 2024-12-13 12:43:20 +00:00
db1ed69693 mount: introduce symlink support #2975 2024-12-13 12:43:20 +00:00
06657c49a0 cmount: introduce symlink support #2975 2024-12-13 12:43:20 +00:00
f1d2f2b2c8 vfstest: make VFS test suite support symlinks 2024-12-13 12:43:20 +00:00
a5abe4b8b3 vfs: add symlink support to VFS
This is somewhat limited in that it only resolves symlinks when files
are opened. This will work fine for the intended use in rclone mount,
but is inadequate for the other servers probably.
2024-12-13 12:43:20 +00:00
c0339327be vfs: add ELOOP error 2024-12-13 12:43:20 +00:00
353bc3130e vfs: Add link permissions 2024-12-13 12:43:20 +00:00
126f00882b vfs: Add VFS --links command line switch
This will be used to enable links support for the various mount engines
in a follow up commit.
2024-12-13 12:43:20 +00:00
44c3f5e1e8 vfs: add vfs.WriteFile to match os.WriteFile 2024-12-13 12:43:20 +00:00
c47c94e485 fs: Move link suffix to fs 2024-12-13 12:43:20 +00:00
1f328fbcfd cmount: fix problems noticed by linter 2024-12-13 12:43:20 +00:00
7f1240516e mount2: Fix missing . and .. entries 2024-12-13 12:43:20 +00:00
f9946b37f9 sftp: fix nil check when using auth proxy
An incorrect nil check was spotted while reviewing the code for
CVE-2024-45337.

The nil check failing has never happened as far as we know. The
consequences would be a nil pointer exception.
2024-12-13 12:36:15 +00:00
96fe25cf0a Add Martin Hassack to contributors 2024-12-13 12:36:15 +00:00
a176d4cbda serve sftp: resolve CVE-2024-45337
This commit resolves CVE-2024-45337 which is an a potential auth
bypass for `rclone serve sftp`.

https://nvd.nist.gov/vuln/detail/CVE-2024-45337

However after review of the code, rclone is **not** affected as it
handles the authentication correctly. Rclone already uses the
Extensions field of the Permissions return value from the various
authentication callbacks to record data associated with the
authentication attempt as suggested in the vulnerability report.

This commit includes the recommended update to golang.org/x/crypto
anyway so that this is visible in the changelog.

Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.29.0 to 0.31.0.
- [Commits](https://github.com/golang/crypto/compare/v0.29.0...v0.31.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-13 12:28:08 +00:00
e704e33045 googlecloudstorage: typo fix in docs 2024-12-13 11:49:21 +00:00
2f3e90f671 onedrive: add support for OAuth client credential flow - fixes #6197
This adds support for the client credential flow oauth method which
requires some special handling in onedrive:

- Special scopes are required
- The tenant is required
- The tenant needs to be used in the oauth URLs

This also:

- refactors the oauth config creation so it isn't duplicated
- defaults the drive_id to the previous one in the config
- updates the documentation

Co-authored-by: Nick Craig-Wood <nick@craig-wood.com>
2024-12-13 11:34:11 +00:00
65012beea4 lib/oauthutil: add support for OAuth client credential flow
This commit reorganises the oauth code to use our own config struct
which has all the info for the normal oauth method and also the client
credentials flow method.

It updates all backends which use lib/oauthutil to use the new config
struct which shouldn't change any functionality.

It also adds code for dealing with the client credential flow config
which doesn't require the use of a browser and doesn't have or need a
refresh token.

Co-authored-by: Nick Craig-Wood <nick@craig-wood.com>
2024-12-13 11:34:11 +00:00
704217b698 lib/oauthutil: return error messages from the oauth process better 2024-12-13 11:34:11 +00:00
6ade1055d5 bin/test_backend_sizes.py fix compile flags and s3 reporting
This now compiles rclone with CGO_ENABLED=0 which is closer to the
release compile.

It also removes pikpak if testing s3 as the two depend on each
other.
2024-12-13 11:34:11 +00:00