Commit Graph

40 Commits

Author SHA1 Message Date
Roeland Jago Douma eb175584f6
Merge pull request #14514 from nextcloud/fix/no_debug_output
Do not just write foobar
2019-03-04 21:26:20 +01:00
Morris Jobke 79ec7bbcf6
Merge pull request #13871 from PLUTEX/master
dav: Fix handling of chunked WebDAV upload
2019-03-04 17:43:31 +01:00
Roeland Jago Douma c8d1b29407
Do not just write foobar
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2019-03-04 17:14:32 +01:00
Roeland Jago Douma 719b70108d
Hanlde writestream not closing source
Fixes #14298

If a storage doesn'tclose the write stream then $isEOF is not yet set.
So we have to fallback.

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2019-02-20 09:49:06 +01:00
Roeland Jago Douma fc967a5ac2
Make sure that we have a stream
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2019-02-18 14:25:57 +01:00
Roeland Jago Douma 3720add736
Add a wrapper to determine if a file is EOF
The stream is already closed at this point. Which means feof will always
return false. We have to determine if the stream is EOF in the
preCloseCallback. And pass this info along. Then the logic works as
expected.

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2019-02-15 08:41:39 +01:00
Jan-Philipp Litza 9348e3d2f6 dav: Fix handling of chunked WebDAV upload
When $data is null (which can happen when $request->getBodyAsStream() returns
null), the Exceptions says "copied bytes: 0, expected filesize: 0", which
sounds more like success...
2019-01-28 17:14:22 +01: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 +01:00
Roeland Jago Douma 665a6d2055
Allow writing an empty file with the new writeStream
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-11-05 17:00:04 +01:00
Robin Appelman 9b3cc72f7c
fix writeStream for jail wrapper
Signed-off-by: Robin Appelman <robin@icewind.nl>
2018-10-31 21:10:57 +01: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 +01:00
Roeland Jago Douma b51e503aea
Do not emit preHooks twice on non-part-storage
The old code would emit the hooks twice. Thus having the version written
twice. Which is not very performant as it is first read twice as well.

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-10-19 12:19:53 +02:00
Robin Appelman 8399d6070e
always log exceptions on dav write
Signed-off-by: Robin Appelman <robin@icewind.nl>
2018-07-09 14:25:54 +02:00
Robin Appelman f017f431f6
properly lock the target file on dav upload when not using part files
Signed-off-by: Robin Appelman <robin@icewind.nl>
2018-06-11 15:26:41 +02:00
Roeland Jago Douma 055a003661
Use an actual function of the storage to determine needsPartFile
We have a function for it so better to override that. Also because other
codes that might check this should get the right value.

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-05-01 15:02:36 +02:00
Morris Jobke dd34cb7540
Less deprecated calls to OCP\Util::writeLog
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2018-04-22 20:41:49 +02:00
Robin Appelman e6a7ddc1c6 transform exception during file read to sabre exceptions
Signed-off-by: Robin Appelman <robin@icewind.nl>
2018-04-11 14:45:35 +02:00
Robin Appelman f5ef9e02b2
emit pre-hooks earlier when not using part files
Signed-off-by: Robin Appelman <robin@icewind.nl>
2018-03-08 13:02:35 +01:00
Thomas Müller 8c5d656f3b Handle OC-Total-Length in new chunking
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2017-12-15 14:46:36 +01:00
Daniel Calviño Sánchez 2a7b1bae10 Reject X-OC-MTime header if given as a string with hexadecimal notation
In PHP 7.X hexadecimal notation support was removed from "is_numeric",
so "sanitizeMtime" directly rejected those values; in PHP 5.X, on the
other hand, "sanitizeMtime" returned 0 when a string with hexadecimal
notation was given (as it was the behaviour of "intval"). To provide a
consistent behaviour between PHP versions, and given that it does not
make much sense to send X-OC-MTime in hexadecimal notation, now
X-OC-MTime is always rejected if given as a string with hexadecimal
notation.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2017-11-28 01:08:52 +01:00
Thomas Müller ffe034abb0 Don't use runInSeparateProcess
Directly calling "header" in the PHPUnit process causes the "Cannot
modify header information - headers already sent by" error to be thrown.
Instead of running the test in a separate process, which is slower, this
commit wraps the call to "header" in a method that can be mocked in the
tests.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2017-11-27 20:39:45 +01:00
Daniel Calviño Sánchez 2af3d8a9b2 Make possible to provide a specific HTTP request object to File
This will be used in a following commit to test how the X-OC-MTime
header is handled.

This commit is based on the "make File::put() more testable" commit
(included in 018d45cad97e0) from ownCloud by Artur Neumann.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2017-11-27 20:39:41 +01:00
Daniel Calviño Sánchez 01e346b2ae Ensure that X-OC-MTime header is an integer also with chunked uploads
This commit extends the changes introduced in pull request #3793 also to
chunked uploads.

The "sanitizeMTime" method name is the same used in the equivalent pull
request to this one from ownCloud (28066).

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2017-11-27 20:37:51 +01:00
Morris Jobke 0eebff152a
Update license headers
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-11-06 16:56:19 +01:00
Joas Schilling 231bb47ae6 Fix file size comparison
Signed-off-by: Joas Schilling <coding@schilljs.com>
2017-08-01 13:56:12 +02:00
Joas Schilling 89238164e1 Fix comparisons in the dav app
Signed-off-by: Joas Schilling <coding@schilljs.com>
2017-08-01 13:55:07 +02:00
Roeland Jago Douma fc369dd86e
[DAV] Fix URLUtil::splitPath usage
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2017-08-01 08:20:17 +02:00
Morris Jobke eb9aedf44b Enhance the logging if the part file can not be renamed
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-06-22 17:50:14 -05:00
Roeland Jago Douma cef2110263
Revert "fix objectstore rename"
This reverts commit 5334a3dc33.

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2017-05-15 13:59:18 +02:00
Roeland Jago Douma 9da697b11a Merge pull request #4524 from nextcloud/downstream-27508
Keep file id on move
2017-04-28 09:37:40 +02:00
Vincent Petry 614bd5c294
Properly handle missing READ permission 2017-04-27 09:29:02 +02:00
Joas Schilling 5334a3dc33
fix objectstore rename
Signed-off-by: Joas Schilling <coding@schilljs.com>
2017-04-25 17:52:05 +02:00
Roeland Jago Douma 6565533d3b Merge pull request #3600 from coletivoEITA/master
added method needsPartFile() in Storage
2017-03-14 15:14:59 +01:00
Vinicius Cubas Brand 13e50cbcd7 added method needsPartFile() in Storage
Signed-off-by: Vinicius Cubas Brand <viniciuscb@gmail.com>
2017-03-14 10:06:50 -03:00
Stefan Schneider f6ef024159 Correct incorrectly typed X-OC-Mtime header
Signed-off-by: Stefan Schneider <stefan.schneider@squareweave.com.au>
2017-03-10 18:16:27 +11:00
Semih Serhat Karakaya 33cee3502a
Update file.php put function posthook calls
Logicaly, postHooks should emit after touch. For chunking file it is already emitting after touch.

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2016-10-20 21:07:15 +02:00
Joas Schilling 0215b004da
Update with robin 2016-07-21 18:13:58 +02:00
Joas Schilling 813f0a0f40
Fix apps/ 2016-07-21 18:13:57 +02:00
Lukas Reschke aba539703c
Update license headers 2016-05-26 19:57:24 +02:00
Joas Schilling dd9ee10bc0 Move dav app to PSR-4 (#24527)
* Move Application to correct namespace and PSR-4 it

* Move dav app to PSR-4
2016-05-12 09:42:40 +02:00