Louis Chemineau
bc2c02f451
Wrap S3 multipart upload exception
...
Signed-off-by: Louis Chemineau <louis@chmn.me>
2022-02-16 14:56:14 +07:00
Louis Chemineau
0b768c17d2
Wrap S3 multipart upload exception
...
Signed-off-by: Louis Chemineau <louis@chmn.me>
2022-02-15 17:35:12 +07:00
Julius Härtl
2aac757805
Make max size for single put uploads configurable
...
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2021-12-29 13:30:22 +07:00
Julius Härtl
e475dfe16c
Fix php-cs for S3ConnectionTrait.php
...
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2021-12-21 21:35:46 +07:00
Julius Härtl
1acfbd0b06
Merge pull request #27493 from cuppett/cuppett/simplify-aws-credential-provider
2021-12-21 11:58:52 +07:00
Côme Chilliet
66bdda568a
Fix Guzzle function calls
...
Since 1.7.0 and 2.0 these functions are turned into static methods.
See https://github.com/guzzle/psr7#upgrading-from-function-api
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2021-11-23 09:28:57 +07:00
Stephen Cuppett
4a6a2c2b48
Simplify S3ConnectionTrait to defaultProvider plus option
...
When we initially added the EC2 and ECS IAM role support in #24700 ,
we had to use a workaround by explicitly ordering the various providers
due to an inconsistency in the AWS SDK for PHP. We submitted a PR there
to get that squared away. Now, we've consumed that version upstream
for the SDK and can update our code here to be the most concise version
as well as position ourselves to pick up new methods as those become
available and prevalent in AWS (for acquiring credentials).
See also: https://github.com/nextcloud/server/pull/24700#issuecomment-747650892
See also: https://github.com/aws/aws-sdk-php/pull/2172
Signed-off-by: Stephen Cuppett <steve@cuppett.com>
2021-11-22 07:04:48 +07:00
John Molakvoæ
6ab2feaa54
Implement multibucket shift for ObjectStore
...
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2021-11-11 15:09:28 +07:00
Carl Schwan
df4e6bab69
Merge pull request #29115 from nextcloud/work/carl/correct-permissions-when-copying
...
Fix permissions when copying from ObjectStorage
2021-10-28 14:38:20 +07:00
Carl Schwan
bfa60aaf27
Fix permissions when copying from ObjectStorage
...
Make sure that when a user copy a file from a directory they don't have
all permissions to a directory where they have more permissions, the
permissions are correctly set to the one from the parent taget folder.
This was caused by the ObjectStoreStorage::copyFromStorage using
the jailed storage and cache entry instead of the unjailed one like other
storages (the local one).
Steps to reproduce
+ Use object storage
+ Create a groupfolder with one group having full permission and another one
who can just read files.
+ With an user who is in the second group, copy a file from the groupfolder to
the home folder of this user.
+ The file in the home folder of the user will be read only and can't be deleted
even though it is in their home folder and they are the owner. In oc_filecache,
the permissions stored for this file are 1 (READ)
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2021-10-28 13:29:50 +07:00
Robin Appelman
09ffac5e6d
s3 external storage listing rework
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2021-10-15 15:35:02 +07:00
Bernd Rederlechner
3866f388b1
Refactor writeObject to only use MultipartUpload when required
...
Signed-off-by: Bernd Rederlechner <Bernd.Rederlechner@t-systems.com>
Co-authored-by: Julius Härtl <jus@bitgrid.net>
2021-08-20 17:02:25 +07:00
Julius Härtl
3e67637a4a
Merge pull request #26463 from Worteks/fix-s3proxy
2021-07-14 23:32:05 +07:00
blizzz
62675eb5c2
Merge pull request #27586 from nextcloud/bugfi/noid/objectstore-checksum
...
Reset checksum when writing files to object store
2021-07-01 17:30:54 +07:00
Maxime Besson
388a458cd5
fix(proxy): use accessor
...
Signed-off-by: Maxime Besson <maxime.besson@worteks.com>
2021-06-30 09:25:04 +07:00
Christoph Wurst
6d5cfe0c66
Move DateTime::RFC2822 to DateTimeInterface::2822
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2021-06-23 15:30:43 +07:00
Julius Härtl
21db463bc9
Reset checksum when writing files to object store
...
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2021-06-21 12:04:49 +07:00
John Molakvoæ (skjnldsv)
215aef3cbd
Update php licenses
...
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2021-06-04 22:02:41 +07:00
Morris Jobke
333665b43d
Merge pull request #27040 from nextcloud/FlorentCoppint-master
...
Avoid reading ~/.aws/config when using S3 provider
2021-05-25 10:19:22 +07:00
Florent
d4444f2472
Avoid reading ~/.aws/config when using S3 provider
...
When using S3 storage, we sometimes have open_basedir errors due to aws-sdk-php trying to read ~/.aws/config which is out of open_basedir restrictions.
Christoph Wurst already added csm=false config in #21406 but it wasn't enough, we also need to set use_arn_region=false, added in this commit.
Signed-off-by: Florent <florent@coppint.com>
2021-05-20 12:21:15 +07:00
Robin Appelman
ef6f2e68f0
explicitly close source stream on object store upload even if count wrapper isn't needed
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2021-04-29 17:01:19 +07:00
Robin Appelman
effb7dc8ba
set mimetype for objects uploaded to object storages
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2021-04-21 15:25:58 +07:00
Maxime Besson
547438527d
fix(proxy): reaching s3 storage behind some http proxy
...
Signed-off-by: Maxime Besson <maxime.besson@worteks.com>
2021-04-09 10:15:57 +07:00
Samuel
03fe74b95e
fix(proxy): reaching s3 storage behind some http proxy
...
Signed-off-by: Maxime Besson <maxime.besson@worteks.com>
2021-04-09 10:15:57 +07:00
Robin Appelman
ad636ae12d
use returned file id for object store copy
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2021-03-12 17:22:40 +07:00
Robin Appelman
32551b9ff7
Merge pull request #25722 from nextcloud/objectstore-copy-cross
...
apply object store copy optimization when 'cross storage' copy is wit…
2021-03-12 16:10:18 +07:00
Robin Appelman
3eb764e65d
remove explicit fclose from S3->writeStream
...
streams get closed automatically when dropped, and in some cases the stream seems to be already closed by the S3 library, in which case trying to close it again will raise an error
Signed-off-by: Robin Appelman <robin@icewind.nl>
2021-03-11 18:05:04 +07:00
Robin Appelman
c87b1a50d9
apply object store copy optimization when 'cross storage' copy is within the same object store
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2021-03-09 20:31:27 +07:00
dependabot-preview[bot]
eb502c02ff
Bump nextcloud/coding-standard from 0.3.0 to 0.5.0
...
Bumps [nextcloud/coding-standard](https://github.com/nextcloud/coding-standard ) from 0.3.0 to 0.5.0.
- [Release notes](https://github.com/nextcloud/coding-standard/releases )
- [Changelog](https://github.com/nextcloud/coding-standard/blob/master/CHANGELOG.md )
- [Commits](https://github.com/nextcloud/coding-standard/compare/v0.3.0...v0.5.0 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2021-02-18 13:31:24 +07:00
Roeland Jago Douma
137636b651
Merge pull request #24700 from Imajie/s3-creds
...
Resolves #24699 , Support ES2 and ECS instance providers for S3 buckets
2021-02-02 21:48:22 +07:00
Christoph Wurst
9ce3ea3368
Update license headers
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2020-12-30 14:07:05 +07:00
Christoph Wurst
73c7d0dc81
Bump icewind/streams from 0.7.1 to 0.7.2
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2020-12-29 09:07:36 +07:00
Julius Härtl
5094e29ebd
Merge pull request #24594 from kofemann/dcache
2020-12-22 09:26:07 +07:00
Tigran Mkrtchyan
4f2dc18f58
storage: update IStorage#file_put_contents docs to match usage
...
The current phpdoc of IStorage#file_put_contents doesnt corresponds to
it's actual usage in code, e.g.
Signed-off-by: Tigran Mkrtchyan <tigran.mkrtchyan@desy.de>
2020-12-21 19:04:18 +07:00
Christoph Wurst
d89a75be0b
Update all license headers for Nextcloud 21
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2020-12-16 18:48:22 +07:00
James Letendre
45a02ee30c
Fix failing tests
...
Signed-off-by: James Letendre <james.letendre@gmail.com>
2020-12-15 19:06:06 +07:00
James Letendre
ad95e51cbe
Add web identity provider to S3 connection chain
...
Signed-off-by: James Letendre <james.letendre@gmail.com>
2020-12-15 16:37:46 +07:00
James Letendre
5b756a9fb0
Replace defaultProvider with explicit calls to exclude user home directory lookup
...
Signed-off-by: James Letendre <james.letendre@gmail.com>
2020-12-14 16:22:41 +07:00
James Letendre
85aa77539b
Resolves #24699 , Support ES2 and ECS instance providers for S3 buckets
...
Signed-off-by: James Letendre <james.letendre@gmail.com>
2020-12-14 12:55:46 +07:00
Robin Appelman
9d4848e863
use in objectstore copy
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2020-11-24 15:16:58 +07:00
Roeland Jago Douma
65141d4864
Allow config to specify the bucket exists
...
In the 99% case the bucket is just always there. And if it is not the
read/write will fail hard anyways. Esp on big instances the Objectstore
is not always fast and this can save a few hundered ms of each request
that acess the objectstore.
In short it is adding
'verify_bucket_exists' => false
To the S3 config part
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2020-11-06 11:08:38 +07:00
Christoph Wurst
d9015a8c94
Format code to a single space around binary operators
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2020-10-05 20:25:24 +07:00
Roeland Jago Douma
bb06b6cce4
Fix reading empty files from objectstorage
...
Since we try to do range requests this will fail hard.
However since empty files are not that interesting to read anyways we
just read from an emptry memory stream.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2020-09-09 20:45:13 +07:00
Roeland Jago Douma
9fdeed8cc0
Run stat less often for objectstorages
...
When we want to get the permissions we now do stat at least 5 times for
each entry. Which is a bit much. Especially since the permssions are all
just in the database already.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2020-09-08 14:38:36 +07:00
Roeland Jago Douma
789b33aba4
Only update the filecache entry once the file has been written to S3
...
If we already update before we have no way to revert if the upload
fails.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2020-08-31 12:28:04 +07:00
Roeland Jago Douma
6ffd7173f9
Don't lose filecache entry on s3 overwrite error
...
If the object store errors we should not always delete the filecache
entry. As this might lead to people losing access to their files.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2020-08-31 12:25:20 +07:00
Christoph Wurst
2a054e6c04
Update the license headers for Nextcloud 20
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2020-08-24 14:54:25 +07:00
Stephen Cuppett
5ef0f86ce7
Resolves #19790 , Provides Support for IAM Credentials
...
Includes support for either leveraging environment variables
passed to the PHP runtime or IAM instance profile present
on the host being used. The default and first choice is
still the parameter file as documented.
See also: https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials_provider.html#chaining-providers
Signed-off-by: Stephen Cuppett <steve@cuppett.com>
2020-08-20 15:54:33 +07:00
Morris Jobke
fedf9c69d9
Use matching parameter names form interfaces and implementations
...
Found by Psalm 3.14.1
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2020-08-19 18:16:35 +07:00
Morris Jobke
438ac23e2a
Distribute preview folders in appdata in multibucket setup to multiple buckets
...
* introduces a new IRootMountProvider to register mount points inside the root storage
* adds a AppdataPreviewObjectStoreStorage to handle the split between preview folders and bucket number
Ref #22033
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2020-08-06 22:19:20 +07:00
Christoph Wurst
d3a4bc91f7
Fix static method call for s3 bucket compat check
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2020-07-03 09:02:58 +07:00
Daniel Kesselberg
8aa99aa8ff
Update presign method to match with interface again.
...
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2020-06-25 22:56:28 +07:00
Christoph Wurst
9d392891be
Disable Client-Side Monitoring on AWS storage
...
The S3 client enables this by default and then tries to read
`.aws/config`. This causes `open_basedir` restriction related error for
some setups. So this patch disables the CSM because it's most likely
unused anyway.
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2020-06-15 09:13:08 +07:00
Florent
3594ba6971
Upload part size as S3 parameter instead of constant value
...
Some S3 providers need a custom upload part size (500 MB static value in Nextcloud).
Here is a commit to change this value via S3 configuration, instead of using S3_UPLOAD_PART_SIZE constant.
A new parameter is added for an S3 connection : uploadPartSize
Signed-off-by: Florent <florent@coppint.com>
2020-06-09 09:18:42 +07:00
Roeland Jago Douma
d5850eb28f
Merge pull request #18955 from adrb/swift_upload_large_objects
...
Large Object support for OpenStack Swift
2020-05-06 13:03:24 +07:00
Robin Appelman
4e6d3d1880
Fix getDirectoryContent implementation for Jail wrapper
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2020-04-30 15:27:09 +07:00
Roeland Jago Douma
f6b435d0d9
Run the cs fixer for green ci
...
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2020-04-30 10:28:44 +07:00
Roeland Jago Douma
a1c1b354fc
Merge pull request #18883 from adrb/optimize_swift_14116
...
Optimize Openstack Swift files download
2020-04-30 09:06:19 +07:00
Christoph Wurst
cb057829f7
Update license headers for 19
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2020-04-29 11:57:22 +07:00
Adrian Brzezinski
e107519295
Large Object support for OpenStack Swift.
...
Until now, you wouldn't be able to create
objects larger that 5GB.
It's somewhat related with pull #18883
Signed-off-by: Adrian Brzezinski <adrian.brzezinski@eo.pl>
2020-04-27 14:23:59 +07:00
Adrian Brzezinski
354c0996d8
It's a fix for issue #14116 ,
...
Improves efficiency when downloading files from Swift storage.
Before, files were downloaded and then pushed back to user.
That behaevior causes all kinds of performance problems.
Now, files are streamed directly to user.
Signed-off-by: Adrian Brzezinski <adrian.brzezinski@eo.pl>
2020-04-27 14:16:50 +07:00
Robin Appelman
9735b5d61f
Add method to storage backends to get directory content with metadata
...
Currently you need to use `opendir` and then call `getMetadata` for
every file, which adds overhead because most storage backends already
get the metadata when doing the `opendir`.
While storagebackends can (and do) use caching to relief this problem,
this adds cache invalidation dificulties and only a limited number of
items are generally cached (to prevent memory usage exploding when
scanning large storages)
With this new methods storage backends can use the child metadata they
got from listing the folder to return metadata without having to keep
seperate caches.
Signed-off-by: Robin Appelman <robin@icewind.nl>
2020-04-20 15:45:04 +07:00
Julien Lutran
3e849daf11
Fix issues with Keystone auth v3 in files_external app
...
Signed-off-by: Julien Lutran <julien.lutran@corp.ovh.com>
2020-04-15 10:33:08 +07:00
Christoph Wurst
734c62bee0
Format code according to PSR2
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2020-04-10 16:56:50 +07:00
Christoph Wurst
28f8eb5dba
Add visibility to all constants
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2020-04-10 16:54:27 +07:00
Christoph Wurst
1584c9ae9c
Add visibility to all methods and position of static keyword
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2020-04-10 16:51:06 +07:00
Christoph Wurst
caff1023ea
Format control structures, classes, methods and function
...
To continue this formatting madness, here's a tiny patch that adds
unified formatting for control structures like if and loops as well as
classes, their methods and anonymous functions. This basically forces
the constructs to start on the same line. This is not exactly what PSR2
wants, but I think we can have a few exceptions with "our" style. The
starting of braces on the same line is pracrically standard for our
code.
This also removes and empty lines from method/function bodies at the
beginning and end.
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2020-04-10 14:19:56 +07:00
Christoph Wurst
14c996d982
Use elseif instead of else if
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2020-04-10 10:35:09 +07:00
Christoph Wurst
44577e4345
Remove trailing and in between spaces
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2020-04-09 16:07:47 +07:00
Christoph Wurst
afbd9c4e6e
Unify function spacing to PSR2 recommendation
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2020-04-09 13:54:22 +07:00
Christoph Wurst
41b5e5923a
Use exactly one empty line after the namespace declaration
...
For PSR2
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2020-04-09 11:48:10 +07:00
Robin Appelman
7b07e7251c
make seekable s3 stream generic
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2020-04-01 15:21:05 +07:00
Lukas Stabe
14401efb0f
Enable fseek for files in S3 storage
...
Signed-off-by: Lukas Stabe <lukas@stabe.de>
2020-04-01 15:21:01 +07:00
Christoph Wurst
1a9330cd69
Update the license headers for Nextcloud 19
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2020-03-31 14:52:54 +07:00
Christoph Wurst
b80ebc9674
Use the short array syntax, everywhere
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2020-03-26 16:34:56 +07:00
Roeland Jago Douma
9a35e789b4
Get correct mimetype on objectstores
...
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2020-03-11 11:14:12 +07:00
Christoph Wurst
5bf3d1bb38
Update license headers
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2019-12-05 15:38:45 +07:00
Roeland Jago Douma
68748d4f85
Some php-cs fixes
...
* Order the imports
* No leading slash on imports
* Empty line before namespace
* One line per import
* Empty after imports
* Emmpty line at bottom of file
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2019-11-22 20:52:10 +07:00
Robin Appelman
733d4b6cca
dont delete cache entries if deleting an object from object store failed
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2019-09-25 18:09:45 +07:00
Morris Jobke
e45fb5fa3e
Fix typo in comment
...
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2019-07-29 14:55:43 +07:00
Marcel Klehr
d46744e2f1
Fix File#putContents(string) on ObjectStorage
...
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2019-07-17 14:58:56 +07:00
Roeland Jago Douma
e953205908
Use HTTP1.1 to read S3 objects
...
Some of the READs otherwise use HTTP/1.0 which is not always supported
by all backends. HTTP/1.1 is there since 1999 way longer than S3 so safe
to assume it is always there IMO.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2019-07-10 11:42:22 +07:00
Morris Jobke
96e892770d
Merge pull request #15715 from nextcloud/s3-bucket-name
...
Allow other code to use the s3 client from object store
2019-05-24 15:03:22 +07:00
Robin Appelman
834db3af2c
add method to get bucket name from s3 storage
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2019-05-24 14:02:03 +07:00
Robin Appelman
06a119242e
make ObjectStoreStorage::getURN public
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2019-05-22 12:17:33 +07:00
Robin Appelman
439b341e89
add method to get the used object store from the storage
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2019-05-21 17:18:00 +07:00
Roeland Jago Douma
dedb84acb0
Always use a temp file for swift writes
...
Apparently the if statement doesn't work in all cases (even if I could
not reproduce it). So for the time being we will just not directly
stream to swift.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2019-04-18 21:04:27 +07:00
Roeland Jago Douma
1b27e9578d
Merge pull request #14424 from nextcloud/fix/13554/swift_to_tmp
...
Use a tmp file for swift writes
2019-03-06 15:33:15 +07:00
Morris Jobke
debd32b461
Merge pull request #14175 from skydiablo/master
...
Fix ObjectStorage expired token (v3)
2019-03-05 18:59:45 +07:00
Roeland Jago Douma
1153123b90
Use a tmp file for swift writes
...
Else this leads to a seekable stream error with chunked uploads
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2019-03-04 13:11:59 +07:00
Roeland Jago Douma
df55781814
Merge pull request #14254 from sparrowjack63/master
...
Dont check Bucket Name in Nextcloud
2019-03-01 13:46:04 +07:00
S. Cat
e3142a91b2
Bucket name - Alert in debug mode
...
Alert in debug mode only when trying to mount non compatible DNS bucket name (in order to not flood the logs)
Signed-off-by: Sébastien Cat <sebastien.cat@inra.fr>
2019-03-01 11:28:54 +07:00
S. Cat
381ae44d38
Correct code indent
...
Just correct code indent.
Signed-off-by: Sébastien Cat <sebastien.cat@inra.fr>
2019-03-01 11:28:54 +07:00
S. Cat
77473b0228
Warning on S3 not compatible DNS bucket name
...
The new created bucket should respect the DNS compatibility, nevertheless, Nextcloud should accept to mount "old created" buckets that does not respect DNS compatibility (Backward compatibility, or compatibility with CEPH).
Signed-off-by: Sébastien Cat <sebastien.cat@inra.fr>
2019-03-01 11:28:54 +07:00
Sebastien Cat
59c3d8d85f
Dont check Bucket Name in Nextcloud
...
Signed-off-by: Sebastien Cat <sparrow.jack63@gmail.com>
Signed-off-by: Sébastien Cat <sebastien.cat@inra.fr>
2019-03-01 11:28:54 +07:00
Roeland Jago Douma
f6f002e2ad
Merge pull request #14210 from nextcloud/fix/14192/fix_empty_uploads
...
Fix empty file uploads to S3 (and other streaming storages)
2019-02-18 15:39:17 +07:00
Roeland Jago Douma
104616c1da
Use CountWrapper instead of almost identical CountReadStream
...
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2019-02-15 13:24:58 +07:00
Roeland Jago Douma
61d66d7954
Fix empty file uploads to S3
...
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2019-02-15 08:41:39 +07:00
Volker
d06c25b9c8
Update SwiftFactory.php
...
Auth-Service (in explizit v3) will recheck the cached-token and will end in an "token expired exception".
2019-02-13 12:26:27 +07:00
William Pain
c26bdd4731
Fix: Check if `$this->params['user']` is an array
...
Signed-off-by: William Pain <pain.william@gmail.com>
2019-02-05 09:56:42 +07:00
Robin Appelman
1d322d3b37
always use multipart uploader for s3 uploads
...
the multipart uploader handles non seekable streams while `upload` does not
Signed-off-by: Robin Appelman <robin@icewind.nl>
2019-01-28 14:51:19 +07:00
Morris Jobke
5a27e54f4b
Merge pull request #13032 from nextcloud/objectstore-write-exists
...
upload new files in objectstore to a .part path first
2019-01-14 11:26:29 +07:00
Robin Appelman
615fb8cd77
Cache tokens when using swift's v2 authentication
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2019-01-13 19:59:48 +07:00
Robin Appelman
d6bf5d4384
upload new files in objectstore to a .part path first
...
This prevent the object store and cache from getting out of sync
when an objectstore silently fails or the php process get's killed
during the upload without giving us the chance to cleanup
Signed-off-by: Robin Appelman <robin@icewind.nl>
2018-12-12 15:24:40 +07:00
Robin Appelman
6c9f2644cf
Add objectExists to objectstore interface
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2018-12-12 14:17:19 +07:00
Morris Jobke
cef8eadf2a
Add PHPDoc for thrown exception
...
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2018-11-19 15:34:07 +07:00
Robin Appelman
35251928d5
forward object not found error in switch as dav 404
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2018-11-19 11:34:38 +07:00
Robin Appelman
93de63777e
extend storage api to allow directly writing a stream to storage
...
this removes the need for temporary storages with some external storage backends.
The new method is added to a separate interface to maintain compatibility with
storage backends implementing the storage interface directly (without inheriting common)
Currently the interface is implemented for objectstorage based storages and local storage
and used by webdav uploads
Signed-off-by: Robin Appelman <robin@icewind.nl>
2018-10-31 21:10:44 +07:00
Robin Appelman
47fd3499a3
Fix listing s3 objects when using google cloud aws compatibility
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2018-06-11 17:10:57 +07:00
Robin Appelman
ac26175a17
add azure unit tests with azurite
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2018-06-04 16:18:03 +07:00
Robin Appelman
60b7cbc0f0
add azure object storage backend
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-06-04 10:57:52 +07:00
Roeland Jago Douma
a0e038f912
generateTokenFromCache is only valid for V3
...
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-04-26 20:51:05 +07:00
Roeland Jago Douma
7318882357
json_decode an associative array for the swift cached token
...
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-04-26 20:47:47 +07:00
Arthur Schiwon
38a90130ce
move log constants to ILogger
...
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2018-04-26 10:45:52 +07:00
Roeland Jago Douma
1ceb081c9b
Merge pull request #9280 from nextcloud/bugfix/noid/swift-v3-scope
...
Swift v3 requires setting a scope
2018-04-24 09:49:27 +07:00
Roeland Jago Douma
ba71918ad2
Swift v3 requires setting a scope
...
Unscoped auth is not guaranteed to return a catalog. So require the
scope to be set properly.
See https://developer.openstack.org/api-ref/identity/v3/index.html#password-authentication-with-unscoped-authorization
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-04-23 19:34:09 +07:00
Morris Jobke
431ccb6386
Fix undefined variable - found by phan
...
Added in https://github.com/nextcloud/server/pull/8314/files#diff-a55c10804586cd797b7f3f16556c1457R157
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2018-04-23 11:34:41 +07:00
Morris Jobke
2f068bc9d1
Add more logging for the object storage during creation of the buckets
...
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2018-04-05 17:26:09 +07:00
Morris Jobke
63bc633d89
Merge pull request #8857 from nextcloud/swift-verify-cached-token
...
verify cached swift token
2018-03-19 10:10:04 +07:00
Robin Appelman
41954d2903
verify cached swift token
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2018-03-16 15:20:16 +07:00
Roeland Jago Douma
d3e7996e80
Fix bucket and container usage
...
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-03-14 13:57:14 +07:00
Roeland Jago Douma
4e8d5504d2
Properly cache swift v3 token
...
The V3 token has an export function. Without this the token is
effectively never cached.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-03-12 20:53:50 +07:00
Roeland Jago Douma
d05469959e
Merge pull request #8715 from nextcloud/objectstore-no-part-files
...
disable part files for object stores
2018-03-08 20:52:16 +07:00
Robin Appelman
fc35352122
disable part files for object stores
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2018-03-07 13:33:35 +07:00
Robin Appelman
9764e70494
don't read existing file when overwriting using object store
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2018-03-07 12:05:57 +07:00
Roeland Jago Douma
812ea354d0
User proper username + pass
...
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-02-26 14:54:18 +07:00
Robin Appelman
31dd6d6aae
add support for v3 swift auth
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2018-02-26 14:54:08 +07:00
Robin Appelman
817f2f8f49
adjust swift external storage to new openstack sdk
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2018-02-19 19:41:16 +07:00
Robin Appelman
3192efc415
adjust swift object storage to new openstack sdk
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2018-02-19 19:41:16 +07:00
Morris Jobke
d3d045dd5c
Remove unused import statements
...
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2018-02-14 16:55:43 +07:00
Roeland Jago Douma
3e0ef7e3f2
Try to silence phan
...
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-02-08 15:18:26 +07:00
Robin Appelman
e34c20af7d
don't swallow exception from touch
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2018-02-08 15:18:26 +07:00
Robin Appelman
85d23dd6fc
better error message on catalog error
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2018-02-08 15:18:26 +07:00
Morris Jobke
26e0c14c6d
Merge pull request #8033 from nextcloud/s3-uploader
...
Use S3Client::upload instead of splitting single/multipart upload ourselves
2018-02-08 14:30:02 +07:00
Robin Appelman
fd09c06eb4
actually return stream from swift
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2018-02-07 17:10:59 +07:00
Morris Jobke
a661f043e1
Remove unneeded semicolon and parentheses
...
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2018-01-26 23:46:40 +07:00
Morris Jobke
c005fc6755
Cleanup unused code
...
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2018-01-26 15:25:19 +07:00
Robin Appelman
3499cbdb76
Use S3Client::upload instead of splitting single/multipart upload ourselves
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2018-01-24 17:22:05 +07:00
Morris Jobke
2a38605545
Properly log the full exception instead of only the message
...
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2018-01-23 10:57:21 +07:00
Robin Appelman
34ced4dd97
add option to use legacy v2 auth with s3
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-12-19 11:54:55 +07:00
Morris Jobke
d2d73f1ce8
Also replace all other occurences
...
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-12-18 20:57:11 +07:00
Robin Appelman
046eb0c635
add retry wrapper when reading files from swift
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-12-04 16:34:53 +07:00
Bjoern Schiessle
1ade6b0817
only create the file cache entry after the empty file was created successfully, otherwise file_exists() call on the initial file_put_content() will indicate that the file already exists
...
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
2017-11-17 12:45:46 +07:00
Robin Appelman
c566b2854b
Use non empty files for object store touch
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-11-08 17:51:02 +07:00
Robin Appelman
70a4860ccb
Fix contructing headers for s3 download
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-11-08 17:50:46 +07:00
Morris Jobke
31c5c2a592
Change @georgehrke's email
...
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-11-06 20:38:59 +07:00
Morris Jobke
da6c2c9da1
Merge pull request #7083 from nextcloud/update-license-headers
...
Update license headers
2017-11-06 18:48:04 +07:00
Morris Jobke
0eebff152a
Update license headers
...
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-11-06 16:56:19 +07:00
Morris Jobke
8b763ea0f7
Better error message for invalid bucket names
...
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-11-06 09:48:41 +07:00
Joas Schilling
3e0789aa94
Merge pull request #6958 from nextcloud/improved-mimetype-detection-for-object-storage
...
Improve mimetype detection for object storages
2017-11-01 11:04:15 +07:00
Robin Appelman
f9a7294807
use fopen directly when reading objects from s3
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-10-27 12:58:19 +07:00
Morris Jobke
405bbc1c61
Improve mimetype detection for object storages
...
Object storage instances always fall back to the content based mimetype detection, because the file name for object storage was always random due to the fact that it was temporarily storage in a generated temp file. This patch adds a check before that to make sure to use the original file name for this purpose and also remove possible other extensions like the versioning or part file extension.
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-10-26 16:31:59 +07:00
Robin Appelman
91b3536f45
propagate multipart upload exception when aborting upload
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-10-17 15:10:58 +07:00
Robin Appelman
e393b3553e
set s3 part size to 500mb
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-10-11 15:59:53 +07:00
Robin Appelman
385d6f098c
Add tests for multipart upload
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-09-21 14:47:34 +07:00
Robin Appelman
4ae46d8876
only do multipart upload for large files
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-09-21 14:06:59 +07:00
Robin Appelman
e4e5e735db
multipart upload for s3 object storage
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-09-20 17:51:58 +07:00
Robin Appelman
d526969a68
fix path style
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-09-18 15:16:28 +07:00
Robin Appelman
d70607104e
reuse object read/write/delete logic in s3 implementations
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-09-18 15:16:27 +07:00
Robin Appelman
dad18baec8
update aws sdk and move it to 3rdparty
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-09-18 15:16:27 +07:00
William Pain
9a63ded43b
Fix uninitialized variable $this->params
...
Signed-off-by: William Pain <pain.william@gmail.com>
2017-09-11 10:01:12 +07:00
Roeland Jago Douma
5f227bd93b
More phpstorm inspection fixes
...
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2017-07-24 11:39:29 +07:00
Robin Appelman
0a12b5d38d
improved logging of objectore errors
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-06-21 17:33:26 +07:00
Morris Jobke
c54a59d51e
Remove unused use statements
...
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-04-22 19:23:31 +07:00
Robin Appelman
6991b79d40
serialize the token to json instead of using php's serialize
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-03-28 21:33:07 +07:00
Robin Appelman
205d5586e8
cache swift tokens in memcache
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-03-28 12:37:41 +07:00
Robin Appelman
8dbca71a77
better error messages for invalid regions, urltypes and service names
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-03-28 17:00:11 +07:00
Robin Appelman
5062d0ac50
better error messages when swift authentication fails
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-03-28 11:02:18 +07:00
Robin Appelman
5774d3e82c
replace close:// streamwrapper with CallBackWrapper
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-01-06 15:33:32 +07:00
Robin Appelman
3ab160dd5a
fopen s3 objects directly to work around unexplainable guzzle bug
...
For some reason when a text file started with a valid hex character ([0-9a-f]) it would eat the text untill the first newline
The new code does basically the same thing as guzzle/s3-sdk did only without wrapping everything in a guzzle stream
Signed-off-by: Robin Appelman <robin@icewind.nl>
2016-11-16 15:30:37 +07:00
Robin Appelman
eefd059716
add amazon s3 objectstore backend
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2016-11-16 15:30:36 +07:00
Robin Appelman
64e896cc0d
split testing of objectstoragestorage and objectstore implementations
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2016-11-16 15:30:36 +07:00
Robin Appelman
0a246f9852
split off s3 connection logic
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2016-11-16 15:30:36 +07:00
Jörn Friedrich Dreyer
4a9361905d
make object prefix configurable
2016-11-14 15:10:56 +07:00
Robin Appelman
b72e5a2e4e
allow using 'bucket' to set the swift container
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2016-11-04 14:15:18 +07:00
Robin Appelman
049bcae29e
Allow setting a maximun number of buckets for multibucket
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2016-11-02 21:31:24 +07:00
Joas Schilling
0215b004da
Update with robin
2016-07-21 18:13:58 +07:00
Joas Schilling
ba87db3fcc
Fix others
2016-07-21 18:13:57 +07:00
Lukas Reschke
aba539703c
Update license headers
2016-05-26 19:57:24 +07:00
Roeland Jago Douma
5e2316d05d
Allow multibucket in objectstore
2016-05-23 20:42:08 +07:00
Roeland Jago Douma
dedf392751
Move \OC\Files to PSR-4
2016-04-24 21:37:35 +07:00