Commit graph

1375 commits

Author SHA1 Message Date
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
pac0san
e48f871bd0
fix(files_external): Respect explicit port configuration
It allows the use of the alternative SFTP port defined in the GUI (external storage), instead of the default port (22).

Signed-off-by: pac0san <7056343+pac0san@users.noreply.github.com>
Signed-off-by: provokateurin <kate@provokateurin.de>
2026-02-02 11:27:42 +01:00
Carl Schwan
761a6979a7
fix(external-storage): Rtrim trailing slash at the end
Otherwise we don't have any matches when $forChildren is false

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-30 15:50:19 +01:00
Carl Schwan
916ce3f8ec
feat(external-storage): Implement IPartialMountPoint
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-28 17:09:22 +01:00
Carl Schwan
4c79c2faff
Merge pull request #57591 from nextcloud/carl/query-exception
refactor(QueryException): Remove most usage of QueryException
2026-01-20 15:59:56 +01:00
Carl Schwan
11cf69d8ba
fix(psalm): Fix static analysis issues in apps/*/tests
There are still 1200 more to fix before we can enable static analysis
for the tests.

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-16 12:00:51 +01:00
Carl Schwan
9a8d45d81f
refactor(QueryException): Remove most usage of QueryException
This is preparation to move QueryException from OCP to OC as part of
Nextcloud 34.

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-16 11:55:06 +01:00
Robin Appelman
9fde2523e6
Merge pull request #57493 from nextcloud/smb-invalid-arg-unavailable
fix: handle InvalidArumentException as availability failure in smb->getFileInfo
2026-01-14 12:00:03 +01:00
Robin Appelman
ae74dbef2b
Merge pull request #56499 from nextcloud/authoritative-mount-provider-files_external
Add api for authoritative mount providers and implement it for files_external
2026-01-13 16:36:33 +01:00
Ferdinand Thiessen
0e22ae1efe refactor(files_external): migrate public key auth to Vue 3
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-13 01:30:37 +00:00
Ferdinand Thiessen
5ed7c4fd97 fix(files_external): adjust settings
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-13 01:30:37 +00:00
Ferdinand Thiessen
545c72becb chore: remove non working and legacy OAuth2 auth schema
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-13 01:30:37 +00:00
Ferdinand Thiessen
e1133ec926 feat(files_external): Migrate settings to Vue
Template parameters are migrated to initial state, common state between admin and user settings is shared in the CommonSettingsTrait.
The template is cleaned and replaced with only a stub for the Vue mount.
Code only used for the frontend of the settings is moved from the MountConfig to the CommonSettingsTrait (the missing dependency messages).

On the frontend a wrapper view is created that currently holds the global credentials settings and the external storages settings.
- The global credentials sections is now a stand-alone sections - fully implemented.
- The external storages section holds the table + user config + warnings on missing dependencies

The legacy UI is temporarly renamed but will be removed in a following commit.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-13 01:30:37 +00:00
Ferdinand Thiessen
d4674060dc fix(files_external): return correct type for new user defined storages
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-13 01:30:37 +00:00
Ferdinand Thiessen
38ed0a8283 fix: hard type controllers where the type is required to match
Prevent HTTP 500 errors where a 400 would be the correct response

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-13 01:30:37 +00:00
Ferdinand Thiessen
4c8b9deca0 feat(files_external): Move script loading to CommonSettingsTrait to reduce duplicated code between admin and user settings
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-13 01:30:37 +00:00
Robin Appelman
4dcd4223de fix: make smb auth failure on forbidden exception more reliable
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-12 15:23:57 +01:00
Robin Appelman
43727cb72c fix: handle InvalidArumentException as availability failure in smb->getFileInfo
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-12 15:23:57 +01:00
Robin Appelman
272d6141ca
fix: improve handling updated storages
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-09 17:53:55 +01:00
Robin Appelman
be3bbf22e0
fix: better applicable check for updating external mounts
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-09 17:53:54 +01:00
Robin Appelman
fa61c4c57d
fix: don't error when checking login credential storage from cli
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-09 17:53:53 +01:00
Robin Appelman
6dd6d06606
fix: update external storage mounts on login
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-09 17:53:53 +01:00
Robin Appelman
9dffca2f07
fix: improve handling of unavailable storages
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-09 17:53:52 +01:00
Robin Appelman
73e84f9bf5
perf: cache root cache entries for external storage in MountCacheService
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-09 17:53:51 +01:00
Robin Appelman
d64f7eb939
feat: listen to user/group events and update external storage mounts
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-09 17:53:51 +01:00
Robin Appelman
5565cdb390
feat: make external storage mount provider authoritative
Signed-off-by: Robin Appelman <robin@icewind.nl>

# Conflicts:
#	apps/files_external/lib/AppInfo/Application.php
2026-01-09 17:53:50 +01:00
Robin Appelman
c80c980e29
feat: add typed events for external storage config changes
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-09 17:53:49 +01:00
Carl Schwan
98192fc17c
feat(external-s3): Expose config option to enable direct s3 preview
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-02 17:13:43 +01:00
Carl Schwan
2ea1bd4cdc
feat(movie-preview): Use getDirectDownloadById for generating preview
Allow to speed-up considerably the creation of previews for movies
stored on S3.

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-02 17:13:41 +01:00
invario
ffe91b48dc
feat(previews): allow ffmpeg to connect direct for AWS S3 buckets
Co-authored-by: Côme Chilliet <91878298+come-nc@users.noreply.github.com>
Signed-off-by: invario <67800603+invario@users.noreply.github.com>
2026-01-02 10:48:39 +01:00
Edward Ly
1490ea95cb
Merge pull request #56781 from nextcloud/fix/s3-name
fix(s3): rename 'Amazon S3' to 'S3 Storage'
2025-12-02 09:20:34 -08:00
Edward Ly
09f774a61f fix(s3): rename 'Amazon S3' to 'S3 Storage'
The current name may be confusing to users who take advantage of other S3-compatible storage solutions not offered by Amazon, so a more generic name is preferred here.

Signed-off-by: Edward Ly <contact@edward.ly>
2025-12-02 08:33:06 -08:00
Côme Chilliet
69b85fab32 fix(files_external): Properly register event listeners in register method
This is the clean solution, LoginCredentials was the only auth class
 actually registering stuff in constructor.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-11-25 15:08:35 +01:00
Côme Chilliet
3279afc529 fix(files_external): Fix registration of listeners with PHP >= 8.4
With the lazy ghosts the constructor is not always called in
 files_external boot. This is a quick and dirty fix but we should
 instead move the code out of the constructors and to the boot method.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-11-25 15:08:35 +01:00
Tobias Kaminsky
6f0537b4e9
Merge pull request #56494 from nextcloud/carl/result-improv
Some checks are pending
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
Improve IResult
2025-11-20 15:38:17 +01:00
Carl Schwan
4d47fdaa85 chore: Run rector with new rules for fetch
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-11-18 17:45:57 +01:00
Kent Delante
b57db10814 fix: pass only necessary information when deleting mulitple objects
DeleteObjects currently fails when the request includes all the
information returned by ListObjects. Send only the necessary
information in the request. Note: 'Size' and 'DateModified' is now
only supported by directory buckets.

Signed-off-by: Kent Delante <kent.delante@proton.me>
2025-11-18 12:07:53 +08:00
Maxence Lange
07d3f1c313 fix(files-external): do not load lazy appconfig from construct
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2025-10-27 13:37:13 -01:00
Louis
f8bed8f186
Merge pull request #51145 from nextcloud/home-folder-readonly 2025-10-01 10:09:19 +02:00
Ferdinand Thiessen
31571476d3 refactor(files_external): migrate Ajax with OC_JSON to proper controller
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-09-30 20:19:21 +02:00
Louis Chemineau
553793c946
feat(files): Mark homefolder as overwritten when an external storage mounted at / exists
Signed-off-by: Robin Appelman <robin@icewind.nl>
Signed-off-by: Louis Chemineau <louis@chmn.me>
2025-09-29 19:26:40 +02:00
Kate
81d0c73700
Merge pull request #55360 from nextcloud/refactor/rector 2025-09-28 12:28:46 +02:00
provokateurin
d59338b377
refactor: Apply rector Nextcloud 26 set
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-09-28 11:45:52 +02:00
Ferdinand Thiessen
660f3f6fd1
refactor: use logical && || instead of weak and or operators
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-09-27 23:02:18 +02:00
Carl Schwan
7e1c49ad9d refactor: Port away from IQueryBuilder::execute in apps/
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-09-16 11:35:01 +02:00
Carl Schwan
0e7d5dce1c refactor: Port away from changeColumn
Replace by the drop-in replacement modifyColumn

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-09-12 18:05:19 +02:00
Josh
af53e9ca06
chore(files_external): Remove oauth1 constant
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-08-07 22:25:51 -04:00
Josh
2b21913015
refactor(files_external): Drop oauth1 auth mechanism registration
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-08-07 22:23:25 -04:00
Josh
57c62e1ca1
refactor(files_external): Drop OAuth1.php
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-08-07 21:54:33 -04:00
Robin Appelman
6f0120af16
fix: handle smb timeouts as storage not available
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-08-05 17:39:12 +02:00