Commit Graph

96 Commits

Author SHA1 Message Date
Vincent Petry 7be541bda1 GDrive stream download with RetryWrapper 2016-03-30 18:39:41 +02:00
Lukas Reschke bd93722e12 Use the shipped cacerts.pem instead of the global one
The one we ship may cause problems since Equifax is not included anymore (SHA-1 certs) are deprecated. We should just be consistent here and also use the certificate file which is used by the other calls in the library.
2016-03-30 16:58:39 +02:00
Vincent Petry 5db41dfbed Only use GDrive chunks when needed 2016-03-17 12:36:47 +01:00
Vincent Petry aa2674e7e2 Chunk upload for GDrive
Instead of storing the WHOLE file in memory in a PHP variable, use the
library's chunk upload support.
2016-03-16 17:57:54 +01:00
Lukas Reschke d14adb2351 Fix compatibility with PHP 5.4
Fixes https://github.com/owncloud/core/issues/22960
2016-03-08 18:04:24 +01:00
Lukas Reschke aebb900cd4 More error handling 2016-02-25 10:12:31 +01:00
Lukas Reschke 3b5ddb417c Copy into local file
Using the Guzzle stream directly here will only return 1739 characters for `fread` instead of all data. This leads to the problem that the stream is read incorrectly and thus the data cannot be properly decrypted => 💣

This approach copies the data into a local temporary file, as done before in all stable releases as well as other storage connectors.

While this approach will load the whole file into memory, this is already was has happened before in any stable release as well. See d608c37c90 for the breaking change.

To test this enable Google Drive as external storage and upload some files with encryption enabled. Reading the file should fail now.

Fixes https://github.com/owncloud/core/issues/22590
2016-02-25 09:40:30 +01:00
Thomas Müller ae2304f23f Merge pull request #22405 from owncloud/gdrive-mimetype-and-office-fixes
Fix GDrive handling of office files
2016-02-19 09:13:35 +01:00
Vincent Petry d38b71f206 Fix GDrive mime type detection with encryption
When encryption is enabled, GDrive would think that all files are text
files. This fix falls back to the extension based detection when a
non-special mime type is returned
2016-02-15 17:09:08 +01:00
Vincent Petry 075dd54f6c Fix GDrive handling of office files
1) Properly detect empty file extension, can be null.

2) When renaming part file to final file, use the correct file name
without extension, if it exists

3) When renaming a file, do not delete the original file if it had the
same id, which can happen with part files
2016-02-15 16:49:12 +01:00
Vincent Petry d608c37c90 Use Guzzle stream to download files from GDrive
The API library does not support streaming and always reads the full
file into memory.

This workaround copies the signed headers to a Guzzle request and
returns the response as stream.
2016-01-14 17:52:30 +01:00
Thomas Müller 682821c71e Happy new year! 2016-01-12 15:02:18 +01:00
Morris Jobke 8366ce2767 deduplicate @xenopathic 2015-10-06 09:52:19 +02:00
Morris Jobke b945d71384 update licence headers via script 2015-10-05 21:15:52 +02:00
Vincent Petry 601c61fddf Merge pull request #12088 from AdamWill/google-opendir-root
[WIP] google: drop duplicate path trim from opendir()
2015-09-01 13:36:27 +02:00
Robin McCorkell d577aad4ac Use OCP classes as much as possible in files_external 2015-08-19 15:26:38 +01:00
Robin Appelman da951ba059 Use the new IteratorDirectory instead of the fakedir wrapper 2015-07-15 13:57:53 +02:00
Thomas Müller 079e9cecba Revert "Use OCP classes as much as possible in files_external" 2015-07-02 13:00:21 +02:00
Robin McCorkell 728a22cda1 Use OCP classes as much as possible in files_external 2015-07-01 09:08:28 +02:00
Morris Jobke f63915d0c8 update license headers and authors 2015-06-25 14:13:49 +02:00
Lukas Reschke c052ee7584 Only escape single quotes 2015-03-31 15:30:49 +02:00
Vincent Petry 7036309e22 Added rawurlencode for other params in GDrive storage 2015-03-31 15:14:08 +02:00
Vincent Petry 5c9998179f Properly quote file names in listFiles query for GDrive 2015-03-31 15:14:03 +02:00
Lukas Reschke 53f67fc65d Revert "Properly quote file names in listFiles query for GDrive" 2015-03-31 15:12:35 +02:00
Frank Karlitschek b216b3fad0 Merge pull request #15215 from owncloud/ext-gdrivelistfilequoting
Properly quote file names in listFiles query for GDrive
2015-03-31 09:08:59 -04:00
Vincent Petry 534892d456 Added rawurlencode for other params in GDrive storage 2015-03-26 13:57:28 +01:00
Vincent Petry 43588fe2f7 Properly quote file names in listFiles query for GDrive 2015-03-26 12:15:02 +01:00
Jenkins for ownCloud b585d87d9d Update license headers 2015-03-26 11:44:36 +01:00
Thomas Müller 5855108e9b drop any fallback code related to curl - refs https://github.com/owncloud/core/pull/14838#issuecomment-78586447 2015-03-12 21:43:41 +01:00
Morris Jobke 06aef4e8b1 Revert "Updating license headers"
This reverts commit 6a1a4880f0.
2015-02-26 11:37:37 +01:00
Jenkins for ownCloud 6a1a4880f0 Updating license headers 2015-02-23 12:13:59 +01:00
Adam Williamson 415411a3d5 google: delete original after successful rename
In GDrive, filenames aren't unique, and directories are just
special files - so you can have multiple files with the same
name, multiple directories with the same name, and even files
with the same names as directories.

OC doesn't handle this at all, though, and just wants to act
as if file and directory names *are* unique. So when renaming,
we must check if there's an existing object with the same
file or directory name before we commit the rename, and
explicitly delete it if the rename is successful. (Other
providers like dropbox do the same for files, but intentionally
don't do it for directories; we really need to do it for
directories too.)

A good way to observe this is to run the storage unit tests
and look at the state of the Drive afterwards. Without this
commit, there will be several copies of all the test files
and directories. After this commit, there's just one of each.

We can't just say "hey, Drive lets us do this, what's the
problem?" because we don't handle multiple-objects, same-name
cases - getDriveFile() just bails and prints an error if it
searches for the file or directory with a given name and gets
multiple results.
2014-11-30 15:34:35 -08:00
Robin Appelman a2457b5fb9 Merge pull request #6989 from AdamWill/google-1
Migrate Google Drive external storage app to v1.0.6-beta of the google-api-php-client library
2014-11-26 12:17:57 +01:00
Adam Williamson 3234c91557 google: drop duplicate path trim from opendir()
opendir() trims the path passed then calls getDriveFile() -
which immediately does the same trim operation. This breaks
opendir() on the root directory, which causes the failure of
the testStat() test when it checks the ctime of the root dir.
2014-11-10 12:00:27 -08:00
Adam Williamson f76419d190 fix touch() when $mtime is set (Google wants RFC3339) #11267
ownCloud passes us a Unix time integer, but the GDrive API wants
an RFC3339-formatted date. Actually it wants a single particular
RFC3339 format, not just anything that complies will do - it
requires the fractions to be specified, though RFC3339 doesn't.

This resolves issue #11267 (and was also noted by PVince81 in
reviewing PR #6989).
2014-11-10 11:56:01 -08:00
Adam Williamson c237acb395 google: disable compression when curl is not available
This is a slightly hacky workaround for
https://github.com/google/google-api-php-client/issues/59 .
There's a bug in the Google library which makes it go nuts on
file uploads and transfer *way* too much data if compression is
enabled and it's using its own IO handler (not curl). Upstream
'fixed' this (by disabling compression) for one upload
mechanism, but not for the one we use. The bug doesn't seem to
happen if the google lib detects that curl is available and
decides to use it instead of its own handler. So, let's disable
compression, but only if it looks like the Google lib's check
for curl is going to fail.
2014-11-07 22:52:07 -08:00
Adam Williamson 04369fb9cc scrutinizer fix: explicitly declare Google class property $client 2014-11-06 21:28:05 -08:00
Adam Williamson f9bd43ff03 scrutinizer fix: correct @return for getDriveFile() 2014-11-06 21:27:12 -08:00
Adam Williamson 62b859d66f Migrate Google Drive storage app to v1.0.0 of the client library 2014-11-06 18:47:11 -08:00
Vincent Petry 075e8d8e86 Lazy initialize external storages
Fixed the following external storages to not connect in the constructor,
but do it on-demand when getConnection() is called.
- S3
- SWIFT
- SFTP
2014-10-22 12:42:36 +02:00
Robin Appelman d25a9a118f Check if a folder is deletable before we try to recursively delete it 2014-09-17 11:35:16 +02:00
Morris Jobke b3b3354809 move to public namespace 2014-08-19 14:05:08 +02:00
Stephan Peijnik 2df52e54d7 Fix STORAGE_* constants usage by moving those constants into \OC\Files\Filesystem.
As constants not defined within a class cannot be automatically found by the
autoloader moving those constants into a class makes them accessible to
code which uses them.

Signed-off-by: Stephan Peijnik <speijnik@anexia-it.com>
2014-08-19 13:55:35 +02:00
Philipp Kapfer 730bca98b4 Moved dependency checks to end of class files
Dependency messages now appear below the configuration options instead of above
Reworked dependency check method to support consolidated messages for multiple backends

Conflicts:
	apps/files_external/lib/google.php
	apps/files_external/lib/swift.php
	apps/files_external/templates/settings.php
2014-04-03 16:46:22 +02:00
Philipp Kapfer 46379113a1 Changed dependency check messages from warnings to notes
Added check for duplicate dependency check messages to display only the first
2014-04-03 16:31:54 +02:00
Philipp Kapfer 8ca897df76 Added cURL dependency check to Google Drive and WebDAV backend
Added check for backend's checkDependencies method to OC_Mount_Config::getBackends() when backend is configured to have some instead of blindly calling it and crashing

Conflicts:
	apps/files_external/lib/config.php
	apps/files_external/lib/google.php
2014-04-03 16:30:48 +02:00
Scrutinizer Auto-Fixer adaee6a5a1 Scrutinizer Auto-Fixes
This patch was automatically generated as part of the following inspection:
https://scrutinizer-ci.com/g/owncloud/core/inspections/cdfecc4e-a37e-4233-8025-f0d7252a8720

Enabled analysis tools:
 - PHP Analyzer
 - JSHint
 - PHP Copy/Paste Detector
 - PHP PDepend
2014-02-19 09:31:54 +01:00
Thomas Müller c6f4f85e27 Merge branch 'master' into scrutinizer_documentation_patches
Conflicts:
	lib/private/migration/content.php
2014-02-18 18:31:33 +01:00
Robin Appelman 181bbd4325 Remove usage of legacy OC_Appconfig 2014-02-13 16:28:49 +01:00
Jörn Friedrich Dreyer 2a6a9a8cef polish documentation based on scrutinizer patches 2014-02-06 17:02:21 +01:00