Commit Graph

507 Commits

Author SHA1 Message Date
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
Lukas Reschke c749570a06 Merge pull request #12411 from owncloud/unknown-command-windows
Replace some more "command -v" calls with the Helper method
2014-11-26 10:29:41 +01:00
Joas Schilling 0274dcba57 Replace some more "command -v" calls with the Helper method 2014-11-25 18:10:03 +01:00
Joas Schilling 2c39aec8cb Replace deprecated constant with new class constant 2014-11-25 16:30:21 +01:00
Lukas Reschke 284ba5b688 Merge pull request #12290 from owncloud/ext-preventbreakageduetobugs2
Show warning when invalid user was passed
2014-11-19 14:27:32 +01:00
Vincent Petry c941c3fa51 Show warning when invalid user was passed
Sometimes there are bugs that cause setupFS() to be called for
non-existing users. Instead of failing hard and breaking the instance,
this fix simply logs a warning.
2014-11-14 16:43:23 +01:00
Vincent Petry 914f4cb6f2 Do not remove dir entry if it has the same name as the parent
This fixes an issue when a subdir has the same name as its parent, it
would get exluded from the list.
2014-11-13 17:37:56 +01: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
Jörn Friedrich Dreyer 69a3d8eb1a fix files_external storage id migration 2014-10-31 14:25:55 +01:00
Lukas Reschke b3a04840b5 Add type hinting to functions
It's only reasonable to have proper type hinting here which might even help us to catch bugs.
2014-10-24 14:13:40 +02:00
Lukas Reschke d060180140 Use function outside of loop
Otherwise the function is executed n times which is a lot of overhead
2014-10-24 12:27:53 +02:00
Lukas Reschke 2d2a4741ce Make files non executable
There is not much sense in having these files marked executable, we should avoid that.
2014-10-24 11:14:51 +02:00
Morris Jobke 7c14a17361 Merge pull request #11721 from owncloud/fix-s3-regression
[master] Fix S3 connection regression
2014-10-23 12:42:42 +02:00
Morris Jobke ca01530f57 Merge pull request #11726 from owncloud/s3-fixunittests
Fix S3 folder creation for new AWS API
2014-10-23 12:35:44 +02:00
Vincent Petry 188effa433 Fix S3 folder creation for new AWS API
This also fixes the unit tests
2014-10-22 23:00:30 +02:00
Vincent Petry 71dce48bd3 Fix S3 connection 2014-10-22 22:17:07 +02: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
Jörn Friedrich Dreyer 1c9004409b guess mimetype on touch 2014-10-21 12:58:26 +02:00
Vincent Petry ab5149f5df Allow specifying protocol in ext storage OC config
Allow specifying a protocol in the host field when mounting another
ownCloud instance. Note that this was already possible with the WebDAV
config but this bug made it inconsistent.
2014-10-13 17:15:58 +02:00
Vincent Petry 9dea79e341 Merge pull request #11305 from owncloud/ext-updateetagonmount
Update etag of parent dir when adding/removing ext storage mount points
2014-10-09 18:18:36 +02:00
Jörn Friedrich Dreyer f664a31dec extract batchDelete(), better comments 2014-10-08 18:50:02 +02:00
André Gaul 0d0c9d0bb3 files_extern: remove empty Body and ContentLength in Amazon S3 mount
fixes #10501

Conflicts:
	apps/files_external/lib/amazons3.php
2014-10-08 18:49:59 +02:00
Jörn Friedrich Dreyer aa3ad898a9 fix amazon s3 issues
folder size and mtime is always unknown in s3

more s3 fixes

make rescanDelay of root dir configurable, add on the fly update of legacy storage ids, !isset -> empty when checking strings

reduce number of http calls on remove and rmdir

fix typo
2014-10-08 18:49:47 +02:00
Vincent Petry 26e242a8a4 Added PHP docs for etag propagator 2014-10-08 14:22:18 +02:00
Robin Appelman bcf654127f More phpdoc 2014-10-08 14:22:17 +02:00
Robin Appelman 1030f0a763 Hookup the etag propagator 2014-10-08 14:22:17 +02:00
Robin Appelman 5d7bd8be42 Add EtagPropagator to handle etag changes when external storages are changed 2014-10-08 14:22:17 +02:00
Robin Appelman 9a5d0f6084 Fix add/remove mountpoint hooks 2014-10-08 14:22:17 +02:00
Vincent Petry 6585eaa5df Added failing unit tests for mount config hooks 2014-10-08 14:22:17 +02:00
Vincent Petry 0610937ac3 Added filesystem hooks for mount/unmount ext storage 2014-10-08 14:22:17 +02:00
Robin Appelman 11ac9ce28b Fix copy overwrite for amazon s3 2014-09-17 15:52:00 +02:00
Robin Appelman 3b08b3fad4 Fix amazon s3 rename overwrite 2014-09-17 15:51:57 +02:00
Robin Appelman 6e12d830d5 Fix AmazonS3 rmdir on the root 2014-09-17 15:50:27 +02:00
Robin Appelman 2f22e67570 Also check if the file itself is updatable 2014-09-17 11:35:16 +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
Lukas Reschke 4669ea3835 Merge pull request #10680 from helmutschneider/aws-2.6.15
Update AWS sdk to 2.6.15
2014-09-16 16:34:16 +02:00
Robin Appelman a1f4a0601b Fix hasUpdated for folders in swift backend 2014-09-05 13:23:10 +02:00
Robin Appelman 3d7aff84e5 Fix configuration of rackspace 2014-09-05 13:22:35 +02:00
Johan Björk d2979da864 Fix failing AmazonS3::touch on updated aws sdk 2014-09-03 12:09:12 +02:00
Robin Appelman ecdbf00628 Move certificate management code to core 2014-08-31 10:45:10 +02:00
Thomas Müller 2b63c375a4 Merge pull request #10719 from owncloud/files-external-personal-undefined
Prevent undefined index error loading external storages
2014-08-29 11:59:34 +02:00
Jörn Friedrich Dreyer f551917a3c kill OC::$session
maintain deprecated \OC::$session when getting or setting the session via the server container or UserSession

restore order os OC::$session and OC::$CLI

remove unneded initialization of dummy session

write back session when $useCustomSession is true

log warning when deprecated app is used
2014-08-29 10:22:21 +02:00
Robin McCorkell bffccdbea7 Add missing 'personal' mount configuration option 2014-08-29 09:08:46 +01:00
Robin McCorkell 87167d3141 Prevent errors on broken SFTP config 2014-08-27 09:02:14 +01:00
Vincent Petry 5e2f627d3d Merge pull request #10108 from owncloud/files_external-allowed-backend
Only load personal external storages for allowed backends
2014-08-25 17:07:35 +02:00
Lukas Reschke 92c80dd946 Merge pull request #10518 from owncloud/fix_storage_const_autoload
Fix storage const autoload
2014-08-20 23:23:42 +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
Jörn Friedrich Dreyer 240b952333 use S3Client::encodeKey(), fixes #8325 2014-08-14 21:46:50 +02:00
Robin Appelman 73607e5d16 Only load personal external storages for allowed backends 2014-08-01 17:15:46 +02:00
Robin Appelman 4886c8582d Merge pull request #9529 from helmutschneider/fix-8326
Fixes #8326: deletion of directories on S3
2014-08-01 14:04:21 +02:00
Andreas Fischer a27753dd80 Pass existing Net_SFTP object into Net_SFTP_Stream. 2014-07-18 15:47:13 +02:00
Andreas Fischer e18c8f23df login() must be called after getServerPublicHostKey(). 2014-07-12 20:41:35 +02:00
Andreas Fischer d02604b3fb Add short description explaining how SFTP ext storage class works. 2014-07-12 13:58:49 +02:00
Andreas Fischer c8024934c0 The file providing the sftp:// scheme needs to be included manually. 2014-07-12 13:57:27 +02:00
Johan Björk ac75a24597 Converted an array to PHP5.3 compatible version 2014-07-09 14:54:03 +02:00
Johan Björk e44a7aa034 Fixes #8326: deletion of directories on S3 2014-07-08 22:41:11 +02:00
Christopher T. Johnson 599ab7a802 Fix Signiture Does Not Match when mounting Amazon S3 external storage
For some reason the aws-sdk-php package does not caclulate the
signiture correctly when accessing an object in a bucket with a name of
'.'.

When we are at the top of a S3 bucket there is a need(?) to have a directory
name.  Per standard Unix the name picked was '.' (dot or period).  This
choice exercises the aws-sdk bug.

This fix is to add a field to the method to store the name to use instead of
'.' which at this point is hard coded to '<root>'.  We also add a private
function 'cleanKey()' which will test for the '.' name and replace it with
the variable.  Finally all calls to manipulate objects where the path is
not obviously not '.' are processed through cleanKey().

An example where we don't process through clean key would be
	'Key' => $path.'/',

Use correct relationship operator

Per feed back use === instead of ==

use '/' instead of '<root>'
2014-07-08 10:16:48 +02:00
Vincent Petry 5e6f6da786 Fix warnings when personal is not set 2014-07-01 13:32:57 +02:00
Vincent Petry 8977a68548 Use filtered list for ext storage list mounts API
Now the external storage correctly returns the mount points visible only
for the current user by using the method getAbsoluteMountPoints() which
is already filtered.

Since that call was missing the backend name which is important for the
UI, this one was added as well.
2014-06-30 12:33:11 +02:00
Vincent Petry fd8b5680dd Merge pull request #8383 from owncloud/object_storage
Object storage
2014-06-27 16:53:03 +02:00
Thomas Müller c745240543 Move \OC\Files\Storage\DAV to core in order to reduce inter-app dependencies 2014-06-27 08:52:28 +02:00
Jörn Friedrich Dreyer 42e9d49d72 update files_external swift to php-opencloud v1.9.2 2014-06-25 17:15:59 +02:00
Robin Appelman 544963f414 Allow adding object stores with the files_external mount config 2014-06-24 14:36:57 +02:00
Robin Appelman d24c0f4d42 Dont allow opening writable streams on a read only dav mount 2014-06-23 14:35:19 +02:00
Robin Appelman be93b0d01d Fix permissions functions for webdav external storages 2014-06-14 10:22:38 +02:00
Robin Appelman 3f2cb39aba Properly set read permissions for webdav storages 2014-06-14 10:14:08 +02:00
Robin Appelman 21ced89beb Dont return false for internalPath 2014-06-14 10:13:24 +02:00
Robin Appelman 65f3b2fad2 Add server<->server sharing backend 2014-06-14 10:10:37 +02:00
Vincent Petry 710d017eec Added more columns to ext storage list
Now using system mount and personal mount calls to get the relevant
mount points including backend information.
2014-06-06 15:06:26 +02:00
Vincent Petry 01c2c3107a Added external storage list in files app 2014-06-06 15:06:26 +02:00
Robin Appelman a66c2e6a47 Fix the removeMount for personal mounts 2014-06-06 09:55:59 +02:00
Robin Appelman cabe2873c4 Make personal external mount points (re)movable from the files app 2014-06-06 09:55:59 +02:00
Thomas Müller d0eb8f8668 Merge pull request #8880 from owncloud/webdav-read-permissions
Use the permissions exposed by ownCloud for webdav external storages
2014-06-05 11:38:02 +02:00
Robin Appelman 9eb177e8bc Use the permissions exposed by ownCloud for webdav external storages 2014-06-04 18:19:52 +02:00
Thomas Müller 76e04027bc Upgrade SabreDAV to 1.8.10
Updating SabreDAV namespaces
2014-06-04 12:22:23 +02:00
Thomas Müller 17cbfc714a use phpseclib from 3rdparty
rename class Crypt_Blowfish to Legacy_Crypt_Blowfish
2014-06-03 12:18:30 +02:00
Thomas Müller 6ffb139a46 Merge pull request #8658 from realriot/master
Changed access mode for Dropbox to 'auto'
2014-05-23 10:14:09 +02:00
Robin McCorkell 856c48bc25 Use default priority of 100 if backend default is not set 2014-05-21 22:31:18 +01:00
Robin McCorkell da03ef25d9 Add priority overriding comments 2014-05-21 22:29:16 +01:00
Robin McCorkell 0a8a319915 Fix priority merging logic and add unit test 2014-05-21 22:18:22 +01:00
Robin McCorkell eae45dca71 Add unit tests 2014-05-21 22:18:22 +01:00
Robin McCorkell 2254678a0c Use constants for priority type and add comments 2014-05-21 22:17:21 +01:00
Robin McCorkell a0ccb060fa Use more strict type comparisons 2014-05-21 22:17:21 +01:00
Robin McCorkell e4d3ee7866 Preserve priority if already set 2014-05-21 22:17:21 +01:00
Robin McCorkell 9151d72507 Treat 'all users' as 'global'
A mount applicable to all users is as good a definition of global as can be
2014-05-21 22:17:21 +01:00
Robin McCorkell 05642733a3 Add storage priority support
Each storage backend has a default priority, assigned to any system mounts
created in ownCloud. mount.json can be manually modified to change these
priorities.

The priority order is as follows:
 * Personal
 * User
 * Group
 * Global

Within each mount type, the mount with the highest priority is active.

The storage backend defaults were chosen to be the following:
 * Local - 150
 * Remote storage - 100
 * SMB / CIFS with OC login - 90
2014-05-21 22:17:21 +01:00
Sascha Schmidt 4b2888cd9a Changed access mode for Dropbox to 'auto' 2014-05-21 09:40:03 +02:00
Morris Jobke dc36d30953 Remove all occurences of @brief and @returns from PHPDoc
* test case added to avoid adding them later
2014-05-19 17:50:53 +02:00
Robin McCorkell e7aebc5c32 Fix whitespace issues 2014-05-16 22:23:36 +01:00
Robin McCorkell 6930ae22e4 Fix more missing or broken PHPDoc 2014-05-16 22:21:57 +01:00
Robin McCorkell c4f1de63a8 Fix PHPDoc in /apps 2014-05-16 22:21:57 +01:00
Robin McCorkell 08a8a409d6 Extract mount point merging logic into separate function 2014-05-13 00:14:30 +01:00
Vincent Petry af2b7634ee Merge pull request #8293 from owncloud/files_external_fix_readData
Fix issue with personal mount points and sharing
2014-05-08 11:01:54 +02:00
Thomas Müller 9128900c56 drop files_irods from apps_external 2014-04-28 12:39:28 +02:00