Commit Graph

186 Commits

Author SHA1 Message Date
Robin McCorkell a50ef61876 Migrate Dropbox external storage to new API 2015-08-25 00:22:10 +01:00
Robin McCorkell ced04f9ad2 Migrate AmazonS3 external storage to new API 2015-08-25 00:22:10 +01:00
Robin McCorkell d93bf35482 Merge pull request #18408 from owncloud/ext-ocp
Use OCP classes as much as possible in files_external v2
2015-08-20 13:09:12 +01:00
Robin McCorkell d577aad4ac Use OCP classes as much as possible in files_external 2015-08-19 15:26:38 +01:00
Robin McCorkell 16389270ff Migrate SFTP external storage to new API 2015-08-19 14:41:44 +01:00
Robin McCorkell a99e524898 Migrate OwnCloud external storage to new API 2015-08-19 14:41:43 +01:00
Robin McCorkell 68418bdd34 Migrate DAV external storage to new API 2015-08-19 14:41:43 +01:00
Robin McCorkell ab8c738b8d Migrate SMB external storage to new API 2015-08-19 14:41:43 +01:00
Robin McCorkell 0f1809eced Migrate FTP external storage to new API 2015-08-19 14:41:43 +01:00
Robin McCorkell 0ffb51c6cc Migrate Local external storage to new API 2015-08-19 14:41:43 +01:00
Robin McCorkell 3bb793b6a7 Implement password authentication mechanisms
Introduces the basic password authentication mechanism, along with a
mechanism based on ownCloud credentials stored in the user session.

Change to lib/private is an extension of PermissionsMask, as
isSharable() override was missing.

Session credentials auth mechanism now disables sharing on applied
storages, as credentials will not be available.
2015-08-19 14:20:09 +01:00
Robin McCorkell eb0e5ce12c Restrict Local backend to admin-only 2015-08-19 10:08:24 +01:00
Robin McCorkell c592e24c87 Make Application a singleton
The same Application must be used in the settings templates and in
routes, so that any registered backends are correctly seen
2015-08-19 10:08:23 +01:00
Robin McCorkell 97dbc79c16 Compatibility shims for OC_Mount_Config
The following functions have been removed:
 - addMountPoint()
 - removeMountPoint()
 - movePersonalMountPoint()

registerBackend() has been rewritten as a shim around BackendService,
allowing legacy code to interact with the new API seamlessly

addMountPoint() was already disconnected from all production code, so
this commit completes the job and removes the function itself, along
with disconnecting and removing related functions. Unit tests have
likewise been removed.

getAbsoluteMountPoints(), getSystemMountPoints() and
getPersonalMountPoints() have been rewritten to use the StoragesServices
2015-08-19 10:08:14 +01:00
Robin McCorkell 272a46ebe1 Authentication mechanisms for external storage backends
A backend can now specify generic authentication schemes that it
supports, instead of specifying the parameters for its authentication
method directly. This allows multiple authentication mechanisms to be
implemented for a single scheme, providing altered functionality.

This commit introduces the backend framework for this feature, and so at
this point the UI will be broken as the frontend does not specify the
required information.

Terminology:
 - authentication scheme
    Parameter interface for the authentication method. A backend
    supporting the 'password' scheme accepts two parameters, 'user' and
    'password'.
 - authentication mechanism
    Specific mechanism implementing a scheme. Basic mechanisms may
    forward configuration options directly to the backend, more advanced
    ones may lookup parameters or retrieve them from the session

New dropdown selector for external storage configurations to select the
authentication mechanism to be used.

Authentication mechanisms can have visibilities, just like backends.
The API was extended too to make it easier to add/remove visibilities.
In addition, the concept of 'allowed visibility' has been introduced, so
a backend/auth mechanism can force a maximum visibility level (e.g.
Local storage type) that cannot be overridden by configuration in the
web UI.

An authentication mechanism is a fully instantiated implementation. This
allows an implementation to have dependencies injected into it, e.g. an
\OCP\IDB for database operations.

When a StorageConfig is being prepared for mounting, the authentication
mechanism implementation has manipulateStorage() called,
which inserts the relevant authentication method options into the
storage ready for mounting.
2015-08-19 10:05:11 +01:00
Robin McCorkell 37beb58c6f Introduce BackendService for managing external storage backends
Backends are registered to the BackendService through new data
structures:

Backends are concrete classes, deriving from
\OCA\Files_External\Lib\Backend\Backend. During construction, the
various configuration parameters of the Backend can be set, in a design
similar to Symfony Console.

DefinitionParameter stores a parameter configuration for an external
storage: name of parameter, human-readable name, type of parameter
(text, password, hidden, checkbox), flags (optional or not).

Storages in the StoragesController now get their parameters validated
server-side (fixes a TODO).
2015-08-19 10:05:11 +01:00
Roeland Jago Douma e84cffc063 Moved core apps to the capabilities manager
* Files
* Files_Sharing
* Files_Trashbin
* Files_Versions
2015-08-10 10:45:16 +02:00
Morris Jobke f63915d0c8 update license headers and authors 2015-06-25 14:13:49 +02:00
Martin cdbf472c4d Make string 'SFTP with secret key login' translatable 2015-05-27 15:38:05 +02:00
Lukas Reschke 20a6073a9f Migrate personal certificate handling into AppFramework controllers
Also added unit-tests and better error-handling
2015-04-20 12:58:58 +02:00
Joas Schilling 3f3f8c2f99 Fix usage of deprecated private constants 2015-04-18 10:30:02 +02:00
Jenkins for ownCloud b585d87d9d Update license headers 2015-03-26 11:44:36 +01:00
Vincent Petry e5e30924b1 Fix PHPDoc in files_external, add missing tag
Fix various PHPDoc issues in external storage app.

Added missing NoAdminRequired tag
2015-03-17 11:42:52 +01:00
Vincent Petry ce94a998dd Use storage id + appframework for ext storage CRUD
- Added StorageConfig class to replace ugly arrays
- Implemented StorageService and StorageController for Global and User
  storages
- Async status checking for storages (from Xenopathic)
- Auto-generate id for external storage configs (not the same as
  storage_id)
- Refactor JS classes for external storage settings, this mostly
  moves/encapsulated existing global event handlers into the
  MountConfigListView class.
- Added some JS unit tests for the external storage UI
2015-03-12 18:51:02 +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
Robin Appelman d2255a1d30 New SMB storage backend 2015-02-16 13:52:11 +01:00
Vincent Petry bd01ff135a Merge pull request #13190 from is-apps/master-sftp-key
Add SFTP public key authentication support
2015-02-10 16:44:29 +01:00
Vincent Petry 2bb65dd9b1 Merge pull request #13364 from is-apps/files_external_cleanup
Clean up files_external
2015-02-09 13:20:42 +01:00
Ross Nicoll 02c6b72e25 Change from array() to [] style in files_external application info. 2015-01-14 17:16:12 +00:00
Morris Jobke 455ad005a0 Merge pull request #13350 from owncloud/autoload-translations
Autoload app's js translations
2015-01-14 18:12:05 +01:00
Ross Nicoll 64f4f8fc84 Add support for SFTP key authentication
Add support for external files accessed via SFTP using public key exchange authentication.
Keys are generated automatically when the configuration is added, or can be regenerated on demand if a key is compromised.
Creation of a new configuration row now triggers focus on that row. This is used to trigger auto-configuration for SFTP keys.
Generated public keys are saved in user's data directory for easy retrieval by an external application.
Add controller for SFTP key generation AJAX
SFTP class initialisation no longer produces a warning if the password field is missing.
Add unit tests for SFTP with key authentication backend
2015-01-14 17:00:34 +00:00
Vincent Petry 87f81e5926 Remove unneeded addTranslations() calls 2015-01-14 14:36:23 +01:00
Morris Jobke 3a6d2fcc10 Merge pull request #13345 from owncloud/increase-files-external-versions
Increase files_externals oC required version and its own version
2015-01-14 13:24:08 +01:00
Joas Schilling f031a479ad Increase files_externals oC required version and its own version 2015-01-14 12:21:47 +01:00
Joas Schilling caaae1094f The files_external app might need the password so autologin must be disabled 2015-01-14 10:19:22 +01:00
Christopher Bunn 0f715708dc Minor typo updates to External Storage description
This text is visible to admin users when they read the description of
the External Storage app.
2015-01-07 22:37:20 -06:00
Martin edcba11a91 smb: rename textfield from root to subfolder
"root" or "subfolder" -> "Remote subfolder" on selected storages

missed ftp...
2015-01-07 20:54:05 +01:00
Robin Appelman a369d78124 Use the mount config api for files_external 2014-12-04 16:47:30 +01:00
Vincent Petry ec1a73fab9 Added OC.L10N namespace with translation functions
Added addTranslations and fixed de.js file

Fixed de.js to use OC.L10N.register() and use to correct expected
format.

Added JS unit tests for OC.L10N class

Include translations JS script for all apps
2014-10-29 10:09:12 +01:00
Lukas Reschke 16cd749065 Add support for keys in the info.xml
This allows to have links to different doc base URLs

a.
2014-10-09 15:48:30 +02:00
MTRichards fc0ae29be5 Updated info.xml app description
Added larger app description
2014-10-08 20:49:22 -04: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
Robin Appelman 3d7aff84e5 Fix configuration of rackspace 2014-09-05 13:22:35 +02:00
Robin Appelman d0266c0bf8 Use public api for getting l10n 2014-08-31 10:08:22 +02:00
Robin McCorkell 0e8a973579 Improve UI of external storage configuration
* Highlight fields that need to be filled
 * Remove (required) and (optional) strings where possible
 * Focus first configuration field when creating new external storage
 * Add ability to force external storage re-check
 * Various jQuery improvements
 * Prevent wrapping of checkboxes in configuration
2014-08-30 09:02:37 +01:00
Jörn Friedrich Dreyer 308e8d6379 replace chosen with select2 to provide ajaxified user and group selection for files_external, fixes #7499
remove minified select2 js

show avatars for users, simpler results

remove unneeded users and groups from settings template

fix css, escape user and group names
2014-08-25 11:50:19 +02:00
Jörn Friedrich Dreyer ffe54e260a explicit routes for files_external 2014-08-22 11:51:39 +02:00
Georg Ehrke e5e8e28ae7 add ocsids to info.xml 2014-07-07 17:11:50 +02:00
Thomas Müller 171475b95a fix autoloader 2014-06-27 08:52:40 +02:00
Vincent Petry 01c2c3107a Added external storage list in files app 2014-06-06 15:06:26 +02:00
Vincent Petry c64e920b4d Adjust core apps to use "requiremin" instead of "require"
Also added a few missing authors.
2014-05-27 11:54:44 +02: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
fibsifan 06c084cc3c changing label "URL" to "Host" 2014-05-15 14:09:10 +02:00
Thomas Müller 9128900c56 drop files_irods from apps_external 2014-04-28 12:39:28 +02:00
Volkan Gezer da61acd1e2 Add translatable mount configs
Will close #8070
2014-04-23 17:58:14 +02:00
Thomas Müller c0ebc1dfb1 Update backends and their configurations 2014-04-03 16:57:26 +02:00
Philipp Kapfer ff9a4a6d91 Added cURL dependency for Amazon S3, Dropbox and SWIFT
Conflicts:
	apps/files_external/lib/amazons3.php
	apps/files_external/lib/swift.php
2014-04-03 16:38:43 +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
Philipp Kapfer f7da4280ca Modified app to dynamically register backends instead of hard-coding them
Moved dependency check to the individual backends instead of the config

Conflicts:
	apps/files_external/appinfo/app.php
	apps/files_external/lib/config.php
2014-04-03 16:21:52 +02:00
Robin McCorkell cac4aaa8c4 Rename SMB_Auto to SMB_OC and change visible name
SMB_Auto is now SMB_OC, and the name has been changed from
"SMB / CIFS Auto" to "SMB / CIFS using OC login"
2014-03-26 14:35:07 +00:00
Robin McCorkell ba63e46b5e SMB/CIFS mount using OwnCloud logon credentials
Selecting 'SMB/CIFS Auto' in the mounts configuration allows an SMB/CIFS
mount to be configured that uses the credentials of the user logging in to
authenticate to the server.

Optionally, the username can be used as the share name, permitting home shares
to be dynamically mounted.
2014-03-26 14:35:07 +00:00
Vincent Petry 4cb53f77b2 Moved external storage mounting code to files_external app
Moved the mounting code for external storage from
OC\Filesystem::initMountPoint to files_external using the
post_initMountPoints hook
2014-03-19 12:45:38 +01:00
Thomas Müller a8d20e0919 Merge pull request #5238 from owncloud/externalstorage-owncloudbackend
Added ownCloud backend for external storage
2014-01-08 01:49:15 -08:00
Christian Berendt 452d0a20a6 renaming OC\Files\Storage\SWIFT to OC\Files\Storage\Swift 2013-10-22 14:22:03 +02:00
Vincent Petry b1f1357957 Added ownCloud backend for external storage
To make it possible to use the short ownCloud URL (without specifying
webdav.php or remote.php), a new backend is available for ownCloud.

The user must specify the host + context path in the "Url" field (which
is mapped to the "host" parameter) and the subdir to mount in the "Root"
field.

This is to prevent confusion because some users forget to append
webdav.php or remote.php to the WebDAV URL.

Fixes #4923
2013-10-09 17:30:22 +02:00
Thomas Mueller e1f5f00ec3 in order to use the ownCloud login credentials we use a login hook to grab uid and password and store it in the session.
The stored credentials will be used for and interactions with the iRODS server.

Within the config UI a check box can be used to enable the credential reuse.
2013-04-18 22:12:53 +02:00
Thomas Mueller 7dd3391117 initial integration with iRODS www.irods.org
The used PHP API is hosted at https://code.renci.org/gf/project/irodsphp/
2013-04-12 15:51:58 +02:00
j-ed 2aaf38b5d3 Update app.php
suppress log message `include path for class \"OC\\Files\\Storage\\SMB\" starts with \"apps\/\"`
2013-03-02 12:12:33 +01:00
Robin Appelman 4e826b1673 Set required owncloud version to 4.93 2013-02-24 17:38:36 +01:00
Henrik Kjölhede 41fa65e7be Merge branch 'master' of https://github.com/owncloud/core
Conflicts:
	apps/files_external/appinfo/app.php
2013-02-09 14:05:33 +01:00
Robin Appelman 7207211f3a change required ownCloud version to 4.91 2013-01-28 19:58:24 +01:00
hkjolhede 180ab42c06 Update apps/files_external/appinfo/app.php
Adding support for SFTP
2012-12-26 18:00:04 +01:00
Robin Appelman ac44506b40 Merge branch 'master' into filesystem 2012-10-02 23:29:13 +02:00
Frank Karlitschek 3fdebaa5dc automatically remove and prevent installation of apps with a require version less than the current one. We check now the first ad second part of the version number.
Also increase the require tags of the core apps to 4.9 Please note that 4.9 is the internal versionnumber of the upcoming 4.5 release.
You have to pu a <require>4.9</require> into the info.xml of your app to make it as compatible with 4.5
2012-10-02 12:10:45 +02:00
Robin Appelman bd83422095 put filestorages in a namespace 2012-09-07 18:30:48 +02:00
Michael Gapczynski ab41b57f62 Add Dropbox storage backend 2012-06-09 15:02:48 -04:00
Michael Gapczynski 4b3ae60558 Working UI for external storage mount configuration 2012-06-08 11:42:29 -04:00
Robin Appelman a1539dace7 share code between smb and ftp filestorage backends 2012-05-24 19:41:32 +02:00
Robin Appelman 2f40f11c87 smb filestorage backend 2012-05-24 18:23:59 +02:00
Michael Gapczynski bee724c53e Initial work on UI for mounting external storage 2012-05-24 11:06:03 -04:00
Frank Karlitschek 9e73524168 mark the apps as part of the shipped package and increase the requirement to ownCloud 4 2012-05-18 16:06:57 +02:00
Robin Appelman 6779f28af4 cache app types during install or update 2012-05-14 22:49:31 +02:00
Robin Appelman 9a707e10bf add SWIFT (openstack object storage) storage backend 2012-04-18 20:54:28 +02:00
Robin Appelman 926b2b78fe keep version numbers in their own files for faster reading 2012-04-14 16:29:11 +02:00
Jan-Christoph Borchardt 011132feb3 renaming remote storage support to External storage support to clear up naming conflict 2012-03-30 18:18:37 +02:00