Josh
ce50c8734c
chore(files_external/s3): use example reserved domain
...
Co-authored-by: Kate <26026535+provokateurin@users.noreply.github.com>
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-04-29 14:06:30 +02:00
Josh
3a3736d97c
feat(files_external): clearer label for FTP + FTPS backend
...
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-04-29 14:06:30 +02:00
Josh
119e40812a
feat(files_external): clearer label for Nextcloud / ownCloud backend
...
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-04-29 14:06:30 +02:00
Josh
be182bf1d7
feat(files_external): clearer label for SMB backend
...
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-04-29 14:06:30 +02:00
Josh
e790cbff93
feat(files_external): clearer label for SMB_OC backend
...
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-04-29 14:06:30 +02:00
Josh
b91dba44d5
feat(files_external): clearer labeling for SFTP backend
...
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-04-29 14:06:30 +02:00
Josh
607062dcbb
feat(files_external): clearer label for SFTP_Key backend
...
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-04-29 14:06:30 +02:00
Josh
328f48352d
feat(files_external): clearer label for Local storage
...
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-04-29 14:06:30 +02:00
Josh
561fceb631
feat(files_external/swift): modernize label
...
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-04-29 14:06:30 +02:00
Josh
79e3ae091f
feat(files_external/s3): modernize parameter labels/descriptions
...
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-04-29 14:06:30 +02:00
Josh
85cbd5b1d1
feat(files_external): alphabetical sort backends
...
The front-end will display them in the order returned.
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-04-29 14:06:30 +02:00
Ferdinand Thiessen
d8e8703796
chore: add missing Override attribute to app code
...
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-04-28 21:29:28 +02:00
Joas Schilling
aa904b255f
Merge pull request #59378 from nextcloud/carl/non-internal-api
...
chore: Replace MoveableMount usage with IMovableMount
2026-04-27 12:37:56 +02:00
Robin Appelman
aedc57afe7
fix: add optional user param to IUserMountCache::removeMount
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-04-24 18:17:41 +02:00
Carl Schwan
fbf84e6473
chore: Replace MoveableMount usage with IMovableMount
...
The former is private API while the IMovableMount is public.
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-04-24 10:14:37 +02:00
Kent Delante
6ce657f2ee
fix(s3): ignore prefixes with repeating delimiters
...
Signed-off-by: Kent Delante <kent@delante.me>
Amazon's hosted S3 service allows repeating delimiters in keys
(e.g. 'path/to//file.txt' or 'path/to///file.txt') and we get
repeating directories in the filecache as a result (based on the
previous examples we get 'path/to/to/file.txt' or
'path/to/to/to/file.txt'). This ignores it and its contents for S3 external storage.
2026-04-22 16:07:45 +08:00
Stephen Cuppett
cdaeed02b6
feat(objectstore): Add AWS SSE-KMS encryption support for S3 storage
...
Add support for Server-Side Encryption with AWS Key Management Service
(SSE-KMS) for S3 object storage. This allows Nextcloud to encrypt data
at rest in S3 using AWS-managed keys.
Key features:
- New config options: sse_kms_enabled and sse_kms_key_id
- Backward compatible with existing SSE-C (customer-provided keys)
- SSE-C takes precedence when both SSE-C and SSE-KMS are configured
Implementation details:
- Added getServerSideEncryptionParameters() method to centralize
encryption parameter logic for both SSE-C and SSE-KMS
- Updated multipart uploads to use unified encryption parameters
- Added comprehensive PHPUnit tests for SSE-KMS scenarios
- Tested with AWS bucket and KMS keys in us-east-1 region
Co-Authored-By: Claude Sonnet 4.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Stephen Cuppett <steve@cuppett.com>
2026-04-16 13:21:53 -04:00
Robin Appelman
e96a89e630
feat: add permissions mask variant that only masks one directory
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-04-09 16:19:10 +02:00
Tatjana Kaschperko Lindt
faff52dff2
feat(files_external): allow delegated admins to search applicable users/groups
...
Signed-off-by: Tatjana Kaschperko Lindt <kaschperko-lindt@strato.de>
2026-04-07 10:09:53 +02:00
Tatjana Kaschperko Lindt
5852eaae0b
feat(files_external): allow delegated admins to save global credentials
...
Signed-off-by: Tatjana Kaschperko Lindt <kaschperko-lindt@strato.de>
2026-04-07 10:09:53 +02:00
Tatjana Kaschperko Lindt
67deefe3fb
feat(files_external): add #[AuthorizedAdminSetting] to GlobalStoragesController
...
Signed-off-by: Tatjana Kaschperko Lindt <kaschperko-lindt@strato.de>
2026-04-07 10:09:53 +02:00
Tatjana Kaschperko Lindt
14ae3f1a65
feat(files_external): convert to delegated settings
...
Signed-off-by: Tatjana Kaschperko Lindt <kaschperko-lindt@strato.de>
2026-04-07 10:09:53 +02:00
Hendrik Leidinger
6e88edb0a6
fix: make psalm and rector happy
...
Signed-off-by: Hendrik Leidinger <hendrik.leidinger@nextcloud.com>
2026-03-31 12:35:09 +02:00
Hendrik Leidinger
33e35afad2
fix: modified touch function of the SFTP storage to update mtimes instead
...
Signed-off-by: Hendrik Leidinger <hendrik.leidinger@nextcloud.com>
2026-03-31 12:35:08 +02:00
Hendrik Leidinger
6d26c71b48
fix: manually set modified time to SFTP files after editing
...
Signed-off-by: Hendrik Leidinger <hendrik.leidinger@nextcloud.com>
2026-03-31 12:35:08 +02:00
Josh
b7bdd76731
feat(files_external/s3): rename legacy signature (v2) for clarity
...
Avoid the use of "authentication" here since this is really about signing compatibility, not the source of credentials. Also prefix with "Use" for UI consistency.
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-03-25 16:21:35 -04:00
Josh
00100427be
feat(files_external/s3): Adjust auth meth/parameter field names
...
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-03-25 16:10:35 -04:00
Carl Schwan
783e2ac625
refactor(external-storage-services): Modernize code
...
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-03-10 15:27:46 +01:00
Carl Schwan
140bfa2d1f
refactor(cache-storage): Make Storage and StorageGlobal psalm strict
...
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-03-10 14:20:31 +01:00
Josh
958e67687b
fix(s3): Fix 0 folder handling in External Storage
...
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-03-02 13:44:19 +01:00
Côme Chilliet
e7c4dbf2cb
Merge pull request #58642 from nextcloud/jtr/perf-s3-external-cache-sizing
...
perf(files_external): Increase S3 cache caps
2026-03-02 13:36:01 +01:00
Josh
bde043d13b
chore(files_external/s3): drop no-op $this->filesCache use sites
...
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-03-01 12:53:57 -05:00
Josh
08b465d219
refactor(files_external/S3): drop unused methods
...
getContentLength() and getLastModified() are dead code. Originally added in PR #11518 and made defunct in PR #29220 .
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-03-01 12:45:01 -05:00
Josh
430975ce96
perf(files_external): Increase S3 metadata cache caps
...
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-02-28 09:08:00 -05:00
Ferdinand Thiessen
694e2312fd
Merge pull request #58589 from nextcloud/fix/external-missing
...
fix(files_external): boolean comparison of array
2026-02-27 15:40:14 +01:00
Ferdinand Thiessen
69a5db46bd
fix: code style
...
Co-authored-by: Carl Schwan <carl@carlschwan.eu>
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-02-27 14:31:42 +01:00
Kent Delante
8d1cb50048
fix: pass only object key to deleteObjects call
...
Some S3-compatible object storage hosts don't like the ETag being included in
the request and return a MalformedXML response. In the AWS API documentation,
only the object key is required so just pass that in.
Signed-off-by: Kent Delante <kent.delante@proton.me>
2026-02-27 10:54:23 +08:00
Ferdinand Thiessen
d50fbfe37d
fix(files_external): boolean comparison of array
...
To check if there are no missing required dependencies we need to check
if the required dependencies are **empty** because `!array` is still
true.
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-02-26 14:21:50 +01:00
Daniel Kesselberg
67d1fac6f6
fix: show configuration options for external storage backends
...
The occ files_external_backends command is supposed to list available backends along with their configuration options.
For the SMB backend, only the timeout option is currently shown, while options like host, share, root, and domain are missing. This makes configuring external storage via occ complicated.
Since the timeout option is marked as hidden but still shown, while the other options are not, the logic needs to be inverted so that all relevant configuration options are displayed correctly.
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2026-02-25 15:24:20 +01:00
Jan-Philipp Litza
0f4d6b8027
fix(files_external): ignore unsatisfied optional dependencies
...
Signed-off-by: Jan-Philipp Litza <janphilipp@litza.de>
2026-02-17 18:03:56 +01:00
Benjamin Gaussorgues
f2907f133c
Merge pull request #58282 from nextcloud/carl/refactor-migration
...
CodeQL Advanced / Analyze (actions) (push) Waiting to run
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
Integration sqlite / changes (push) Waiting to run
Integration sqlite / integration-sqlite (master, 8.4, main, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, files_reminders) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, routing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, videoverification_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite-summary (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis (push) Waiting to run
Psalm static code analysis / static-code-analysis-security (push) Waiting to run
Psalm static code analysis / static-code-analysis-ocp (push) Waiting to run
Psalm static code analysis / static-code-analysis-ncu (push) Waiting to run
Psalm static code analysis / static-code-analysis-strict (push) Waiting to run
refactor(psalm): Modernize migration doc
2026-02-17 14:58:03 +01:00
Git'Fellow
b1e71ae646
fix(sftp): Handle empty port parameter to allow host-defined ports
...
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2026-02-14 12:29:38 +01:00
Carl Schwan
f6c839d125
refactor(psalm): Modernize migration doc
...
And remove all the duplication in the subclasses
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-02-12 11:25:55 +01:00
provokateurin
f12cecb684
feat(rector): Enable SafeDeclareStrictTypesRector
...
Signed-off-by: provokateurin <kate@provokateurin.de>
2026-02-09 10:59:31 +01:00
Carl Schwan
3979c493f9
refactor: Apply second batch of comments
...
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2026-02-06 13:52:51 +01:00
Andy Scherzinger
08e1d9b83e
Merge pull request #58025 from nextcloud/carl/refactor-share-mountprovider
...
refactor(mount-provider): Refactor share mount provider
2026-02-05 11:50:40 +01:00
Carl Schwan
8f81b91733
refactor(mount-provider): Refactor share mount provider
...
- Add more precise types
- Remove dead code
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-02-04 12:46:14 +01:00
Robin Appelman
522663b9f0
fix: partial external storage config matching non-child mounts
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-02-03 16:50:57 +01:00
Robin Appelman
b79af98a31
fix: fix partial external storage provider not finding root mount
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-02-03 16:16:22 +01:00
Andy Scherzinger
1bdc27202a
Merge pull request #57924 from nextcloud/carl/fix-external-partialmountprovider
...
fix(external-storage): Rtrim trailing slash at the end
2026-02-03 15:57:27 +01:00