summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/autoloader.php3
-rw-r--r--lib/base.php16
-rw-r--r--lib/composer/autoload.php20
-rw-r--r--lib/composer/composer/ClassLoader.php23
-rw-r--r--lib/composer/composer/autoload_classmap.php20
-rw-r--r--lib/composer/composer/autoload_namespaces.php20
-rw-r--r--lib/composer/composer/autoload_psr4.php21
-rw-r--r--lib/composer/composer/autoload_real.php20
-rw-r--r--lib/l10n/en_GB.js4
-rw-r--r--lib/l10n/en_GB.json4
-rw-r--r--lib/l10n/fr.js3
-rw-r--r--lib/l10n/fr.json3
-rw-r--r--lib/l10n/ja.js4
-rw-r--r--lib/l10n/ja.json4
-rw-r--r--lib/l10n/pt_BR.js4
-rw-r--r--lib/l10n/pt_BR.json4
-rw-r--r--lib/l10n/pt_PT.js7
-rw-r--r--lib/l10n/pt_PT.json7
-rw-r--r--lib/l10n/ro.js19
-rw-r--r--lib/l10n/ro.json19
-rw-r--r--lib/l10n/ru.js38
-rw-r--r--lib/l10n/ru.json38
-rw-r--r--lib/l10n/sq.js4
-rw-r--r--lib/l10n/sq.json4
-rw-r--r--lib/private/Activity/Manager.php2
-rw-r--r--lib/private/AllConfig.php2
-rw-r--r--lib/private/App/AppManager.php7
-rw-r--r--lib/private/App/DependencyAnalyzer.php3
-rw-r--r--lib/private/App/InfoParser.php6
-rw-r--r--lib/private/App/Platform.php1
-rw-r--r--lib/private/AppConfig.php2
-rw-r--r--lib/private/AppFramework/App.php2
-rw-r--r--lib/private/AppFramework/Core/API.php2
-rw-r--r--lib/private/AppFramework/DependencyInjection/DIContainer.php22
-rw-r--r--lib/private/AppFramework/Http.php2
-rw-r--r--lib/private/AppFramework/Http/Dispatcher.php2
-rw-r--r--lib/private/AppFramework/Http/Output.php3
-rw-r--r--lib/private/AppFramework/Http/Request.php2
-rw-r--r--lib/private/AppFramework/Middleware/MiddlewareDispatcher.php3
-rw-r--r--lib/private/AppFramework/Middleware/Security/CORSMiddleware.php3
-rw-r--r--lib/private/AppFramework/Middleware/Security/Exceptions/AppNotEnabledException.php3
-rw-r--r--lib/private/AppFramework/Middleware/Security/Exceptions/CrossSiteRequestForgeryException.php3
-rw-r--r--lib/private/AppFramework/Middleware/Security/Exceptions/NotAdminException.php3
-rw-r--r--lib/private/AppFramework/Middleware/Security/Exceptions/NotLoggedInException.php3
-rw-r--r--lib/private/AppFramework/Middleware/Security/Exceptions/SecurityException.php2
-rw-r--r--lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php4
-rw-r--r--lib/private/AppFramework/Routing/RouteActionHandler.php1
-rw-r--r--lib/private/AppFramework/Routing/RouteConfig.php1
-rw-r--r--lib/private/AppFramework/Utility/SimpleContainer.php2
-rw-r--r--lib/private/AppHelper.php2
-rw-r--r--lib/private/Archive/Archive.php5
-rw-r--r--lib/private/Archive/TAR.php2
-rw-r--r--lib/private/Archive/ZIP.php3
-rw-r--r--lib/private/Authentication/Exceptions/InvalidTokenException.php1
-rw-r--r--lib/private/Authentication/Exceptions/LoginRequiredException.php28
-rw-r--r--lib/private/Authentication/Exceptions/TwoFactorAuthRequiredException.php28
-rw-r--r--lib/private/Authentication/Exceptions/UserAlreadyLoggedInException.php28
-rw-r--r--lib/private/Authentication/Token/DefaultToken.php29
-rw-r--r--lib/private/Authentication/Token/DefaultTokenCleanupJob.php1
-rw-r--r--lib/private/Authentication/Token/DefaultTokenMapper.php18
-rw-r--r--lib/private/Authentication/Token/DefaultTokenProvider.php19
-rw-r--r--lib/private/Authentication/Token/IProvider.php17
-rw-r--r--lib/private/Authentication/Token/IToken.php14
-rw-r--r--lib/private/Authentication/TwoFactorAuth/Manager.php165
-rw-r--r--lib/private/Avatar.php4
-rw-r--r--lib/private/AvatarManager.php5
-rw-r--r--lib/private/Cache/File.php2
-rw-r--r--lib/private/Comments/Comment.php3
-rw-r--r--lib/private/Comments/Manager.php2
-rw-r--r--lib/private/Comments/ManagerFactory.php2
-rw-r--r--lib/private/Config.php4
-rw-r--r--lib/private/Console/Application.php2
-rw-r--r--lib/private/DB/AdapterMySQL.php1
-rw-r--r--lib/private/DB/Connection.php1
-rw-r--r--lib/private/DB/MDB2SchemaManager.php2
-rw-r--r--lib/private/DB/MySQLMigrator.php24
-rw-r--r--lib/private/DB/OracleConnection.php2
-rw-r--r--lib/private/Encryption/DecryptAll.php14
-rw-r--r--lib/private/Encryption/EncryptionWrapper.php2
-rw-r--r--lib/private/Encryption/Exceptions/EncryptionHeaderKeyExistsException.php2
-rw-r--r--lib/private/Encryption/Exceptions/ModuleAlreadyExistsException.php2
-rw-r--r--lib/private/Encryption/Exceptions/ModuleDoesNotExistsException.php2
-rw-r--r--lib/private/Encryption/File.php2
-rw-r--r--lib/private/Encryption/HookManager.php2
-rw-r--r--lib/private/Encryption/Keys/Storage.php2
-rw-r--r--lib/private/Encryption/Manager.php2
-rw-r--r--lib/private/Encryption/Update.php2
-rw-r--r--lib/private/Encryption/Util.php2
-rw-r--r--lib/private/Files/Cache/Cache.php4
-rw-r--r--lib/private/Files/Cache/HomeCache.php2
-rw-r--r--lib/private/Files/Cache/Scanner.php26
-rw-r--r--lib/private/Files/Cache/Updater.php3
-rw-r--r--lib/private/Files/Cache/Watcher.php1
-rw-r--r--lib/private/Files/Cache/Wrapper/CacheJail.php2
-rw-r--r--lib/private/Files/Cache/Wrapper/CacheWrapper.php3
-rw-r--r--lib/private/Files/Config/UserMountCache.php1
-rw-r--r--lib/private/Files/FileInfo.php2
-rw-r--r--lib/private/Files/Filesystem.php5
-rw-r--r--lib/private/Files/Mount/Manager.php2
-rw-r--r--lib/private/Files/Mount/MountPoint.php2
-rw-r--r--lib/private/Files/Mount/ObjectHomeMountProvider.php66
-rw-r--r--lib/private/Files/Node/Root.php1
-rw-r--r--lib/private/Files/ObjectStore/HomeObjectStoreStorage.php2
-rw-r--r--lib/private/Files/ObjectStore/Mapper.php52
-rw-r--r--lib/private/Files/Storage/Common.php8
-rw-r--r--lib/private/Files/Storage/DAV.php44
-rw-r--r--lib/private/Files/Storage/FailedStorage.php1
-rw-r--r--lib/private/Files/Storage/Home.php2
-rw-r--r--lib/private/Files/Storage/Local.php1
-rw-r--r--lib/private/Files/Storage/LocalTempFileTrait.php2
-rw-r--r--lib/private/Files/Storage/PolyFill/CopyDirectory.php1
-rw-r--r--lib/private/Files/Storage/Wrapper/Encoding.php533
-rw-r--r--lib/private/Files/Storage/Wrapper/Encryption.php4
-rw-r--r--lib/private/Files/Storage/Wrapper/Jail.php1
-rw-r--r--lib/private/Files/Storage/Wrapper/PermissionsMask.php1
-rw-r--r--lib/private/Files/Stream/Encryption.php4
-rw-r--r--lib/private/Files/Type/Detection.php2
-rw-r--r--lib/private/Files/Utils/Scanner.php20
-rw-r--r--lib/private/Files/View.php43
-rw-r--r--lib/private/Group/Backend.php12
-rw-r--r--lib/private/Group/Database.php11
-rw-r--r--lib/private/Group/Group.php6
-rw-r--r--lib/private/Group/Manager.php4
-rw-r--r--lib/private/Group/MetaData.php4
-rw-r--r--lib/private/HTTPHelper.php4
-rw-r--r--lib/private/HintException.php2
-rw-r--r--lib/private/Http/Client/Client.php2
-rw-r--r--lib/private/Http/Client/ClientService.php2
-rw-r--r--lib/private/Http/Client/Response.php2
-rw-r--r--lib/private/Installer.php8
-rw-r--r--lib/private/IntegrityCheck/Checker.php3
-rw-r--r--lib/private/IntegrityCheck/Exceptions/InvalidSignatureException.php2
-rw-r--r--lib/private/IntegrityCheck/Helpers/AppLocator.php2
-rw-r--r--lib/private/IntegrityCheck/Helpers/EnvironmentHelper.php2
-rw-r--r--lib/private/IntegrityCheck/Helpers/FileAccessHelper.php2
-rw-r--r--lib/private/IntegrityCheck/Iterator/ExcludeFileByNameFilterIterator.php2
-rw-r--r--lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php3
-rw-r--r--lib/private/L10N/Factory.php2
-rw-r--r--lib/private/LargeFileHelper.php2
-rw-r--r--lib/private/Lock/DBLockingProvider.php4
-rw-r--r--lib/private/Log.php4
-rw-r--r--lib/private/Log/ErrorHandler.php2
-rw-r--r--lib/private/Log/Owncloud.php5
-rw-r--r--lib/private/Log/Syslog.php1
-rw-r--r--lib/private/Mail/Mailer.php2
-rw-r--r--lib/private/Mail/Message.php2
-rw-r--r--lib/private/Memcache/APCu.php2
-rw-r--r--lib/private/Memcache/Cache.php2
-rw-r--r--lib/private/Memcache/Factory.php3
-rw-r--r--lib/private/Memcache/Memcached.php2
-rw-r--r--lib/private/Memcache/Redis.php3
-rw-r--r--lib/private/Memcache/XCache.php1
-rw-r--r--lib/private/NaturalSort.php2
-rw-r--r--lib/private/OCS/Config.php1
-rw-r--r--lib/private/OCS/Exception.php1
-rw-r--r--lib/private/OCS/Person.php1
-rw-r--r--lib/private/OCS/PrivateData.php5
-rw-r--r--lib/private/OCS/Provider.php5
-rw-r--r--lib/private/OCS/Result.php5
-rw-r--r--lib/private/OCSClient.php5
-rw-r--r--lib/private/Preview.php6
-rw-r--r--lib/private/Preview/Image.php1
-rw-r--r--lib/private/Preview/MP3.php1
-rw-r--r--lib/private/Repair.php4
-rw-r--r--lib/private/Repair/CleanTags.php1
-rw-r--r--lib/private/Repair/Collation.php1
-rw-r--r--lib/private/Repair/DropOldJobs.php9
-rw-r--r--lib/private/Repair/DropOldTables.php1
-rw-r--r--lib/private/Repair/InnoDB.php1
-rw-r--r--lib/private/Repair/OldGroupMembershipShares.php1
-rw-r--r--lib/private/Repair/Preview.php1
-rw-r--r--lib/private/Repair/RemoveGetETagEntries.php1
-rw-r--r--lib/private/Repair/RepairInvalidShares.php1
-rw-r--r--lib/private/Repair/RepairLegacyStorages.php1
-rw-r--r--lib/private/Repair/RepairMimeTypes.php1
-rw-r--r--lib/private/Repair/SearchLuceneTables.php1
-rw-r--r--lib/private/Repair/SharePropagation.php3
-rw-r--r--lib/private/Repair/SqliteAutoincrement.php1
-rw-r--r--lib/private/Repair/UpdateCertificateStore.php3
-rw-r--r--lib/private/Repair/UpdateOutdatedOcsIds.php3
-rw-r--r--lib/private/Route/CachingRouter.php2
-rw-r--r--lib/private/Route/Router.php2
-rw-r--r--lib/private/Search/Result/File.php2
-rw-r--r--lib/private/Security/CSP/ContentSecurityPolicy.php2
-rw-r--r--lib/private/Security/CSP/ContentSecurityPolicyManager.php2
-rw-r--r--lib/private/Security/CSRF/CsrfToken.php2
-rw-r--r--lib/private/Security/CSRF/CsrfTokenGenerator.php2
-rw-r--r--lib/private/Security/CSRF/CsrfTokenManager.php2
-rw-r--r--lib/private/Security/CSRF/TokenStorage/SessionStorage.php2
-rw-r--r--lib/private/Security/Certificate.php2
-rw-r--r--lib/private/Security/CertificateManager.php4
-rw-r--r--lib/private/Security/Crypto.php2
-rw-r--r--lib/private/Security/Hasher.php2
-rw-r--r--lib/private/Security/SecureRandom.php2
-rw-r--r--lib/private/Security/TrustedDomainHelper.php2
-rw-r--r--lib/private/Server.php23
-rw-r--r--lib/private/Session/CryptoSessionData.php3
-rw-r--r--lib/private/Session/CryptoWrapper.php2
-rw-r--r--lib/private/Session/Internal.php3
-rw-r--r--lib/private/Session/Memory.php4
-rw-r--r--lib/private/Setup.php8
-rw-r--r--lib/private/Setup/AbstractDatabase.php1
-rw-r--r--lib/private/Setup/MySQL.php2
-rw-r--r--lib/private/Setup/OCI.php1
-rw-r--r--lib/private/Setup/PostgreSQL.php1
-rw-r--r--lib/private/Share/Constants.php2
-rw-r--r--lib/private/Share/Helper.php2
-rw-r--r--lib/private/Share/MailNotifications.php7
-rw-r--r--lib/private/Share/SearchResultSorter.php2
-rw-r--r--lib/private/Share/Share.php10
-rw-r--r--lib/private/Share20/DefaultShareProvider.php1
-rw-r--r--lib/private/Share20/Manager.php3
-rw-r--r--lib/private/Share20/ProviderFactory.php3
-rw-r--r--lib/private/Share20/Share.php1
-rw-r--r--lib/private/SubAdmin.php4
-rw-r--r--lib/private/SystemConfig.php2
-rw-r--r--lib/private/TempManager.php3
-rw-r--r--lib/private/Template/Base.php5
-rw-r--r--lib/private/TemplateLayout.php3
-rw-r--r--lib/private/URLGenerator.php26
-rw-r--r--lib/private/Updater.php19
-rw-r--r--lib/private/Updater/VersionCheck.php13
-rw-r--r--lib/private/User/Backend.php15
-rw-r--r--lib/private/User/Database.php8
-rw-r--r--lib/private/User/Manager.php6
-rw-r--r--lib/private/User/Session.php124
-rw-r--r--lib/private/User/User.php8
-rw-r--r--lib/private/legacy/api.php6
-rw-r--r--lib/private/legacy/app.php8
-rw-r--r--lib/private/legacy/db/statementwrapper.php2
-rw-r--r--lib/private/legacy/defaults.php4
-rw-r--r--lib/private/legacy/eventsource.php2
-rw-r--r--lib/private/legacy/filechunking.php11
-rw-r--r--lib/private/legacy/files.php150
-rw-r--r--lib/private/legacy/group.php7
-rw-r--r--lib/private/legacy/group/backend.php8
-rw-r--r--lib/private/legacy/group/database.php1
-rw-r--r--lib/private/legacy/group/example.php2
-rw-r--r--lib/private/legacy/group/interface.php2
-rw-r--r--lib/private/legacy/helper.php6
-rw-r--r--lib/private/legacy/hook.php2
-rw-r--r--lib/private/legacy/image.php4
-rw-r--r--lib/private/legacy/json.php2
-rw-r--r--lib/private/legacy/l10n.php2
-rw-r--r--lib/private/legacy/ocs.php4
-rw-r--r--lib/private/legacy/ocs/cloud.php2
-rw-r--r--lib/private/legacy/ocs/config.php2
-rw-r--r--lib/private/legacy/ocs/person.php2
-rw-r--r--lib/private/legacy/ocs/privatedata.php2
-rw-r--r--lib/private/legacy/ocs/result.php2
-rw-r--r--lib/private/legacy/response.php3
-rw-r--r--lib/private/legacy/template.php8
-rw-r--r--lib/private/legacy/template/functions.php3
-rw-r--r--lib/private/legacy/user.php7
-rw-r--r--lib/private/legacy/user/backend.php8
-rw-r--r--lib/private/legacy/user/interface.php2
-rw-r--r--lib/private/legacy/util.php21
-rw-r--r--lib/public/Activity/IExtension.php2
-rw-r--r--lib/public/App.php2
-rw-r--r--lib/public/App/IAppManager.php2
-rw-r--r--lib/public/App/ManagerEvent.php2
-rw-r--r--lib/public/AppFramework/ApiController.php1
-rw-r--r--lib/public/AppFramework/App.php1
-rw-r--r--lib/public/AppFramework/Controller.php2
-rw-r--r--lib/public/AppFramework/Db/Mapper.php2
-rw-r--r--lib/public/AppFramework/Http/ContentSecurityPolicy.php2
-rw-r--r--lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php2
-rw-r--r--lib/public/AppFramework/Http/ICallbackResponse.php2
-rw-r--r--lib/public/AppFramework/Http/IOutput.php3
-rw-r--r--lib/public/AppFramework/Http/JSONResponse.php2
-rw-r--r--lib/public/AppFramework/Http/NotFoundResponse.php2
-rw-r--r--lib/public/AppFramework/Http/Response.php2
-rw-r--r--lib/public/AppFramework/Http/StreamResponse.php2
-rw-r--r--lib/public/AppFramework/Middleware.php1
-rw-r--r--lib/public/AppFramework/OCSController.php1
-rw-r--r--lib/public/Authentication/TwoFactorAuth/IProvider.php92
-rw-r--r--lib/public/Comments/IComment.php2
-rw-r--r--lib/public/Comments/ICommentsManager.php2
-rw-r--r--lib/public/Comments/ICommentsManagerFactory.php2
-rw-r--r--lib/public/Comments/IllegalIDChangeException.php2
-rw-r--r--lib/public/Comments/MessageTooLongException.php2
-rw-r--r--lib/public/Comments/NotFoundException.php2
-rw-r--r--lib/public/Config.php4
-rw-r--r--lib/public/DB.php2
-rw-r--r--lib/public/DB/QueryBuilder/ICompositeExpression.php1
-rw-r--r--lib/public/Defaults.php4
-rw-r--r--lib/public/Encryption/Exceptions/GenericEncryptionException.php4
-rw-r--r--lib/public/Encryption/IEncryptionModule.php5
-rw-r--r--lib/public/Encryption/IFile.php2
-rw-r--r--lib/public/Encryption/IManager.php2
-rw-r--r--lib/public/Encryption/Keys/IStorage.php2
-rw-r--r--lib/public/Files.php5
-rw-r--r--lib/public/Files/Cache/IScanner.php1
-rw-r--r--lib/public/Files/Config/IHomeMountProvider.php1
-rw-r--r--lib/public/Files/StorageNotAvailableException.php2
-rw-r--r--lib/public/Files/UnseekableException.php35
-rw-r--r--lib/public/GroupInterface.php2
-rw-r--r--lib/public/Http/Client/IClient.php2
-rw-r--r--lib/public/Http/Client/IClientService.php2
-rw-r--r--lib/public/Http/Client/IResponse.php2
-rw-r--r--lib/public/IAvatar.php2
-rw-r--r--lib/public/IAvatarManager.php2
-rw-r--r--lib/public/ICache.php1
-rw-r--r--lib/public/ICertificateManager.php2
-rw-r--r--lib/public/IConfig.php2
-rw-r--r--lib/public/IGroupManager.php2
-rw-r--r--lib/public/IHelper.php2
-rw-r--r--lib/public/IRequest.php2
-rw-r--r--lib/public/IServerContainer.php6
-rw-r--r--lib/public/ISession.php3
-rw-r--r--lib/public/IUser.php4
-rw-r--r--lib/public/IUserManager.php2
-rw-r--r--lib/public/IUserSession.php2
-rw-r--r--lib/public/JSON.php4
-rw-r--r--lib/public/Mail/IMailer.php3
-rw-r--r--lib/public/Migration/IOutput.php1
-rw-r--r--lib/public/Migration/IRepairStep.php1
-rw-r--r--lib/public/Response.php5
-rw-r--r--lib/public/Route/IRouter.php2
-rw-r--r--lib/public/Search/PagedProvider.php (renamed from lib/public/search/pagedprovider.php)0
-rw-r--r--lib/public/Search/Provider.php (renamed from lib/public/search/provider.php)0
-rw-r--r--lib/public/Search/Result.php (renamed from lib/public/search/result.php)0
-rw-r--r--lib/public/Security/IContentSecurityPolicyManager.php2
-rw-r--r--lib/public/Security/ICrypto.php2
-rw-r--r--lib/public/Security/IHasher.php2
-rw-r--r--lib/public/Security/ISecureRandom.php2
-rw-r--r--lib/public/Security/StringUtils.php2
-rw-r--r--lib/public/Session/Exceptions/SessionNotAvailableException.php1
-rw-r--r--lib/public/Share.php3
-rw-r--r--lib/public/Share/Exceptions/GenericShareException.php2
-rw-r--r--lib/public/Share_Backend.php2
-rw-r--r--lib/public/Template.php2
-rw-r--r--lib/public/User.php5
-rw-r--r--lib/public/UserInterface.php2
-rw-r--r--lib/public/Util.php8
335 files changed, 2230 insertions, 561 deletions
diff --git a/lib/autoloader.php b/lib/autoloader.php
index 89b66a426a7..d7a3c18d9ff 100644
--- a/lib/autoloader.php
+++ b/lib/autoloader.php
@@ -2,7 +2,8 @@
/**
* @author Andreas Fischer <bantu@owncloud.com>
* @author Georg Ehrke <georg@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Markus Goetz <markus@woboq.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
diff --git a/lib/base.php b/lib/base.php
index 391bcf865a0..b33687dbab7 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -2,15 +2,13 @@
/**
* @author Adam Williamson <awilliam@redhat.com>
* @author Andreas Fischer <bantu@owncloud.com>
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Bernhard Posselt <dev@bernhard-posselt.com>
- * @author Björn Schießle <schiessle@owncloud.com>
- * @author Christopher Schäpers <kondou@ts.unde.re>
+ * @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@owncloud.com>
* @author davidgumberg <davidnoizgumberg@gmail.com>
- * @author Florian Scholz <FlorianScholz@bgstyle.de>
* @author Florin Peter <github@florin-peter.de>
- * @author Frank Karlitschek <frank@owncloud.org>
* @author Georg Ehrke <georg@owncloud.com>
* @author Hugo Gonzalez Labrador <hglavra@gmail.com>
* @author Individual IT Services <info@individual-it.net>
@@ -18,9 +16,7 @@
* @author Joachim Bauch <bauch@struktur.de>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
- * @author marc0s <marcos@tenak.net>
- * @author Martin Mattel <martin.mattel@diemattels.at>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Owen Winkler <a_github@midnightcircus.com>
@@ -30,9 +26,9 @@
* @author Robin McCorkell <robin@mccorkell.me.uk>
* @author Roeland Jago Douma <rullzer@owncloud.com>
* @author scolebrook <scolebrook@mac.com>
+ * @author Stefan Weil <sw@weilnetz.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Thomas Tanghus <thomas@tanghus.net>
- * @author Victor Dubiniuk <dubiniuk@owncloud.com>
* @author Vincent Petry <pvince81@owncloud.com>
* @author Volkan Gezer <volkangezer@gmail.com>
*
@@ -622,7 +618,7 @@ class OC {
\OCP\Util::connectHook(
'\OCA\Files_Sharing\API\Server2Server',
'preLoginNameUsedAsUserName',
- '\OC_User_Database',
+ '\OC\User\Database',
'preLoginNameUsedAsUserName'
);
diff --git a/lib/composer/autoload.php b/lib/composer/autoload.php
index 610dbf34bca..612fed1a1c2 100644
--- a/lib/composer/autoload.php
+++ b/lib/composer/autoload.php
@@ -1,5 +1,23 @@
<?php
-
+/**
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
+ *
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
// autoload.php @generated by Composer
require_once __DIR__ . '/composer' . '/autoload_real.php';
diff --git a/lib/composer/composer/ClassLoader.php b/lib/composer/composer/ClassLoader.php
index ff6ecfb822f..63ccb959e55 100644
--- a/lib/composer/composer/ClassLoader.php
+++ b/lib/composer/composer/ClassLoader.php
@@ -1,13 +1,22 @@
<?php
-
-/*
- * This file is part of Composer.
+/**
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
+ *
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
*
- * (c) Nils Adermann <naderman@naderman.de>
- * Jordi Boggiano <j.boggiano@seld.be>
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
*
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
*/
namespace Composer\Autoload;
diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php
index 71dd9c179b2..9e6c52603d2 100644
--- a/lib/composer/composer/autoload_classmap.php
+++ b/lib/composer/composer/autoload_classmap.php
@@ -1,5 +1,23 @@
<?php
-
+/**
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
+ *
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
// autoload_classmap.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
diff --git a/lib/composer/composer/autoload_namespaces.php b/lib/composer/composer/autoload_namespaces.php
index 4a9c20beed0..9db70d0b374 100644
--- a/lib/composer/composer/autoload_namespaces.php
+++ b/lib/composer/composer/autoload_namespaces.php
@@ -1,5 +1,23 @@
<?php
-
+/**
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
+ *
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
// autoload_namespaces.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
diff --git a/lib/composer/composer/autoload_psr4.php b/lib/composer/composer/autoload_psr4.php
index 2561f0048c5..b35c986c32a 100644
--- a/lib/composer/composer/autoload_psr4.php
+++ b/lib/composer/composer/autoload_psr4.php
@@ -1,5 +1,24 @@
<?php
-
+/**
+ * @author Lukas Reschke <lukas@statuscode.ch>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
+ *
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
// autoload_psr4.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
diff --git a/lib/composer/composer/autoload_real.php b/lib/composer/composer/autoload_real.php
index 5fbea76758b..997ad1882b6 100644
--- a/lib/composer/composer/autoload_real.php
+++ b/lib/composer/composer/autoload_real.php
@@ -1,5 +1,23 @@
<?php
-
+/**
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
+ *
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
// autoload_real.php @generated by Composer
class ComposerAutoloaderInit53792487c5a8370acc0b06b1a864ff4c
diff --git a/lib/l10n/en_GB.js b/lib/l10n/en_GB.js
index df2c1b2dd15..293b8c8cfbf 100644
--- a/lib/l10n/en_GB.js
+++ b/lib/l10n/en_GB.js
@@ -167,6 +167,8 @@ OC.L10N.register(
"Storage incomplete configuration. %s" : "Storage incomplete configuration. %s",
"Storage connection error. %s" : "Storage connection error. %s",
"Storage not available" : "Storage not available",
- "Storage connection timeout. %s" : "Storage connection timeout. %s"
+ "Storage connection timeout. %s" : "Storage connection timeout. %s",
+ "_%n file_::_%n files_" : ["%n file","%n files"],
+ "_%n window_::_%n windows_" : ["%n window","%n windows"]
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/en_GB.json b/lib/l10n/en_GB.json
index 7b92825e7d2..13383016924 100644
--- a/lib/l10n/en_GB.json
+++ b/lib/l10n/en_GB.json
@@ -165,6 +165,8 @@
"Storage incomplete configuration. %s" : "Storage incomplete configuration. %s",
"Storage connection error. %s" : "Storage connection error. %s",
"Storage not available" : "Storage not available",
- "Storage connection timeout. %s" : "Storage connection timeout. %s"
+ "Storage connection timeout. %s" : "Storage connection timeout. %s",
+ "_%n file_::_%n files_" : ["%n file","%n files"],
+ "_%n window_::_%n windows_" : ["%n window","%n windows"]
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/fr.js b/lib/l10n/fr.js
index 78f0edfa41d..e49d9acf0c2 100644
--- a/lib/l10n/fr.js
+++ b/lib/l10n/fr.js
@@ -167,6 +167,7 @@ OC.L10N.register(
"Storage incomplete configuration. %s" : "Configuration de l'espace de stockage incomplète. %s",
"Storage connection error. %s" : "Erreur de connexion à l'espace stockage. %s",
"Storage not available" : "Support de stockage non disponible",
- "Storage connection timeout. %s" : "Le délai d'attente pour la connexion à l'espace de stockage a été dépassé. %s"
+ "Storage connection timeout. %s" : "Le délai d'attente pour la connexion à l'espace de stockage a été dépassé. %s",
+ "_%n file_::_%n files_" : ["%n fichier","%n fichiers"]
},
"nplurals=2; plural=(n > 1);");
diff --git a/lib/l10n/fr.json b/lib/l10n/fr.json
index 6ccd58b4ed1..0f8967f57e2 100644
--- a/lib/l10n/fr.json
+++ b/lib/l10n/fr.json
@@ -165,6 +165,7 @@
"Storage incomplete configuration. %s" : "Configuration de l'espace de stockage incomplète. %s",
"Storage connection error. %s" : "Erreur de connexion à l'espace stockage. %s",
"Storage not available" : "Support de stockage non disponible",
- "Storage connection timeout. %s" : "Le délai d'attente pour la connexion à l'espace de stockage a été dépassé. %s"
+ "Storage connection timeout. %s" : "Le délai d'attente pour la connexion à l'espace de stockage a été dépassé. %s",
+ "_%n file_::_%n files_" : ["%n fichier","%n fichiers"]
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/lib/l10n/ja.js b/lib/l10n/ja.js
index 661f8ad96fb..b5d501bd115 100644
--- a/lib/l10n/ja.js
+++ b/lib/l10n/ja.js
@@ -167,6 +167,8 @@ OC.L10N.register(
"Storage incomplete configuration. %s" : "設定が未完了のストレージです。 %s",
"Storage connection error. %s" : "ストレージへの接続エラー。 %s",
"Storage not available" : "ストレージが利用できません",
- "Storage connection timeout. %s" : "ストレージへの接続がタイムアウト。 %s"
+ "Storage connection timeout. %s" : "ストレージへの接続がタイムアウト。 %s",
+ "_%n file_::_%n files_" : ["%n ファイル"],
+ "_%n window_::_%n windows_" : ["%n ウィンドウ"]
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/ja.json b/lib/l10n/ja.json
index a3fc2514eb8..6f23dc07308 100644
--- a/lib/l10n/ja.json
+++ b/lib/l10n/ja.json
@@ -165,6 +165,8 @@
"Storage incomplete configuration. %s" : "設定が未完了のストレージです。 %s",
"Storage connection error. %s" : "ストレージへの接続エラー。 %s",
"Storage not available" : "ストレージが利用できません",
- "Storage connection timeout. %s" : "ストレージへの接続がタイムアウト。 %s"
+ "Storage connection timeout. %s" : "ストレージへの接続がタイムアウト。 %s",
+ "_%n file_::_%n files_" : ["%n ファイル"],
+ "_%n window_::_%n windows_" : ["%n ウィンドウ"]
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/l10n/pt_BR.js b/lib/l10n/pt_BR.js
index dd33cb7b1c3..379bd79d5b0 100644
--- a/lib/l10n/pt_BR.js
+++ b/lib/l10n/pt_BR.js
@@ -167,6 +167,8 @@ OC.L10N.register(
"Storage incomplete configuration. %s" : "Incompleta configuração de armazenamento. %s",
"Storage connection error. %s" : "Erro na conexão de armazenamento. %s",
"Storage not available" : "Armazanamento não disponível",
- "Storage connection timeout. %s" : "Tempo limite de conexão de armazenamento. %s"
+ "Storage connection timeout. %s" : "Tempo limite de conexão de armazenamento. %s",
+ "_%n file_::_%n files_" : ["%n arquivo","%n arquivos"],
+ "_%n window_::_%n windows_" : ["%n janela","%n janelas"]
},
"nplurals=2; plural=(n > 1);");
diff --git a/lib/l10n/pt_BR.json b/lib/l10n/pt_BR.json
index 7bcb4f5a267..8643c703184 100644
--- a/lib/l10n/pt_BR.json
+++ b/lib/l10n/pt_BR.json
@@ -165,6 +165,8 @@
"Storage incomplete configuration. %s" : "Incompleta configuração de armazenamento. %s",
"Storage connection error. %s" : "Erro na conexão de armazenamento. %s",
"Storage not available" : "Armazanamento não disponível",
- "Storage connection timeout. %s" : "Tempo limite de conexão de armazenamento. %s"
+ "Storage connection timeout. %s" : "Tempo limite de conexão de armazenamento. %s",
+ "_%n file_::_%n files_" : ["%n arquivo","%n arquivos"],
+ "_%n window_::_%n windows_" : ["%n janela","%n janelas"]
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/lib/l10n/pt_PT.js b/lib/l10n/pt_PT.js
index 66743f9b586..8d6cfadce42 100644
--- a/lib/l10n/pt_PT.js
+++ b/lib/l10n/pt_PT.js
@@ -9,6 +9,7 @@ OC.L10N.register(
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Foi detectado que a configuração de amostra foi copiada. Isso pode danificar a sua instalação e não é suportado. Por favor, leia a documentação antes de realizar mudanças no config.php",
"PHP %s or higher is required." : "Necessário PHP %s ou maior.",
"PHP with a version lower than %s is required." : "É necessário um PHP com uma versão inferir a %s.",
+ "%sbit or higher PHP required." : "PHP requerido %sbit ou superior.",
"Following databases are supported: %s" : "As seguintes bases de dados são suportadas: %s",
"The command line tool %s could not be found" : "A ferramenta de linha de comento %s não foi encontrada",
"The library %s is not available." : "A biblioteca %s não está disponível.",
@@ -109,6 +110,8 @@ OC.L10N.register(
"Username contains whitespace at the beginning or at the end" : "Nome de utilizador contém espaço em branco no início ou no fim",
"A valid password must be provided" : "Uma password válida deve ser fornecida",
"The username is already being used" : "O nome de utilizador já está a ser usado",
+ "Login canceled by app" : "Sessão cancelada pela app",
+ "User disabled" : "Utilziador desativado",
"Help" : "Ajuda",
"Personal" : "Pessoal",
"Users" : "Utilizadores",
@@ -161,6 +164,8 @@ OC.L10N.register(
"Storage incomplete configuration. %s" : "Configuração incompleta do armazenamento. %s",
"Storage connection error. %s" : "Erro de ligação ao armazenamento. %s",
"Storage not available" : "Armazenamento indisposinvel",
- "Storage connection timeout. %s" : "Tempo de ligação ao armazenamento expirou. %s"
+ "Storage connection timeout. %s" : "Tempo de ligação ao armazenamento expirou. %s",
+ "_%n file_::_%n files_" : ["%n ficheiro","%n ficheiros"],
+ "_%n window_::_%n windows_" : ["%n janela","%n janelas"]
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/pt_PT.json b/lib/l10n/pt_PT.json
index 3e2bbc24503..58c3dd70212 100644
--- a/lib/l10n/pt_PT.json
+++ b/lib/l10n/pt_PT.json
@@ -7,6 +7,7 @@
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Foi detectado que a configuração de amostra foi copiada. Isso pode danificar a sua instalação e não é suportado. Por favor, leia a documentação antes de realizar mudanças no config.php",
"PHP %s or higher is required." : "Necessário PHP %s ou maior.",
"PHP with a version lower than %s is required." : "É necessário um PHP com uma versão inferir a %s.",
+ "%sbit or higher PHP required." : "PHP requerido %sbit ou superior.",
"Following databases are supported: %s" : "As seguintes bases de dados são suportadas: %s",
"The command line tool %s could not be found" : "A ferramenta de linha de comento %s não foi encontrada",
"The library %s is not available." : "A biblioteca %s não está disponível.",
@@ -107,6 +108,8 @@
"Username contains whitespace at the beginning or at the end" : "Nome de utilizador contém espaço em branco no início ou no fim",
"A valid password must be provided" : "Uma password válida deve ser fornecida",
"The username is already being used" : "O nome de utilizador já está a ser usado",
+ "Login canceled by app" : "Sessão cancelada pela app",
+ "User disabled" : "Utilziador desativado",
"Help" : "Ajuda",
"Personal" : "Pessoal",
"Users" : "Utilizadores",
@@ -159,6 +162,8 @@
"Storage incomplete configuration. %s" : "Configuração incompleta do armazenamento. %s",
"Storage connection error. %s" : "Erro de ligação ao armazenamento. %s",
"Storage not available" : "Armazenamento indisposinvel",
- "Storage connection timeout. %s" : "Tempo de ligação ao armazenamento expirou. %s"
+ "Storage connection timeout. %s" : "Tempo de ligação ao armazenamento expirou. %s",
+ "_%n file_::_%n files_" : ["%n ficheiro","%n ficheiros"],
+ "_%n window_::_%n windows_" : ["%n janela","%n janelas"]
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/ro.js b/lib/l10n/ro.js
index e8f3ab7c5bb..5c5b7844cf7 100644
--- a/lib/l10n/ro.js
+++ b/lib/l10n/ro.js
@@ -9,6 +9,7 @@ OC.L10N.register(
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "S-a detectat copierea configurației exemplu. Acest lucru poate duce la oprirea instanței tale și nu este suportat. Te rugăm să citești documentația înainte de a face modificări în fișierul config.php",
"PHP %s or higher is required." : "Versiunea PHP %s sau mai mare este necesară.",
"PHP with a version lower than %s is required." : "Este necesară o versiune PHP mai mică decât %s",
+ "%sbit or higher PHP required." : "Este necesar PHP %sbit sau mai mare.",
"Following databases are supported: %s" : "Următoarele baze de date sunt suportate: %s",
"The command line tool %s could not be found" : "Unealta în linie de comandă %s nu a fost găsită",
"The library %s is not available." : "Biblioteca %s nu este disponibilă.",
@@ -28,18 +29,36 @@ OC.L10N.register(
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modulul cu id-ul %s nu există. Activează-l în setările tale de aplicație sau contactează-ți administratorul.",
"Empty filename is not allowed" : "Nu este permis fișier fără nume",
"Dot files are not allowed" : "Fișierele care încep cu caracterul punct nu sunt permise",
+ "File name is a reserved word" : "Numele fișierului este un cuvânt rezervat",
"File name contains at least one invalid character" : "Numele fișierului conține măcar un caracter invalid",
"File name is too long" : "Numele fișierului este prea lung",
"App directory already exists" : "Directorul de aplicație există deja",
+ "Can't create app folder. Please fix permissions. %s" : "Nu se poate crea directorul de aplicație. Repară permisiunile. %s",
+ "Archive does not contain a directory named %s" : "Arhiva nu conține vreun director cu numele %s",
+ "No source specified when installing app" : "Nu a fost specificată vreo sursă la instalarea aplicației",
+ "Archives of type %s are not supported" : "Arhivele de tip %s nu sunt suportate",
+ "Failed to open archive when installing app" : "Deschiderea arhivei a eșuat în timpul instalării aplicației",
+ "App does not provide an info.xml file" : "Aplicația nu furnizează un fișier info.xml",
+ "App cannot be installed because appinfo file cannot be read." : "Aplicația nu poate fi instalată deoarece fișierul appinfo nu poate fi citit",
+ "Signature could not get checked. Please contact the app developer and check your admin screen." : "Semnătura nu a putut fi verificată. Contactează dezvoltatorul aplicației și verifică-ți consola administrativă.",
+ "App can't be installed because of not allowed code in the App" : "Aplicația nu poate fi instalată deoarece conține cod nepermis",
+ "App can't be installed because it is not compatible with this version of ownCloud" : "Aplicația nu poate fi instalată deoarece nu este compatibilă cu această versiune ownCloud",
+ "%s enter the database username and name." : "%s introdu numele de utilizator și parola pentru baza de date.",
+ "%s enter the database username." : "%s introdu utilizatorul bazei de date.",
"%s enter the database name." : "%s introduceți numele bazei de date",
"Oracle connection could not be established" : "Conexiunea Oracle nu a putut fi stabilită",
+ "Oracle username and/or password not valid" : "Numele de utilizator sau / și parola Oracle nu sunt valide",
"DB Error: \"%s\"" : "Eroare Bază de Date: \"%s\"",
+ "Offending command was: \"%s\"" : "Comanda cauză a fost: \"%s\"",
"PostgreSQL username and/or password not valid" : "Nume utilizator și/sau parolă PostgreSQL greșită",
"Set an admin username." : "Setează un nume de administrator.",
"Set an admin password." : "Setează o parolă de administrator.",
+ "Invalid Federated Cloud ID" : "ID invalid cloud federalizat",
"%s shared »%s« with you" : "%s Partajat »%s« cu tine de",
"You are not allowed to share %s" : "Nu există permisiunea de partajare %s",
"Sharing %s failed, because this item is already shared with %s" : "Partajarea %s a eșuat deoarece acest element este deja partajat cu %s",
+ "Not allowed to create a federated share with the same user" : "Nu este permisă crearea unei partajări federalizate cu acelaşi utilizator",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Partajarea %s a eşuat, nu pot găsi %s, poate serverul nu poate fi contactat.",
"Share type %s is not valid for %s" : "Tipul partajării %s nu este valid pentru %s",
"Could not find category \"%s\"" : "Cloud nu a gasit categoria \"%s\"",
"Apps" : "Aplicații",
diff --git a/lib/l10n/ro.json b/lib/l10n/ro.json
index ea93ecbd9b0..566f6d01123 100644
--- a/lib/l10n/ro.json
+++ b/lib/l10n/ro.json
@@ -7,6 +7,7 @@
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "S-a detectat copierea configurației exemplu. Acest lucru poate duce la oprirea instanței tale și nu este suportat. Te rugăm să citești documentația înainte de a face modificări în fișierul config.php",
"PHP %s or higher is required." : "Versiunea PHP %s sau mai mare este necesară.",
"PHP with a version lower than %s is required." : "Este necesară o versiune PHP mai mică decât %s",
+ "%sbit or higher PHP required." : "Este necesar PHP %sbit sau mai mare.",
"Following databases are supported: %s" : "Următoarele baze de date sunt suportate: %s",
"The command line tool %s could not be found" : "Unealta în linie de comandă %s nu a fost găsită",
"The library %s is not available." : "Biblioteca %s nu este disponibilă.",
@@ -26,18 +27,36 @@
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modulul cu id-ul %s nu există. Activează-l în setările tale de aplicație sau contactează-ți administratorul.",
"Empty filename is not allowed" : "Nu este permis fișier fără nume",
"Dot files are not allowed" : "Fișierele care încep cu caracterul punct nu sunt permise",
+ "File name is a reserved word" : "Numele fișierului este un cuvânt rezervat",
"File name contains at least one invalid character" : "Numele fișierului conține măcar un caracter invalid",
"File name is too long" : "Numele fișierului este prea lung",
"App directory already exists" : "Directorul de aplicație există deja",
+ "Can't create app folder. Please fix permissions. %s" : "Nu se poate crea directorul de aplicație. Repară permisiunile. %s",
+ "Archive does not contain a directory named %s" : "Arhiva nu conține vreun director cu numele %s",
+ "No source specified when installing app" : "Nu a fost specificată vreo sursă la instalarea aplicației",
+ "Archives of type %s are not supported" : "Arhivele de tip %s nu sunt suportate",
+ "Failed to open archive when installing app" : "Deschiderea arhivei a eșuat în timpul instalării aplicației",
+ "App does not provide an info.xml file" : "Aplicația nu furnizează un fișier info.xml",
+ "App cannot be installed because appinfo file cannot be read." : "Aplicația nu poate fi instalată deoarece fișierul appinfo nu poate fi citit",
+ "Signature could not get checked. Please contact the app developer and check your admin screen." : "Semnătura nu a putut fi verificată. Contactează dezvoltatorul aplicației și verifică-ți consola administrativă.",
+ "App can't be installed because of not allowed code in the App" : "Aplicația nu poate fi instalată deoarece conține cod nepermis",
+ "App can't be installed because it is not compatible with this version of ownCloud" : "Aplicația nu poate fi instalată deoarece nu este compatibilă cu această versiune ownCloud",
+ "%s enter the database username and name." : "%s introdu numele de utilizator și parola pentru baza de date.",
+ "%s enter the database username." : "%s introdu utilizatorul bazei de date.",
"%s enter the database name." : "%s introduceți numele bazei de date",
"Oracle connection could not be established" : "Conexiunea Oracle nu a putut fi stabilită",
+ "Oracle username and/or password not valid" : "Numele de utilizator sau / și parola Oracle nu sunt valide",
"DB Error: \"%s\"" : "Eroare Bază de Date: \"%s\"",
+ "Offending command was: \"%s\"" : "Comanda cauză a fost: \"%s\"",
"PostgreSQL username and/or password not valid" : "Nume utilizator și/sau parolă PostgreSQL greșită",
"Set an admin username." : "Setează un nume de administrator.",
"Set an admin password." : "Setează o parolă de administrator.",
+ "Invalid Federated Cloud ID" : "ID invalid cloud federalizat",
"%s shared »%s« with you" : "%s Partajat »%s« cu tine de",
"You are not allowed to share %s" : "Nu există permisiunea de partajare %s",
"Sharing %s failed, because this item is already shared with %s" : "Partajarea %s a eșuat deoarece acest element este deja partajat cu %s",
+ "Not allowed to create a federated share with the same user" : "Nu este permisă crearea unei partajări federalizate cu acelaşi utilizator",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Partajarea %s a eşuat, nu pot găsi %s, poate serverul nu poate fi contactat.",
"Share type %s is not valid for %s" : "Tipul partajării %s nu este valid pentru %s",
"Could not find category \"%s\"" : "Cloud nu a gasit categoria \"%s\"",
"Apps" : "Aplicații",
diff --git a/lib/l10n/ru.js b/lib/l10n/ru.js
index 337d3b28641..44688918cbd 100644
--- a/lib/l10n/ru.js
+++ b/lib/l10n/ru.js
@@ -3,13 +3,13 @@ OC.L10N.register(
{
"Cannot write into \"config\" directory!" : "Запись в каталог \"config\" невозможна!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Обычно это можно исправить предоставив веб-серверу права на запись в каталоге конфигурации",
- "See %s" : "Просмотр %s",
+ "See %s" : "Смотрите %s",
"This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Обычно это можно исправить %sпредоставив веб-серверу права на запись в каталоге конфигурации%s.",
"Sample configuration detected" : "Обнаружена конфигурация из примера",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Была обнаружена конфигурация из примера. Такая конфигурация не поддерживается и может повредить вашей системе. Прочтите документацию перед внесением изменений в файл config.php",
"PHP %s or higher is required." : "Требуется PHP %s или выше",
"PHP with a version lower than %s is required." : "Требуется версия PHP ниже %s.",
- "%sbit or higher PHP required." : "%sbit или требуется новая версия PHP.",
+ "%sbit or higher PHP required." : "Требуется PHP с разрядностью %s бит или более.",
"Following databases are supported: %s" : "Поддерживаются следующие СУБД: %s",
"The command line tool %s could not be found" : "Утилита командной строки %s не найдена",
"The library %s is not available." : "Библиотека %s недоступна.",
@@ -31,14 +31,14 @@ OC.L10N.register(
"_%n minute ago_::_%n minutes ago_" : ["%n минута назад","%n минуты назад","%n минут назад","%n минут назад"],
"seconds ago" : "менее минуты",
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Модуль с ID %s не существует. Пожалуйста включите его в настройках приложений или обратитесь к администратору.",
- "Empty filename is not allowed" : "Пустые имена файлов не допускаются",
+ "Empty filename is not allowed" : "Пустое имя файла не допускается",
"Dot files are not allowed" : "Файлы начинающиеся с точки не допускаются",
"4-byte characters are not supported in file names" : "4-х байтовые символы в имени файлов не допускаются",
"File name is a reserved word" : "Имя файла является зарезервированным словом",
"File name contains at least one invalid character" : "Имя файла содержит по крайней мере один некорректный символ",
"File name is too long" : "Имя файла слишком длинное.",
"App directory already exists" : "Каталог приложения уже существует",
- "Can't create app folder. Please fix permissions. %s" : "Не удалось создать каталог. Исправьте права доступа. %s",
+ "Can't create app folder. Please fix permissions. %s" : "Не удалось создать каталог приложения. Исправьте права доступа. %s",
"Archive does not contain a directory named %s" : "Архив не содержит папки с именем %s",
"No source specified when installing app" : "Не указан источник при установке приложения",
"No href specified when installing app from http" : "Не указан атрибут href при установке приложения через http",
@@ -65,27 +65,27 @@ OC.L10N.register(
"PostgreSQL username and/or password not valid" : "Неверное имя пользователя и/или пароль PostgreSQL",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X не поддерживается и %s может работать некорректно на данной платформе. Используйте на свой страх и риск!",
"For the best results, please consider using a GNU/Linux server instead." : "Для достижения наилучших результатов, рассмотрите вариант использования сервера на GNU/Linux.",
- "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Кажется что экземпляр этого %s работает в 32-битной PHP среде и open_basedir должен быть настроен в php.ini. Это приведет к проблемам с файлами более 4 ГБ и это настоятельно не рекомендуется.",
- "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Удалите директиву open_basedir из файла php.ini или смените PHP на 64х разрядную сборку.",
- "Set an admin username." : "Задать имя пользователя для admin.",
+ "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Кажется что экземпляр этого %s работает в 32-битной среде PHP и в php.ini был настроен open_basedir. Это приведёт к проблемам с файлами более 4 ГБ и настоятельно не рекомендуется.",
+ "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Пожалуйста, удалите директиву open_basedir из файла php.ini или смените PHP на 64-разрядную сборку.",
+ "Set an admin username." : "Задать имя пользователя для администратора.",
"Set an admin password." : "Задать пароль для admin.",
"Can't create or write into the data directory %s" : "Невозможно создать или записать в каталог данных %s",
"Invalid Federated Cloud ID" : "Неверный ID в объединении облачных хранилищ.",
"%s shared »%s« with you" : "%s поделился »%s« с вами",
"%s via %s" : "%s через %s",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Не удалось поделиться %s, общий доступ не допускает публикации из элементов типа %i",
+ "Sharing %s failed, because the backend does not allow shares from type %i" : "Не удалось поделиться %s, так как механизм хранения не допускает публикации из элементов типа %i",
"Sharing %s failed, because the file does not exist" : "Не удалось поделиться %s, файл не существует",
- "You are not allowed to share %s" : "Вам запрещено делиться %s",
+ "You are not allowed to share %s" : "Вам не разрешено делиться %s",
"Sharing %s failed, because you can not share with yourself" : "Не удалось поделиться %s. Вы не можете поделиться с самим собой.",
"Sharing %s failed, because the user %s does not exist" : "Не удалось поделиться %s, пользователь %s не существует.",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Не удалось поделиться %s, пользователь %s не состоит в какой-либо группе в которой состоит %s",
+ "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Не удалось поделиться %s, так как пользователь %s не состоит в какой-либо группе, в которой состоит %s",
"Sharing %s failed, because this item is already shared with %s" : "Не удалось поделиться %s, пользователь %s уже имеет доступ к этому элементу",
"Sharing %s failed, because this item is already shared with user %s" : "Не удалось поделиться %s, так как элемент находится в общем доступе у %s",
"Sharing %s failed, because the group %s does not exist" : "Не удалось поделиться %s, группа %s не существует",
"Sharing %s failed, because %s is not a member of the group %s" : "Не удалось поделиться %s, пользователь %s не является членом группы %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Вам нужно задать пароль для создания публичной ссылки. Разрешены только защищённые ссылки",
"Sharing %s failed, because sharing with links is not allowed" : "Не удалось поделиться %s, открытие доступа по ссылке запрещено",
- "Not allowed to create a federated share with the same user" : "Не допускается создание федеративного общего ресурса с тем-же пользователем",
+ "Not allowed to create a federated share with the same user" : "Не допускается создание федеративного общего ресурса с тем же пользователем",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Не удалось поделиться %s, не удалось найти %s, возможно, сервер не доступен.",
"Share type %s is not valid for %s" : "Тип общего доступа %s недопустим для %s",
"Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Не удалось настроить права доступа для %s, указанные права доступа превышают предоставленные для %s",
@@ -108,10 +108,10 @@ OC.L10N.register(
"Cannot set expiration date more than %s days in the future" : "Невозможно установить дату окончания срока действия более %s дней",
"Could not find category \"%s\"" : "Категория \"%s\" не найдена",
"Apps" : "Приложения",
- "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "В качестве имени пользователя допускаются следующие символы: \"a-z\", \"A-Z\", \"0-9\" и \"_.@-'\"",
- "A valid username must be provided" : "Укажите правильное имя пользователя",
+ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "В составе имени пользователя допускаются следующие символы: \"a-z\", \"A-Z\", \"0-9\" и \"_.@-'\"",
+ "A valid username must be provided" : "Укажите допустимое имя пользователя",
"Username contains whitespace at the beginning or at the end" : "Имя пользователя содержит пробел в начале или в конце",
- "A valid password must be provided" : "Укажите правильный пароль",
+ "A valid password must be provided" : "Укажите допустимый пароль",
"The username is already being used" : "Имя пользователя уже используется",
"Login canceled by app" : "Вход отменен приложением",
"User disabled" : "Пользователь отключен",
@@ -133,10 +133,10 @@ OC.L10N.register(
"Unknown user" : "Неизвестный пользователь",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Не установлены драйвера баз данных (sqlite, mysql или postgresql)",
"Microsoft Windows Platform is not supported" : "Платформа Microsoft Windows не поддерживается",
- "Running ownCloud Server on the Microsoft Windows platform is not supported. We suggest you use a Linux server in a virtual machine if you have no option for migrating the server itself. Find Linux packages as well as easy to deploy virtual machine images on <a href=\"%s\">%s</a>. For migrating existing installations to Linux you can find some tips and a migration script in <a href=\"%s\">our documentation</a>." : "Установка ownCloud на платформе Microsoft Windows Server не поддерживается. Мы рекомендуем использовать сервер на базе ядра Linux, если-же замена ОС на сервере не возможна, рекомендуется установить Linux-сервер на виртуальную машину. Пакеты для Linux, а так-же легко развертываемый образ виртуальной машины можно найти <a href=\"%s\">%s</a>. Скрипты и советы для миграции существующих серверов на Linux вы можете найти в <a href=\"%s\">нашей документации</a>.",
+ "Running ownCloud Server on the Microsoft Windows platform is not supported. We suggest you use a Linux server in a virtual machine if you have no option for migrating the server itself. Find Linux packages as well as easy to deploy virtual machine images on <a href=\"%s\">%s</a>. For migrating existing installations to Linux you can find some tips and a migration script in <a href=\"%s\">our documentation</a>." : "Запуск ownCloud на платформе Microsoft Windows Server не поддерживается. Мы рекомендуем использовать сервер на базе Linux в виртуальной машине, если замена ОС на сервере не возможна. Пакеты для Linux, а также легко развертываемый образ виртуальной машины можно найти <a href=\"%s\">%s</a>. Скрипты и советы для миграции существующих серверов на Linux вы можете найти в <a href=\"%s\">нашей документации</a>.",
"Cannot write into \"config\" directory" : "Запись в каталог \"config\" невозможна",
"Cannot write into \"apps\" directory" : "Запись в каталог \"app\" невозможна",
- "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Обычно это можно исправить, %sпредоставив веб-серверу права на запись в каталог приложений%s или отключив хранилище программ в файле конфигурации.",
+ "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Обычно это можно исправить, %sпредоставив веб-серверу права на запись в каталог приложений%s или отключив магазин приложений в файле конфигурации.",
"Cannot create \"data\" directory (%s)" : "Невозможно создать каталог \"data\" (%s)",
"This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "Обычно это можно исправить <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">предоставив веб-серверу права на запись в корневом каталоге</a>.",
"Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Обычно это можно исправить, %sпредоставив веб-серверу права на запись в корневой каталог%s.",
@@ -158,7 +158,7 @@ OC.L10N.register(
"Please upgrade your database version" : "Обновите базу данных",
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Измените права доступа на 0770, чтобы другие пользователи не могли получить список файлов этого каталога.",
"Data directory (%s) is readable by other users" : "Каталог данных (%s) доступен для чтения другим пользователям",
- "Data directory (%s) must be an absolute path" : "Директория данных (%s) должна иметь абсолютный путь",
+ "Data directory (%s) must be an absolute path" : "Каталог данных (%s) должен быть абсолютным путём",
"Check the value of \"datadirectory\" in your configuration" : "Проверьте значение \"datadirectory\" в настройках.",
"Data directory (%s) is invalid" : "Каталог данных (%s) не верен",
"Please check that the data directory contains a file \".ocdata\" in its root." : "Убедитесь, что файл \".ocdata\" присутствует в корне каталога данных.",
@@ -167,6 +167,8 @@ OC.L10N.register(
"Storage incomplete configuration. %s" : "Неполная конфигурация хранилища. %s",
"Storage connection error. %s" : "Ошибка подключения к хранилищу. %s",
"Storage not available" : "Хранилище недоступно",
- "Storage connection timeout. %s" : "Истекло время ожидания подключения к хранилищу. %s"
+ "Storage connection timeout. %s" : "Истекло время ожидания подключения к хранилищу. %s",
+ "_%n file_::_%n files_" : ["%n файл","%n файла","%n файлов","%n файлов"],
+ "_%n window_::_%n windows_" : ["%n окно","%n окна","%n окон","%n окон"]
},
"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);");
diff --git a/lib/l10n/ru.json b/lib/l10n/ru.json
index 1cf5687aab4..71a9ad0e807 100644
--- a/lib/l10n/ru.json
+++ b/lib/l10n/ru.json
@@ -1,13 +1,13 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "Запись в каталог \"config\" невозможна!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Обычно это можно исправить предоставив веб-серверу права на запись в каталоге конфигурации",
- "See %s" : "Просмотр %s",
+ "See %s" : "Смотрите %s",
"This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Обычно это можно исправить %sпредоставив веб-серверу права на запись в каталоге конфигурации%s.",
"Sample configuration detected" : "Обнаружена конфигурация из примера",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Была обнаружена конфигурация из примера. Такая конфигурация не поддерживается и может повредить вашей системе. Прочтите документацию перед внесением изменений в файл config.php",
"PHP %s or higher is required." : "Требуется PHP %s или выше",
"PHP with a version lower than %s is required." : "Требуется версия PHP ниже %s.",
- "%sbit or higher PHP required." : "%sbit или требуется новая версия PHP.",
+ "%sbit or higher PHP required." : "Требуется PHP с разрядностью %s бит или более.",
"Following databases are supported: %s" : "Поддерживаются следующие СУБД: %s",
"The command line tool %s could not be found" : "Утилита командной строки %s не найдена",
"The library %s is not available." : "Библиотека %s недоступна.",
@@ -29,14 +29,14 @@
"_%n minute ago_::_%n minutes ago_" : ["%n минута назад","%n минуты назад","%n минут назад","%n минут назад"],
"seconds ago" : "менее минуты",
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Модуль с ID %s не существует. Пожалуйста включите его в настройках приложений или обратитесь к администратору.",
- "Empty filename is not allowed" : "Пустые имена файлов не допускаются",
+ "Empty filename is not allowed" : "Пустое имя файла не допускается",
"Dot files are not allowed" : "Файлы начинающиеся с точки не допускаются",
"4-byte characters are not supported in file names" : "4-х байтовые символы в имени файлов не допускаются",
"File name is a reserved word" : "Имя файла является зарезервированным словом",
"File name contains at least one invalid character" : "Имя файла содержит по крайней мере один некорректный символ",
"File name is too long" : "Имя файла слишком длинное.",
"App directory already exists" : "Каталог приложения уже существует",
- "Can't create app folder. Please fix permissions. %s" : "Не удалось создать каталог. Исправьте права доступа. %s",
+ "Can't create app folder. Please fix permissions. %s" : "Не удалось создать каталог приложения. Исправьте права доступа. %s",
"Archive does not contain a directory named %s" : "Архив не содержит папки с именем %s",
"No source specified when installing app" : "Не указан источник при установке приложения",
"No href specified when installing app from http" : "Не указан атрибут href при установке приложения через http",
@@ -63,27 +63,27 @@
"PostgreSQL username and/or password not valid" : "Неверное имя пользователя и/или пароль PostgreSQL",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X не поддерживается и %s может работать некорректно на данной платформе. Используйте на свой страх и риск!",
"For the best results, please consider using a GNU/Linux server instead." : "Для достижения наилучших результатов, рассмотрите вариант использования сервера на GNU/Linux.",
- "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Кажется что экземпляр этого %s работает в 32-битной PHP среде и open_basedir должен быть настроен в php.ini. Это приведет к проблемам с файлами более 4 ГБ и это настоятельно не рекомендуется.",
- "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Удалите директиву open_basedir из файла php.ini или смените PHP на 64х разрядную сборку.",
- "Set an admin username." : "Задать имя пользователя для admin.",
+ "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Кажется что экземпляр этого %s работает в 32-битной среде PHP и в php.ini был настроен open_basedir. Это приведёт к проблемам с файлами более 4 ГБ и настоятельно не рекомендуется.",
+ "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Пожалуйста, удалите директиву open_basedir из файла php.ini или смените PHP на 64-разрядную сборку.",
+ "Set an admin username." : "Задать имя пользователя для администратора.",
"Set an admin password." : "Задать пароль для admin.",
"Can't create or write into the data directory %s" : "Невозможно создать или записать в каталог данных %s",
"Invalid Federated Cloud ID" : "Неверный ID в объединении облачных хранилищ.",
"%s shared »%s« with you" : "%s поделился »%s« с вами",
"%s via %s" : "%s через %s",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Не удалось поделиться %s, общий доступ не допускает публикации из элементов типа %i",
+ "Sharing %s failed, because the backend does not allow shares from type %i" : "Не удалось поделиться %s, так как механизм хранения не допускает публикации из элементов типа %i",
"Sharing %s failed, because the file does not exist" : "Не удалось поделиться %s, файл не существует",
- "You are not allowed to share %s" : "Вам запрещено делиться %s",
+ "You are not allowed to share %s" : "Вам не разрешено делиться %s",
"Sharing %s failed, because you can not share with yourself" : "Не удалось поделиться %s. Вы не можете поделиться с самим собой.",
"Sharing %s failed, because the user %s does not exist" : "Не удалось поделиться %s, пользователь %s не существует.",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Не удалось поделиться %s, пользователь %s не состоит в какой-либо группе в которой состоит %s",
+ "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Не удалось поделиться %s, так как пользователь %s не состоит в какой-либо группе, в которой состоит %s",
"Sharing %s failed, because this item is already shared with %s" : "Не удалось поделиться %s, пользователь %s уже имеет доступ к этому элементу",
"Sharing %s failed, because this item is already shared with user %s" : "Не удалось поделиться %s, так как элемент находится в общем доступе у %s",
"Sharing %s failed, because the group %s does not exist" : "Не удалось поделиться %s, группа %s не существует",
"Sharing %s failed, because %s is not a member of the group %s" : "Не удалось поделиться %s, пользователь %s не является членом группы %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Вам нужно задать пароль для создания публичной ссылки. Разрешены только защищённые ссылки",
"Sharing %s failed, because sharing with links is not allowed" : "Не удалось поделиться %s, открытие доступа по ссылке запрещено",
- "Not allowed to create a federated share with the same user" : "Не допускается создание федеративного общего ресурса с тем-же пользователем",
+ "Not allowed to create a federated share with the same user" : "Не допускается создание федеративного общего ресурса с тем же пользователем",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Не удалось поделиться %s, не удалось найти %s, возможно, сервер не доступен.",
"Share type %s is not valid for %s" : "Тип общего доступа %s недопустим для %s",
"Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Не удалось настроить права доступа для %s, указанные права доступа превышают предоставленные для %s",
@@ -106,10 +106,10 @@
"Cannot set expiration date more than %s days in the future" : "Невозможно установить дату окончания срока действия более %s дней",
"Could not find category \"%s\"" : "Категория \"%s\" не найдена",
"Apps" : "Приложения",
- "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "В качестве имени пользователя допускаются следующие символы: \"a-z\", \"A-Z\", \"0-9\" и \"_.@-'\"",
- "A valid username must be provided" : "Укажите правильное имя пользователя",
+ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "В составе имени пользователя допускаются следующие символы: \"a-z\", \"A-Z\", \"0-9\" и \"_.@-'\"",
+ "A valid username must be provided" : "Укажите допустимое имя пользователя",
"Username contains whitespace at the beginning or at the end" : "Имя пользователя содержит пробел в начале или в конце",
- "A valid password must be provided" : "Укажите правильный пароль",
+ "A valid password must be provided" : "Укажите допустимый пароль",
"The username is already being used" : "Имя пользователя уже используется",
"Login canceled by app" : "Вход отменен приложением",
"User disabled" : "Пользователь отключен",
@@ -131,10 +131,10 @@
"Unknown user" : "Неизвестный пользователь",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Не установлены драйвера баз данных (sqlite, mysql или postgresql)",
"Microsoft Windows Platform is not supported" : "Платформа Microsoft Windows не поддерживается",
- "Running ownCloud Server on the Microsoft Windows platform is not supported. We suggest you use a Linux server in a virtual machine if you have no option for migrating the server itself. Find Linux packages as well as easy to deploy virtual machine images on <a href=\"%s\">%s</a>. For migrating existing installations to Linux you can find some tips and a migration script in <a href=\"%s\">our documentation</a>." : "Установка ownCloud на платформе Microsoft Windows Server не поддерживается. Мы рекомендуем использовать сервер на базе ядра Linux, если-же замена ОС на сервере не возможна, рекомендуется установить Linux-сервер на виртуальную машину. Пакеты для Linux, а так-же легко развертываемый образ виртуальной машины можно найти <a href=\"%s\">%s</a>. Скрипты и советы для миграции существующих серверов на Linux вы можете найти в <a href=\"%s\">нашей документации</a>.",
+ "Running ownCloud Server on the Microsoft Windows platform is not supported. We suggest you use a Linux server in a virtual machine if you have no option for migrating the server itself. Find Linux packages as well as easy to deploy virtual machine images on <a href=\"%s\">%s</a>. For migrating existing installations to Linux you can find some tips and a migration script in <a href=\"%s\">our documentation</a>." : "Запуск ownCloud на платформе Microsoft Windows Server не поддерживается. Мы рекомендуем использовать сервер на базе Linux в виртуальной машине, если замена ОС на сервере не возможна. Пакеты для Linux, а также легко развертываемый образ виртуальной машины можно найти <a href=\"%s\">%s</a>. Скрипты и советы для миграции существующих серверов на Linux вы можете найти в <a href=\"%s\">нашей документации</a>.",
"Cannot write into \"config\" directory" : "Запись в каталог \"config\" невозможна",
"Cannot write into \"apps\" directory" : "Запись в каталог \"app\" невозможна",
- "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Обычно это можно исправить, %sпредоставив веб-серверу права на запись в каталог приложений%s или отключив хранилище программ в файле конфигурации.",
+ "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Обычно это можно исправить, %sпредоставив веб-серверу права на запись в каталог приложений%s или отключив магазин приложений в файле конфигурации.",
"Cannot create \"data\" directory (%s)" : "Невозможно создать каталог \"data\" (%s)",
"This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "Обычно это можно исправить <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">предоставив веб-серверу права на запись в корневом каталоге</a>.",
"Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Обычно это можно исправить, %sпредоставив веб-серверу права на запись в корневой каталог%s.",
@@ -156,7 +156,7 @@
"Please upgrade your database version" : "Обновите базу данных",
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Измените права доступа на 0770, чтобы другие пользователи не могли получить список файлов этого каталога.",
"Data directory (%s) is readable by other users" : "Каталог данных (%s) доступен для чтения другим пользователям",
- "Data directory (%s) must be an absolute path" : "Директория данных (%s) должна иметь абсолютный путь",
+ "Data directory (%s) must be an absolute path" : "Каталог данных (%s) должен быть абсолютным путём",
"Check the value of \"datadirectory\" in your configuration" : "Проверьте значение \"datadirectory\" в настройках.",
"Data directory (%s) is invalid" : "Каталог данных (%s) не верен",
"Please check that the data directory contains a file \".ocdata\" in its root." : "Убедитесь, что файл \".ocdata\" присутствует в корне каталога данных.",
@@ -165,6 +165,8 @@
"Storage incomplete configuration. %s" : "Неполная конфигурация хранилища. %s",
"Storage connection error. %s" : "Ошибка подключения к хранилищу. %s",
"Storage not available" : "Хранилище недоступно",
- "Storage connection timeout. %s" : "Истекло время ожидания подключения к хранилищу. %s"
+ "Storage connection timeout. %s" : "Истекло время ожидания подключения к хранилищу. %s",
+ "_%n file_::_%n files_" : ["%n файл","%n файла","%n файлов","%n файлов"],
+ "_%n window_::_%n windows_" : ["%n окно","%n окна","%n окон","%n окон"]
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/lib/l10n/sq.js b/lib/l10n/sq.js
index 5cbba8592bf..89b0013e219 100644
--- a/lib/l10n/sq.js
+++ b/lib/l10n/sq.js
@@ -167,6 +167,8 @@ OC.L10N.register(
"Storage incomplete configuration. %s" : "Formësim jo i plotë i depozitës. %s",
"Storage connection error. %s" : "Gabim lidhje te depozita. %s",
"Storage not available" : "Pa depozitë gati",
- "Storage connection timeout. %s" : "Mbarim kohe lidhjeje për depozitën. %s"
+ "Storage connection timeout. %s" : "Mbarim kohe lidhjeje për depozitën. %s",
+ "_%n file_::_%n files_" : ["%n kartelë","%n kartela"],
+ "_%n window_::_%n windows_" : ["%n dritare","%n dritare"]
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/sq.json b/lib/l10n/sq.json
index 4f835a6d75c..e6cb94b9980 100644
--- a/lib/l10n/sq.json
+++ b/lib/l10n/sq.json
@@ -165,6 +165,8 @@
"Storage incomplete configuration. %s" : "Formësim jo i plotë i depozitës. %s",
"Storage connection error. %s" : "Gabim lidhje te depozita. %s",
"Storage not available" : "Pa depozitë gati",
- "Storage connection timeout. %s" : "Mbarim kohe lidhjeje për depozitën. %s"
+ "Storage connection timeout. %s" : "Mbarim kohe lidhjeje për depozitën. %s",
+ "_%n file_::_%n files_" : ["%n kartelë","%n kartela"],
+ "_%n window_::_%n windows_" : ["%n dritare","%n dritare"]
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/private/Activity/Manager.php b/lib/private/Activity/Manager.php
index e68802b2abb..42e287f7d44 100644
--- a/lib/private/Activity/Manager.php
+++ b/lib/private/Activity/Manager.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
diff --git a/lib/private/AllConfig.php b/lib/private/AllConfig.php
index b4888fde022..6e99e1ac268 100644
--- a/lib/private/AllConfig.php
+++ b/lib/private/AllConfig.php
@@ -2,7 +2,7 @@
/**
* @author Bart Visscher <bartv@thisnet.nl>
* @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
diff --git a/lib/private/App/AppManager.php b/lib/private/App/AppManager.php
index 69e5334774e..475ecba2b8e 100644
--- a/lib/private/App/AppManager.php
+++ b/lib/private/App/AppManager.php
@@ -1,9 +1,10 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Christoph Schaefer <christophł@wolkesicher.de>
+ * @author Christoph Wurst <christoph@owncloud.com>
* @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
@@ -301,7 +302,7 @@ class AppManager implements IAppManager {
*
* @param string $appId app id
*
- * @return array app iinfo
+ * @return array app info
*
* @internal
*/
diff --git a/lib/private/App/DependencyAnalyzer.php b/lib/private/App/DependencyAnalyzer.php
index 1e3a81c6351..db9130badcd 100644
--- a/lib/private/App/DependencyAnalyzer.php
+++ b/lib/private/App/DependencyAnalyzer.php
@@ -2,8 +2,9 @@
/**
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Stefan Weil <sw@weilnetz.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/App/InfoParser.php b/lib/private/App/InfoParser.php
index e9456550206..0923f7d2c20 100644
--- a/lib/private/App/InfoParser.php
+++ b/lib/private/App/InfoParser.php
@@ -1,7 +1,8 @@
<?php
/**
* @author Andreas Fischer <bantu@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Christoph Wurst <christoph@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
@@ -92,6 +93,9 @@ class InfoParser {
if (!array_key_exists('background-jobs', $array)) {
$array['background-jobs'] = [];
}
+ if (!array_key_exists('two-factor-providers', $array)) {
+ $array['two-factor-providers'] = [];
+ }
if (array_key_exists('documentation', $array) && is_array($array['documentation'])) {
foreach ($array['documentation'] as $key => $url) {
diff --git a/lib/private/App/Platform.php b/lib/private/App/Platform.php
index b1cb7c5aeb0..028adb8f4f4 100644
--- a/lib/private/App/Platform.php
+++ b/lib/private/App/Platform.php
@@ -1,5 +1,6 @@
<?php
/**
+ * @author Bernhard Posselt <dev@bernhard-posselt.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
diff --git a/lib/private/AppConfig.php b/lib/private/AppConfig.php
index 14c48299a8a..24542152ffc 100644
--- a/lib/private/AppConfig.php
+++ b/lib/private/AppConfig.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Jakob Sack <mail@jakobsack.de>
* @author Joas Schilling <nickvergessen@owncloud.com>
diff --git a/lib/private/AppFramework/App.php b/lib/private/AppFramework/App.php
index 376a8559454..c6cf8057799 100644
--- a/lib/private/AppFramework/App.php
+++ b/lib/private/AppFramework/App.php
@@ -2,7 +2,7 @@
/**
* @author Andreas Fischer <bantu@owncloud.com>
* @author Bernhard Posselt <dev@bernhard-posselt.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
diff --git a/lib/private/AppFramework/Core/API.php b/lib/private/AppFramework/Core/API.php
index 67b696948f0..b08f74fa6c5 100644
--- a/lib/private/AppFramework/Core/API.php
+++ b/lib/private/AppFramework/Core/API.php
@@ -1,7 +1,7 @@
<?php
/**
* @author Bernhard Posselt <dev@bernhard-posselt.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
diff --git a/lib/private/AppFramework/DependencyInjection/DIContainer.php b/lib/private/AppFramework/DependencyInjection/DIContainer.php
index 439b631b50f..cae41f68414 100644
--- a/lib/private/AppFramework/DependencyInjection/DIContainer.php
+++ b/lib/private/AppFramework/DependencyInjection/DIContainer.php
@@ -1,9 +1,10 @@
<?php
/**
* @author Bernhard Posselt <dev@bernhard-posselt.com>
+ * @author Christoph Wurst <christoph@owncloud.com>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin McCorkell <robin@mccorkell.me.uk>
* @author Roeland Jago Douma <rullzer@owncloud.com>
@@ -31,15 +32,16 @@
namespace OC\AppFramework\DependencyInjection;
use OC;
+use OC\AppFramework\Core\API;
use OC\AppFramework\Http;
use OC\AppFramework\Http\Dispatcher;
use OC\AppFramework\Http\Output;
-use OC\AppFramework\Core\API;
use OC\AppFramework\Middleware\MiddlewareDispatcher;
-use OC\AppFramework\Middleware\Security\SecurityMiddleware;
use OC\AppFramework\Middleware\Security\CORSMiddleware;
+use OC\AppFramework\Middleware\Security\SecurityMiddleware;
use OC\AppFramework\Middleware\SessionMiddleware;
use OC\AppFramework\Utility\SimpleContainer;
+use OC\Core\Middleware\TwoFactorMiddleware;
use OCP\AppFramework\IApi;
use OCP\AppFramework\IAppContainer;
@@ -156,6 +158,10 @@ class DIContainer extends SimpleContainer implements IAppContainer {
return $this->getServer()->getGroupManager();
});
+ $this->registerService('OCP\\Http\\Client\\IClientService', function() {
+ return $this->getServer()->getHTTPClientService();
+ });
+
$this->registerService('OCP\\IL10N', function($c) {
return $this->getServer()->getL10N($c->query('AppName'));
});
@@ -357,11 +363,21 @@ class DIContainer extends SimpleContainer implements IAppContainer {
);
});
+ $this->registerService('TwoFactorMiddleware', function (SimpleContainer $c) use ($app) {
+ $twoFactorManager = $c->getServer()->getTwoFactorAuthManager();
+ $userSession = $app->getServer()->getUserSession();
+ $session = $app->getServer()->getSession();
+ $urlGenerator = $app->getServer()->getURLGenerator();
+ $reflector = $c['ControllerMethodReflector'];
+ return new TwoFactorMiddleware($twoFactorManager, $userSession, $session, $urlGenerator, $reflector);
+ });
+
$middleWares = &$this->middleWares;
$this->registerService('MiddlewareDispatcher', function($c) use (&$middleWares) {
$dispatcher = new MiddlewareDispatcher();
$dispatcher->registerMiddleware($c['CORSMiddleware']);
$dispatcher->registerMiddleware($c['SecurityMiddleware']);
+ $dispatcher->registerMiddleWare($c['TwoFactorMiddleware']);
foreach($middleWares as $middleWare) {
$dispatcher->registerMiddleware($c[$middleWare]);
diff --git a/lib/private/AppFramework/Http.php b/lib/private/AppFramework/Http.php
index a99f7ea437f..17e5a99fdbd 100644
--- a/lib/private/AppFramework/Http.php
+++ b/lib/private/AppFramework/Http.php
@@ -1,7 +1,7 @@
<?php
/**
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin McCorkell <robin@mccorkell.me.uk>
* @author Roeland Jago Douma <rullzer@owncloud.com>
diff --git a/lib/private/AppFramework/Http/Dispatcher.php b/lib/private/AppFramework/Http/Dispatcher.php
index 641339c0d94..fdf99a57841 100644
--- a/lib/private/AppFramework/Http/Dispatcher.php
+++ b/lib/private/AppFramework/Http/Dispatcher.php
@@ -2,7 +2,7 @@
/**
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @author Georg Ehrke <georg@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Thomas Tanghus <thomas@tanghus.net>
diff --git a/lib/private/AppFramework/Http/Output.php b/lib/private/AppFramework/Http/Output.php
index 469c809c21c..0c239425401 100644
--- a/lib/private/AppFramework/Http/Output.php
+++ b/lib/private/AppFramework/Http/Output.php
@@ -1,7 +1,8 @@
<?php
/**
* @author Bernhard Posselt <dev@bernhard-posselt.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
+ * @author Stefan Weil <sw@weilnetz.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/AppFramework/Http/Request.php b/lib/private/AppFramework/Http/Request.php
index fb6f1415fe9..eca02b2ac2b 100644
--- a/lib/private/AppFramework/Http/Request.php
+++ b/lib/private/AppFramework/Http/Request.php
@@ -4,7 +4,7 @@
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Mitar <mitar.git@tnode.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
diff --git a/lib/private/AppFramework/Middleware/MiddlewareDispatcher.php b/lib/private/AppFramework/Middleware/MiddlewareDispatcher.php
index 4bd25f79bba..5cdcbdc6d47 100644
--- a/lib/private/AppFramework/Middleware/MiddlewareDispatcher.php
+++ b/lib/private/AppFramework/Middleware/MiddlewareDispatcher.php
@@ -1,8 +1,9 @@
<?php
/**
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Stefan Weil <sw@weilnetz.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Thomas Tanghus <thomas@tanghus.net>
*
diff --git a/lib/private/AppFramework/Middleware/Security/CORSMiddleware.php b/lib/private/AppFramework/Middleware/Security/CORSMiddleware.php
index 258119b326a..2b9a072e59a 100644
--- a/lib/private/AppFramework/Middleware/Security/CORSMiddleware.php
+++ b/lib/private/AppFramework/Middleware/Security/CORSMiddleware.php
@@ -1,8 +1,9 @@
<?php
/**
* @author Bernhard Posselt <dev@bernhard-posselt.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Stefan Weil <sw@weilnetz.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/AppFramework/Middleware/Security/Exceptions/AppNotEnabledException.php b/lib/private/AppFramework/Middleware/Security/Exceptions/AppNotEnabledException.php
index ce2d68054f2..986c30ac455 100644
--- a/lib/private/AppFramework/Middleware/Security/Exceptions/AppNotEnabledException.php
+++ b/lib/private/AppFramework/Middleware/Security/Exceptions/AppNotEnabledException.php
@@ -1,7 +1,8 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/AppFramework/Middleware/Security/Exceptions/CrossSiteRequestForgeryException.php b/lib/private/AppFramework/Middleware/Security/Exceptions/CrossSiteRequestForgeryException.php
index 251906bfca9..5b6e4ed4b93 100644
--- a/lib/private/AppFramework/Middleware/Security/Exceptions/CrossSiteRequestForgeryException.php
+++ b/lib/private/AppFramework/Middleware/Security/Exceptions/CrossSiteRequestForgeryException.php
@@ -1,7 +1,8 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/AppFramework/Middleware/Security/Exceptions/NotAdminException.php b/lib/private/AppFramework/Middleware/Security/Exceptions/NotAdminException.php
index 2a9fafa9f73..7ce1797059c 100644
--- a/lib/private/AppFramework/Middleware/Security/Exceptions/NotAdminException.php
+++ b/lib/private/AppFramework/Middleware/Security/Exceptions/NotAdminException.php
@@ -1,7 +1,8 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/AppFramework/Middleware/Security/Exceptions/NotLoggedInException.php b/lib/private/AppFramework/Middleware/Security/Exceptions/NotLoggedInException.php
index 54e78dc5a5b..17c62edbe32 100644
--- a/lib/private/AppFramework/Middleware/Security/Exceptions/NotLoggedInException.php
+++ b/lib/private/AppFramework/Middleware/Security/Exceptions/NotLoggedInException.php
@@ -1,7 +1,8 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/AppFramework/Middleware/Security/Exceptions/SecurityException.php b/lib/private/AppFramework/Middleware/Security/Exceptions/SecurityException.php
index c86614ec477..26671b76838 100644
--- a/lib/private/AppFramework/Middleware/Security/Exceptions/SecurityException.php
+++ b/lib/private/AppFramework/Middleware/Security/Exceptions/SecurityException.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
diff --git a/lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php b/lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php
index 2c2f46a59f4..a3ece262e10 100644
--- a/lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php
+++ b/lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php
@@ -1,8 +1,10 @@
<?php
/**
* @author Bernhard Posselt <dev@bernhard-posselt.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
+ * @author Stefan Weil <sw@weilnetz.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Thomas Tanghus <thomas@tanghus.net>
*
diff --git a/lib/private/AppFramework/Routing/RouteActionHandler.php b/lib/private/AppFramework/Routing/RouteActionHandler.php
index e8a7b8a1c61..14036d350a8 100644
--- a/lib/private/AppFramework/Routing/RouteActionHandler.php
+++ b/lib/private/AppFramework/Routing/RouteActionHandler.php
@@ -2,6 +2,7 @@
/**
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/AppFramework/Routing/RouteConfig.php b/lib/private/AppFramework/Routing/RouteConfig.php
index f2ec5c0c881..64179336020 100644
--- a/lib/private/AppFramework/Routing/RouteConfig.php
+++ b/lib/private/AppFramework/Routing/RouteConfig.php
@@ -5,6 +5,7 @@
* @author Patrick Paysant <ppaysant@linagora.com>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/AppFramework/Utility/SimpleContainer.php b/lib/private/AppFramework/Utility/SimpleContainer.php
index 78ded39735e..95287b89215 100644
--- a/lib/private/AppFramework/Utility/SimpleContainer.php
+++ b/lib/private/AppFramework/Utility/SimpleContainer.php
@@ -2,7 +2,7 @@
/**
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin McCorkell <robin@mccorkell.me.uk>
* @author Thomas Müller <thomas.mueller@tmit.eu>
diff --git a/lib/private/AppHelper.php b/lib/private/AppHelper.php
index c19ed2f5b67..4cfae435b52 100644
--- a/lib/private/AppHelper.php
+++ b/lib/private/AppHelper.php
@@ -1,7 +1,7 @@
<?php
/**
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/Archive/Archive.php b/lib/private/Archive/Archive.php
index b5286968a2f..f0b2a36407f 100644
--- a/lib/private/Archive/Archive.php
+++ b/lib/private/Archive/Archive.php
@@ -1,14 +1,15 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Christopher Schäpers <kondou@ts.unde.re>
* @author Felix Moeller <mail@felixmoeller.de>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/Archive/TAR.php b/lib/private/Archive/TAR.php
index d783e53d40c..7dcc2edbbcf 100644
--- a/lib/private/Archive/TAR.php
+++ b/lib/private/Archive/TAR.php
@@ -4,13 +4,13 @@
* @author Christian Weiske <cweiske@cweiske.de>
* @author Christopher Schäpers <kondou@ts.unde.re>
* @author Felix Moeller <mail@felixmoeller.de>
- * @author Frank Karlitschek <frank@owncloud.org>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Remco Brenninkmeijer <requist1@starmail.nl>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/Archive/ZIP.php b/lib/private/Archive/ZIP.php
index 2bc17507d32..a4b2cab2e6c 100644
--- a/lib/private/Archive/ZIP.php
+++ b/lib/private/Archive/ZIP.php
@@ -3,11 +3,12 @@
* @author Bart Visscher <bartv@thisnet.nl>
* @author Christopher Schäpers <kondou@ts.unde.re>
* @author Felix Moeller <mail@felixmoeller.de>
- * @author Frank Karlitschek <frank@owncloud.org>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
+ * @author Stefan Weil <sw@weilnetz.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/Authentication/Exceptions/InvalidTokenException.php b/lib/private/Authentication/Exceptions/InvalidTokenException.php
index 3e52d3b78f0..15b68693134 100644
--- a/lib/private/Authentication/Exceptions/InvalidTokenException.php
+++ b/lib/private/Authentication/Exceptions/InvalidTokenException.php
@@ -1,5 +1,4 @@
<?php
-
/**
* @author Christoph Wurst <christoph@owncloud.com>
*
diff --git a/lib/private/Authentication/Exceptions/LoginRequiredException.php b/lib/private/Authentication/Exceptions/LoginRequiredException.php
new file mode 100644
index 00000000000..318eaedb72d
--- /dev/null
+++ b/lib/private/Authentication/Exceptions/LoginRequiredException.php
@@ -0,0 +1,28 @@
+<?php
+/**
+ * @author Christoph Wurst <christoph@owncloud.com>
+ *
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OC\Authentication\Exceptions;
+
+use Exception;
+
+class LoginRequiredException extends Exception {
+
+}
diff --git a/lib/private/Authentication/Exceptions/TwoFactorAuthRequiredException.php b/lib/private/Authentication/Exceptions/TwoFactorAuthRequiredException.php
new file mode 100644
index 00000000000..445c4d6268f
--- /dev/null
+++ b/lib/private/Authentication/Exceptions/TwoFactorAuthRequiredException.php
@@ -0,0 +1,28 @@
+<?php
+/**
+ * @author Christoph Wurst <christoph@owncloud.com>
+ *
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OC\Authentication\Exceptions;
+
+use Exception;
+
+class TwoFactorAuthRequiredException extends Exception {
+
+}
diff --git a/lib/private/Authentication/Exceptions/UserAlreadyLoggedInException.php b/lib/private/Authentication/Exceptions/UserAlreadyLoggedInException.php
new file mode 100644
index 00000000000..d5cdaaca9df
--- /dev/null
+++ b/lib/private/Authentication/Exceptions/UserAlreadyLoggedInException.php
@@ -0,0 +1,28 @@
+<?php
+/**
+ * @author Christoph Wurst <christoph@owncloud.com>
+ *
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OC\Authentication\Exceptions;
+
+use Exception;
+
+class UserAlreadyLoggedInException extends Exception {
+
+}
diff --git a/lib/private/Authentication/Token/DefaultToken.php b/lib/private/Authentication/Token/DefaultToken.php
index 08451a46151..4be43fada0d 100644
--- a/lib/private/Authentication/Token/DefaultToken.php
+++ b/lib/private/Authentication/Token/DefaultToken.php
@@ -1,5 +1,4 @@
<?php
-
/**
* @author Christoph Wurst <christoph@owncloud.com>
*
@@ -27,8 +26,9 @@ use OCP\AppFramework\Db\Entity;
/**
* @method void setId(int $id)
* @method void setUid(string $uid);
+ * @method void setLoginName(string $loginName)
+ * @method string getLoginName()
* @method void setPassword(string $password)
- * @method string getPassword()
* @method void setName(string $name)
* @method string getName()
* @method void setToken(string $token)
@@ -46,6 +46,11 @@ class DefaultToken extends Entity implements IToken {
protected $uid;
/**
+ * @var string login name used for generating the token
+ */
+ protected $loginName;
+
+ /**
* @var string encrypted user password
*/
protected $password;
@@ -77,7 +82,16 @@ class DefaultToken extends Entity implements IToken {
public function getUID() {
return $this->uid;
}
-
+
+ /**
+ * Get the login name used when generating the token
+ *
+ * @return string
+ */
+ public function getLoginName() {
+ return parent::getLoginName();
+ }
+
/**
* Get the (encrypted) login password
*
@@ -87,4 +101,13 @@ class DefaultToken extends Entity implements IToken {
return parent::getPassword();
}
+ public function jsonSerialize() {
+ return [
+ 'id' => $this->id,
+ 'name' => $this->name,
+ 'lastActivity' => $this->lastActivity,
+ 'type' => $this->type,
+ ];
+ }
+
}
diff --git a/lib/private/Authentication/Token/DefaultTokenCleanupJob.php b/lib/private/Authentication/Token/DefaultTokenCleanupJob.php
index 4d1290eb623..04b98c6c5a0 100644
--- a/lib/private/Authentication/Token/DefaultTokenCleanupJob.php
+++ b/lib/private/Authentication/Token/DefaultTokenCleanupJob.php
@@ -1,5 +1,4 @@
<?php
-
/**
* @author Christoph Wurst <christoph@owncloud.com>
*
diff --git a/lib/private/Authentication/Token/DefaultTokenMapper.php b/lib/private/Authentication/Token/DefaultTokenMapper.php
index 9f173571270..c56a513b94c 100644
--- a/lib/private/Authentication/Token/DefaultTokenMapper.php
+++ b/lib/private/Authentication/Token/DefaultTokenMapper.php
@@ -1,5 +1,4 @@
<?php
-
/**
* @author Christoph Wurst <christoph@owncloud.com>
*
@@ -71,7 +70,7 @@ class DefaultTokenMapper extends Mapper {
public function getToken($token) {
/* @var $qb IQueryBuilder */
$qb = $this->db->getQueryBuilder();
- $result = $qb->select('id', 'uid', 'password', 'name', 'type', 'token', 'last_activity')
+ $result = $qb->select('id', 'uid', 'login_name', 'password', 'name', 'type', 'token', 'last_activity')
->from('authtoken')
->where($qb->expr()->eq('token', $qb->createParameter('token')))
->setParameter('token', $token)
@@ -96,7 +95,7 @@ class DefaultTokenMapper extends Mapper {
public function getTokenByUser(IUser $user) {
/* @var $qb IQueryBuilder */
$qb = $this->db->getQueryBuilder();
- $qb->select('id', 'uid', 'password', 'name', 'type', 'token', 'last_activity')
+ $qb->select('id', 'uid', 'login_name', 'password', 'name', 'type', 'token', 'last_activity')
->from('authtoken')
->where($qb->expr()->eq('uid', $qb->createNamedParameter($user->getUID())))
->setMaxResults(1000);
@@ -111,4 +110,17 @@ class DefaultTokenMapper extends Mapper {
return $entities;
}
+ /**
+ * @param IUser $user
+ * @param int $id
+ */
+ public function deleteById(IUser $user, $id) {
+ /* @var $qb IQueryBuilder */
+ $qb = $this->db->getQueryBuilder();
+ $qb->delete('authtoken')
+ ->where($qb->expr()->eq('id', $qb->createNamedParameter($id)))
+ ->andWhere($qb->expr()->eq('uid', $qb->createNamedParameter($user->getUID())));
+ $qb->execute();
+ }
+
}
diff --git a/lib/private/Authentication/Token/DefaultTokenProvider.php b/lib/private/Authentication/Token/DefaultTokenProvider.php
index 6c69d852d7b..dd6e264ed3d 100644
--- a/lib/private/Authentication/Token/DefaultTokenProvider.php
+++ b/lib/private/Authentication/Token/DefaultTokenProvider.php
@@ -1,5 +1,4 @@
<?php
-
/**
* @author Christoph Wurst <christoph@owncloud.com>
*
@@ -68,14 +67,16 @@ class DefaultTokenProvider implements IProvider {
*
* @param string $token
* @param string $uid
+ * @param string $loginName
* @param string $password
* @param string $name
* @param int $type token type
- * @return DefaultToken
+ * @return IToken
*/
- public function generateToken($token, $uid, $password, $name, $type = IToken::TEMPORARY_TOKEN) {
+ public function generateToken($token, $uid, $loginName, $password, $name, $type = IToken::TEMPORARY_TOKEN) {
$dbToken = new DefaultToken();
$dbToken->setUid($uid);
+ $dbToken->setLoginName($loginName);
$dbToken->setPassword($this->encryptPassword($password, $token));
$dbToken->setName($name);
$dbToken->setToken($this->hashToken($token));
@@ -134,6 +135,7 @@ class DefaultTokenProvider implements IProvider {
/**
* @param IToken $savedToken
* @param string $tokenId session token
+ * @throws InvalidTokenException
* @return string
*/
public function getPassword(IToken $savedToken, $tokenId) {
@@ -150,6 +152,16 @@ class DefaultTokenProvider implements IProvider {
}
/**
+ * Invalidate (delete) the given token
+ *
+ * @param IUser $user
+ * @param int $id
+ */
+ public function invalidateTokenById(IUser $user, $id) {
+ $this->mapper->deleteById($user, $id);
+ }
+
+ /**
* Invalidate (delete) old session tokens
*/
public function invalidateOldTokens() {
@@ -203,6 +215,7 @@ class DefaultTokenProvider implements IProvider {
*
* @param string $password
* @param string $token
+ * @throws InvalidTokenException
* @return string the decrypted key
*/
private function decryptPassword($password, $token) {
diff --git a/lib/private/Authentication/Token/IProvider.php b/lib/private/Authentication/Token/IProvider.php
index a5c5faa5639..bdfde62d320 100644
--- a/lib/private/Authentication/Token/IProvider.php
+++ b/lib/private/Authentication/Token/IProvider.php
@@ -1,5 +1,4 @@
<?php
-
/**
* @author Christoph Wurst <christoph@owncloud.com>
*
@@ -32,12 +31,13 @@ interface IProvider {
*
* @param string $token
* @param string $uid
+ * @param string $loginName
* @param string $password
* @param string $name
* @param int $type token type
- * @return DefaultToken
+ * @return IToken
*/
- public function generateToken($token, $uid, $password, $name, $type = IToken::TEMPORARY_TOKEN);
+ public function generateToken($token, $uid, $loginName, $password, $name, $type = IToken::TEMPORARY_TOKEN);
/**
* Get a token by token id
@@ -47,7 +47,7 @@ interface IProvider {
* @return IToken
*/
public function getToken($tokenId) ;
-
+
/**
* @param string $token
* @throws InvalidTokenException
@@ -63,6 +63,14 @@ interface IProvider {
public function invalidateToken($token);
/**
+ * Invalidate (delete) the given token
+ *
+ * @param IUser $user
+ * @param int $id
+ */
+ public function invalidateTokenById(IUser $user, $id);
+
+ /**
* Update token activity timestamp
*
* @param IToken $token
@@ -85,6 +93,7 @@ interface IProvider {
*
* @param IToken $token
* @param string $tokenId
+ * @throws InvalidTokenException
* @return string
*/
public function getPassword(IToken $token, $tokenId);
diff --git a/lib/private/Authentication/Token/IToken.php b/lib/private/Authentication/Token/IToken.php
index 2a01ea75ea9..a34bdc2c43d 100644
--- a/lib/private/Authentication/Token/IToken.php
+++ b/lib/private/Authentication/Token/IToken.php
@@ -1,5 +1,4 @@
<?php
-
/**
* @author Christoph Wurst <christoph@owncloud.com>
*
@@ -22,7 +21,9 @@
namespace OC\Authentication\Token;
-interface IToken {
+use JsonSerializable;
+
+interface IToken extends JsonSerializable {
const TEMPORARY_TOKEN = 0;
const PERMANENT_TOKEN = 1;
@@ -30,7 +31,7 @@ interface IToken {
/**
* Get the token ID
*
- * @return string
+ * @return int
*/
public function getId();
@@ -42,6 +43,13 @@ interface IToken {
public function getUID();
/**
+ * Get the login name used when generating the token
+ *
+ * @return string
+ */
+ public function getLoginName();
+
+ /**
* Get the (encrypted) login password
*
* @return string
diff --git a/lib/private/Authentication/TwoFactorAuth/Manager.php b/lib/private/Authentication/TwoFactorAuth/Manager.php
new file mode 100644
index 00000000000..2b2924e7f14
--- /dev/null
+++ b/lib/private/Authentication/TwoFactorAuth/Manager.php
@@ -0,0 +1,165 @@
+<?php
+/**
+ * @author Christoph Wurst <christoph@owncloud.com>
+ *
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OC\Authentication\TwoFactorAuth;
+
+use OC;
+use OC\App\AppManager;
+use OCP\AppFramework\QueryException;
+use OCP\Authentication\TwoFactorAuth\IProvider;
+use OCP\IConfig;
+use OCP\ISession;
+use OCP\IUser;
+
+class Manager {
+
+ const SESSION_UID_KEY = 'two_factor_auth_uid';
+
+ /** @var AppManager */
+ private $appManager;
+
+ /** @var ISession */
+ private $session;
+
+ /** @var IConfig */
+ private $config;
+
+ /**
+ * @param AppManager $appManager
+ * @param ISession $session
+ * @param IConfig $config
+ */
+ public function __construct(AppManager $appManager, ISession $session, IConfig $config) {
+ $this->appManager = $appManager;
+ $this->session = $session;
+ $this->config = $config;
+ }
+
+ /**
+ * Determine whether the user must provide a second factor challenge
+ *
+ * @param IUser $user
+ * @return boolean
+ */
+ public function isTwoFactorAuthenticated(IUser $user) {
+ $twoFactorEnabled = ((int) $this->config->getUserValue($user->getUID(), 'core', 'two_factor_auth_disabled', 0)) === 0;
+ return $twoFactorEnabled && count($this->getProviders($user)) > 0;
+ }
+
+ /**
+ * Disable 2FA checks for the given user
+ *
+ * @param IUser $user
+ */
+ public function disableTwoFactorAuthentication(IUser $user) {
+ $this->config->setUserValue($user->getUID(), 'core', 'two_factor_auth_disabled', 1);
+ }
+
+ /**
+ * Enable all 2FA checks for the given user
+ *
+ * @param IUser $user
+ */
+ public function enableTwoFactorAuthentication(IUser $user) {
+ $this->config->deleteUserValue($user->getUID(), 'core', 'two_factor_auth_disabled');
+ }
+
+ /**
+ * Get a 2FA provider by its ID
+ *
+ * @param IUser $user
+ * @param string $challengeProviderId
+ * @return IProvider|null
+ */
+ public function getProvider(IUser $user, $challengeProviderId) {
+ $providers = $this->getProviders($user);
+ return isset($providers[$challengeProviderId]) ? $providers[$challengeProviderId] : null;
+ }
+
+ /**
+ * Get the list of 2FA providers for the given user
+ *
+ * @param IUser $user
+ * @return IProvider[]
+ */
+ public function getProviders(IUser $user) {
+ $allApps = $this->appManager->getEnabledAppsForUser($user);
+ $providers = [];
+
+ foreach ($allApps as $appId) {
+ $info = $this->appManager->getAppInfo($appId);
+ $providerClasses = $info['two-factor-providers'];
+ foreach ($providerClasses as $class) {
+ try {
+ $provider = OC::$server->query($class);
+ $providers[$provider->getId()] = $provider;
+ } catch (QueryException $exc) {
+ // Provider class can not be resolved, ignore it
+ }
+ }
+ }
+
+ return array_filter($providers, function ($provider) use ($user) {
+ /* @var $provider IProvider */
+ return $provider->isTwoFactorAuthEnabledForUser($user);
+ });
+ }
+
+ /**
+ * Verify the given challenge
+ *
+ * @param string $providerId
+ * @param IUser $user
+ * @param string $challenge
+ * @return boolean
+ */
+ public function verifyChallenge($providerId, IUser $user, $challenge) {
+ $provider = $this->getProvider($user, $providerId);
+ if (is_null($provider)) {
+ return false;
+ }
+
+ $result = $provider->verifyChallenge($user, $challenge);
+ if ($result) {
+ $this->session->remove(self::SESSION_UID_KEY);
+ }
+ return $result;
+ }
+
+ /**
+ * Check if the currently logged in user needs to pass 2FA
+ *
+ * @return boolean
+ */
+ public function needsSecondFactor() {
+ return $this->session->exists(self::SESSION_UID_KEY);
+ }
+
+ /**
+ * Prepare the 2FA login (set session value)
+ *
+ * @param IUser $user
+ */
+ public function prepareTwoFactorLogin(IUser $user) {
+ $this->session->set(self::SESSION_UID_KEY, $user->getUID());
+ }
+
+}
diff --git a/lib/private/Avatar.php b/lib/private/Avatar.php
index 3f8038360a4..a319d46d82c 100644
--- a/lib/private/Avatar.php
+++ b/lib/private/Avatar.php
@@ -1,8 +1,8 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Christopher Schäpers <kondou@ts.unde.re>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Roeland Jago Douma <rullzer@owncloud.com>
diff --git a/lib/private/AvatarManager.php b/lib/private/AvatarManager.php
index 62f4faf436c..7eb91b4999e 100644
--- a/lib/private/AvatarManager.php
+++ b/lib/private/AvatarManager.php
@@ -1,8 +1,9 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Robin Appelman <icewind@owncloud.com>
* @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
diff --git a/lib/private/Cache/File.php b/lib/private/Cache/File.php
index 38f88959bd7..a75f2713126 100644
--- a/lib/private/Cache/File.php
+++ b/lib/private/Cache/File.php
@@ -1,7 +1,7 @@
<?php
/**
* @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
diff --git a/lib/private/Comments/Comment.php b/lib/private/Comments/Comment.php
index 60663d61578..4a301e4047e 100644
--- a/lib/private/Comments/Comment.php
+++ b/lib/private/Comments/Comment.php
@@ -1,6 +1,7 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Joas Schilling <nickvergessen@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/Comments/Manager.php b/lib/private/Comments/Manager.php
index b986c8c51f9..2b45e01a2d7 100644
--- a/lib/private/Comments/Manager.php
+++ b/lib/private/Comments/Manager.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
diff --git a/lib/private/Comments/ManagerFactory.php b/lib/private/Comments/ManagerFactory.php
index 044463d1e96..af3d386c8f3 100644
--- a/lib/private/Comments/ManagerFactory.php
+++ b/lib/private/Comments/ManagerFactory.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
diff --git a/lib/private/Config.php b/lib/private/Config.php
index 9bb5c299463..3cff3ca960d 100644
--- a/lib/private/Config.php
+++ b/lib/private/Config.php
@@ -4,11 +4,11 @@
* @author Aldo "xoen" Giambelluca <xoen@xoen.org>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Brice Maron <brice@bmaron.net>
- * @author Frank Karlitschek <frank@owncloud.org>
+ * @author Frank Karlitschek <frank@karlitschek.de>
* @author Jakob Sack <mail@jakobsack.de>
* @author Jan-Christoph Borchardt <hey@jancborchardt.net>
* @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
diff --git a/lib/private/Console/Application.php b/lib/private/Console/Application.php
index dd5111743f1..ec91064278e 100644
--- a/lib/private/Console/Application.php
+++ b/lib/private/Console/Application.php
@@ -1,7 +1,7 @@
<?php
/**
* @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin McCorkell <robin@mccorkell.me.uk>
* @author Thomas Müller <thomas.mueller@tmit.eu>
diff --git a/lib/private/DB/AdapterMySQL.php b/lib/private/DB/AdapterMySQL.php
index 8504fc74e0f..8ddd8f5fc30 100644
--- a/lib/private/DB/AdapterMySQL.php
+++ b/lib/private/DB/AdapterMySQL.php
@@ -1,5 +1,6 @@
<?php
/**
+ * @author Joas Schilling <nickvergessen@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
*
diff --git a/lib/private/DB/Connection.php b/lib/private/DB/Connection.php
index 5b7026db2f3..9d2482010a1 100644
--- a/lib/private/DB/Connection.php
+++ b/lib/private/DB/Connection.php
@@ -5,6 +5,7 @@
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/DB/MDB2SchemaManager.php b/lib/private/DB/MDB2SchemaManager.php
index f73f6b4351a..1d25ae9f18c 100644
--- a/lib/private/DB/MDB2SchemaManager.php
+++ b/lib/private/DB/MDB2SchemaManager.php
@@ -2,7 +2,7 @@
/**
* @author Bart Visscher <bartv@thisnet.nl>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Roeland Jago Douma <rullzer@owncloud.com>
diff --git a/lib/private/DB/MySQLMigrator.php b/lib/private/DB/MySQLMigrator.php
index 1b3f70a817d..75e4fba4d41 100644
--- a/lib/private/DB/MySQLMigrator.php
+++ b/lib/private/DB/MySQLMigrator.php
@@ -3,6 +3,7 @@
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
+ * @author Victor Dubiniuk <dubiniuk@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
@@ -24,6 +25,7 @@
namespace OC\DB;
use Doctrine\DBAL\Schema\Schema;
+use Doctrine\DBAL\Schema\Table;
class MySQLMigrator extends Migrator {
/**
@@ -48,4 +50,26 @@ class MySQLMigrator extends Migrator {
return $schemaDiff;
}
+
+ /**
+ * Speed up migration test by disabling autocommit and unique indexes check
+ *
+ * @param \Doctrine\DBAL\Schema\Table $table
+ * @throws \OC\DB\MigrationException
+ */
+ protected function checkTableMigrate(Table $table) {
+ $this->connection->exec('SET autocommit=0');
+ $this->connection->exec('SET unique_checks=0');
+
+ try {
+ parent::checkTableMigrate($table);
+ } catch (\Exception $e) {
+ $this->connection->exec('SET unique_checks=1');
+ $this->connection->exec('SET autocommit=1');
+ throw new MigrationException($table->getName(), $e->getMessage());
+ }
+ $this->connection->exec('SET unique_checks=1');
+ $this->connection->exec('SET autocommit=1');
+ }
+
}
diff --git a/lib/private/DB/OracleConnection.php b/lib/private/DB/OracleConnection.php
index a95f37a8e6c..8b7daf1e0bd 100644
--- a/lib/private/DB/OracleConnection.php
+++ b/lib/private/DB/OracleConnection.php
@@ -1,7 +1,7 @@
<?php
/**
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
*
diff --git a/lib/private/Encryption/DecryptAll.php b/lib/private/Encryption/DecryptAll.php
index 7a965a5f227..8676bc09575 100644
--- a/lib/private/Encryption/DecryptAll.php
+++ b/lib/private/Encryption/DecryptAll.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
@@ -133,6 +133,7 @@ class DecryptAll {
/**
* iterate over all user and encrypt their files
+ *
* @param string $user which users files should be decrypted, default = all users
*/
protected function decryptAllUsersFiles($user = '') {
@@ -200,9 +201,9 @@ class DecryptAll {
$this->setupUserFS($uid);
$directories = array();
- $directories[] = '/' . $uid . '/files';
+ $directories[] = '/' . $uid . '/files';
- while($root = array_pop($directories)) {
+ while ($root = array_pop($directories)) {
$content = $this->rootView->getDirectoryContent($root);
foreach ($content as $file) {
$path = $root . '/' . $file['name'];
@@ -213,9 +214,14 @@ class DecryptAll {
try {
$progress->setMessage("decrypt files for user $userCount: $path");
$progress->advance();
- if ($this->decryptFile($path) === false) {
+ if ($file->isEncrypted() === false) {
$progress->setMessage("decrypt files for user $userCount: $path (already decrypted)");
$progress->advance();
+ } else {
+ if ($this->decryptFile($path) === false) {
+ $progress->setMessage("decrypt files for user $userCount: $path (already decrypted)");
+ $progress->advance();
+ }
}
} catch (\Exception $e) {
if (isset($this->failed[$uid])) {
diff --git a/lib/private/Encryption/EncryptionWrapper.php b/lib/private/Encryption/EncryptionWrapper.php
index 11beb0cd6b1..36a9ada0c0e 100644
--- a/lib/private/Encryption/EncryptionWrapper.php
+++ b/lib/private/Encryption/EncryptionWrapper.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Encryption/Exceptions/EncryptionHeaderKeyExistsException.php b/lib/private/Encryption/Exceptions/EncryptionHeaderKeyExistsException.php
index ab1a166018c..c932c78a128 100644
--- a/lib/private/Encryption/Exceptions/EncryptionHeaderKeyExistsException.php
+++ b/lib/private/Encryption/Exceptions/EncryptionHeaderKeyExistsException.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/Encryption/Exceptions/ModuleAlreadyExistsException.php b/lib/private/Encryption/Exceptions/ModuleAlreadyExistsException.php
index fcd08679acc..88cffc63291 100644
--- a/lib/private/Encryption/Exceptions/ModuleAlreadyExistsException.php
+++ b/lib/private/Encryption/Exceptions/ModuleAlreadyExistsException.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/Encryption/Exceptions/ModuleDoesNotExistsException.php b/lib/private/Encryption/Exceptions/ModuleDoesNotExistsException.php
index 282c9ec080b..7981ee7cd5c 100644
--- a/lib/private/Encryption/Exceptions/ModuleDoesNotExistsException.php
+++ b/lib/private/Encryption/Exceptions/ModuleDoesNotExistsException.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/Encryption/File.php b/lib/private/Encryption/File.php
index ec55c2cea00..2bd9fb02100 100644
--- a/lib/private/Encryption/File.php
+++ b/lib/private/Encryption/File.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/Encryption/HookManager.php b/lib/private/Encryption/HookManager.php
index 0bc42ec8159..c602dccacc2 100644
--- a/lib/private/Encryption/HookManager.php
+++ b/lib/private/Encryption/HookManager.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/Encryption/Keys/Storage.php b/lib/private/Encryption/Keys/Storage.php
index 47360f45aa5..f977cd4aab2 100644
--- a/lib/private/Encryption/Keys/Storage.php
+++ b/lib/private/Encryption/Keys/Storage.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
diff --git a/lib/private/Encryption/Manager.php b/lib/private/Encryption/Manager.php
index 8714d161807..21b2e2f4099 100644
--- a/lib/private/Encryption/Manager.php
+++ b/lib/private/Encryption/Manager.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Jan-Christoph Borchardt <hey@jancborchardt.net>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
diff --git a/lib/private/Encryption/Update.php b/lib/private/Encryption/Update.php
index 62c23c1fe0c..37a2bb8679d 100644
--- a/lib/private/Encryption/Update.php
+++ b/lib/private/Encryption/Update.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
diff --git a/lib/private/Encryption/Util.php b/lib/private/Encryption/Util.php
index 9e0cfca830d..721869b4402 100644
--- a/lib/private/Encryption/Util.php
+++ b/lib/private/Encryption/Util.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Jan-Christoph Borchardt <hey@jancborchardt.net>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
diff --git a/lib/private/Files/Cache/Cache.php b/lib/private/Files/Cache/Cache.php
index 53467c278d2..813a2af6f6c 100644
--- a/lib/private/Files/Cache/Cache.php
+++ b/lib/private/Files/Cache/Cache.php
@@ -1,12 +1,12 @@
<?php
/**
* @author Andreas Fischer <bantu@owncloud.com>
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Florin Peter <github@florin-peter.de>
* @author Jens-Christian Fischer <jens-christian.fischer@switch.ch>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
diff --git a/lib/private/Files/Cache/HomeCache.php b/lib/private/Files/Cache/HomeCache.php
index ae92504ddd6..13eaf26a284 100644
--- a/lib/private/Files/Cache/HomeCache.php
+++ b/lib/private/Files/Cache/HomeCache.php
@@ -1,7 +1,7 @@
<?php
/**
* @author Andreas Fischer <bantu@owncloud.com>
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
diff --git a/lib/private/Files/Cache/Scanner.php b/lib/private/Files/Cache/Scanner.php
index 10bb5f33e08..e6bd118d5a5 100644
--- a/lib/private/Files/Cache/Scanner.php
+++ b/lib/private/Files/Cache/Scanner.php
@@ -1,16 +1,17 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
- * @author Björn Schießle <schiessle@owncloud.com>
- * @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Björn Schießle <bjoern@schiessle.org>
+ * @author Daniel Jagszent <daniel@jagszent.de>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Martin Mattel <martin.mattel@diemattels.at>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Owen Winkler <a_github@midnightcircus.com>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
*
@@ -302,7 +303,7 @@ class Scanner extends BasicEmitter implements IScanner {
}
$data = $this->scanFile($path, $reuse, -1, null, $lock);
if ($data and $data['mimetype'] === 'httpd/unix-directory') {
- $size = $this->scanChildren($path, $recursive, $reuse, $data, $lock);
+ $size = $this->scanChildren($path, $recursive, $reuse, $data['fileid'], $lock);
$data['size'] = $size;
}
if ($lock) {
@@ -341,7 +342,7 @@ class Scanner extends BasicEmitter implements IScanner {
if (is_resource($dh)) {
while (($file = readdir($dh)) !== false) {
if (!Filesystem::isIgnoredDir($file)) {
- $children[] = $file;
+ $children[] = trim(\OC\Files\Filesystem::normalizePath($file), '/');
}
}
}
@@ -371,14 +372,16 @@ class Scanner extends BasicEmitter implements IScanner {
$childQueue = $this->handleChildren($path, $recursive, $reuse, $folderId, $lock, $size);
foreach ($childQueue as $child => $childId) {
- $childSize = $this->scanChildren($child, self::SCAN_RECURSIVE, $reuse, $childId, $lock);
+ $childSize = $this->scanChildren($child, $recursive, $reuse, $childId, $lock);
if ($childSize === -1) {
$size = -1;
} else if ($size !== -1) {
$size += $childSize;
}
}
- $this->updateCache($path, array('size' => $size), $folderId);
+ if ($this->cacheActive) {
+ $this->cache->update($folderId, array('size' => $size));
+ }
$this->emit('\OC\Files\Cache\Scanner', 'postScanFolder', array($path, $this->storageId));
return $size;
}
@@ -402,6 +405,9 @@ class Scanner extends BasicEmitter implements IScanner {
if ($data) {
if ($data['mimetype'] === 'httpd/unix-directory' and $recursive === self::SCAN_RECURSIVE) {
$childQueue[$child] = $data['fileid'];
+ } else if ($data['mimetype'] === 'httpd/unix-directory' and $recursive === self::SCAN_RECURSIVE_INCOMPLETE and $data['size'] === -1) {
+ // only recurse into folders which aren't fully scanned
+ $childQueue[$child] = $data['fileid'];
} else if ($data['size'] === -1) {
$size = -1;
} else if ($size !== -1) {
@@ -469,8 +475,8 @@ class Scanner extends BasicEmitter implements IScanner {
} else {
$lastPath = null;
while (($path = $this->cache->getIncomplete()) !== false && $path !== $lastPath) {
- $this->runBackgroundScanJob(function () use ($path) {
- $this->scan($path, self::SCAN_RECURSIVE, self::REUSE_ETAG);
+ $this->runBackgroundScanJob(function() use ($path) {
+ $this->scan($path, self::SCAN_RECURSIVE_INCOMPLETE, self::REUSE_ETAG | self::REUSE_SIZE);
}, $path);
// FIXME: this won't proceed with the next item, needs revamping of getIncomplete()
// to make this possible
diff --git a/lib/private/Files/Cache/Updater.php b/lib/private/Files/Cache/Updater.php
index 9e4214ad72a..820941abae1 100644
--- a/lib/private/Files/Cache/Updater.php
+++ b/lib/private/Files/Cache/Updater.php
@@ -1,6 +1,7 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
+ * @author Daniel Jagszent <daniel@jagszent.de>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
diff --git a/lib/private/Files/Cache/Watcher.php b/lib/private/Files/Cache/Watcher.php
index 0cf6caf0c28..4a4c23c08b7 100644
--- a/lib/private/Files/Cache/Watcher.php
+++ b/lib/private/Files/Cache/Watcher.php
@@ -1,5 +1,6 @@
<?php
/**
+ * @author Daniel Jagszent <daniel@jagszent.de>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Vincent Petry <pvince81@owncloud.com>
diff --git a/lib/private/Files/Cache/Wrapper/CacheJail.php b/lib/private/Files/Cache/Wrapper/CacheJail.php
index d737d28fc80..858132930f2 100644
--- a/lib/private/Files/Cache/Wrapper/CacheJail.php
+++ b/lib/private/Files/Cache/Wrapper/CacheJail.php
@@ -1,8 +1,10 @@
<?php
/**
+ * @author Daniel Jagszent <daniel@jagszent.de>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/Files/Cache/Wrapper/CacheWrapper.php b/lib/private/Files/Cache/Wrapper/CacheWrapper.php
index a6e6e61b8c7..475e0e0e2dd 100644
--- a/lib/private/Files/Cache/Wrapper/CacheWrapper.php
+++ b/lib/private/Files/Cache/Wrapper/CacheWrapper.php
@@ -1,8 +1,11 @@
<?php
/**
+ * @author Daniel Jagszent <daniel@jagszent.de>
+ * @author Joas Schilling <nickvergessen@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
+ * @author Stefan Weil <sw@weilnetz.de>
* @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/Files/Config/UserMountCache.php b/lib/private/Files/Config/UserMountCache.php
index 05ca146f4be..edb1525b276 100644
--- a/lib/private/Files/Config/UserMountCache.php
+++ b/lib/private/Files/Config/UserMountCache.php
@@ -2,6 +2,7 @@
/**
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Robin Appelman <icewind@owncloud.com>
+ * @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Files/FileInfo.php b/lib/private/Files/FileInfo.php
index 5f32ad34bb3..9e87ee00111 100644
--- a/lib/private/Files/FileInfo.php
+++ b/lib/private/Files/FileInfo.php
@@ -1,7 +1,7 @@
<?php
/**
* @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
diff --git a/lib/private/Files/Filesystem.php b/lib/private/Files/Filesystem.php
index 70236773448..08621d160be 100644
--- a/lib/private/Files/Filesystem.php
+++ b/lib/private/Files/Filesystem.php
@@ -1,13 +1,12 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Christopher Schäpers <kondou@ts.unde.re>
* @author Florin Peter <github@florin-peter.de>
- * @author Georg Ehrke <georg@owncloud.com>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
diff --git a/lib/private/Files/Mount/Manager.php b/lib/private/Files/Mount/Manager.php
index ba4a7f8d910..d5238c467bf 100644
--- a/lib/private/Files/Mount/Manager.php
+++ b/lib/private/Files/Mount/Manager.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
diff --git a/lib/private/Files/Mount/MountPoint.php b/lib/private/Files/Mount/MountPoint.php
index 7b9294fc1e0..a25e8c3a57d 100644
--- a/lib/private/Files/Mount/MountPoint.php
+++ b/lib/private/Files/Mount/MountPoint.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
diff --git a/lib/private/Files/Mount/ObjectHomeMountProvider.php b/lib/private/Files/Mount/ObjectHomeMountProvider.php
index c910cf6bd45..c491a0c764d 100644
--- a/lib/private/Files/Mount/ObjectHomeMountProvider.php
+++ b/lib/private/Files/Mount/ObjectHomeMountProvider.php
@@ -1,6 +1,7 @@
<?php
/**
* @author Robin Appelman <icewind@owncloud.com>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
@@ -52,9 +53,27 @@ class ObjectHomeMountProvider implements IHomeMountProvider {
* @return \OCP\Files\Mount\IMountPoint[]
*/
public function getHomeMountForUser(IUser $user, IStorageFactory $loader) {
+
+ $config = $this->getMultiBucketObjectStoreConfig($user);
+ if ($config === null) {
+ $config = $this->getSingleBucketObjectStoreConfig($user);
+ }
+
+ if ($config === null) {
+ return null;
+ }
+
+ return new MountPoint('\OC\Files\ObjectStore\HomeObjectStoreStorage', '/' . $user->getUID(), $config['arguments'], $loader);
+ }
+
+ /**
+ * @param IUser $user
+ * @return array|null
+ */
+ private function getSingleBucketObjectStoreConfig(IUser $user) {
$config = $this->config->getSystemValue('objectstore');
if (!is_array($config)) {
- return null; //fall back to local home provider
+ return null;
}
// sanity checks
@@ -68,6 +87,49 @@ class ObjectHomeMountProvider implements IHomeMountProvider {
// instantiate object store implementation
$config['arguments']['objectstore'] = new $config['class']($config['arguments']);
- return new MountPoint('\OC\Files\ObjectStore\HomeObjectStoreStorage', '/' . $user->getUID(), $config['arguments'], $loader);
+ return $config;
+ }
+
+ /**
+ * @param IUser $user
+ * @return array|null
+ */
+ private function getMultiBucketObjectStoreConfig(IUser $user) {
+ $config = $this->config->getSystemValue('objectstore_multibucket');
+ if (!is_array($config)) {
+ return null;
+ }
+
+ // sanity checks
+ if (empty($config['class'])) {
+ \OCP\Util::writeLog('files', 'No class given for objectstore', \OCP\Util::ERROR);
+ }
+ if (!isset($config['arguments'])) {
+ $config['arguments'] = [];
+ }
+ $config['arguments']['user'] = $user;
+
+ $bucket = $this->config->getUserValue($user->getUID(), 'homeobjectstore', 'bucket', null);
+
+ if ($bucket === null) {
+ /*
+ * Use any provided bucket argument as prefix
+ * and add the mapping from username => bucket
+ */
+ if (!isset($config['arguments']['bucket'])) {
+ $config['arguments']['bucket'] = '';
+ }
+ $mapper = new \OC\Files\ObjectStore\Mapper($user);
+ $config['arguments']['bucket'] .= $mapper->getBucket();
+
+ $this->config->setUserValue($user->getUID(), 'homeobjectstore', 'bucket', $config['arguments']['bucket']);
+ } else {
+ $config['arguments']['bucket'] = $bucket;
+ }
+
+ // instantiate object store implementation
+ $config['arguments']['objectstore'] = new $config['class']($config['arguments']);
+
+ return $config;
}
}
diff --git a/lib/private/Files/Node/Root.php b/lib/private/Files/Node/Root.php
index 04866e60b87..476d3ef5fdd 100644
--- a/lib/private/Files/Node/Root.php
+++ b/lib/private/Files/Node/Root.php
@@ -6,6 +6,7 @@
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Roeland Jago Douma <rullzer@owncloud.com>
+ * @author Stefan Weil <sw@weilnetz.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Files/ObjectStore/HomeObjectStoreStorage.php b/lib/private/Files/ObjectStore/HomeObjectStoreStorage.php
index 6a330e2dab3..7960696a5d0 100644
--- a/lib/private/Files/ObjectStore/HomeObjectStoreStorage.php
+++ b/lib/private/Files/ObjectStore/HomeObjectStoreStorage.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
*
diff --git a/lib/private/Files/ObjectStore/Mapper.php b/lib/private/Files/ObjectStore/Mapper.php
new file mode 100644
index 00000000000..f0004f1f966
--- /dev/null
+++ b/lib/private/Files/ObjectStore/Mapper.php
@@ -0,0 +1,52 @@
+<?php
+/**
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
+ *
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+namespace OC\Files\ObjectStore;
+
+use OCP\IUser;
+
+/**
+ * Class Mapper
+ *
+ * @package OC\Files\ObjectStore
+ *
+ * Map a user to a bucket.
+ */
+class Mapper {
+ /** @var IUser */
+ private $user;
+
+ /**
+ * Mapper constructor.
+ *
+ * @param IUser $user
+ */
+ public function __construct(IUser $user) {
+ $this->user = $user;
+ }
+
+ /**
+ * @return string
+ */
+ public function getBucket() {
+ $hash = md5($this->user->getUID());
+ return substr($hash, 0, 3);
+ }
+} \ No newline at end of file
diff --git a/lib/private/Files/Storage/Common.php b/lib/private/Files/Storage/Common.php
index 6382dbd26b1..cec6a42a2c0 100644
--- a/lib/private/Files/Storage/Common.php
+++ b/lib/private/Files/Storage/Common.php
@@ -1,19 +1,21 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author hkjolhede <hkjolhede@gmail.com>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Martin Mattel <martin.mattel@diemattels.at>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Sam Tuke <mail@samtuke.com>
* @author scambra <sergio@entrecables.com>
+ * @author Stefan Weil <sw@weilnetz.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
*
diff --git a/lib/private/Files/Storage/DAV.php b/lib/private/Files/Storage/DAV.php
index 8eebea1f3ba..0d41b3bab02 100644
--- a/lib/private/Files/Storage/DAV.php
+++ b/lib/private/Files/Storage/DAV.php
@@ -1,11 +1,11 @@
<?php
/**
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Carlos Cerrillo <ccerrillo@gmail.com>
* @author Felix Moeller <mail@felixmoeller.de>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Philipp Kapfer <philipp.kapfer@gmx.at>
@@ -449,7 +449,16 @@ class DAV extends Common {
if ($this->file_exists($path)) {
try {
$this->statCache->remove($path);
- $this->client->proppatch($this->encodePath($path), array('{DAV:}lastmodified' => $mtime));
+ $this->client->proppatch($this->encodePath($path), ['{DAV:}lastmodified' => $mtime]);
+ // non-owncloud clients might not have accepted the property, need to recheck it
+ $response = $this->client->propfind($this->encodePath($path), ['{DAV:}getlastmodified'], 0);
+ if (isset($response['{DAV:}getlastmodified'])) {
+ $remoteMtime = strtotime($response['{DAV:}getlastmodified']);
+ if ($remoteMtime !== $mtime) {
+ // server has not accepted the mtime
+ return false;
+ }
+ }
} catch (ClientHttpException $e) {
if ($e->getHttpStatus() === 501) {
return false;
@@ -506,13 +515,18 @@ class DAV extends Common {
$path1 = $this->cleanPath($path1);
$path2 = $this->cleanPath($path2);
try {
+ // overwrite directory ?
+ if ($this->is_dir($path2)) {
+ // needs trailing slash in destination
+ $path2 = rtrim($path2, '/') . '/';
+ }
$this->client->request(
'MOVE',
$this->encodePath($path1),
null,
- array(
- 'Destination' => $this->createBaseUri() . $this->encodePath($path2)
- )
+ [
+ 'Destination' => $this->createBaseUri() . $this->encodePath($path2),
+ ]
);
$this->statCache->clear($path1 . '/');
$this->statCache->clear($path2 . '/');
@@ -530,10 +544,22 @@ class DAV extends Common {
/** {@inheritdoc} */
public function copy($path1, $path2) {
$this->init();
- $path1 = $this->encodePath($this->cleanPath($path1));
- $path2 = $this->createBaseUri() . $this->encodePath($this->cleanPath($path2));
+ $path1 = $this->cleanPath($path1);
+ $path2 = $this->cleanPath($path2);
try {
- $this->client->request('COPY', $path1, null, array('Destination' => $path2));
+ // overwrite directory ?
+ if ($this->is_dir($path2)) {
+ // needs trailing slash in destination
+ $path2 = rtrim($path2, '/') . '/';
+ }
+ $this->client->request(
+ 'COPY',
+ $this->encodePath($path1),
+ null,
+ [
+ 'Destination' => $this->createBaseUri() . $this->encodePath($path2),
+ ]
+ );
$this->statCache->clear($path2 . '/');
$this->statCache->set($path2, true);
$this->removeCachedFile($path2);
diff --git a/lib/private/Files/Storage/FailedStorage.php b/lib/private/Files/Storage/FailedStorage.php
index df7f76856d5..223fa6a728e 100644
--- a/lib/private/Files/Storage/FailedStorage.php
+++ b/lib/private/Files/Storage/FailedStorage.php
@@ -2,6 +2,7 @@
/**
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
+ * @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Files/Storage/Home.php b/lib/private/Files/Storage/Home.php
index 19ba217fa42..2085384d5a1 100644
--- a/lib/private/Files/Storage/Home.php
+++ b/lib/private/Files/Storage/Home.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
diff --git a/lib/private/Files/Storage/Local.php b/lib/private/Files/Storage/Local.php
index 03aaf1e0a8b..b07e26a3358 100644
--- a/lib/private/Files/Storage/Local.php
+++ b/lib/private/Files/Storage/Local.php
@@ -10,6 +10,7 @@
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Sjors van der Pluijm <sjors@desjors.nl>
+ * @author Stefan Weil <sw@weilnetz.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Tigran Mkrtchyan <tigran.mkrtchyan@desy.de>
* @author Vincent Petry <pvince81@owncloud.com>
diff --git a/lib/private/Files/Storage/LocalTempFileTrait.php b/lib/private/Files/Storage/LocalTempFileTrait.php
index 88f11e4e752..d4a006e39bd 100644
--- a/lib/private/Files/Storage/LocalTempFileTrait.php
+++ b/lib/private/Files/Storage/LocalTempFileTrait.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
diff --git a/lib/private/Files/Storage/PolyFill/CopyDirectory.php b/lib/private/Files/Storage/PolyFill/CopyDirectory.php
index d4cac117ade..aac4479cad6 100644
--- a/lib/private/Files/Storage/PolyFill/CopyDirectory.php
+++ b/lib/private/Files/Storage/PolyFill/CopyDirectory.php
@@ -2,6 +2,7 @@
/**
* @author Martin Mattel <martin.mattel@diemattels.at>
* @author Robin Appelman <icewind@owncloud.com>
+ * @author Stefan Weil <sw@weilnetz.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Files/Storage/Wrapper/Encoding.php b/lib/private/Files/Storage/Wrapper/Encoding.php
new file mode 100644
index 00000000000..0171dfe19b7
--- /dev/null
+++ b/lib/private/Files/Storage/Wrapper/Encoding.php
@@ -0,0 +1,533 @@
+<?php
+/**
+ * @author Vincent Petry <pvince81@owncloud.com>
+ *
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OC\Files\Storage\Wrapper;
+
+use OCP\ICache;
+use OC\Cache\CappedMemoryCache;
+
+/**
+ * Encoding wrapper that deals with file names that use unsupported encodings like NFD.
+ *
+ * When applied and a UTF-8 path name was given, the wrapper will first attempt to access
+ * the actual given name and then try its NFD form.
+ */
+class Encoding extends Wrapper {
+
+ /**
+ * @var ICache
+ */
+ private $namesCache;
+
+ /**
+ * @param array $parameters
+ */
+ public function __construct($parameters) {
+ $this->storage = $parameters['storage'];
+ $this->namesCache = new CappedMemoryCache();
+ }
+
+ /**
+ * Returns whether the given string is only made of ASCII characters
+ *
+ * @param string $str string
+ *
+ * @return bool true if the string is all ASCII, false otherwise
+ */
+ private function isAscii($str) {
+ return (bool) !preg_match('/[\\x80-\\xff]+/', $str);
+ }
+
+ /**
+ * Checks whether the given path exists in NFC or NFD form after checking
+ * each form for each path section and returns the correct form.
+ * If no existing path found, returns the path as it was given.
+ *
+ * @param string $fullPath path to check
+ *
+ * @return string original or converted path
+ */
+ private function findPathToUse($fullPath) {
+ $cachedPath = $this->namesCache[$fullPath];
+ if ($cachedPath !== null) {
+ return $cachedPath;
+ }
+
+ $sections = explode('/', $fullPath);
+ $path = '';
+ foreach ($sections as $section) {
+ $convertedPath = $this->findPathToUseLastSection($path, $section);
+ if ($convertedPath === null) {
+ // no point in continuing if the section was not found, use original path
+ return $fullPath;
+ }
+ $path = $convertedPath . '/';
+ }
+ $path = rtrim($path, '/');
+ return $path;
+ }
+
+ /**
+ * Checks whether the last path section of the given path exists in NFC or NFD form
+ * and returns the correct form. If no existing path found, returns null.
+ *
+ * @param string $basePath base path to check
+ * @param string $lastSection last section of the path to check for NFD/NFC variations
+ *
+ * @return string|null original or converted path, or null if none of the forms was found
+ */
+ private function findPathToUseLastSection($basePath, $lastSection) {
+ $fullPath = $basePath . $lastSection;
+ if ($lastSection === '' || $this->isAscii($lastSection) || $this->storage->file_exists($fullPath)) {
+ $this->namesCache[$fullPath] = $fullPath;
+ return $fullPath;
+ }
+
+ // swap encoding
+ if (\Normalizer::isNormalized($lastSection, \Normalizer::FORM_C)) {
+ $otherFormPath = \Normalizer::normalize($lastSection, \Normalizer::FORM_D);
+ } else {
+ $otherFormPath = \Normalizer::normalize($lastSection, \Normalizer::FORM_C);
+ }
+ $otherFullPath = $basePath . $otherFormPath;
+ if ($this->storage->file_exists($otherFullPath)) {
+ $this->namesCache[$fullPath] = $otherFullPath;
+ return $otherFullPath;
+ }
+
+ // return original path, file did not exist at all
+ $this->namesCache[$fullPath] = $fullPath;
+ return null;
+ }
+
+ /**
+ * see http://php.net/manual/en/function.mkdir.php
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function mkdir($path) {
+ // note: no conversion here, method should not be called with non-NFC names!
+ $result = $this->storage->mkdir($path);
+ if ($result) {
+ $this->namesCache[$path] = $path;
+ }
+ return $result;
+ }
+
+ /**
+ * see http://php.net/manual/en/function.rmdir.php
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function rmdir($path) {
+ $result = $this->storage->rmdir($this->findPathToUse($path));
+ if ($result) {
+ unset($this->namesCache[$path]);
+ }
+ return $result;
+ }
+
+ /**
+ * see http://php.net/manual/en/function.opendir.php
+ *
+ * @param string $path
+ * @return resource
+ */
+ public function opendir($path) {
+ return $this->storage->opendir($this->findPathToUse($path));
+ }
+
+ /**
+ * see http://php.net/manual/en/function.is_dir.php
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function is_dir($path) {
+ return $this->storage->is_dir($this->findPathToUse($path));
+ }
+
+ /**
+ * see http://php.net/manual/en/function.is_file.php
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function is_file($path) {
+ return $this->storage->is_file($this->findPathToUse($path));
+ }
+
+ /**
+ * see http://php.net/manual/en/function.stat.php
+ * only the following keys are required in the result: size and mtime
+ *
+ * @param string $path
+ * @return array
+ */
+ public function stat($path) {
+ return $this->storage->stat($this->findPathToUse($path));
+ }
+
+ /**
+ * see http://php.net/manual/en/function.filetype.php
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function filetype($path) {
+ return $this->storage->filetype($this->findPathToUse($path));
+ }
+
+ /**
+ * see http://php.net/manual/en/function.filesize.php
+ * The result for filesize when called on a folder is required to be 0
+ *
+ * @param string $path
+ * @return int
+ */
+ public function filesize($path) {
+ return $this->storage->filesize($this->findPathToUse($path));
+ }
+
+ /**
+ * check if a file can be created in $path
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function isCreatable($path) {
+ return $this->storage->isCreatable($this->findPathToUse($path));
+ }
+
+ /**
+ * check if a file can be read
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function isReadable($path) {
+ return $this->storage->isReadable($this->findPathToUse($path));
+ }
+
+ /**
+ * check if a file can be written to
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function isUpdatable($path) {
+ return $this->storage->isUpdatable($this->findPathToUse($path));
+ }
+
+ /**
+ * check if a file can be deleted
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function isDeletable($path) {
+ return $this->storage->isDeletable($this->findPathToUse($path));
+ }
+
+ /**
+ * check if a file can be shared
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function isSharable($path) {
+ return $this->storage->isSharable($this->findPathToUse($path));
+ }
+
+ /**
+ * get the full permissions of a path.
+ * Should return a combination of the PERMISSION_ constants defined in lib/public/constants.php
+ *
+ * @param string $path
+ * @return int
+ */
+ public function getPermissions($path) {
+ return $this->storage->getPermissions($this->findPathToUse($path));
+ }
+
+ /**
+ * see http://php.net/manual/en/function.file_exists.php
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function file_exists($path) {
+ return $this->storage->file_exists($this->findPathToUse($path));
+ }
+
+ /**
+ * see http://php.net/manual/en/function.filemtime.php
+ *
+ * @param string $path
+ * @return int
+ */
+ public function filemtime($path) {
+ return $this->storage->filemtime($this->findPathToUse($path));
+ }
+
+ /**
+ * see http://php.net/manual/en/function.file_get_contents.php
+ *
+ * @param string $path
+ * @return string
+ */
+ public function file_get_contents($path) {
+ return $this->storage->file_get_contents($this->findPathToUse($path));
+ }
+
+ /**
+ * see http://php.net/manual/en/function.file_put_contents.php
+ *
+ * @param string $path
+ * @param string $data
+ * @return bool
+ */
+ public function file_put_contents($path, $data) {
+ return $this->storage->file_put_contents($this->findPathToUse($path), $data);
+ }
+
+ /**
+ * see http://php.net/manual/en/function.unlink.php
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function unlink($path) {
+ $result = $this->storage->unlink($this->findPathToUse($path));
+ if ($result) {
+ unset($this->namesCache[$path]);
+ }
+ return $result;
+ }
+
+ /**
+ * see http://php.net/manual/en/function.rename.php
+ *
+ * @param string $path1
+ * @param string $path2
+ * @return bool
+ */
+ public function rename($path1, $path2) {
+ // second name always NFC
+ return $this->storage->rename($this->findPathToUse($path1), $this->findPathToUse($path2));
+ }
+
+ /**
+ * see http://php.net/manual/en/function.copy.php
+ *
+ * @param string $path1
+ * @param string $path2
+ * @return bool
+ */
+ public function copy($path1, $path2) {
+ return $this->storage->copy($this->findPathToUse($path1), $this->findPathToUse($path2));
+ }
+
+ /**
+ * see http://php.net/manual/en/function.fopen.php
+ *
+ * @param string $path
+ * @param string $mode
+ * @return resource
+ */
+ public function fopen($path, $mode) {
+ $result = $this->storage->fopen($this->findPathToUse($path), $mode);
+ if ($result && $mode !== 'r' && $mode !== 'rb') {
+ unset($this->namesCache[$path]);
+ }
+ return $result;
+ }
+
+ /**
+ * get the mimetype for a file or folder
+ * The mimetype for a folder is required to be "httpd/unix-directory"
+ *
+ * @param string $path
+ * @return string
+ */
+ public function getMimeType($path) {
+ return $this->storage->getMimeType($this->findPathToUse($path));
+ }
+
+ /**
+ * see http://php.net/manual/en/function.hash.php
+ *
+ * @param string $type
+ * @param string $path
+ * @param bool $raw
+ * @return string
+ */
+ public function hash($type, $path, $raw = false) {
+ return $this->storage->hash($type, $this->findPathToUse($path), $raw);
+ }
+
+ /**
+ * see http://php.net/manual/en/function.free_space.php
+ *
+ * @param string $path
+ * @return int
+ */
+ public function free_space($path) {
+ return $this->storage->free_space($this->findPathToUse($path));
+ }
+
+ /**
+ * search for occurrences of $query in file names
+ *
+ * @param string $query
+ * @return array
+ */
+ public function search($query) {
+ return $this->storage->search($query);
+ }
+
+ /**
+ * see http://php.net/manual/en/function.touch.php
+ * If the backend does not support the operation, false should be returned
+ *
+ * @param string $path
+ * @param int $mtime
+ * @return bool
+ */
+ public function touch($path, $mtime = null) {
+ return $this->storage->touch($this->findPathToUse($path), $mtime);
+ }
+
+ /**
+ * get the path to a local version of the file.
+ * The local version of the file can be temporary and doesn't have to be persistent across requests
+ *
+ * @param string $path
+ * @return string
+ */
+ public function getLocalFile($path) {
+ return $this->storage->getLocalFile($this->findPathToUse($path));
+ }
+
+ /**
+ * check if a file or folder has been updated since $time
+ *
+ * @param string $path
+ * @param int $time
+ * @return bool
+ *
+ * hasUpdated for folders should return at least true if a file inside the folder is add, removed or renamed.
+ * returning true for other changes in the folder is optional
+ */
+ public function hasUpdated($path, $time) {
+ return $this->storage->hasUpdated($this->findPathToUse($path), $time);
+ }
+
+ /**
+ * get a cache instance for the storage
+ *
+ * @param string $path
+ * @param \OC\Files\Storage\Storage (optional) the storage to pass to the cache
+ * @return \OC\Files\Cache\Cache
+ */
+ public function getCache($path = '', $storage = null) {
+ if (!$storage) {
+ $storage = $this;
+ }
+ return $this->storage->getCache($this->findPathToUse($path), $storage);
+ }
+
+ /**
+ * get a scanner instance for the storage
+ *
+ * @param string $path
+ * @param \OC\Files\Storage\Storage (optional) the storage to pass to the scanner
+ * @return \OC\Files\Cache\Scanner
+ */
+ public function getScanner($path = '', $storage = null) {
+ if (!$storage) {
+ $storage = $this;
+ }
+ return $this->storage->getScanner($this->findPathToUse($path), $storage);
+ }
+
+ /**
+ * get the ETag for a file or folder
+ *
+ * @param string $path
+ * @return string
+ */
+ public function getETag($path) {
+ return $this->storage->getETag($this->findPathToUse($path));
+ }
+
+ /**
+ * @param \OCP\Files\Storage $sourceStorage
+ * @param string $sourceInternalPath
+ * @param string $targetInternalPath
+ * @return bool
+ */
+ public function copyFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
+ if ($sourceStorage === $this) {
+ return $this->copy($sourceInternalPath, $this->findPathToUse($targetInternalPath));
+ }
+
+ $result = $this->storage->copyFromStorage($sourceStorage, $sourceInternalPath, $this->findPathToUse($targetInternalPath));
+ if ($result) {
+ unset($this->namesCache[$targetInternalPath]);
+ }
+ return $result;
+ }
+
+ /**
+ * @param \OCP\Files\Storage $sourceStorage
+ * @param string $sourceInternalPath
+ * @param string $targetInternalPath
+ * @return bool
+ */
+ public function moveFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
+ if ($sourceStorage === $this) {
+ $result = $this->rename($sourceInternalPath, $this->findPathToUse($targetInternalPath));
+ if ($result) {
+ unset($this->namesCache[$sourceInternalPath]);
+ unset($this->namesCache[$targetInternalPath]);
+ }
+ return $result;
+ }
+
+ $result = $this->storage->moveFromStorage($sourceStorage, $sourceInternalPath, $this->findPathToUse($targetInternalPath));
+ if ($result) {
+ unset($this->namesCache[$sourceInternalPath]);
+ unset($this->namesCache[$targetInternalPath]);
+ }
+ return $result;
+ }
+
+ /**
+ * @param string $path
+ * @return array
+ */
+ public function getMetaData($path) {
+ return $this->storage->getMetaData($this->findPathToUse($path));
+ }
+}
diff --git a/lib/private/Files/Storage/Wrapper/Encryption.php b/lib/private/Files/Storage/Wrapper/Encryption.php
index 02da978a700..f047464282d 100644
--- a/lib/private/Files/Storage/Wrapper/Encryption.php
+++ b/lib/private/Files/Storage/Wrapper/Encryption.php
@@ -1,8 +1,8 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
diff --git a/lib/private/Files/Storage/Wrapper/Jail.php b/lib/private/Files/Storage/Wrapper/Jail.php
index e8063f670c5..1df28e9a747 100644
--- a/lib/private/Files/Storage/Wrapper/Jail.php
+++ b/lib/private/Files/Storage/Wrapper/Jail.php
@@ -2,6 +2,7 @@
/**
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Files/Storage/Wrapper/PermissionsMask.php b/lib/private/Files/Storage/Wrapper/PermissionsMask.php
index 01dd78d418c..466b0a80e1c 100644
--- a/lib/private/Files/Storage/Wrapper/PermissionsMask.php
+++ b/lib/private/Files/Storage/Wrapper/PermissionsMask.php
@@ -4,6 +4,7 @@
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
+ * @author Stefan Weil <sw@weilnetz.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Files/Stream/Encryption.php b/lib/private/Files/Stream/Encryption.php
index 772c9769bf7..8eaee69afdf 100644
--- a/lib/private/Files/Stream/Encryption.php
+++ b/lib/private/Files/Stream/Encryption.php
@@ -1,8 +1,8 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author jknockaert <jasper@knockaert.nl>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
diff --git a/lib/private/Files/Type/Detection.php b/lib/private/Files/Type/Detection.php
index f106a98064f..6191eae2754 100644
--- a/lib/private/Files/Type/Detection.php
+++ b/lib/private/Files/Type/Detection.php
@@ -2,7 +2,7 @@
/**
* @author Andreas Fischer <bantu@owncloud.com>
* @author Jens-Christian Fischer <jens-christian.fischer@switch.ch>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
diff --git a/lib/private/Files/Utils/Scanner.php b/lib/private/Files/Utils/Scanner.php
index b013cbecabc..9b55c312e26 100644
--- a/lib/private/Files/Utils/Scanner.php
+++ b/lib/private/Files/Utils/Scanner.php
@@ -25,6 +25,7 @@
namespace OC\Files\Utils;
+use OC\Files\Cache\Cache;
use OC\Files\Filesystem;
use OC\ForbiddenException;
use OC\Hooks\PublicEmitter;
@@ -123,8 +124,20 @@ class Scanner extends PublicEmitter {
if ($mount->getStorage()->instanceOfStorage('\OC\Files\Storage\Local') && $mount->getMountPoint() === '/') {
continue;
}
- $scanner = $mount->getStorage()->getScanner();
+ $storage = $mount->getStorage();
+ $scanner = $storage->getScanner();
$this->attachListener($mount);
+
+ $scanner->listen('\OC\Files\Cache\Scanner', 'removeFromCache', function ($path) use ($storage) {
+ $this->triggerPropagator($storage, $path);
+ });
+ $scanner->listen('\OC\Files\Cache\Scanner', 'updateCache', function ($path) use ($storage) {
+ $this->triggerPropagator($storage, $path);
+ });
+ $scanner->listen('\OC\Files\Cache\Scanner', 'addToCache', function ($path) use ($storage) {
+ $this->triggerPropagator($storage, $path);
+ });
+
$scanner->backgroundScan();
}
}
@@ -170,6 +183,11 @@ class Scanner extends PublicEmitter {
}
try {
$scanner->scan($relativePath, \OC\Files\Cache\Scanner::SCAN_RECURSIVE, \OC\Files\Cache\Scanner::REUSE_ETAG | \OC\Files\Cache\Scanner::REUSE_SIZE);
+ $cache = $storage->getCache();
+ if ($cache instanceof Cache) {
+ // only re-calculate for the root folder we scanned, anything below that is taken care of by the scanner
+ $cache->correctFolderSize($relativePath);
+ }
} catch (StorageNotAvailableException $e) {
$this->logger->error('Storage ' . $storage->getId() . ' not available');
$this->logger->logException($e);
diff --git a/lib/private/Files/View.php b/lib/private/Files/View.php
index 22e53a00706..f738542ea8c 100644
--- a/lib/private/Files/View.php
+++ b/lib/private/Files/View.php
@@ -1,23 +1,26 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author cmeh <cmeh@users.noreply.github.com>
* @author Florin Peter <github@florin-peter.de>
* @author Jesús Macias <jmacias@solidgear.es>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Klaas Freitag <freitag@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Luke Policinski <lpolicinski@gmail.com>
* @author Martin Mattel <martin.mattel@diemattels.at>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Petr Svoboda <weits666@gmail.com>
+ * @author Piotr Filiciak <piotr@filiciak.pl>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
* @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Sam Tuke <mail@samtuke.com>
+ * @author Stefan Weil <sw@weilnetz.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Thomas Tanghus <thomas@tanghus.net>
* @author Vincent Petry <pvince81@owncloud.com>
@@ -53,6 +56,7 @@ use OCP\Files\InvalidCharacterInPathException;
use OCP\Files\InvalidPathException;
use OCP\Files\NotFoundException;
use OCP\Files\ReservedWordException;
+use OCP\Files\UnseekableException;
use OCP\Files\Storage\ILockingStorage;
use OCP\IUser;
use OCP\Lock\ILockingProvider;
@@ -425,6 +429,39 @@ class View {
/**
* @param string $path
+ * @param int $from
+ * @param int $to
+ * @return bool|mixed
+ * @throws \OCP\Files\InvalidPathException
+ * @throws \OCP\Files\UnseekableException
+ */
+ public function readfilePart($path, $from, $to) {
+ $this->assertPathLength($path);
+ @ob_end_clean();
+ $handle = $this->fopen($path, 'rb');
+ if ($handle) {
+ if (fseek($handle, $from) === 0) {
+ $chunkSize = 8192; // 8 kB chunks
+ $end = $to + 1;
+ while (!feof($handle) && ftell($handle) < $end) {
+ $len = $end-ftell($handle);
+ if ($len > $chunkSize) {
+ $len = $chunkSize;
+ }
+ echo fread($handle, $len);
+ flush();
+ }
+ $size = ftell($handle) - $from;
+ return $size;
+ }
+
+ throw new \OCP\Files\UnseekableException('fseek error');
+ }
+ return false;
+ }
+
+ /**
+ * @param string $path
* @return mixed
*/
public function isCreatable($path) {
diff --git a/lib/private/Group/Backend.php b/lib/private/Group/Backend.php
index 6dd5bdc3507..120c0d4d536 100644
--- a/lib/private/Group/Backend.php
+++ b/lib/private/Group/Backend.php
@@ -1,16 +1,6 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
- * @author Bart Visscher <bartv@thisnet.nl>
- * @author Jakob Sack <mail@jakobsack.de>
- * @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
- * @author Michael Gapczynski <GapczynskiM@gmail.com>
- * @author Morris Jobke <hey@morrisjobke.de>
- * @author Robin Appelman <icewind@owncloud.com>
- * @author Robin McCorkell <robin@mccorkell.me.uk>
- * @author Thomas Müller <thomas.mueller@tmit.eu>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Group/Database.php b/lib/private/Group/Database.php
index 9fefdd77300..36d19f74cc6 100644
--- a/lib/private/Group/Database.php
+++ b/lib/private/Group/Database.php
@@ -1,17 +1,6 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
- * @author Bart Visscher <bartv@thisnet.nl>
- * @author Jakob Sack <mail@jakobsack.de>
- * @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Michael Gapczynski <GapczynskiM@gmail.com>
- * @author michag86 <micha_g@arcor.de>
- * @author Morris Jobke <hey@morrisjobke.de>
- * @author Robin Appelman <icewind@owncloud.com>
- * @author Robin McCorkell <robin@mccorkell.me.uk>
* @author Roeland Jago Douma <rullzer@owncloud.com>
- * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Group/Group.php b/lib/private/Group/Group.php
index c42f53af9a6..96e73e3b68f 100644
--- a/lib/private/Group/Group.php
+++ b/lib/private/Group/Group.php
@@ -1,12 +1,12 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Group/Manager.php b/lib/private/Group/Manager.php
index 22367180edd..fb199be8afc 100644
--- a/lib/private/Group/Manager.php
+++ b/lib/private/Group/Manager.php
@@ -1,11 +1,11 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author macjohnny <estebanmarin@gmx.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
diff --git a/lib/private/Group/MetaData.php b/lib/private/Group/MetaData.php
index 8e0866479c1..7fe82ff3bcb 100644
--- a/lib/private/Group/MetaData.php
+++ b/lib/private/Group/MetaData.php
@@ -1,8 +1,8 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Stephan Peijnik <speijnik@anexia-it.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
diff --git a/lib/private/HTTPHelper.php b/lib/private/HTTPHelper.php
index f33d4a51745..448a2cfd818 100644
--- a/lib/private/HTTPHelper.php
+++ b/lib/private/HTTPHelper.php
@@ -1,7 +1,7 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/HintException.php b/lib/private/HintException.php
index aeddea481cc..05adc64dcd7 100644
--- a/lib/private/HintException.php
+++ b/lib/private/HintException.php
@@ -1,7 +1,7 @@
<?php
/**
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
diff --git a/lib/private/Http/Client/Client.php b/lib/private/Http/Client/Client.php
index 3f49b224d1e..f98da97a0a9 100644
--- a/lib/private/Http/Client/Client.php
+++ b/lib/private/Http/Client/Client.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Robin Appelman <icewind@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/Http/Client/ClientService.php b/lib/private/Http/Client/ClientService.php
index 7e280dbf3ca..39099e1afa9 100644
--- a/lib/private/Http/Client/ClientService.php
+++ b/lib/private/Http/Client/ClientService.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Http/Client/Response.php b/lib/private/Http/Client/Response.php
index 7a879eab111..ef041d4a341 100644
--- a/lib/private/Http/Client/Response.php
+++ b/lib/private/Http/Client/Response.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Robin Appelman <icewind@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/Installer.php b/lib/private/Installer.php
index 336fa0acef8..e8872c6662f 100644
--- a/lib/private/Installer.php
+++ b/lib/private/Installer.php
@@ -1,21 +1,21 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Brice Maron <brice@bmaron.net>
* @author Christian Weiske <cweiske@cweiske.de>
* @author Christopher Schäpers <kondou@ts.unde.re>
- * @author Frank Karlitschek <frank@owncloud.org>
+ * @author Frank Karlitschek <frank@karlitschek.de>
* @author Georg Ehrke <georg@owncloud.com>
* @author Jakob Sack <mail@jakobsack.de>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Kamil Domanski <kdomanski@kdemail.net>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author michag86 <micha_g@arcor.de>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
- * @author Robin McCorkell <robin@mccorkell.me.uk>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author root <root@oc.(none)>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Thomas Tanghus <thomas@tanghus.net>
diff --git a/lib/private/IntegrityCheck/Checker.php b/lib/private/IntegrityCheck/Checker.php
index c3d6aefb829..ab68f752206 100644
--- a/lib/private/IntegrityCheck/Checker.php
+++ b/lib/private/IntegrityCheck/Checker.php
@@ -1,6 +1,7 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/IntegrityCheck/Exceptions/InvalidSignatureException.php b/lib/private/IntegrityCheck/Exceptions/InvalidSignatureException.php
index 521171642b2..6cf8ba35e60 100644
--- a/lib/private/IntegrityCheck/Exceptions/InvalidSignatureException.php
+++ b/lib/private/IntegrityCheck/Exceptions/InvalidSignatureException.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/IntegrityCheck/Helpers/AppLocator.php b/lib/private/IntegrityCheck/Helpers/AppLocator.php
index af22fca1fe4..0ad2ea8b75d 100644
--- a/lib/private/IntegrityCheck/Helpers/AppLocator.php
+++ b/lib/private/IntegrityCheck/Helpers/AppLocator.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/IntegrityCheck/Helpers/EnvironmentHelper.php b/lib/private/IntegrityCheck/Helpers/EnvironmentHelper.php
index f56f07486c2..14ee1cc1d9d 100644
--- a/lib/private/IntegrityCheck/Helpers/EnvironmentHelper.php
+++ b/lib/private/IntegrityCheck/Helpers/EnvironmentHelper.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/IntegrityCheck/Helpers/FileAccessHelper.php b/lib/private/IntegrityCheck/Helpers/FileAccessHelper.php
index f0bf6576d35..30909b72d14 100644
--- a/lib/private/IntegrityCheck/Helpers/FileAccessHelper.php
+++ b/lib/private/IntegrityCheck/Helpers/FileAccessHelper.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/IntegrityCheck/Iterator/ExcludeFileByNameFilterIterator.php b/lib/private/IntegrityCheck/Iterator/ExcludeFileByNameFilterIterator.php
index 51850852cbd..1f31e849446 100644
--- a/lib/private/IntegrityCheck/Iterator/ExcludeFileByNameFilterIterator.php
+++ b/lib/private/IntegrityCheck/Iterator/ExcludeFileByNameFilterIterator.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php b/lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php
index 1082e97c296..c8db8022112 100644
--- a/lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php
+++ b/lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php
@@ -1,6 +1,7 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
+ * @author RealRancor <Fisch.666@gmx.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/L10N/Factory.php b/lib/private/L10N/Factory.php
index 08b92657a1b..f1f13e734a9 100644
--- a/lib/private/L10N/Factory.php
+++ b/lib/private/L10N/Factory.php
@@ -2,7 +2,7 @@
/**
* @author Bart Visscher <bartv@thisnet.nl>
* @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
diff --git a/lib/private/LargeFileHelper.php b/lib/private/LargeFileHelper.php
index f5252ee01e7..06e5003814f 100644
--- a/lib/private/LargeFileHelper.php
+++ b/lib/private/LargeFileHelper.php
@@ -1,7 +1,7 @@
<?php
/**
* @author Andreas Fischer <bantu@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Michael Roitzsch <reactorcontrol@icloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
diff --git a/lib/private/Lock/DBLockingProvider.php b/lib/private/Lock/DBLockingProvider.php
index 3a599a61e7d..ce4c28cab5b 100644
--- a/lib/private/Lock/DBLockingProvider.php
+++ b/lib/private/Lock/DBLockingProvider.php
@@ -1,9 +1,9 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
* @author Individual IT Services <info@individual-it.net>
- * @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Log.php b/lib/private/Log.php
index 9248070c067..6028064a878 100644
--- a/lib/private/Log.php
+++ b/lib/private/Log.php
@@ -2,10 +2,12 @@
/**
* @author Bart Visscher <bartv@thisnet.nl>
* @author Bernhard Posselt <dev@bernhard-posselt.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Olivier Paroz <github@oparoz.com>
* @author Robin Appelman <icewind@owncloud.com>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Victor Dubiniuk <dubiniuk@owncloud.com>
*
diff --git a/lib/private/Log/ErrorHandler.php b/lib/private/Log/ErrorHandler.php
index 8899bcfcb03..2a20d22b02a 100644
--- a/lib/private/Log/ErrorHandler.php
+++ b/lib/private/Log/ErrorHandler.php
@@ -1,7 +1,7 @@
<?php
/**
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
diff --git a/lib/private/Log/Owncloud.php b/lib/private/Log/Owncloud.php
index 13997a0d552..0a0902b7fa1 100644
--- a/lib/private/Log/Owncloud.php
+++ b/lib/private/Log/Owncloud.php
@@ -2,12 +2,13 @@
/**
* @author Andreas Fischer <bantu@owncloud.com>
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Christian Schnidrig <christian.schnidrig@switch.ch>
* @author Georg Ehrke <georg@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Phiber2000 <phiber2000@gmx.de>
* @author Robin Appelman <icewind@owncloud.com>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/Log/Syslog.php b/lib/private/Log/Syslog.php
index 115103f26d6..26b38fcf261 100644
--- a/lib/private/Log/Syslog.php
+++ b/lib/private/Log/Syslog.php
@@ -2,6 +2,7 @@
/**
* @author Bart Visscher <bartv@thisnet.nl>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/Mail/Mailer.php b/lib/private/Mail/Mailer.php
index 742ff554892..93f15fa3d49 100644
--- a/lib/private/Mail/Mailer.php
+++ b/lib/private/Mail/Mailer.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Mail/Message.php b/lib/private/Mail/Message.php
index 0e33e6383f7..be69e64f782 100644
--- a/lib/private/Mail/Message.php
+++ b/lib/private/Mail/Message.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/Memcache/APCu.php b/lib/private/Memcache/APCu.php
index 350ce913ed8..ad8885c1ccd 100644
--- a/lib/private/Memcache/APCu.php
+++ b/lib/private/Memcache/APCu.php
@@ -3,7 +3,7 @@
* @author Andreas Fischer <bantu@owncloud.com>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Clark Tomlinson <fallen013@gmail.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
*
diff --git a/lib/private/Memcache/Cache.php b/lib/private/Memcache/Cache.php
index 63d20721aac..1730e169325 100644
--- a/lib/private/Memcache/Cache.php
+++ b/lib/private/Memcache/Cache.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
diff --git a/lib/private/Memcache/Factory.php b/lib/private/Memcache/Factory.php
index a005f319b3e..d83aed816ac 100644
--- a/lib/private/Memcache/Factory.php
+++ b/lib/private/Memcache/Factory.php
@@ -1,11 +1,12 @@
<?php
/**
* @author Andreas Fischer <bantu@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Markus Goetz <markus@woboq.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
+ * @author Stefan Weil <sw@weilnetz.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
*
diff --git a/lib/private/Memcache/Memcached.php b/lib/private/Memcache/Memcached.php
index 63ac73e9b9d..d02b62edb0e 100644
--- a/lib/private/Memcache/Memcached.php
+++ b/lib/private/Memcache/Memcached.php
@@ -2,6 +2,8 @@
/**
* @author Andreas Fischer <bantu@owncloud.com>
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
diff --git a/lib/private/Memcache/Redis.php b/lib/private/Memcache/Redis.php
index 5b6955823c4..efb8fbfd6d6 100644
--- a/lib/private/Memcache/Redis.php
+++ b/lib/private/Memcache/Redis.php
@@ -2,10 +2,9 @@
/**
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
- * @author Michael Telatynski <7t3chguy@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
+ * @author Stefan Weil <sw@weilnetz.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Memcache/XCache.php b/lib/private/Memcache/XCache.php
index e80901faadc..d2178c09983 100644
--- a/lib/private/Memcache/XCache.php
+++ b/lib/private/Memcache/XCache.php
@@ -3,6 +3,7 @@
* @author Andreas Fischer <bantu@owncloud.com>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Clark Tomlinson <fallen013@gmail.com>
+ * @author Joas Schilling <nickvergessen@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
diff --git a/lib/private/NaturalSort.php b/lib/private/NaturalSort.php
index f44e8032d36..04b36f84ac4 100644
--- a/lib/private/NaturalSort.php
+++ b/lib/private/NaturalSort.php
@@ -1,7 +1,7 @@
<?php
/**
* @author AW-UC <git@a-wesemann.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin McCorkell <robin@mccorkell.me.uk>
* @author Thomas Müller <thomas.mueller@tmit.eu>
diff --git a/lib/private/OCS/Config.php b/lib/private/OCS/Config.php
index 5478411d6fd..293648e5f44 100644
--- a/lib/private/OCS/Config.php
+++ b/lib/private/OCS/Config.php
@@ -2,6 +2,7 @@
/**
* @author Bart Visscher <bartv@thisnet.nl>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Tom Needham <tom@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/OCS/Exception.php b/lib/private/OCS/Exception.php
index 33c88fcf7d3..3c8a14b93f7 100644
--- a/lib/private/OCS/Exception.php
+++ b/lib/private/OCS/Exception.php
@@ -1,5 +1,6 @@
<?php
/**
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/OCS/Person.php b/lib/private/OCS/Person.php
index fd33504e0a8..facaa5d7403 100644
--- a/lib/private/OCS/Person.php
+++ b/lib/private/OCS/Person.php
@@ -2,6 +2,7 @@
/**
* @author Bart Visscher <bartv@thisnet.nl>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Tom Needham <tom@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/OCS/PrivateData.php b/lib/private/OCS/PrivateData.php
index c69d8b9cc17..46c84175e3e 100644
--- a/lib/private/OCS/PrivateData.php
+++ b/lib/private/OCS/PrivateData.php
@@ -2,9 +2,10 @@
/**
* @author Andreas Fischer <bantu@owncloud.com>
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Frank Karlitschek <frank@owncloud.org>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Frank Karlitschek <frank@karlitschek.de>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Tom Needham <tom@owncloud.com>
*
diff --git a/lib/private/OCS/Provider.php b/lib/private/OCS/Provider.php
index 4a7caa79fa5..4d6e0593d5b 100644
--- a/lib/private/OCS/Provider.php
+++ b/lib/private/OCS/Provider.php
@@ -1,8 +1,9 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
*
- * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
*
* This code is free software: you can redistribute it and/or modify
diff --git a/lib/private/OCS/Result.php b/lib/private/OCS/Result.php
index c2c61e2383d..9629d1f7517 100644
--- a/lib/private/OCS/Result.php
+++ b/lib/private/OCS/Result.php
@@ -1,11 +1,12 @@
<?php
/**
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Christopher Schäpers <kondou@ts.unde.re>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin McCorkell <robin@mccorkell.me.uk>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Tom Needham <tom@owncloud.com>
*
diff --git a/lib/private/OCSClient.php b/lib/private/OCSClient.php
index da2f5c61769..27fc090722a 100644
--- a/lib/private/OCSClient.php
+++ b/lib/private/OCSClient.php
@@ -3,11 +3,12 @@
* @author Bart Visscher <bartv@thisnet.nl>
* @author Brice Maron <brice@bmaron.net>
* @author Felix Moeller <mail@felixmoeller.de>
- * @author Frank Karlitschek <frank@owncloud.org>
+ * @author Frank Karlitschek <frank@karlitschek.de>
+ * @author Jarrett <JetUni@users.noreply.github.com>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Kamil Domanski <kdomanski@kdemail.net>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin McCorkell <robin@mccorkell.me.uk>
* @author Sam Tuke <mail@samtuke.com>
diff --git a/lib/private/Preview.php b/lib/private/Preview.php
index 4fca56dd984..f5e2f6b57e1 100644
--- a/lib/private/Preview.php
+++ b/lib/private/Preview.php
@@ -1,11 +1,11 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
- * @author Frank Karlitschek <frank@owncloud.org>
+ * @author Björn Schießle <bjoern@schiessle.org>
+ * @author Frank Karlitschek <frank@karlitschek.de>
* @author Georg Ehrke <georg@owncloud.com>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Olivier Paroz <github@oparoz.com>
* @author Robin Appelman <icewind@owncloud.com>
diff --git a/lib/private/Preview/Image.php b/lib/private/Preview/Image.php
index 3ea99d6963a..540cb57ef80 100644
--- a/lib/private/Preview/Image.php
+++ b/lib/private/Preview/Image.php
@@ -2,6 +2,7 @@
/**
* @author Georg Ehrke <georg@owncloud.com>
* @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author josh4trunks <joshruehlig@gmail.com>
* @author Olivier Paroz <github@oparoz.com>
* @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
diff --git a/lib/private/Preview/MP3.php b/lib/private/Preview/MP3.php
index c7b70457afe..8b1a0500538 100644
--- a/lib/private/Preview/MP3.php
+++ b/lib/private/Preview/MP3.php
@@ -2,6 +2,7 @@
/**
* @author Georg Ehrke <georg@owncloud.com>
* @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Olivier Paroz <github@oparoz.com>
* @author Thomas Tanghus <thomas@tanghus.net>
*
diff --git a/lib/private/Repair.php b/lib/private/Repair.php
index 38752ee1703..4869db77497 100644
--- a/lib/private/Repair.php
+++ b/lib/private/Repair.php
@@ -1,9 +1,9 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Georg Ehrke <georg@owncloud.com>
* @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
diff --git a/lib/private/Repair/CleanTags.php b/lib/private/Repair/CleanTags.php
index 2607151cd9c..60ddeff08f3 100644
--- a/lib/private/Repair/CleanTags.php
+++ b/lib/private/Repair/CleanTags.php
@@ -2,6 +2,7 @@
/**
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Repair/Collation.php b/lib/private/Repair/Collation.php
index 1376785e17d..4890382e4d2 100644
--- a/lib/private/Repair/Collation.php
+++ b/lib/private/Repair/Collation.php
@@ -2,6 +2,7 @@
/**
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Repair/DropOldJobs.php b/lib/private/Repair/DropOldJobs.php
index 489b89d0869..d8dbcdaad17 100644
--- a/lib/private/Repair/DropOldJobs.php
+++ b/lib/private/Repair/DropOldJobs.php
@@ -1,7 +1,8 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
@@ -73,6 +74,12 @@ class DropOldJobs implements IRepairStep {
['class' => 'OC_Cache_FileGlobalGC', 'arguments' => null],
['class' => 'OC\Cache\FileGlobalGC', 'arguments' => null],
['class' => 'OCA\Files\BackgroundJob\DeleteOrphanedTagsJob', 'arguments' => null],
+
+ ['class' => 'OCA\Files_sharing\Lib\DeleteOrphanedSharesJob', 'arguments' => null],
+ ['class' => 'OCA\Files_sharing\ExpireSharesJob', 'arguments' => null],
+
+ ['class' => 'OCA\user_ldap\lib\Jobs', 'arguments' => null],
+ ['class' => '\OCA\User_LDAP\Jobs\CleanUp', 'arguments' => null],
];
}
diff --git a/lib/private/Repair/DropOldTables.php b/lib/private/Repair/DropOldTables.php
index b9963b50775..80d26d3a0e0 100644
--- a/lib/private/Repair/DropOldTables.php
+++ b/lib/private/Repair/DropOldTables.php
@@ -2,6 +2,7 @@
/**
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Repair/InnoDB.php b/lib/private/Repair/InnoDB.php
index ed119dcc032..7c3014313d8 100644
--- a/lib/private/Repair/InnoDB.php
+++ b/lib/private/Repair/InnoDB.php
@@ -1,6 +1,5 @@
<?php
/**
- * @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
diff --git a/lib/private/Repair/OldGroupMembershipShares.php b/lib/private/Repair/OldGroupMembershipShares.php
index e982dd81f3b..bc88d9d7065 100644
--- a/lib/private/Repair/OldGroupMembershipShares.php
+++ b/lib/private/Repair/OldGroupMembershipShares.php
@@ -1,6 +1,7 @@
<?php
/**
* @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Repair/Preview.php b/lib/private/Repair/Preview.php
index 7e26e45cb80..d70d82e5d6a 100644
--- a/lib/private/Repair/Preview.php
+++ b/lib/private/Repair/Preview.php
@@ -1,6 +1,7 @@
<?php
/**
* @author Georg Ehrke <georg@owncloud.com>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Repair/RemoveGetETagEntries.php b/lib/private/Repair/RemoveGetETagEntries.php
index 67bfb53bf14..4ea4398fbad 100644
--- a/lib/private/Repair/RemoveGetETagEntries.php
+++ b/lib/private/Repair/RemoveGetETagEntries.php
@@ -1,6 +1,7 @@
<?php
/**
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Repair/RepairInvalidShares.php b/lib/private/Repair/RepairInvalidShares.php
index e30b4ab0d31..30f67a1f394 100644
--- a/lib/private/Repair/RepairInvalidShares.php
+++ b/lib/private/Repair/RepairInvalidShares.php
@@ -2,6 +2,7 @@
/**
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/Repair/RepairLegacyStorages.php b/lib/private/Repair/RepairLegacyStorages.php
index 9582629b1a3..8ef20cdf3c2 100644
--- a/lib/private/Repair/RepairLegacyStorages.php
+++ b/lib/private/Repair/RepairLegacyStorages.php
@@ -2,6 +2,7 @@
/**
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/Repair/RepairMimeTypes.php b/lib/private/Repair/RepairMimeTypes.php
index 0d56245312a..7c8fe162050 100644
--- a/lib/private/Repair/RepairMimeTypes.php
+++ b/lib/private/Repair/RepairMimeTypes.php
@@ -6,6 +6,7 @@
* @author Normal Ra <normalraw@gmail.com>
* @author Olivier Paroz <github@oparoz.com>
* @author Roeland Jago Douma <rullzer@owncloud.com>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Victor Dubiniuk <dubiniuk@owncloud.com>
* @author Vincent Petry <pvince81@owncloud.com>
*
diff --git a/lib/private/Repair/SearchLuceneTables.php b/lib/private/Repair/SearchLuceneTables.php
index 56bae6ff655..ce12b896c6f 100644
--- a/lib/private/Repair/SearchLuceneTables.php
+++ b/lib/private/Repair/SearchLuceneTables.php
@@ -2,6 +2,7 @@
/**
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Repair/SharePropagation.php b/lib/private/Repair/SharePropagation.php
index cd0c091b325..03c32bb6748 100644
--- a/lib/private/Repair/SharePropagation.php
+++ b/lib/private/Repair/SharePropagation.php
@@ -1,6 +1,7 @@
<?php
/**
- * @author Georg Ehrke <georg@owncloud.com>
+ * @author Robin Appelman <icewind@owncloud.com>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Repair/SqliteAutoincrement.php b/lib/private/Repair/SqliteAutoincrement.php
index e6f90dcece3..1f13f43b4d9 100644
--- a/lib/private/Repair/SqliteAutoincrement.php
+++ b/lib/private/Repair/SqliteAutoincrement.php
@@ -1,5 +1,6 @@
<?php
/**
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/Repair/UpdateCertificateStore.php b/lib/private/Repair/UpdateCertificateStore.php
index 9397fc77bce..9416b1f6386 100644
--- a/lib/private/Repair/UpdateCertificateStore.php
+++ b/lib/private/Repair/UpdateCertificateStore.php
@@ -1,6 +1,7 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Repair/UpdateOutdatedOcsIds.php b/lib/private/Repair/UpdateOutdatedOcsIds.php
index 4c768e93bd6..00cfed3f345 100644
--- a/lib/private/Repair/UpdateOutdatedOcsIds.php
+++ b/lib/private/Repair/UpdateOutdatedOcsIds.php
@@ -1,6 +1,7 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Route/CachingRouter.php b/lib/private/Route/CachingRouter.php
index 063d389e98b..6f1fc18138b 100644
--- a/lib/private/Route/CachingRouter.php
+++ b/lib/private/Route/CachingRouter.php
@@ -1,5 +1,7 @@
<?php
/**
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
*
diff --git a/lib/private/Route/Router.php b/lib/private/Route/Router.php
index ef02b5aba0e..01262be390c 100644
--- a/lib/private/Route/Router.php
+++ b/lib/private/Route/Router.php
@@ -4,7 +4,7 @@
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
diff --git a/lib/private/Search/Result/File.php b/lib/private/Search/Result/File.php
index f1347001eaf..1d783a7aa9b 100644
--- a/lib/private/Search/Result/File.php
+++ b/lib/private/Search/Result/File.php
@@ -1,8 +1,8 @@
<?php
/**
* @author Andrew Brown <andrew@casabrown.com>
- * @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/Security/CSP/ContentSecurityPolicy.php b/lib/private/Security/CSP/ContentSecurityPolicy.php
index 25eacfab1d6..902647c26de 100644
--- a/lib/private/Security/CSP/ContentSecurityPolicy.php
+++ b/lib/private/Security/CSP/ContentSecurityPolicy.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Security/CSP/ContentSecurityPolicyManager.php b/lib/private/Security/CSP/ContentSecurityPolicyManager.php
index 760cd36e56b..af1e19fc166 100644
--- a/lib/private/Security/CSP/ContentSecurityPolicyManager.php
+++ b/lib/private/Security/CSP/ContentSecurityPolicyManager.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Security/CSRF/CsrfToken.php b/lib/private/Security/CSRF/CsrfToken.php
index 4524d0db6e6..9d4e4483ac4 100644
--- a/lib/private/Security/CSRF/CsrfToken.php
+++ b/lib/private/Security/CSRF/CsrfToken.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Security/CSRF/CsrfTokenGenerator.php b/lib/private/Security/CSRF/CsrfTokenGenerator.php
index 6ea71636d22..f49b2120b96 100644
--- a/lib/private/Security/CSRF/CsrfTokenGenerator.php
+++ b/lib/private/Security/CSRF/CsrfTokenGenerator.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Security/CSRF/CsrfTokenManager.php b/lib/private/Security/CSRF/CsrfTokenManager.php
index 8d1bf5c0819..83d995b310d 100644
--- a/lib/private/Security/CSRF/CsrfTokenManager.php
+++ b/lib/private/Security/CSRF/CsrfTokenManager.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Security/CSRF/TokenStorage/SessionStorage.php b/lib/private/Security/CSRF/TokenStorage/SessionStorage.php
index e1c8c96e920..2dbdf5634e9 100644
--- a/lib/private/Security/CSRF/TokenStorage/SessionStorage.php
+++ b/lib/private/Security/CSRF/TokenStorage/SessionStorage.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Security/Certificate.php b/lib/private/Security/Certificate.php
index 9aca278174e..9a09f3ad8b5 100644
--- a/lib/private/Security/Certificate.php
+++ b/lib/private/Security/Certificate.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
*
diff --git a/lib/private/Security/CertificateManager.php b/lib/private/Security/CertificateManager.php
index f4932ca568e..befdcb6b85b 100644
--- a/lib/private/Security/CertificateManager.php
+++ b/lib/private/Security/CertificateManager.php
@@ -1,8 +1,8 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
*
diff --git a/lib/private/Security/Crypto.php b/lib/private/Security/Crypto.php
index 3c3ffb47398..c9f2afabf4d 100644
--- a/lib/private/Security/Crypto.php
+++ b/lib/private/Security/Crypto.php
@@ -1,7 +1,7 @@
<?php
/**
* @author Andreas Fischer <bantu@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <rullzer@owncloud.com>
*
diff --git a/lib/private/Security/Hasher.php b/lib/private/Security/Hasher.php
index a8b81aa60eb..674fd269c22 100644
--- a/lib/private/Security/Hasher.php
+++ b/lib/private/Security/Hasher.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/Security/SecureRandom.php b/lib/private/Security/SecureRandom.php
index 45cb3f17ee4..ad37826fbfc 100644
--- a/lib/private/Security/SecureRandom.php
+++ b/lib/private/Security/SecureRandom.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/Security/TrustedDomainHelper.php b/lib/private/Security/TrustedDomainHelper.php
index 409628677a7..75407ae3939 100644
--- a/lib/private/Security/TrustedDomainHelper.php
+++ b/lib/private/Security/TrustedDomainHelper.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/Server.php b/lib/private/Server.php
index 0b7b8f9e403..8345a0b66e0 100644
--- a/lib/private/Server.php
+++ b/lib/private/Server.php
@@ -1,15 +1,15 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @author Bernhard Reiter <ockham@raz.or.at>
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Christoph Wurst <christoph@owncloud.com>
* @author Christopher Schäpers <kondou@ts.unde.re>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
@@ -223,6 +223,7 @@ class Server extends ServerContainer implements IServerContainer {
$timeFactory = new TimeFactory();
return new \OC\Authentication\Token\DefaultTokenProvider($mapper, $crypto, $config, $logger, $timeFactory);
});
+ $this->registerAlias('OC\Authentication\Token\IProvider', 'OC\Authentication\Token\DefaultTokenProvider');
$this->registerService('UserSession', function (Server $c) {
$manager = $c->getUserManager();
$session = new \OC\Session\Memory('');
@@ -230,12 +231,12 @@ class Server extends ServerContainer implements IServerContainer {
// Token providers might require a working database. This code
// might however be called when ownCloud is not yet setup.
if (\OC::$server->getSystemConfig()->getValue('installed', false)) {
- $defaultTokenProvider = $c->query('OC\Authentication\Token\DefaultTokenProvider');
+ $defaultTokenProvider = $c->query('OC\Authentication\Token\IProvider');
} else {
$defaultTokenProvider = null;
}
- $userSession = new \OC\User\Session($manager, $session, $timeFactory, $defaultTokenProvider);
+ $userSession = new \OC\User\Session($manager, $session, $timeFactory, $defaultTokenProvider, $c->getConfig());
$userSession->listen('\OC\User', 'preCreateUser', function ($uid, $password) {
\OC_Hook::emit('OC_User', 'pre_createUser', array('run' => true, 'uid' => $uid, 'password' => $password));
});
@@ -275,6 +276,11 @@ class Server extends ServerContainer implements IServerContainer {
});
return $userSession;
});
+
+ $this->registerService('\OC\Authentication\TwoFactorAuth\Manager', function (Server $c) {
+ return new \OC\Authentication\TwoFactorAuth\Manager($c->getAppManager(), $c->getSession(), $c->getConfig());
+ });
+
$this->registerService('NavigationManager', function ($c) {
return new \OC\NavigationManager();
});
@@ -855,6 +861,13 @@ class Server extends ServerContainer implements IServerContainer {
}
/**
+ * @return \OC\Authentication\TwoFactorAuth\Manager
+ */
+ public function getTwoFactorAuthManager() {
+ return $this->query('\OC\Authentication\TwoFactorAuth\Manager');
+ }
+
+ /**
* @return \OC\NavigationManager
*/
public function getNavigationManager() {
diff --git a/lib/private/Session/CryptoSessionData.php b/lib/private/Session/CryptoSessionData.php
index 629e6af5412..8bd254513e3 100644
--- a/lib/private/Session/CryptoSessionData.php
+++ b/lib/private/Session/CryptoSessionData.php
@@ -1,7 +1,8 @@
<?php
/**
+ * @author Christoph Wurst <christoph@owncloud.com>
* @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Session/CryptoWrapper.php b/lib/private/Session/CryptoWrapper.php
index f1819b31b89..87c2d43b6b2 100644
--- a/lib/private/Session/CryptoWrapper.php
+++ b/lib/private/Session/CryptoWrapper.php
@@ -1,7 +1,7 @@
<?php
/**
* @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Phil Davis <phil.davis@inf.org>
* @author Roeland Jago Douma <rullzer@owncloud.com>
*
diff --git a/lib/private/Session/Internal.php b/lib/private/Session/Internal.php
index a24aec55222..2a8dbb4b59c 100644
--- a/lib/private/Session/Internal.php
+++ b/lib/private/Session/Internal.php
@@ -1,7 +1,8 @@
<?php
/**
* @author cetra3 <peter@parashift.com.au>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Christoph Wurst <christoph@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Phil Davis <phil.davis@inf.org>
* @author Robin Appelman <icewind@owncloud.com>
diff --git a/lib/private/Session/Memory.php b/lib/private/Session/Memory.php
index bcb1f1d950c..fac907d8035 100644
--- a/lib/private/Session/Memory.php
+++ b/lib/private/Session/Memory.php
@@ -1,9 +1,9 @@
<?php
/**
+ * @author Christoph Wurst <christoph@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
- * @author Phil Davis <phil.davis@inf.org>
* @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
diff --git a/lib/private/Setup.php b/lib/private/Setup.php
index d60c4663fb0..46969f50fa0 100644
--- a/lib/private/Setup.php
+++ b/lib/private/Setup.php
@@ -1,14 +1,15 @@
<?php
/**
* @author Administrator <Administrator@WINDOWS-2012>
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @author Brice Maron <brice@bmaron.net>
+ * @author Christoph Wurst <christoph@owncloud.com>
* @author François Kubler <francois@kubler.org>
* @author Jakob Sack <mail@jakobsack.de>
* @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Martin Mattel <martin.mattel@diemattels.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
@@ -371,7 +372,8 @@ class Setup {
$userSession = \OC::$server->getUserSession();
$defaultTokenProvider = \OC::$server->query('OC\Authentication\Token\DefaultTokenProvider');
$userSession->setTokenProvider($defaultTokenProvider);
- $userSession->createSessionToken($request, $username, $password);
+ $userSession->login($username, $password);
+ $userSession->createSessionToken($request, $userSession->getUser()->getUID(), $username, $password);
//guess what this does
Installer::installShippedApps();
diff --git a/lib/private/Setup/AbstractDatabase.php b/lib/private/Setup/AbstractDatabase.php
index 90203b67c1d..331617df19d 100644
--- a/lib/private/Setup/AbstractDatabase.php
+++ b/lib/private/Setup/AbstractDatabase.php
@@ -2,6 +2,7 @@
/**
* @author Bart Visscher <bartv@thisnet.nl>
* @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Manish Bisht <manish.bisht490@gmail.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/Setup/MySQL.php b/lib/private/Setup/MySQL.php
index 18b6dab4ff8..1467eb734d7 100644
--- a/lib/private/Setup/MySQL.php
+++ b/lib/private/Setup/MySQL.php
@@ -3,7 +3,9 @@
* @author Bart Visscher <bartv@thisnet.nl>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Michael Göhler <somebody.here@gmx.de>
+ * @author Robin McCorkell <robin@mccorkell.me.uk>
* @author Roeland Jago Douma <rullzer@owncloud.com>
+ * @author Stefan Weil <sw@weilnetz.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/Setup/OCI.php b/lib/private/Setup/OCI.php
index a398876ad16..1da3656f9ab 100644
--- a/lib/private/Setup/OCI.php
+++ b/lib/private/Setup/OCI.php
@@ -4,6 +4,7 @@
* @author Bart Visscher <bartv@thisnet.nl>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
+ * @author Manish Bisht <manish.bisht490@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
diff --git a/lib/private/Setup/PostgreSQL.php b/lib/private/Setup/PostgreSQL.php
index 893999bb0b9..702227ef3ff 100644
--- a/lib/private/Setup/PostgreSQL.php
+++ b/lib/private/Setup/PostgreSQL.php
@@ -5,6 +5,7 @@
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <rullzer@owncloud.com>
+ * @author Stefan Weil <sw@weilnetz.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/Share/Constants.php b/lib/private/Share/Constants.php
index e60eb98832b..33081668003 100644
--- a/lib/private/Share/Constants.php
+++ b/lib/private/Share/Constants.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Christopher Schäpers <kondou@ts.unde.re>
* @author Morris Jobke <hey@morrisjobke.de>
*
diff --git a/lib/private/Share/Helper.php b/lib/private/Share/Helper.php
index f9581e48e62..7dc8cd12cd5 100644
--- a/lib/private/Share/Helper.php
+++ b/lib/private/Share/Helper.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Miguel Prokop <miguel.prokop@vtu.com>
* @author Morris Jobke <hey@morrisjobke.de>
diff --git a/lib/private/Share/MailNotifications.php b/lib/private/Share/MailNotifications.php
index afecff0b97b..31f2c78a053 100644
--- a/lib/private/Share/MailNotifications.php
+++ b/lib/private/Share/MailNotifications.php
@@ -1,13 +1,14 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin McCorkell <robin@mccorkell.me.uk>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author scolebrook <scolebrook@mac.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
- * @author Tom Needham <tom@owncloud.com>
+ * @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Share/SearchResultSorter.php b/lib/private/Share/SearchResultSorter.php
index 6d5542146e7..4a50466b085 100644
--- a/lib/private/Share/SearchResultSorter.php
+++ b/lib/private/Share/SearchResultSorter.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin McCorkell <robin@mccorkell.me.uk>
*
diff --git a/lib/private/Share/Share.php b/lib/private/Share/Share.php
index 5b61f418a4d..bcda779e733 100644
--- a/lib/private/Share/Share.php
+++ b/lib/private/Share/Share.php
@@ -1,20 +1,22 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Bernhard Reiter <ockham@raz.or.at>
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@owncloud.com>
* @author Christopher Schäpers <kondou@ts.unde.re>
* @author Daniel Hansson <enoch85@gmail.com>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Michael Kuhn <suraia@ikkoku.de>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
* @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Sebastian Döll <sebastian.doell@libasys.de>
+ * @author Stefan Weil <sw@weilnetz.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
* @author Volkan Gezer <volkangezer@gmail.com>
@@ -2491,7 +2493,7 @@ class Share extends Constants {
}
if ( \OC::$server->getSession()->exists('public_link_authenticated')
- && \OC::$server->getSession()->get('public_link_authenticated') === $linkItem['id'] ) {
+ && \OC::$server->getSession()->get('public_link_authenticated') === (string)$linkItem['id'] ) {
return true;
}
diff --git a/lib/private/Share20/DefaultShareProvider.php b/lib/private/Share20/DefaultShareProvider.php
index 8a39c18a495..aa8f1729a9d 100644
--- a/lib/private/Share20/DefaultShareProvider.php
+++ b/lib/private/Share20/DefaultShareProvider.php
@@ -1,5 +1,6 @@
<?php
/**
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Roeland Jago Douma <rullzer@owncloud.com>
*
diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php
index 3568995472a..ceaaa58cf6e 100644
--- a/lib/private/Share20/Manager.php
+++ b/lib/private/Share20/Manager.php
@@ -1,6 +1,7 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Roeland Jago Douma <rullzer@owncloud.com>
*
diff --git a/lib/private/Share20/ProviderFactory.php b/lib/private/Share20/ProviderFactory.php
index b436a7bc5f3..78d2cbf7e4c 100644
--- a/lib/private/Share20/ProviderFactory.php
+++ b/lib/private/Share20/ProviderFactory.php
@@ -1,6 +1,7 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Roeland Jago Douma <rullzer@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/Share20/Share.php b/lib/private/Share20/Share.php
index f56fd94b409..87001146796 100644
--- a/lib/private/Share20/Share.php
+++ b/lib/private/Share20/Share.php
@@ -1,5 +1,6 @@
<?php
/**
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Roeland Jago Douma <rullzer@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/SubAdmin.php b/lib/private/SubAdmin.php
index 34dd40c22ff..68e0e799d50 100644
--- a/lib/private/SubAdmin.php
+++ b/lib/private/SubAdmin.php
@@ -1,9 +1,9 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Georg Ehrke <georg@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <rullzer@owncloud.com>
*
diff --git a/lib/private/SystemConfig.php b/lib/private/SystemConfig.php
index 449a2dc50b2..d773e601256 100644
--- a/lib/private/SystemConfig.php
+++ b/lib/private/SystemConfig.php
@@ -1,7 +1,7 @@
<?php
/**
* @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <rullzer@owncloud.com>
*
diff --git a/lib/private/TempManager.php b/lib/private/TempManager.php
index dd97a36cd7f..4e361147fef 100644
--- a/lib/private/TempManager.php
+++ b/lib/private/TempManager.php
@@ -1,12 +1,13 @@
<?php
/**
* @author Lars <winnetou+github@catolic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Martin Mattel <martin.mattel@diemattels.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Olivier Paroz <github@oparoz.com>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
+ * @author Stefan Weil <sw@weilnetz.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/Template/Base.php b/lib/private/Template/Base.php
index cfe629b5fbf..d078a4eafd8 100644
--- a/lib/private/Template/Base.php
+++ b/lib/private/Template/Base.php
@@ -1,11 +1,12 @@
<?php
/**
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Christopher Schäpers <kondou@ts.unde.re>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/TemplateLayout.php b/lib/private/TemplateLayout.php
index fe17c37caa8..9a0fbda741d 100644
--- a/lib/private/TemplateLayout.php
+++ b/lib/private/TemplateLayout.php
@@ -4,9 +4,10 @@
* @author Bart Visscher <bartv@thisnet.nl>
* @author Christopher Schäpers <kondou@ts.unde.re>
* @author Clark Tomlinson <fallen013@gmail.com>
+ * @author Hendrik Leppelsack <hendrik@leppelsack.de>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Remco Brenninkmeijer <requist1@starmail.nl>
diff --git a/lib/private/URLGenerator.php b/lib/private/URLGenerator.php
index 327c0c32dfe..9ae99d67bc6 100644
--- a/lib/private/URLGenerator.php
+++ b/lib/private/URLGenerator.php
@@ -3,7 +3,8 @@
* @author Bart Visscher <bartv@thisnet.nl>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
+ * @author mmccarn <mmccarn-github@mmsionline.us>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
@@ -159,28 +160,31 @@ class URLGenerator implements IURLGenerator {
} elseif (!file_exists(\OC::$SERVERROOT . "/themes/$theme/apps/$app/img/$basename.svg")
&& file_exists(\OC::$SERVERROOT . "/themes/$theme/apps/$app/img/$basename.png")) {
$path = \OC::$WEBROOT . "/themes/$theme/apps/$app/img/$basename.png";
- } elseif ($appPath && file_exists($appPath . "/img/$image")) {
- $path = \OC_App::getAppWebPath($app) . "/img/$image";
- } elseif ($appPath && !file_exists($appPath . "/img/$basename.svg")
- && file_exists($appPath . "/img/$basename.png")) {
- $path = \OC_App::getAppWebPath($app) . "/img/$basename.png";
} elseif (!empty($app) and file_exists(\OC::$SERVERROOT . "/themes/$theme/$app/img/$image")) {
$path = \OC::$WEBROOT . "/themes/$theme/$app/img/$image";
} elseif (!empty($app) and (!file_exists(\OC::$SERVERROOT . "/themes/$theme/$app/img/$basename.svg")
&& file_exists(\OC::$SERVERROOT . "/themes/$theme/$app/img/$basename.png"))) {
$path = \OC::$WEBROOT . "/themes/$theme/$app/img/$basename.png";
- } elseif (!empty($app) and file_exists(\OC::$SERVERROOT . "/$app/img/$image")) {
- $path = \OC::$WEBROOT . "/$app/img/$image";
- } elseif (!empty($app) and (!file_exists(\OC::$SERVERROOT . "/$app/img/$basename.svg")
- && file_exists(\OC::$SERVERROOT . "/$app/img/$basename.png"))) {
- $path = \OC::$WEBROOT . "/$app/img/$basename.png";
} elseif (file_exists(\OC::$SERVERROOT . "/themes/$theme/core/img/$image")) {
$path = \OC::$WEBROOT . "/themes/$theme/core/img/$image";
} elseif (!file_exists(\OC::$SERVERROOT . "/themes/$theme/core/img/$basename.svg")
&& file_exists(\OC::$SERVERROOT . "/themes/$theme/core/img/$basename.png")) {
$path = \OC::$WEBROOT . "/themes/$theme/core/img/$basename.png";
+ } elseif ($appPath && file_exists($appPath . "/img/$image")) {
+ $path = \OC_App::getAppWebPath($app) . "/img/$image";
+ } elseif ($appPath && !file_exists($appPath . "/img/$basename.svg")
+ && file_exists($appPath . "/img/$basename.png")) {
+ $path = \OC_App::getAppWebPath($app) . "/img/$basename.png";
+ } elseif (!empty($app) and file_exists(\OC::$SERVERROOT . "/$app/img/$image")) {
+ $path = \OC::$WEBROOT . "/$app/img/$image";
+ } elseif (!empty($app) and (!file_exists(\OC::$SERVERROOT . "/$app/img/$basename.svg")
+ && file_exists(\OC::$SERVERROOT . "/$app/img/$basename.png"))) {
+ $path = \OC::$WEBROOT . "/$app/img/$basename.png";
} elseif (file_exists(\OC::$SERVERROOT . "/core/img/$image")) {
$path = \OC::$WEBROOT . "/core/img/$image";
+ } elseif (!file_exists(\OC::$SERVERROOT . "/core/img/$basename.svg")
+ && file_exists(\OC::$SERVERROOT . "/core/img/$basename.png")) {
+ $path = \OC::$WEBROOT . "/themes/$theme/core/img/$basename.png";
}
if($path !== '') {
diff --git a/lib/private/Updater.php b/lib/private/Updater.php
index dbcaccaad26..229f1123aa8 100644
--- a/lib/private/Updater.php
+++ b/lib/private/Updater.php
@@ -1,14 +1,11 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
- * @author Bart Visscher <bartv@thisnet.nl>
- * @author Björn Schießle <schiessle@owncloud.com>
- * @author Frank Karlitschek <frank@owncloud.org>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Frank Karlitschek <frank@karlitschek.de>
* @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
- * @author Robin McCorkell <robin@mccorkell.me.uk>
* @author Steffen Lindner <mail@steffen-lindner.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Victor Dubiniuk <dubiniuk@owncloud.com>
@@ -168,6 +165,7 @@ class Updater extends BasicEmitter {
$this->emit('\OC\Updater', 'resetLogLevel', [ $logLevel, $this->logLevelNames[$logLevel] ]);
$this->config->setSystemValue('loglevel', $logLevel);
+ $this->config->setSystemValue('installed', true);
return $success;
}
@@ -216,8 +214,6 @@ class Updater extends BasicEmitter {
try {
Setup::updateHtaccess();
Setup::protectDataDirectory();
- // TODO: replace with the new repair step mechanism https://github.com/owncloud/core/pull/24378
- Setup::installBackgroundJobs();
} catch (\Exception $e) {
throw new \Exception($e->getMessage());
}
@@ -243,6 +239,13 @@ class Updater extends BasicEmitter {
if ($this->updateStepEnabled) {
$this->doCoreUpgrade();
+ try {
+ // TODO: replace with the new repair step mechanism https://github.com/owncloud/core/pull/24378
+ Setup::installBackgroundJobs();
+ } catch (\Exception $e) {
+ throw new \Exception($e->getMessage());
+ }
+
// update all shipped apps
$disabledApps = $this->checkAppsRequirements();
$this->doAppUpgrade();
diff --git a/lib/private/Updater/VersionCheck.php b/lib/private/Updater/VersionCheck.php
index 7b330b53686..2d07677323a 100644
--- a/lib/private/Updater/VersionCheck.php
+++ b/lib/private/Updater/VersionCheck.php
@@ -1,18 +1,7 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
- * @author Bart Visscher <bartv@thisnet.nl>
- * @author Björn Schießle <schiessle@owncloud.com>
- * @author Frank Karlitschek <frank@owncloud.org>
- * @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
- * @author Morris Jobke <hey@morrisjobke.de>
- * @author Robin Appelman <icewind@owncloud.com>
- * @author Robin McCorkell <robin@mccorkell.me.uk>
- * @author Steffen Lindner <mail@steffen-lindner.de>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Thomas Müller <thomas.mueller@tmit.eu>
- * @author Victor Dubiniuk <dubiniuk@owncloud.com>
- * @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/User/Backend.php b/lib/private/User/Backend.php
index d5f82dc9621..28389055855 100644
--- a/lib/private/User/Backend.php
+++ b/lib/private/User/Backend.php
@@ -1,19 +1,6 @@
<?php
/**
- * @author Aldo "xoen" Giambelluca <xoen@xoen.org>
- * @author Bart Visscher <bartv@thisnet.nl>
- * @author Björn Schießle <schiessle@owncloud.com>
- * @author Dominik Schmidt <dev@dominik-schmidt.de>
- * @author Georg Ehrke <georg@owncloud.com>
- * @author Jakob Sack <mail@jakobsack.de>
- * @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
- * @author Morris Jobke <hey@morrisjobke.de>
- * @author Robin Appelman <icewind@owncloud.com>
- * @author Sam Tuke <mail@samtuke.com>
- * @author Thomas Müller <thomas.mueller@tmit.eu>
- * @author Tigran Mkrtchyan <tigran.mkrtchyan@desy.de>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/User/Database.php b/lib/private/User/Database.php
index 7a4b58e6f40..1dcac287e1e 100644
--- a/lib/private/User/Database.php
+++ b/lib/private/User/Database.php
@@ -2,22 +2,22 @@
/**
* @author adrien <adrien.waksberg@believedigital.com>
* @author Aldo "xoen" Giambelluca <xoen@xoen.org>
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author fabian <fabian@web2.0-apps.de>
* @author Georg Ehrke <georg@owncloud.com>
* @author Jakob Sack <mail@jakobsack.de>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author nishiki <nishiki@yaegashi.fr>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
- * @author Victor Dubiniuk <dubiniuk@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/User/Manager.php b/lib/private/User/Manager.php
index a9d9425e24d..055f428bb17 100644
--- a/lib/private/User/Manager.php
+++ b/lib/private/User/Manager.php
@@ -1,14 +1,14 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Michael U <mdusher@users.noreply.github.com>
* @author Morris Jobke <hey@morrisjobke.de>
- * @author RealRancor <Fisch.666@gmx.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Chan <plus.vincchan@gmail.com>
* @author Volkan Gezer <volkangezer@gmail.com>
diff --git a/lib/private/User/Session.php b/lib/private/User/Session.php
index 7104f46fea2..20f1812077e 100644
--- a/lib/private/User/Session.php
+++ b/lib/private/User/Session.php
@@ -1,16 +1,13 @@
<?php
-
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @author Christoph Wurst <christoph@owncloud.com>
- * @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
- * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
*
@@ -42,6 +39,7 @@ use OC_User;
use OC_Util;
use OCA\DAV\Connector\Sabre\Auth;
use OCP\AppFramework\Utility\ITimeFactory;
+use OCP\IConfig;
use OCP\IRequest;
use OCP\ISession;
use OCP\IUser;
@@ -68,8 +66,8 @@ use OCP\Session\Exceptions\SessionNotAvailableException;
* @package OC\User
*/
class Session implements IUserSession, Emitter {
-
- /** @var Manager $manager */
+
+ /** @var IUserManager $manager */
private $manager;
/** @var ISession $session */
@@ -81,6 +79,9 @@ class Session implements IUserSession, Emitter {
/** @var IProvider */
private $tokenProvider;
+ /** @var IConfig */
+ private $config;
+
/** @var User $activeUser */
protected $activeUser;
@@ -89,12 +90,14 @@ class Session implements IUserSession, Emitter {
* @param ISession $session
* @param ITimeFactory $timeFacory
* @param IProvider $tokenProvider
+ * @param IConfig $config
*/
- public function __construct(IUserManager $manager, ISession $session, ITimeFactory $timeFacory, $tokenProvider) {
+ public function __construct(IUserManager $manager, ISession $session, ITimeFactory $timeFacory, $tokenProvider, IConfig $config) {
$this->manager = $manager;
$this->session = $session;
$this->timeFacory = $timeFacory;
$this->tokenProvider = $tokenProvider;
+ $this->config = $config;
}
/**
@@ -206,7 +209,7 @@ class Session implements IUserSession, Emitter {
return;
}
- // Check whether login credentials are still valid
+ // Check whether login credentials are still valid and the user was not disabled
// This check is performed each 5 minutes
$lastCheck = $this->session->get('last_login_check') ? : 0;
$now = $this->timeFacory->getTime();
@@ -219,8 +222,9 @@ class Session implements IUserSession, Emitter {
return;
}
- if ($this->manager->checkPassword($user->getUID(), $pwd) === false) {
- // Password has changed -> log user out
+ if ($this->manager->checkPassword($token->getLoginName(), $pwd) === false
+ || !$user->isEnabled()) {
+ // Password has changed or user was disabled -> log user out
$this->logout();
return;
}
@@ -278,7 +282,7 @@ class Session implements IUserSession, Emitter {
}
/**
- * try to login with the provided credentials
+ * try to log in with the provided credentials
*
* @param string $uid
* @param string $password
@@ -287,12 +291,20 @@ class Session implements IUserSession, Emitter {
*/
public function login($uid, $password) {
$this->session->regenerateId();
- $this->manager->emit('\OC\User', 'preLogin', array($uid, $password));
- $user = $this->manager->checkPassword($uid, $password);
- if ($user === false) {
- if ($this->validateToken($password)) {
- $user = $this->getUser();
+ if ($this->validateToken($password)) {
+ $user = $this->getUser();
+
+ // When logging in with token, the password must be decrypted first before passing to login hook
+ try {
+ $token = $this->tokenProvider->getToken($password);
+ $password = $this->tokenProvider->getPassword($token, $password);
+ $this->manager->emit('\OC\User', 'preLogin', array($uid, $password));
+ } catch (InvalidTokenException $ex) {
+ // Invalid token, nothing to do
}
+ } else {
+ $this->manager->emit('\OC\User', 'preLogin', array($uid, $password));
+ $user = $this->manager->checkPassword($uid, $password);
}
if ($user !== false) {
if (!is_null($user)) {
@@ -318,6 +330,63 @@ class Session implements IUserSession, Emitter {
return false;
}
+ /**
+ * Tries to log in a client
+ *
+ * Checks token auth enforced
+ * Checks 2FA enabled
+ *
+ * @param string $user
+ * @param string $password
+ * @throws LoginException
+ * @return boolean
+ */
+ public function logClientIn($user, $password) {
+ $isTokenPassword = $this->isTokenPassword($password);
+ if (!$isTokenPassword && $this->isTokenAuthEnforced()) {
+ // TODO: throw LoginException instead (https://github.com/owncloud/core/pull/24616)
+ return false;
+ }
+ if (!$isTokenPassword && $this->isTwoFactorEnforced($user)) {
+ // TODO: throw LoginException instead (https://github.com/owncloud/core/pull/24616)
+ return false;
+ }
+ return $this->login($user, $password);
+ }
+
+ private function isTokenAuthEnforced() {
+ return $this->config->getSystemValue('token_auth_enforced', false);
+ }
+
+ protected function isTwoFactorEnforced($username) {
+ \OCP\Util::emitHook(
+ '\OCA\Files_Sharing\API\Server2Server',
+ 'preLoginNameUsedAsUserName',
+ array('uid' => &$username)
+ );
+ $user = $this->manager->get($username);
+ if (is_null($user)) {
+ return true;
+ }
+ // DI not possible due to cyclic dependencies :'-/
+ return OC::$server->getTwoFactorAuthManager()->isTwoFactorAuthenticated($user);
+ }
+
+ /**
+ * Check if the given 'password' is actually a device token
+ *
+ * @param type $password
+ * @return boolean
+ */
+ public function isTokenPassword($password) {
+ try {
+ $this->tokenProvider->getToken($password);
+ return true;
+ } catch (InvalidTokenException $ex) {
+ return false;
+ }
+ }
+
protected function prepareUserLogin() {
// TODO: mock/inject/use non-static
// Refresh the token
@@ -332,12 +401,13 @@ class Session implements IUserSession, Emitter {
/**
* Tries to login the user with HTTP Basic Authentication
*
+ * @todo do not allow basic auth if the user is 2FA enforced
* @param IRequest $request
* @return boolean if the login was successful
*/
public function tryBasicAuthLogin(IRequest $request) {
if (!empty($request->server['PHP_AUTH_USER']) && !empty($request->server['PHP_AUTH_PW'])) {
- $result = $this->login($request->server['PHP_AUTH_USER'], $request->server['PHP_AUTH_PW']);
+ $result = $this->logClientIn($request->server['PHP_AUTH_USER'], $request->server['PHP_AUTH_PW']);
if ($result === true) {
/**
* Add DAV authenticated. This should in an ideal world not be
@@ -378,25 +448,23 @@ class Session implements IUserSession, Emitter {
*
* @param IRequest $request
* @param string $uid user UID
+ * @param string $loginName login name
* @param string $password
* @return boolean
*/
- public function createSessionToken(IRequest $request, $uid, $password) {
+ public function createSessionToken(IRequest $request, $uid, $loginName, $password) {
if (is_null($this->manager->get($uid))) {
// User does not exist
return false;
}
$name = isset($request->server['HTTP_USER_AGENT']) ? $request->server['HTTP_USER_AGENT'] : 'unknown browser';
- $loggedIn = $this->login($uid, $password);
- if ($loggedIn) {
- try {
- $sessionId = $this->session->getId();
- $this->tokenProvider->generateToken($sessionId, $uid, $password, $name);
- } catch (SessionNotAvailableException $ex) {
-
- }
+ try {
+ $sessionId = $this->session->getId();
+ $this->tokenProvider->generateToken($sessionId, $uid, $loginName, $password, $name);
+ } catch (SessionNotAvailableException $ex) {
+
}
- return $loggedIn;
+ return true;
}
/**
diff --git a/lib/private/User/User.php b/lib/private/User/User.php
index 66ecbd18534..a48941ea2c0 100644
--- a/lib/private/User/User.php
+++ b/lib/private/User/User.php
@@ -1,13 +1,13 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Björn Schießle <schiessle@owncloud.com>
- * @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/legacy/api.php b/lib/private/legacy/api.php
index 60300c88b57..a4745f58d02 100644
--- a/lib/private/legacy/api.php
+++ b/lib/private/legacy/api.php
@@ -2,13 +2,15 @@
/**
* @author Bart Visscher <bartv@thisnet.nl>
* @author Bernhard Posselt <dev@bernhard-posselt.com>
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@owncloud.com>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Tom Needham <tom@owncloud.com>
* @author Vincent Petry <pvince81@owncloud.com>
diff --git a/lib/private/legacy/app.php b/lib/private/legacy/app.php
index f558c873556..5fac1790424 100644
--- a/lib/private/legacy/app.php
+++ b/lib/private/legacy/app.php
@@ -1,21 +1,21 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Bernhard Posselt <dev@bernhard-posselt.com>
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Borjan Tchakaloff <borjan@tchakaloff.fr>
* @author Brice Maron <brice@bmaron.net>
* @author Christopher Schäpers <kondou@ts.unde.re>
* @author Felix Moeller <mail@felixmoeller.de>
- * @author Frank Karlitschek <frank@owncloud.org>
+ * @author Frank Karlitschek <frank@karlitschek.de>
* @author Georg Ehrke <georg@owncloud.com>
* @author Jakob Sack <mail@jakobsack.de>
* @author Jan-Christoph Borchardt <hey@jancborchardt.net>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Kamil Domanski <kdomanski@kdemail.net>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Markus Goetz <markus@woboq.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author RealRancor <Fisch.666@gmx.de>
diff --git a/lib/private/legacy/db/statementwrapper.php b/lib/private/legacy/db/statementwrapper.php
index 6422d8d5f1b..20dce846c6b 100644
--- a/lib/private/legacy/db/statementwrapper.php
+++ b/lib/private/legacy/db/statementwrapper.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
diff --git a/lib/private/legacy/defaults.php b/lib/private/legacy/defaults.php
index 43e8c8082cc..ce8864643a2 100644
--- a/lib/private/legacy/defaults.php
+++ b/lib/private/legacy/defaults.php
@@ -1,9 +1,9 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Jan-Christoph Borchardt <hey@jancborchardt.net>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Pascal de Bruijn <pmjdebruijn@pcode.nl>
* @author Robin Appelman <icewind@owncloud.com>
diff --git a/lib/private/legacy/eventsource.php b/lib/private/legacy/eventsource.php
index f567d1e6ca5..51040e7be7d 100644
--- a/lib/private/legacy/eventsource.php
+++ b/lib/private/legacy/eventsource.php
@@ -2,7 +2,7 @@
/**
* @author Bart Visscher <bartv@thisnet.nl>
* @author Felix Moeller <mail@felixmoeller.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
diff --git a/lib/private/legacy/filechunking.php b/lib/private/legacy/filechunking.php
index f2cef275458..eac1d2c9ec4 100644
--- a/lib/private/legacy/filechunking.php
+++ b/lib/private/legacy/filechunking.php
@@ -5,6 +5,7 @@
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Thomas Tanghus <thomas@tanghus.net>
* @author Vincent Petry <pvince81@owncloud.com>
@@ -31,6 +32,13 @@ class OC_FileChunking {
protected $info;
protected $cache;
+ /**
+ * TTL of chunks
+ *
+ * @var int
+ */
+ protected $ttl;
+
static public function decodeName($name) {
preg_match('/(?P<name>.*)-chunking-(?P<transferid>\d+)-(?P<chunkcount>\d+)-(?P<index>\d+)/', $name, $matches);
return $matches;
@@ -41,6 +49,7 @@ class OC_FileChunking {
*/
public function __construct($info) {
$this->info = $info;
+ $this->ttl = \OC::$server->getConfig()->getSystemValue('cache_chunk_gc_ttl', 86400);
}
public function getPrefix() {
@@ -67,7 +76,7 @@ class OC_FileChunking {
public function store($index, $data) {
$cache = $this->getCache();
$name = $this->getPrefix().$index;
- $cache->set($name, $data);
+ $cache->set($name, $data, $this->ttl);
return $cache->size($name);
}
diff --git a/lib/private/legacy/files.php b/lib/private/legacy/files.php
index 9b6a1a4465f..8cf98322223 100644
--- a/lib/private/legacy/files.php
+++ b/lib/private/legacy/files.php
@@ -1,15 +1,17 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Clark Tomlinson <fallen013@gmail.com>
- * @author Frank Karlitschek <frank@owncloud.org>
+ * @author Frank Karlitschek <frank@karlitschek.de>
* @author Jakob Sack <mail@jakobsack.de>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
* @author Nicolai Ehemann <en@enlightened.de>
+ * @author Piotr Filiciak <piotr@filiciak.pl>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
* @author Thibaut GRIDEL <tgridel@free.fr>
@@ -49,20 +51,48 @@ class OC_Files {
const UPLOAD_MIN_LIMIT_BYTES = 1048576; // 1 MiB
+
+ private static $multipartBoundary = '';
+
+ /**
+ * @return string
+ */
+ private static function getBoundary() {
+ if (empty(self::$multipartBoundary)) {
+ self::$multipartBoundary = md5(mt_rand());
+ }
+ return self::$multipartBoundary;
+ }
+
/**
* @param string $filename
* @param string $name
+ * @param array $rangeArray ('from'=>int,'to'=>int), ...
*/
- private static function sendHeaders($filename, $name) {
+ private static function sendHeaders($filename, $name, array $rangeArray) {
OC_Response::setContentDispositionHeader($name, 'attachment');
- header('Content-Transfer-Encoding: binary');
+ header('Content-Transfer-Encoding: binary', true);
OC_Response::disableCaching();
$fileSize = \OC\Files\Filesystem::filesize($filename);
$type = \OC::$server->getMimeTypeDetector()->getSecureMimeType(\OC\Files\Filesystem::getMimeType($filename));
- header('Content-Type: '.$type);
if ($fileSize > -1) {
- OC_Response::setContentLengthHeader($fileSize);
+ if (!empty($rangeArray)) {
+ header('HTTP/1.1 206 Partial Content', true);
+ header('Accept-Ranges: bytes', true);
+ if (count($rangeArray) > 1) {
+ $type = 'multipart/byteranges; boundary='.self::getBoundary();
+ // no Content-Length header here
+ }
+ else {
+ header(sprintf('Content-Range: bytes %d-%d/%d', $rangeArray[0]['from'], $rangeArray[0]['to'], $fileSize), true);
+ OC_Response::setContentLengthHeader($rangeArray[0]['to'] - $rangeArray[0]['from'] + 1);
+ }
+ }
+ else {
+ OC_Response::setContentLengthHeader($fileSize);
+ }
}
+ header('Content-Type: '.$type, true);
}
/**
@@ -70,9 +100,9 @@ class OC_Files {
*
* @param string $dir
* @param string $files ; separated list of files to download
- * @param boolean $onlyHeader ; boolean to only send header of the request
+ * @param array $params ; 'head' boolean to only send header of the request ; 'range' http range header
*/
- public static function get($dir, $files, $onlyHeader = false) {
+ public static function get($dir, $files, $params = null) {
$view = \OC\Files\Filesystem::getView();
$getType = self::FILE;
@@ -86,7 +116,7 @@ class OC_Files {
if (!is_array($files)) {
$filename = $dir . '/' . $files;
if (!$view->is_dir($filename)) {
- self::getSingleFile($view, $dir, $files, $onlyHeader);
+ self::getSingleFile($view, $dir, $files, is_null($params) ? array() : $params);
return;
}
}
@@ -157,18 +187,77 @@ class OC_Files {
}
/**
+ * @param string $rangeHeaderPos
+ * @param int $fileSize
+ * @return array $rangeArray ('from'=>int,'to'=>int), ...
+ */
+ private static function parseHttpRangeHeader($rangeHeaderPos, $fileSize) {
+ $rArray=split(',', $rangeHeaderPos);
+ $minOffset = 0;
+ $ind = 0;
+
+ $rangeArray = array();
+
+ foreach ($rArray as $value) {
+ $ranges = explode('-', $value);
+ if (is_numeric($ranges[0])) {
+ if ($ranges[0] < $minOffset) { // case: bytes=500-700,601-999
+ $ranges[0] = $minOffset;
+ }
+ if ($ind > 0 && $rangeArray[$ind-1]['to']+1 == $ranges[0]) { // case: bytes=500-600,601-999
+ $ind--;
+ $ranges[0] = $rangeArray[$ind]['from'];
+ }
+ }
+
+ if (is_numeric($ranges[0]) && is_numeric($ranges[1]) && $ranges[0] < $fileSize && $ranges[0] <= $ranges[1]) {
+ // case: x-x
+ if ($ranges[1] >= $fileSize) {
+ $ranges[1] = $fileSize-1;
+ }
+ $rangeArray[$ind++] = array( 'from' => $ranges[0], 'to' => $ranges[1], 'size' => $fileSize );
+ $minOffset = $ranges[1] + 1;
+ if ($minOffset >= $fileSize) {
+ break;
+ }
+ }
+ elseif (is_numeric($ranges[0]) && $ranges[0] < $fileSize) {
+ // case: x-
+ $rangeArray[$ind++] = array( 'from' => $ranges[0], 'to' => $fileSize-1, 'size' => $fileSize );
+ break;
+ }
+ elseif (is_numeric($ranges[1])) {
+ // case: -x
+ if ($ranges[1] > $fileSize) {
+ $ranges[1] = $fileSize;
+ }
+ $rangeArray[$ind++] = array( 'from' => $fileSize-$ranges[1], 'to' => $fileSize-1, 'size' => $fileSize );
+ break;
+ }
+ }
+ return $rangeArray;
+ }
+
+ /**
* @param View $view
* @param string $name
* @param string $dir
- * @param boolean $onlyHeader
+ * @param array $params ; 'head' boolean to only send header of the request ; 'range' http range header
*/
- private static function getSingleFile($view, $dir, $name, $onlyHeader) {
+ private static function getSingleFile($view, $dir, $name, $params) {
$filename = $dir . '/' . $name;
OC_Util::obEnd();
$view->lockFile($filename, ILockingProvider::LOCK_SHARED);
+
+ $rangeArray = array();
+ if (isset($params['range']) && substr($params['range'], 0, 6) === 'bytes=') {
+ $rangeArray = self::parseHttpRangeHeader(substr($params['range'], 6),
+ \OC\Files\Filesystem::filesize($filename));
+ }
+
if (\OC\Files\Filesystem::isReadable($filename)) {
- self::sendHeaders($filename, $name);
+ self::sendHeaders($filename, $name, $rangeArray);
} elseif (!\OC\Files\Filesystem::file_exists($filename)) {
header("HTTP/1.0 404 Not Found");
$tmpl = new OC_Template('', '404', 'guest');
@@ -178,10 +267,41 @@ class OC_Files {
header("HTTP/1.0 403 Forbidden");
die('403 Forbidden');
}
- if ($onlyHeader) {
+ if (isset($params['head']) && $params['head']) {
return;
}
- $view->readfile($filename);
+ if (!empty($rangeArray)) {
+ try {
+ if (count($rangeArray) == 1) {
+ $view->readfilePart($filename, $rangeArray[0]['from'], $rangeArray[0]['to']);
+ }
+ else {
+ // check if file is seekable (if not throw UnseekableException)
+ // we have to check it before body contents
+ $view->readfilePart($filename, $rangeArray[0]['size'], $rangeArray[0]['size']);
+
+ $type = \OC::$server->getMimeTypeDetector()->getSecureMimeType(\OC\Files\Filesystem::getMimeType($filename));
+
+ foreach ($rangeArray as $range) {
+ echo "\r\n--".self::getBoundary()."\r\n".
+ "Content-type: ".$type."\r\n".
+ "Content-range: bytes ".$range['from']."-".$range['to']."/".$range['size']."\r\n\r\n";
+ $view->readfilePart($filename, $range['from'], $range['to']);
+ }
+ echo "\r\n--".self::getBoundary()."--\r\n";
+ }
+ } catch (\OCP\Files\UnseekableException $ex) {
+ // file is unseekable
+ header_remove('Accept-Ranges');
+ header_remove('Content-Range');
+ header("HTTP/1.1 200 OK");
+ self::sendHeaders($filename, $name, array());
+ $view->readfile($filename);
+ }
+ }
+ else {
+ $view->readfile($filename);
+ }
}
/**
diff --git a/lib/private/legacy/group.php b/lib/private/legacy/group.php
index ceb99389942..361d9ff846c 100644
--- a/lib/private/legacy/group.php
+++ b/lib/private/legacy/group.php
@@ -1,18 +1,19 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Georg Ehrke <georg@owncloud.com>
* @author goodkiller <markopraakli@gmail.com>
* @author Jakob Sack <mail@jakobsack.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author macjohnny <estebanmarin@gmx.ch>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Qingping Hou <dave2008713@gmail.com>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/legacy/group/backend.php b/lib/private/legacy/group/backend.php
index a5df9c339b9..970468a58fa 100644
--- a/lib/private/legacy/group/backend.php
+++ b/lib/private/legacy/group/backend.php
@@ -1,16 +1,12 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Jakob Sack <mail@jakobsack.de>
* @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
- * @author Michael Gapczynski <GapczynskiM@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
- * @author Robin McCorkell <robin@mccorkell.me.uk>
- * @author Thomas Müller <thomas.mueller@tmit.eu>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/legacy/group/database.php b/lib/private/legacy/group/database.php
index 3969b3681fe..de9b18a6ca3 100644
--- a/lib/private/legacy/group/database.php
+++ b/lib/private/legacy/group/database.php
@@ -1,6 +1,5 @@
<?php
/**
- * @author Jakob Sack <mail@jakobsack.de>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <rullzer@owncloud.com>
*
diff --git a/lib/private/legacy/group/example.php b/lib/private/legacy/group/example.php
index 17fae90f2e0..c519af9cd87 100644
--- a/lib/private/legacy/group/example.php
+++ b/lib/private/legacy/group/example.php
@@ -2,7 +2,7 @@
/**
* @author Bart Visscher <bartv@thisnet.nl>
* @author Felix Moeller <mail@felixmoeller.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
diff --git a/lib/private/legacy/group/interface.php b/lib/private/legacy/group/interface.php
index bdfe5235103..33e299e5f65 100644
--- a/lib/private/legacy/group/interface.php
+++ b/lib/private/legacy/group/interface.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
*
diff --git a/lib/private/legacy/helper.php b/lib/private/legacy/helper.php
index 29ee1be76b4..25cfff3036b 100644
--- a/lib/private/legacy/helper.php
+++ b/lib/private/legacy/helper.php
@@ -1,8 +1,8 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Christopher Schäpers <kondou@ts.unde.re>
* @author Clark Tomlinson <fallen013@gmail.com>
* @author Fabian Henze <flyser42@gmx.de>
@@ -12,7 +12,7 @@
* @author Jan-Christoph Borchardt <hey@jancborchardt.net>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Olivier Paroz <github@oparoz.com>
diff --git a/lib/private/legacy/hook.php b/lib/private/legacy/hook.php
index 76f3b657eb9..a2b568c1bd6 100644
--- a/lib/private/legacy/hook.php
+++ b/lib/private/legacy/hook.php
@@ -3,7 +3,7 @@
* @author Bart Visscher <bartv@thisnet.nl>
* @author Jakob Sack <mail@jakobsack.de>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
diff --git a/lib/private/legacy/image.php b/lib/private/legacy/image.php
index a97347df623..313b781f0d3 100644
--- a/lib/private/legacy/image.php
+++ b/lib/private/legacy/image.php
@@ -3,7 +3,7 @@
* @author Andreas Fischer <bantu@owncloud.com>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Bartek Przybylski <bart.p.pl@gmail.com>
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Byron Marohn <combustible@live.com>
* @author Christopher Schäpers <kondou@ts.unde.re>
* @author Georg Ehrke <georg@owncloud.com>
@@ -11,7 +11,7 @@
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Johannes Willnecker <johannes@willnecker.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Olivier Paroz <github@oparoz.com>
* @author Robin Appelman <icewind@owncloud.com>
diff --git a/lib/private/legacy/json.php b/lib/private/legacy/json.php
index 74aebd476fb..d201d69723e 100644
--- a/lib/private/legacy/json.php
+++ b/lib/private/legacy/json.php
@@ -4,7 +4,7 @@
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @author Felix Moeller <mail@felixmoeller.de>
* @author Georg Ehrke <georg@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
diff --git a/lib/private/legacy/l10n.php b/lib/private/legacy/l10n.php
index 3530bb4aad1..d5bd58c483a 100644
--- a/lib/private/legacy/l10n.php
+++ b/lib/private/legacy/l10n.php
@@ -5,7 +5,7 @@
* @author Jakob Sack <mail@jakobsack.de>
* @author Jan-Christoph Borchardt <hey@jancborchardt.net>
* @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
diff --git a/lib/private/legacy/ocs.php b/lib/private/legacy/ocs.php
index f48879a98b1..cc3599f6325 100644
--- a/lib/private/legacy/ocs.php
+++ b/lib/private/legacy/ocs.php
@@ -1,8 +1,8 @@
<?php
/**
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Frank Karlitschek <frank@owncloud.org>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Frank Karlitschek <frank@karlitschek.de>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
diff --git a/lib/private/legacy/ocs/cloud.php b/lib/private/legacy/ocs/cloud.php
index 1430cfa94ed..fb555433583 100644
--- a/lib/private/legacy/ocs/cloud.php
+++ b/lib/private/legacy/ocs/cloud.php
@@ -1,7 +1,7 @@
<?php
/**
* @author Roeland Jago Douma <rullzer@owncloud.com>
- * @author Tom Needham <tom@owncloud.com>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/legacy/ocs/config.php b/lib/private/legacy/ocs/config.php
index b2e473276b4..5b8e054fbe1 100644
--- a/lib/private/legacy/ocs/config.php
+++ b/lib/private/legacy/ocs/config.php
@@ -1,7 +1,7 @@
<?php
/**
* @author Roeland Jago Douma <rullzer@owncloud.com>
- * @author Tom Needham <tom@owncloud.com>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/legacy/ocs/person.php b/lib/private/legacy/ocs/person.php
index edf4a7ced55..1aae9de616a 100644
--- a/lib/private/legacy/ocs/person.php
+++ b/lib/private/legacy/ocs/person.php
@@ -1,7 +1,7 @@
<?php
/**
* @author Roeland Jago Douma <rullzer@owncloud.com>
- * @author Tom Needham <tom@owncloud.com>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/legacy/ocs/privatedata.php b/lib/private/legacy/ocs/privatedata.php
index 3c402457366..3b4b0773fe5 100644
--- a/lib/private/legacy/ocs/privatedata.php
+++ b/lib/private/legacy/ocs/privatedata.php
@@ -1,7 +1,7 @@
<?php
/**
* @author Roeland Jago Douma <rullzer@owncloud.com>
- * @author Tom Needham <tom@owncloud.com>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/legacy/ocs/result.php b/lib/private/legacy/ocs/result.php
index b59c6404e25..a3726c83775 100644
--- a/lib/private/legacy/ocs/result.php
+++ b/lib/private/legacy/ocs/result.php
@@ -1,7 +1,7 @@
<?php
/**
- * @author Christopher Schäpers <kondou@ts.unde.re>
* @author Roeland Jago Douma <rullzer@owncloud.com>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/private/legacy/response.php b/lib/private/legacy/response.php
index 51e0ff75e6a..54a9385b7a6 100644
--- a/lib/private/legacy/response.php
+++ b/lib/private/legacy/response.php
@@ -3,9 +3,10 @@
* @author Andreas Fischer <bantu@owncloud.com>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin McCorkell <robin@mccorkell.me.uk>
+ * @author Stefan Weil <sw@weilnetz.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
*
diff --git a/lib/private/legacy/template.php b/lib/private/legacy/template.php
index 73725529702..ce3b3dba38d 100644
--- a/lib/private/legacy/template.php
+++ b/lib/private/legacy/template.php
@@ -2,18 +2,20 @@
/**
* @author Adam Williamson <awilliam@redhat.com>
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Brice Maron <brice@bmaron.net>
- * @author Frank Karlitschek <frank@owncloud.org>
+ * @author Frank Karlitschek <frank@karlitschek.de>
* @author Hendrik Leppelsack <hendrik@leppelsack.de>
* @author Individual IT Services <info@individual-it.net>
* @author Jakob Sack <mail@jakobsack.de>
+ * @author Jan-Christoph Borchardt <hey@jancborchardt.net>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Raghu Nayyar <hey@raghunayyar.com>
* @author Robin Appelman <icewind@owncloud.com>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
*
diff --git a/lib/private/legacy/template/functions.php b/lib/private/legacy/template/functions.php
index a0540420e29..e3b090d1cef 100644
--- a/lib/private/legacy/template/functions.php
+++ b/lib/private/legacy/template/functions.php
@@ -2,10 +2,9 @@
/**
* @author Bart Visscher <bartv@thisnet.nl>
* @author Bernhard Posselt <dev@bernhard-posselt.com>
- * @author Georg Ehrke <georg@owncloud.com>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin McCorkell <robin@mccorkell.me.uk>
* @author Roeland Jago Douma <rullzer@owncloud.com>
diff --git a/lib/private/legacy/user.php b/lib/private/legacy/user.php
index 499e916994a..6e113bd4742 100644
--- a/lib/private/legacy/user.php
+++ b/lib/private/legacy/user.php
@@ -2,16 +2,15 @@
/**
* @author Aldo "xoen" Giambelluca <xoen@xoen.org>
* @author Andreas Fischer <bantu@owncloud.com>
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Bartek Przybylski <bart.p.pl@gmail.com>
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Christoph Wurst <christoph@owncloud.com>
- * @author Florian Preinstorfer <nblock@archlinux.us>
* @author Georg Ehrke <georg@owncloud.com>
* @author Jakob Sack <mail@jakobsack.de>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
diff --git a/lib/private/legacy/user/backend.php b/lib/private/legacy/user/backend.php
index 42c7b9aa126..1f369659365 100644
--- a/lib/private/legacy/user/backend.php
+++ b/lib/private/legacy/user/backend.php
@@ -1,18 +1,12 @@
<?php
/**
* @author Aldo "xoen" Giambelluca <xoen@xoen.org>
- * @author Bart Visscher <bartv@thisnet.nl>
- * @author Björn Schießle <schiessle@owncloud.com>
* @author Dominik Schmidt <dev@dominik-schmidt.de>
- * @author Georg Ehrke <georg@owncloud.com>
* @author Jakob Sack <mail@jakobsack.de>
* @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
- * @author Robin Appelman <icewind@owncloud.com>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Sam Tuke <mail@samtuke.com>
- * @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Tigran Mkrtchyan <tigran.mkrtchyan@desy.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/private/legacy/user/interface.php b/lib/private/legacy/user/interface.php
index d2868a79c2c..b9df649d030 100644
--- a/lib/private/legacy/user/interface.php
+++ b/lib/private/legacy/user/interface.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
*
diff --git a/lib/private/legacy/util.php b/lib/private/legacy/util.php
index 4f7a8668dfc..e3d678f568d 100644
--- a/lib/private/legacy/util.php
+++ b/lib/private/legacy/util.php
@@ -1,41 +1,39 @@
<?php
/**
* @author Adam Williamson <awilliam@redhat.com>
- * @author Andreas Böhler <dev@aboehler.at>
* @author Andreas Fischer <bantu@owncloud.com>
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @author Birk Borkason <daniel.niccoli@gmail.com>
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Brice Maron <brice@bmaron.net>
+ * @author Christoph Wurst <christoph@owncloud.com>
* @author Christopher Schäpers <kondou@ts.unde.re>
* @author Clark Tomlinson <fallen013@gmail.com>
* @author cmeh <cmeh@users.noreply.github.com>
* @author Florin Peter <github@florin-peter.de>
- * @author Frank Karlitschek <frank@owncloud.org>
+ * @author Frank Karlitschek <frank@karlitschek.de>
* @author Georg Ehrke <georg@owncloud.com>
* @author helix84 <helix84@centrum.sk>
* @author Individual IT Services <info@individual-it.net>
* @author Jakob Sack <mail@jakobsack.de>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Markus Goetz <markus@woboq.com>
* @author Martin Mattel <martin.mattel@diemattels.at>
* @author Marvin Thomas Rabe <mrabe@marvinrabe.de>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
- * @author Michael Göhler <somebody.here@gmx.de>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
* @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Stefan Rado <owncloud@sradonia.net>
+ * @author Stefan Weil <sw@weilnetz.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
- * @author Thomas Schmidt <tschmidt@suse.de>
* @author Thomas Tanghus <thomas@tanghus.net>
* @author Victor Dubiniuk <dubiniuk@owncloud.com>
- * @author Vincent Chan <plus.vincchan@gmail.com>
* @author Vincent Petry <pvince81@owncloud.com>
* @author Volkan Gezer <volkangezer@gmail.com>
*
@@ -172,6 +170,13 @@ class OC_Util {
return $storage;
});
+ \OC\Files\Filesystem::addStorageWrapper('oc_encoding', function ($mountPoint, \OCP\Files\Storage $storage, \OCP\Files\Mount\IMountPoint $mount) {
+ if ($mount->getOption('encoding_compatibility', true) && !$storage->instanceOfStorage('\OC\Files\Storage\Shared') && !$storage->isLocal()) {
+ return new \OC\Files\Storage\Wrapper\Encoding(['storage' => $storage]);
+ }
+ return $storage;
+ });
+
\OC\Files\Filesystem::addStorageWrapper('oc_quota', function ($mountPoint, $storage) {
// set up quota for home storages, even for other users
// which can happen when using sharing
diff --git a/lib/public/Activity/IExtension.php b/lib/public/Activity/IExtension.php
index b00dbdda20a..cefa6861a78 100644
--- a/lib/public/Activity/IExtension.php
+++ b/lib/public/Activity/IExtension.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
diff --git a/lib/public/App.php b/lib/public/App.php
index c3ba90cea41..f7915536b3d 100644
--- a/lib/public/App.php
+++ b/lib/public/App.php
@@ -1,7 +1,7 @@
<?php
/**
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Frank Karlitschek <frank@owncloud.org>
+ * @author Frank Karlitschek <frank@karlitschek.de>
* @author Georg Ehrke <georg@owncloud.com>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
diff --git a/lib/public/App/IAppManager.php b/lib/public/App/IAppManager.php
index 0e1e0dfbebd..52cea89b708 100644
--- a/lib/public/App/IAppManager.php
+++ b/lib/public/App/IAppManager.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
diff --git a/lib/public/App/ManagerEvent.php b/lib/public/App/ManagerEvent.php
index 0ea7213dfc5..be5e2bb7310 100644
--- a/lib/public/App/ManagerEvent.php
+++ b/lib/public/App/ManagerEvent.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/public/AppFramework/ApiController.php b/lib/public/AppFramework/ApiController.php
index 07b72d9a46c..5687cf6546a 100644
--- a/lib/public/AppFramework/ApiController.php
+++ b/lib/public/AppFramework/ApiController.php
@@ -2,6 +2,7 @@
/**
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Stefan Weil <sw@weilnetz.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/public/AppFramework/App.php b/lib/public/AppFramework/App.php
index e5069150765..0073a077bc6 100644
--- a/lib/public/AppFramework/App.php
+++ b/lib/public/AppFramework/App.php
@@ -3,6 +3,7 @@
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Thomas Tanghus <thomas@tanghus.net>
*
diff --git a/lib/public/AppFramework/Controller.php b/lib/public/AppFramework/Controller.php
index bd87197a7f1..daf6018cd12 100644
--- a/lib/public/AppFramework/Controller.php
+++ b/lib/public/AppFramework/Controller.php
@@ -1,7 +1,7 @@
<?php
/**
* @author Bernhard Posselt <dev@bernhard-posselt.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Thomas Tanghus <thomas@tanghus.net>
diff --git a/lib/public/AppFramework/Db/Mapper.php b/lib/public/AppFramework/Db/Mapper.php
index 2e97b06802a..f47982fce18 100644
--- a/lib/public/AppFramework/Db/Mapper.php
+++ b/lib/public/AppFramework/Db/Mapper.php
@@ -2,7 +2,7 @@
/**
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
diff --git a/lib/public/AppFramework/Http/ContentSecurityPolicy.php b/lib/public/AppFramework/Http/ContentSecurityPolicy.php
index 7762ca809a2..689220ca1ed 100644
--- a/lib/public/AppFramework/Http/ContentSecurityPolicy.php
+++ b/lib/public/AppFramework/Http/ContentSecurityPolicy.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author sualko <klaus@jsxc.org>
*
diff --git a/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php b/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php
index 61718ff7c0e..26d138d68d4 100644
--- a/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php
+++ b/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/public/AppFramework/Http/ICallbackResponse.php b/lib/public/AppFramework/Http/ICallbackResponse.php
index 97de484e917..57ccb8e7a6b 100644
--- a/lib/public/AppFramework/Http/ICallbackResponse.php
+++ b/lib/public/AppFramework/Http/ICallbackResponse.php
@@ -1,7 +1,7 @@
<?php
/**
* @author Bernhard Posselt <dev@bernhard-posselt.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/public/AppFramework/Http/IOutput.php b/lib/public/AppFramework/Http/IOutput.php
index 6c404c0b026..a9d7375f4b2 100644
--- a/lib/public/AppFramework/Http/IOutput.php
+++ b/lib/public/AppFramework/Http/IOutput.php
@@ -1,8 +1,9 @@
<?php
/**
* @author Bernhard Posselt <dev@bernhard-posselt.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Stefan Weil <sw@weilnetz.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/public/AppFramework/Http/JSONResponse.php b/lib/public/AppFramework/Http/JSONResponse.php
index 89433fd23e5..32f2947b4be 100644
--- a/lib/public/AppFramework/Http/JSONResponse.php
+++ b/lib/public/AppFramework/Http/JSONResponse.php
@@ -1,7 +1,7 @@
<?php
/**
* @author Bernhard Posselt <dev@bernhard-posselt.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Thomas Tanghus <thomas@tanghus.net>
diff --git a/lib/public/AppFramework/Http/NotFoundResponse.php b/lib/public/AppFramework/Http/NotFoundResponse.php
index 8dcebd7cceb..8ef966fb9ce 100644
--- a/lib/public/AppFramework/Http/NotFoundResponse.php
+++ b/lib/public/AppFramework/Http/NotFoundResponse.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/public/AppFramework/Http/Response.php b/lib/public/AppFramework/Http/Response.php
index 253d58b86ff..eb573507acc 100644
--- a/lib/public/AppFramework/Http/Response.php
+++ b/lib/public/AppFramework/Http/Response.php
@@ -2,7 +2,7 @@
/**
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Thomas Tanghus <thomas@tanghus.net>
diff --git a/lib/public/AppFramework/Http/StreamResponse.php b/lib/public/AppFramework/Http/StreamResponse.php
index e9157f9ddb2..01243e15488 100644
--- a/lib/public/AppFramework/Http/StreamResponse.php
+++ b/lib/public/AppFramework/Http/StreamResponse.php
@@ -1,7 +1,7 @@
<?php
/**
* @author Bernhard Posselt <dev@bernhard-posselt.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/public/AppFramework/Middleware.php b/lib/public/AppFramework/Middleware.php
index 12ec5f7d573..fc4c46617c2 100644
--- a/lib/public/AppFramework/Middleware.php
+++ b/lib/public/AppFramework/Middleware.php
@@ -1,6 +1,7 @@
<?php
/**
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Stefan Weil <sw@weilnetz.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Thomas Tanghus <thomas@tanghus.net>
*
diff --git a/lib/public/AppFramework/OCSController.php b/lib/public/AppFramework/OCSController.php
index 4736e94326e..e118b34250d 100644
--- a/lib/public/AppFramework/OCSController.php
+++ b/lib/public/AppFramework/OCSController.php
@@ -2,6 +2,7 @@
/**
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Stefan Weil <sw@weilnetz.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/public/Authentication/TwoFactorAuth/IProvider.php b/lib/public/Authentication/TwoFactorAuth/IProvider.php
new file mode 100644
index 00000000000..fa812d8c56d
--- /dev/null
+++ b/lib/public/Authentication/TwoFactorAuth/IProvider.php
@@ -0,0 +1,92 @@
+<?php
+/**
+ * @author Christoph Wurst <christoph@owncloud.com>
+ *
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCP\Authentication\TwoFactorAuth;
+
+use OCP\IUser;
+use OCP\Template;
+
+/**
+ * @since 9.1.0
+ */
+interface IProvider {
+
+ /**
+ * Get unique identifier of this 2FA provider
+ *
+ * @since 9.1.0
+ *
+ * @return string
+ */
+ public function getId();
+
+ /**
+ * Get the display name for selecting the 2FA provider
+ *
+ * Example: "Email"
+ *
+ * @since 9.1.0
+ *
+ * @return string
+ */
+ public function getDisplayName();
+
+ /**
+ * Get the description for selecting the 2FA provider
+ *
+ * Example: "Get a token via e-mail"
+ *
+ * @since 9.1.0
+ *
+ * @return string
+ */
+ public function getDescription();
+
+ /**
+ * Get the template for rending the 2FA provider view
+ *
+ * @since 9.1.0
+ *
+ * @param IUser $user
+ * @return Template
+ */
+ public function getTemplate(IUser $user);
+
+ /**
+ * Verify the given challenge
+ *
+ * @since 9.1.0
+ *
+ * @param IUser $user
+ * @param string $challenge
+ */
+ public function verifyChallenge(IUser $user, $challenge);
+
+ /**
+ * Decides whether 2FA is enabled for the given user
+ *
+ * @since 9.1.0
+ *
+ * @param IUser $user
+ * @return boolean
+ */
+ public function isTwoFactorAuthEnabledForUser(IUser $user);
+}
diff --git a/lib/public/Comments/IComment.php b/lib/public/Comments/IComment.php
index 23580923058..d5112dec048 100644
--- a/lib/public/Comments/IComment.php
+++ b/lib/public/Comments/IComment.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/public/Comments/ICommentsManager.php b/lib/public/Comments/ICommentsManager.php
index cdc74282243..d605820a3b1 100644
--- a/lib/public/Comments/ICommentsManager.php
+++ b/lib/public/Comments/ICommentsManager.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
diff --git a/lib/public/Comments/ICommentsManagerFactory.php b/lib/public/Comments/ICommentsManagerFactory.php
index 6d814104ae1..43884362817 100644
--- a/lib/public/Comments/ICommentsManagerFactory.php
+++ b/lib/public/Comments/ICommentsManagerFactory.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
*
diff --git a/lib/public/Comments/IllegalIDChangeException.php b/lib/public/Comments/IllegalIDChangeException.php
index 056113bdb3f..65f6fa5ec6b 100644
--- a/lib/public/Comments/IllegalIDChangeException.php
+++ b/lib/public/Comments/IllegalIDChangeException.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/public/Comments/MessageTooLongException.php b/lib/public/Comments/MessageTooLongException.php
index 054cecf320f..1ec4fd6ff46 100644
--- a/lib/public/Comments/MessageTooLongException.php
+++ b/lib/public/Comments/MessageTooLongException.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/public/Comments/NotFoundException.php b/lib/public/Comments/NotFoundException.php
index 579dcd26f60..ebce2c6c8e1 100644
--- a/lib/public/Comments/NotFoundException.php
+++ b/lib/public/Comments/NotFoundException.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/public/Config.php b/lib/public/Config.php
index 5b5dcb0e78e..514ddbb85b3 100644
--- a/lib/public/Config.php
+++ b/lib/public/Config.php
@@ -1,10 +1,10 @@
<?php
/**
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Frank Karlitschek <frank@owncloud.org>
+ * @author Frank Karlitschek <frank@karlitschek.de>
* @author Georg Ehrke <georg@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
diff --git a/lib/public/DB.php b/lib/public/DB.php
index 4706c5e95ee..08d8a6ec2eb 100644
--- a/lib/public/DB.php
+++ b/lib/public/DB.php
@@ -3,7 +3,7 @@
* @author Bart Visscher <bartv@thisnet.nl>
* @author Dan Bartram <daneybartram@gmail.com>
* @author Felix Moeller <mail@felixmoeller.de>
- * @author Frank Karlitschek <frank@owncloud.org>
+ * @author Frank Karlitschek <frank@karlitschek.de>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
diff --git a/lib/public/DB/QueryBuilder/ICompositeExpression.php b/lib/public/DB/QueryBuilder/ICompositeExpression.php
index 1a5366c6ce4..70608151385 100644
--- a/lib/public/DB/QueryBuilder/ICompositeExpression.php
+++ b/lib/public/DB/QueryBuilder/ICompositeExpression.php
@@ -1,6 +1,7 @@
<?php
/**
* @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/public/Defaults.php b/lib/public/Defaults.php
index 58b25d5914a..791ed5827de 100644
--- a/lib/public/Defaults.php
+++ b/lib/public/Defaults.php
@@ -1,7 +1,7 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author scolebrook <scolebrook@mac.com>
*
diff --git a/lib/public/Encryption/Exceptions/GenericEncryptionException.php b/lib/public/Encryption/Exceptions/GenericEncryptionException.php
index c1331689c7f..3822a0ba7d3 100644
--- a/lib/public/Encryption/Exceptions/GenericEncryptionException.php
+++ b/lib/public/Encryption/Exceptions/GenericEncryptionException.php
@@ -1,8 +1,8 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Clark Tomlinson <fallen013@gmail.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
diff --git a/lib/public/Encryption/IEncryptionModule.php b/lib/public/Encryption/IEncryptionModule.php
index 8d20a1ab57d..57a1baa0c1c 100644
--- a/lib/public/Encryption/IEncryptionModule.php
+++ b/lib/public/Encryption/IEncryptionModule.php
@@ -1,8 +1,9 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/public/Encryption/IFile.php b/lib/public/Encryption/IFile.php
index 9933cb0164e..dd1d8161f69 100644
--- a/lib/public/Encryption/IFile.php
+++ b/lib/public/Encryption/IFile.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
diff --git a/lib/public/Encryption/IManager.php b/lib/public/Encryption/IManager.php
index b07de0cbb4f..a6eb06a34eb 100644
--- a/lib/public/Encryption/IManager.php
+++ b/lib/public/Encryption/IManager.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
*
diff --git a/lib/public/Encryption/Keys/IStorage.php b/lib/public/Encryption/Keys/IStorage.php
index cfac4ba58f7..9c2322a1dd7 100644
--- a/lib/public/Encryption/Keys/IStorage.php
+++ b/lib/public/Encryption/Keys/IStorage.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
diff --git a/lib/public/Files.php b/lib/public/Files.php
index f7f0b30bf86..0ffaec8f681 100644
--- a/lib/public/Files.php
+++ b/lib/public/Files.php
@@ -1,13 +1,14 @@
<?php
/**
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Björn Schießle <schiessle@owncloud.com>
- * @author Frank Karlitschek <frank@owncloud.org>
+ * @author Björn Schießle <bjoern@schiessle.org>
+ * @author Frank Karlitschek <frank@karlitschek.de>
* @author Georg Ehrke <georg@owncloud.com>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
+ * @author Stefan Weil <sw@weilnetz.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/public/Files/Cache/IScanner.php b/lib/public/Files/Cache/IScanner.php
index ce1f408028c..74bc2fc8843 100644
--- a/lib/public/Files/Cache/IScanner.php
+++ b/lib/public/Files/Cache/IScanner.php
@@ -27,6 +27,7 @@ namespace OCP\Files\Cache;
* @since 9.0.0
*/
interface IScanner {
+ const SCAN_RECURSIVE_INCOMPLETE = 2; // only recursive into not fully scanned folders
const SCAN_RECURSIVE = true;
const SCAN_SHALLOW = false;
diff --git a/lib/public/Files/Config/IHomeMountProvider.php b/lib/public/Files/Config/IHomeMountProvider.php
index bedcd3cfacc..97747ea61d7 100644
--- a/lib/public/Files/Config/IHomeMountProvider.php
+++ b/lib/public/Files/Config/IHomeMountProvider.php
@@ -1,6 +1,5 @@
<?php
/**
- * @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/public/Files/StorageNotAvailableException.php b/lib/public/Files/StorageNotAvailableException.php
index 7afb067f298..1ed2b1cae75 100644
--- a/lib/public/Files/StorageNotAvailableException.php
+++ b/lib/public/Files/StorageNotAvailableException.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Jesús Macias <jmacias@solidgear.es>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
diff --git a/lib/public/Files/UnseekableException.php b/lib/public/Files/UnseekableException.php
new file mode 100644
index 00000000000..b59f844ce2f
--- /dev/null
+++ b/lib/public/Files/UnseekableException.php
@@ -0,0 +1,35 @@
+<?php
+/**
+ * @author Piotr Filiciak <piotr@filiciak.pl>
+ *
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+/**
+ * Public interface of ownCloud for apps to use.
+ * Files/UnseekableException class
+ */
+
+// use OCP namespace for all classes that are considered public.
+// This means that they should be used by apps instead of the internal ownCloud classes
+namespace OCP\Files;
+
+/**
+ * Exception for seek problem
+ * @since 9.1.0
+ */
+class UnseekableException extends \Exception {}
diff --git a/lib/public/GroupInterface.php b/lib/public/GroupInterface.php
index 628bc2f42ef..e0b18fb1e2f 100644
--- a/lib/public/GroupInterface.php
+++ b/lib/public/GroupInterface.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
*
diff --git a/lib/public/Http/Client/IClient.php b/lib/public/Http/Client/IClient.php
index 85db2a9ad02..6179208a7bd 100644
--- a/lib/public/Http/Client/IClient.php
+++ b/lib/public/Http/Client/IClient.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/public/Http/Client/IClientService.php b/lib/public/Http/Client/IClientService.php
index 907aa42fd3b..d802c0a49bd 100644
--- a/lib/public/Http/Client/IClientService.php
+++ b/lib/public/Http/Client/IClientService.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/public/Http/Client/IResponse.php b/lib/public/Http/Client/IResponse.php
index 09189d77014..9c6c8c73e29 100644
--- a/lib/public/Http/Client/IResponse.php
+++ b/lib/public/Http/Client/IResponse.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
*
diff --git a/lib/public/IAvatar.php b/lib/public/IAvatar.php
index 7b811b26b68..f243ece6774 100644
--- a/lib/public/IAvatar.php
+++ b/lib/public/IAvatar.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
diff --git a/lib/public/IAvatarManager.php b/lib/public/IAvatarManager.php
index ef6b00ffd13..58b3073016d 100644
--- a/lib/public/IAvatarManager.php
+++ b/lib/public/IAvatarManager.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Christopher Schäpers <kondou@ts.unde.re>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin McCorkell <robin@mccorkell.me.uk>
diff --git a/lib/public/ICache.php b/lib/public/ICache.php
index a1ce068d819..0568d61d75c 100644
--- a/lib/public/ICache.php
+++ b/lib/public/ICache.php
@@ -1,5 +1,6 @@
<?php
/**
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Thomas Tanghus <thomas@tanghus.net>
diff --git a/lib/public/ICertificateManager.php b/lib/public/ICertificateManager.php
index 27eebcf0491..1cd507348f6 100644
--- a/lib/public/ICertificateManager.php
+++ b/lib/public/ICertificateManager.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
*
diff --git a/lib/public/IConfig.php b/lib/public/IConfig.php
index 8dac390a99c..9e5024545b3 100644
--- a/lib/public/IConfig.php
+++ b/lib/public/IConfig.php
@@ -3,7 +3,7 @@
* @author Bart Visscher <bartv@thisnet.nl>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
diff --git a/lib/public/IGroupManager.php b/lib/public/IGroupManager.php
index cda40606f9d..0bd600cf258 100644
--- a/lib/public/IGroupManager.php
+++ b/lib/public/IGroupManager.php
@@ -3,7 +3,7 @@
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
diff --git a/lib/public/IHelper.php b/lib/public/IHelper.php
index 4ad1d5704fd..6fbad4049df 100644
--- a/lib/public/IHelper.php
+++ b/lib/public/IHelper.php
@@ -1,7 +1,7 @@
<?php
/**
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/public/IRequest.php b/lib/public/IRequest.php
index 296c70f4ecc..86756413cd8 100644
--- a/lib/public/IRequest.php
+++ b/lib/public/IRequest.php
@@ -2,7 +2,7 @@
/**
* @author Bart Visscher <bartv@thisnet.nl>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Thomas Tanghus <thomas@tanghus.net>
diff --git a/lib/public/IServerContainer.php b/lib/public/IServerContainer.php
index 65754f993f8..2ec18a54620 100644
--- a/lib/public/IServerContainer.php
+++ b/lib/public/IServerContainer.php
@@ -1,13 +1,13 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Bernhard Posselt <dev@bernhard-posselt.com>
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Christopher Schäpers <kondou@ts.unde.re>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Robin McCorkell <robin@mccorkell.me.uk>
diff --git a/lib/public/ISession.php b/lib/public/ISession.php
index 7bc8654a1b9..68f68dfc85d 100644
--- a/lib/public/ISession.php
+++ b/lib/public/ISession.php
@@ -1,6 +1,7 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Christoph Wurst <christoph@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Thomas Tanghus <thomas@tanghus.net>
diff --git a/lib/public/IUser.php b/lib/public/IUser.php
index 16617a2f2f6..83d0bd11b55 100644
--- a/lib/public/IUser.php
+++ b/lib/public/IUser.php
@@ -1,7 +1,7 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
diff --git a/lib/public/IUserManager.php b/lib/public/IUserManager.php
index 00c0bbc8721..77f5d389b46 100644
--- a/lib/public/IUserManager.php
+++ b/lib/public/IUserManager.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
diff --git a/lib/public/IUserSession.php b/lib/public/IUserSession.php
index 2196f2c8ce0..7d70d6eb81d 100644
--- a/lib/public/IUserSession.php
+++ b/lib/public/IUserSession.php
@@ -3,7 +3,7 @@
* @author Bart Visscher <bartv@thisnet.nl>
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
*
diff --git a/lib/public/JSON.php b/lib/public/JSON.php
index fceffa0001e..e136fde0704 100644
--- a/lib/public/JSON.php
+++ b/lib/public/JSON.php
@@ -1,8 +1,8 @@
<?php
/**
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Frank Karlitschek <frank@owncloud.org>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Frank Karlitschek <frank@karlitschek.de>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Thomas Tanghus <thomas@tanghus.net>
diff --git a/lib/public/Mail/IMailer.php b/lib/public/Mail/IMailer.php
index e3c751277ac..61559c82e70 100644
--- a/lib/public/Mail/IMailer.php
+++ b/lib/public/Mail/IMailer.php
@@ -1,6 +1,7 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/public/Migration/IOutput.php b/lib/public/Migration/IOutput.php
index d3b43028495..2e6ad00c640 100644
--- a/lib/public/Migration/IOutput.php
+++ b/lib/public/Migration/IOutput.php
@@ -1,6 +1,7 @@
<?php
/**
* @author Thomas Müller <thomas.mueller@tmit.eu>
+ * @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/public/Migration/IRepairStep.php b/lib/public/Migration/IRepairStep.php
index 07830a935f9..3394b70a6ff 100644
--- a/lib/public/Migration/IRepairStep.php
+++ b/lib/public/Migration/IRepairStep.php
@@ -1,5 +1,6 @@
<?php
/**
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/public/Response.php b/lib/public/Response.php
index a2a7667684a..62827450d7f 100644
--- a/lib/public/Response.php
+++ b/lib/public/Response.php
@@ -2,10 +2,11 @@
/**
* @author Andreas Fischer <bantu@owncloud.com>
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Frank Karlitschek <frank@owncloud.org>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Frank Karlitschek <frank@karlitschek.de>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
+ * @author Stefan Weil <sw@weilnetz.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
*
diff --git a/lib/public/Route/IRouter.php b/lib/public/Route/IRouter.php
index b4573fb39f2..3266842928b 100644
--- a/lib/public/Route/IRouter.php
+++ b/lib/public/Route/IRouter.php
@@ -2,7 +2,7 @@
/**
* @author Bart Visscher <bartv@thisnet.nl>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
* @author Roeland Jago Douma <rullzer@owncloud.com>
diff --git a/lib/public/search/pagedprovider.php b/lib/public/Search/PagedProvider.php
index 80a2896f73f..80a2896f73f 100644
--- a/lib/public/search/pagedprovider.php
+++ b/lib/public/Search/PagedProvider.php
diff --git a/lib/public/search/provider.php b/lib/public/Search/Provider.php
index 9bcbe36ef7a..9bcbe36ef7a 100644
--- a/lib/public/search/provider.php
+++ b/lib/public/Search/Provider.php
diff --git a/lib/public/search/result.php b/lib/public/Search/Result.php
index e90c2619032..e90c2619032 100644
--- a/lib/public/search/result.php
+++ b/lib/public/Search/Result.php
diff --git a/lib/public/Security/IContentSecurityPolicyManager.php b/lib/public/Security/IContentSecurityPolicyManager.php
index 10f1efe995f..7b4544b936e 100644
--- a/lib/public/Security/IContentSecurityPolicyManager.php
+++ b/lib/public/Security/IContentSecurityPolicyManager.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
diff --git a/lib/public/Security/ICrypto.php b/lib/public/Security/ICrypto.php
index 62f27017ab7..7c0ab7c7933 100644
--- a/lib/public/Security/ICrypto.php
+++ b/lib/public/Security/ICrypto.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/public/Security/IHasher.php b/lib/public/Security/IHasher.php
index 39ba5094b12..b5e45829426 100644
--- a/lib/public/Security/IHasher.php
+++ b/lib/public/Security/IHasher.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/public/Security/ISecureRandom.php b/lib/public/Security/ISecureRandom.php
index 9b346afe680..03ac51aa168 100644
--- a/lib/public/Security/ISecureRandom.php
+++ b/lib/public/Security/ISecureRandom.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/public/Security/StringUtils.php b/lib/public/Security/StringUtils.php
index ff1e290315a..d34f6dda315 100644
--- a/lib/public/Security/StringUtils.php
+++ b/lib/public/Security/StringUtils.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/public/Session/Exceptions/SessionNotAvailableException.php b/lib/public/Session/Exceptions/SessionNotAvailableException.php
index d347e0df15e..6ec4a339897 100644
--- a/lib/public/Session/Exceptions/SessionNotAvailableException.php
+++ b/lib/public/Session/Exceptions/SessionNotAvailableException.php
@@ -1,5 +1,4 @@
<?php
-
/**
* @author Christoph Wurst <christoph@owncloud.com>
*
diff --git a/lib/public/Share.php b/lib/public/Share.php
index 9c62ec703e4..bff45864db0 100644
--- a/lib/public/Share.php
+++ b/lib/public/Share.php
@@ -2,7 +2,7 @@
/**
* @author Andreas Fischer <bantu@owncloud.com>
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
@@ -11,6 +11,7 @@
* @author Robin McCorkell <robin@mccorkell.me.uk>
* @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Sam Tuke <mail@samtuke.com>
+ * @author Stefan Weil <sw@weilnetz.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/public/Share/Exceptions/GenericShareException.php b/lib/public/Share/Exceptions/GenericShareException.php
index b32c2f26574..eeb08ccdb22 100644
--- a/lib/public/Share/Exceptions/GenericShareException.php
+++ b/lib/public/Share/Exceptions/GenericShareException.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Roeland Jago Douma <rullzer@owncloud.com>
*
* @copyright Copyright (c) 2016, ownCloud, Inc.
diff --git a/lib/public/Share_Backend.php b/lib/public/Share_Backend.php
index 110403c1f49..0e01911757f 100644
--- a/lib/public/Share_Backend.php
+++ b/lib/public/Share_Backend.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Björn Schießle <bjoern@schiessle.org>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin McCorkell <robin@mccorkell.me.uk>
diff --git a/lib/public/Template.php b/lib/public/Template.php
index 7e46745c9d8..3721f1f124f 100644
--- a/lib/public/Template.php
+++ b/lib/public/Template.php
@@ -1,7 +1,7 @@
<?php
/**
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Frank Karlitschek <frank@owncloud.org>
+ * @author Frank Karlitschek <frank@karlitschek.de>
* @author Georg Ehrke <georg@owncloud.com>
* @author Jan-Christoph Borchardt <hey@jancborchardt.net>
* @author Joas Schilling <nickvergessen@owncloud.com>
diff --git a/lib/public/User.php b/lib/public/User.php
index 64ac92d2100..5ffb61a28c2 100644
--- a/lib/public/User.php
+++ b/lib/public/User.php
@@ -1,12 +1,13 @@
<?php
/**
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Björn Schießle <schiessle@owncloud.com>
- * @author Frank Karlitschek <frank@owncloud.org>
+ * @author Björn Schießle <bjoern@schiessle.org>
+ * @author Frank Karlitschek <frank@karlitschek.de>
* @author Georg Ehrke <georg@owncloud.com>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lorenzo M. Catucci <lorenzo@sancho.ccd.uniroma2.it>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin McCorkell <robin@mccorkell.me.uk>
* @author Thomas Müller <thomas.mueller@tmit.eu>
diff --git a/lib/public/UserInterface.php b/lib/public/UserInterface.php
index 954c2d68133..d3521992dbb 100644
--- a/lib/public/UserInterface.php
+++ b/lib/public/UserInterface.php
@@ -1,6 +1,6 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
*
diff --git a/lib/public/Util.php b/lib/public/Util.php
index 45df62ac735..eb573168e10 100644
--- a/lib/public/Util.php
+++ b/lib/public/Util.php
@@ -1,14 +1,14 @@
<?php
/**
- * @author Arthur Schiwon <blizzz@owncloud.com>
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Björn Schießle <schiessle@owncloud.com>
- * @author Frank Karlitschek <frank@owncloud.org>
+ * @author Björn Schießle <bjoern@schiessle.org>
+ * @author Frank Karlitschek <frank@karlitschek.de>
* @author Georg Ehrke <georg@owncloud.com>
* @author Individual IT Services <info@individual-it.net>
* @author Jens-Christian Fischer <jens-christian.fischer@switch.ch>
* @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Nicolas Grekas <nicolas.grekas@gmail.com>