summaryrefslogtreecommitdiffstats
path: root/lib/private
diff options
context:
space:
mode:
Diffstat (limited to 'lib/private')
-rw-r--r--lib/private/Server.php3
-rw-r--r--lib/private/appframework/http/request.php3
-rw-r--r--lib/private/avatar.php16
-rw-r--r--lib/private/avatarmanager.php11
-rw-r--r--lib/private/files/objectstore/objectstorestorage.php4
-rw-r--r--lib/private/files/view.php4
-rw-r--r--lib/private/route/router.php9
7 files changed, 41 insertions, 9 deletions
diff --git a/lib/private/Server.php b/lib/private/Server.php
index 48ee4b27d32..392b2b17b9c 100644
--- a/lib/private/Server.php
+++ b/lib/private/Server.php
@@ -313,7 +313,8 @@ class Server extends ServerContainer implements IServerContainer {
return new AvatarManager(
$c->getUserManager(),
$c->getRootFolder(),
- $c->getL10N('lib')
+ $c->getL10N('lib'),
+ $c->getLogger()
);
});
$this->registerService('Logger', function (Server $c) {
diff --git a/lib/private/appframework/http/request.php b/lib/private/appframework/http/request.php
index 2dc636fcff2..f4cbb6384ba 100644
--- a/lib/private/appframework/http/request.php
+++ b/lib/private/appframework/http/request.php
@@ -59,6 +59,9 @@ class Request implements \ArrayAccess, \Countable, IRequest {
// Android Chrome user agent: https://developers.google.com/chrome/mobile/docs/user-agent
const USER_AGENT_ANDROID_MOBILE_CHROME = '#Android.*Chrome/[.0-9]*#';
const USER_AGENT_FREEBOX = '#^Mozilla/5\.0$#';
+ const USER_AGENT_OWNCLOUD_IOS = '/^Mozilla\/5\.0 \(iOS\) ownCloud\-iOS.*$/';
+ const USER_AGENT_OWNCLOUD_ANDROID = '/^Mozilla\/5\.0 \(Android\) ownCloud\-android.*$/';
+ const USER_AGENT_OWNCLOUD_DESKTOP = '/^Mozilla\/5\.0 \([A-Za-z ]+\) (mirall|csyncoC)\/.*$/';
const REGEX_LOCALHOST = '/^(127\.0\.0\.1|localhost)$/';
protected $inputStream;
diff --git a/lib/private/avatar.php b/lib/private/avatar.php
index 8ed920c9b18..4b9d3d82404 100644
--- a/lib/private/avatar.php
+++ b/lib/private/avatar.php
@@ -31,10 +31,12 @@ use OC\User\User;
use OCP\Files\Folder;
use OCP\Files\File;
use OCP\Files\NotFoundException;
+use OCP\Files\NotPermittedException;
use OCP\IAvatar;
use OCP\IImage;
use OCP\IL10N;
use OC_Image;
+use OCP\ILogger;
/**
* This class gets and sets users avatars.
@@ -47,6 +49,8 @@ class Avatar implements IAvatar {
private $l;
/** @var User */
private $user;
+ /** @var ILogger */
+ private $logger;
/**
* constructor
@@ -54,11 +58,13 @@ class Avatar implements IAvatar {
* @param Folder $folder The folder where the avatars are
* @param IL10N $l
* @param User $user
+ * @param ILogger $logger
*/
- public function __construct (Folder $folder, IL10N $l, $user) {
+ public function __construct (Folder $folder, IL10N $l, $user, ILogger $logger) {
$this->folder = $folder;
$this->l = $l;
$this->user = $user;
+ $this->logger = $logger;
}
/**
@@ -164,8 +170,12 @@ class Avatar implements IAvatar {
if ($size !== -1) {
$avatar->resize($size);
}
- $file = $this->folder->newFile($path);
- $file->putContent($avatar->data());
+ try {
+ $file = $this->folder->newFile($path);
+ $file->putContent($avatar->data());
+ } catch (NotPermittedException $e) {
+ $this->logger->error('Failed to save avatar for ' . $this->user->getUID());
+ }
}
return $file;
diff --git a/lib/private/avatarmanager.php b/lib/private/avatarmanager.php
index 3b619cda574..62f4faf436c 100644
--- a/lib/private/avatarmanager.php
+++ b/lib/private/avatarmanager.php
@@ -28,6 +28,7 @@ namespace OC;
use OCP\Files\Folder;
use OCP\Files\NotFoundException;
use OCP\IAvatarManager;
+use OCP\ILogger;
use OCP\IUserManager;
use OCP\Files\IRootFolder;
use OCP\IL10N;
@@ -46,20 +47,26 @@ class AvatarManager implements IAvatarManager {
/** @var IL10N */
private $l;
+ /** @var ILogger */
+ private $logger;
+
/**
* AvatarManager constructor.
*
* @param IUserManager $userManager
* @param IRootFolder $rootFolder
* @param IL10N $l
+ * @param ILogger $logger
*/
public function __construct(
IUserManager $userManager,
IRootFolder $rootFolder,
- IL10N $l) {
+ IL10N $l,
+ ILogger $logger) {
$this->userManager = $userManager;
$this->rootFolder = $rootFolder;
$this->l = $l;
+ $this->logger = $logger;
}
/**
@@ -85,6 +92,6 @@ class AvatarManager implements IAvatarManager {
/** @var Folder $folder */
$folder = $this->rootFolder->get($dir);
- return new Avatar($folder, $this->l, $user);
+ return new Avatar($folder, $this->l, $user, $this->logger);
}
}
diff --git a/lib/private/files/objectstore/objectstorestorage.php b/lib/private/files/objectstore/objectstorestorage.php
index 35c2c19c75b..8c643dbdcc7 100644
--- a/lib/private/files/objectstore/objectstorestorage.php
+++ b/lib/private/files/objectstore/objectstorestorage.php
@@ -39,6 +39,10 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common {
*/
protected $objectStore;
/**
+ * @var string $id
+ */
+ protected $id;
+ /**
* @var \OC\User\User $user
*/
protected $user;
diff --git a/lib/private/files/view.php b/lib/private/files/view.php
index 52be8a7e226..4421a016356 100644
--- a/lib/private/files/view.php
+++ b/lib/private/files/view.php
@@ -269,17 +269,21 @@ class View {
// cut of /user/files to get the relative path to data/user/files
$pathParts = explode('/', $path, 4);
$relPath = '/' . $pathParts[3];
+ $this->lockFile($relPath, ILockingProvider::LOCK_SHARED, true);
\OC_Hook::emit(
Filesystem::CLASSNAME, "umount",
array(Filesystem::signal_param_path => $relPath)
);
+ $this->changeLock($relPath, ILockingProvider::LOCK_EXCLUSIVE, true);
$result = $mount->removeMount();
+ $this->changeLock($relPath, ILockingProvider::LOCK_SHARED, true);
if ($result) {
\OC_Hook::emit(
Filesystem::CLASSNAME, "post_umount",
array(Filesystem::signal_param_path => $relPath)
);
}
+ $this->unlockFile($relPath, ILockingProvider::LOCK_SHARED, true);
return $result;
} else {
// do not allow deleting the storage's root / the mount point
diff --git a/lib/private/route/router.php b/lib/private/route/router.php
index 03bee3d2037..ef02b5aba0e 100644
--- a/lib/private/route/router.php
+++ b/lib/private/route/router.php
@@ -95,9 +95,12 @@ class Router implements IRouter {
if (!isset($this->routingFiles)) {
$this->routingFiles = [];
foreach (\OC_APP::getEnabledApps() as $app) {
- $file = \OC_App::getAppPath($app) . '/appinfo/routes.php';
- if (file_exists($file)) {
- $this->routingFiles[$app] = $file;
+ $appPath = \OC_App::getAppPath($app);
+ if($appPath !== false) {
+ $file = $appPath . '/appinfo/routes.php';
+ if (file_exists($file)) {
+ $this->routingFiles[$app] = $file;
+ }
}
}
}