Merge pull request #2758 from nextcloud/only-one-dav-backend
Register only one dav backend
This commit is contained in:
commit
591b60d11c
|
@ -24,9 +24,7 @@
|
||||||
namespace OCA\DAV\Connector\Sabre;
|
namespace OCA\DAV\Connector\Sabre;
|
||||||
|
|
||||||
use OC\Files\View;
|
use OC\Files\View;
|
||||||
use Sabre\DAV\Exception\NotFound;
|
|
||||||
use Sabre\DAV\Exception\PreconditionFailed;
|
use Sabre\DAV\Exception\PreconditionFailed;
|
||||||
use Sabre\DAV\Exception\ReportNotSupported;
|
|
||||||
use Sabre\DAV\Exception\BadRequest;
|
use Sabre\DAV\Exception\BadRequest;
|
||||||
use Sabre\DAV\ServerPlugin;
|
use Sabre\DAV\ServerPlugin;
|
||||||
use Sabre\DAV\Tree;
|
use Sabre\DAV\Tree;
|
||||||
|
@ -105,7 +103,7 @@ class FilesReportPlugin extends ServerPlugin {
|
||||||
* @param ITagManager $fileTagger manager for private tags
|
* @param ITagManager $fileTagger manager for private tags
|
||||||
* @param IUserSession $userSession
|
* @param IUserSession $userSession
|
||||||
* @param IGroupManager $groupManager
|
* @param IGroupManager $groupManager
|
||||||
* @param Folder $userfolder
|
* @param Folder $userFolder
|
||||||
*/
|
*/
|
||||||
public function __construct(Tree $tree,
|
public function __construct(Tree $tree,
|
||||||
View $view,
|
View $view,
|
||||||
|
@ -161,11 +159,12 @@ class FilesReportPlugin extends ServerPlugin {
|
||||||
* REPORT operations to look for files
|
* REPORT operations to look for files
|
||||||
*
|
*
|
||||||
* @param string $reportName
|
* @param string $reportName
|
||||||
* @param [] $report
|
* @param $report
|
||||||
* @param string $uri
|
* @param string $uri
|
||||||
* @return bool
|
* @return bool
|
||||||
* @throws NotFound
|
* @throws BadRequest
|
||||||
* @throws ReportNotSupported
|
* @throws PreconditionFailed
|
||||||
|
* @internal param $ [] $report
|
||||||
*/
|
*/
|
||||||
public function onReport($reportName, $report, $uri) {
|
public function onReport($reportName, $report, $uri) {
|
||||||
$reportTargetNode = $this->server->tree->getNodeForPath($uri);
|
$reportTargetNode = $this->server->tree->getNodeForPath($uri);
|
||||||
|
@ -232,7 +231,6 @@ class FilesReportPlugin extends ServerPlugin {
|
||||||
private function getFilesBaseUri($uri, $subPath) {
|
private function getFilesBaseUri($uri, $subPath) {
|
||||||
$uri = trim($uri, '/');
|
$uri = trim($uri, '/');
|
||||||
$subPath = trim($subPath, '/');
|
$subPath = trim($subPath, '/');
|
||||||
$filesUri = '';
|
|
||||||
if (empty($subPath)) {
|
if (empty($subPath)) {
|
||||||
$filesUri = $uri;
|
$filesUri = $uri;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
*/
|
*/
|
||||||
namespace OCA\DAV\Files;
|
namespace OCA\DAV\Files;
|
||||||
|
|
||||||
|
use Sabre\DAV\INode;
|
||||||
use Sabre\DAVACL\AbstractPrincipalCollection;
|
use Sabre\DAVACL\AbstractPrincipalCollection;
|
||||||
use Sabre\HTTP\URLUtil;
|
use Sabre\HTTP\URLUtil;
|
||||||
use Sabre\DAV\SimpleCollection;
|
use Sabre\DAV\SimpleCollection;
|
||||||
|
|
|
@ -33,11 +33,14 @@ use OCA\DAV\CardDAV\ImageExportPlugin;
|
||||||
use OCA\DAV\Comments\CommentsPlugin;
|
use OCA\DAV\Comments\CommentsPlugin;
|
||||||
use OCA\DAV\Connector\Sabre\Auth;
|
use OCA\DAV\Connector\Sabre\Auth;
|
||||||
use OCA\DAV\Connector\Sabre\BlockLegacyClientPlugin;
|
use OCA\DAV\Connector\Sabre\BlockLegacyClientPlugin;
|
||||||
|
use OCA\DAV\Connector\Sabre\CommentPropertiesPlugin;
|
||||||
use OCA\DAV\Connector\Sabre\CopyEtagHeaderPlugin;
|
use OCA\DAV\Connector\Sabre\CopyEtagHeaderPlugin;
|
||||||
use OCA\DAV\Connector\Sabre\DavAclPlugin;
|
use OCA\DAV\Connector\Sabre\DavAclPlugin;
|
||||||
use OCA\DAV\Connector\Sabre\DummyGetResponsePlugin;
|
use OCA\DAV\Connector\Sabre\DummyGetResponsePlugin;
|
||||||
use OCA\DAV\Connector\Sabre\FakeLockerPlugin;
|
use OCA\DAV\Connector\Sabre\FakeLockerPlugin;
|
||||||
use OCA\DAV\Connector\Sabre\FilesPlugin;
|
use OCA\DAV\Connector\Sabre\FilesPlugin;
|
||||||
|
use OCA\DAV\Connector\Sabre\FilesReportPlugin;
|
||||||
|
use OCA\DAV\Connector\Sabre\SharesPlugin;
|
||||||
use OCA\DAV\DAV\PublicAuth;
|
use OCA\DAV\DAV\PublicAuth;
|
||||||
use OCA\DAV\Connector\Sabre\QuotaPlugin;
|
use OCA\DAV\Connector\Sabre\QuotaPlugin;
|
||||||
use OCA\DAV\Files\BrowserErrorPagePlugin;
|
use OCA\DAV\Files\BrowserErrorPagePlugin;
|
||||||
|
@ -85,7 +88,6 @@ class Server {
|
||||||
|
|
||||||
$this->server->addPlugin(new BlockLegacyClientPlugin(\OC::$server->getConfig()));
|
$this->server->addPlugin(new BlockLegacyClientPlugin(\OC::$server->getConfig()));
|
||||||
$authPlugin = new Plugin();
|
$authPlugin = new Plugin();
|
||||||
$authPlugin->addBackend($authBackend);
|
|
||||||
$authPlugin->addBackend(new PublicAuth());
|
$authPlugin->addBackend(new PublicAuth());
|
||||||
$this->server->addPlugin($authPlugin);
|
$this->server->addPlugin($authPlugin);
|
||||||
|
|
||||||
|
@ -166,7 +168,7 @@ class Server {
|
||||||
// custom properties plugin must be the last one
|
// custom properties plugin must be the last one
|
||||||
$userSession = \OC::$server->getUserSession();
|
$userSession = \OC::$server->getUserSession();
|
||||||
$user = $userSession->getUser();
|
$user = $userSession->getUser();
|
||||||
if (!is_null($user)) {
|
if ($user !== null) {
|
||||||
$view = \OC\Files\Filesystem::getView();
|
$view = \OC\Files\Filesystem::getView();
|
||||||
$this->server->addPlugin(
|
$this->server->addPlugin(
|
||||||
new FilesPlugin(
|
new FilesPlugin(
|
||||||
|
@ -188,9 +190,10 @@ class Server {
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
if ($view !== null) {
|
||||||
$this->server->addPlugin(
|
$this->server->addPlugin(
|
||||||
new QuotaPlugin($view)
|
new QuotaPlugin($view));
|
||||||
);
|
}
|
||||||
$this->server->addPlugin(
|
$this->server->addPlugin(
|
||||||
new TagsPlugin(
|
new TagsPlugin(
|
||||||
$this->server->tree, \OC::$server->getTagManager()
|
$this->server->tree, \OC::$server->getTagManager()
|
||||||
|
@ -198,17 +201,18 @@ class Server {
|
||||||
);
|
);
|
||||||
// TODO: switch to LazyUserFolder
|
// TODO: switch to LazyUserFolder
|
||||||
$userFolder = \OC::$server->getUserFolder();
|
$userFolder = \OC::$server->getUserFolder();
|
||||||
$this->server->addPlugin(new \OCA\DAV\Connector\Sabre\SharesPlugin(
|
$this->server->addPlugin(new SharesPlugin(
|
||||||
$this->server->tree,
|
$this->server->tree,
|
||||||
$userSession,
|
$userSession,
|
||||||
$userFolder,
|
$userFolder,
|
||||||
\OC::$server->getShareManager()
|
\OC::$server->getShareManager()
|
||||||
));
|
));
|
||||||
$this->server->addPlugin(new \OCA\DAV\Connector\Sabre\CommentPropertiesPlugin(
|
$this->server->addPlugin(new CommentPropertiesPlugin(
|
||||||
\OC::$server->getCommentsManager(),
|
\OC::$server->getCommentsManager(),
|
||||||
$userSession
|
$userSession
|
||||||
));
|
));
|
||||||
$this->server->addPlugin(new \OCA\DAV\Connector\Sabre\FilesReportPlugin(
|
if ($view !== null) {
|
||||||
|
$this->server->addPlugin(new FilesReportPlugin(
|
||||||
$this->server->tree,
|
$this->server->tree,
|
||||||
$view,
|
$view,
|
||||||
\OC::$server->getSystemTagManager(),
|
\OC::$server->getSystemTagManager(),
|
||||||
|
@ -219,7 +223,7 @@ class Server {
|
||||||
$userFolder
|
$userFolder
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
$this->server->addPlugin(new \OCA\DAV\Connector\Sabre\CopyEtagHeaderPlugin());
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,8 @@ namespace OCA\Federation\DAV;
|
||||||
|
|
||||||
use OCA\Federation\DbHandler;
|
use OCA\Federation\DbHandler;
|
||||||
use Sabre\DAV\Auth\Backend\AbstractBasic;
|
use Sabre\DAV\Auth\Backend\AbstractBasic;
|
||||||
|
use Sabre\HTTP\RequestInterface;
|
||||||
|
use Sabre\HTTP\ResponseInterface;
|
||||||
|
|
||||||
class FedAuth extends AbstractBasic {
|
class FedAuth extends AbstractBasic {
|
||||||
|
|
||||||
|
@ -57,4 +59,10 @@ class FedAuth extends AbstractBasic {
|
||||||
protected function validateUserPass($username, $password) {
|
protected function validateUserPass($username, $password) {
|
||||||
return $this->db->auth($username, $password);
|
return $this->db->auth($username, $password);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @inheritdoc
|
||||||
|
*/
|
||||||
|
function challenge(RequestInterface $request, ResponseInterface $response) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -657,4 +657,28 @@ trait WebDav {
|
||||||
$this->asGetsPropertiesOfFolderWith($user, 'entry', $path, $propertiesTable);
|
$this->asGetsPropertiesOfFolderWith($user, 'entry', $path, $propertiesTable);
|
||||||
PHPUnit_Framework_Assert::assertNotEquals($this->response['{DAV:}getetag'], $this->storedETAG[$user][$path]);
|
PHPUnit_Framework_Assert::assertNotEquals($this->response['{DAV:}getetag'], $this->storedETAG[$user][$path]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @When Connecting to dav endpoint
|
||||||
|
*/
|
||||||
|
public function connectingToDavEndpoint() {
|
||||||
|
try {
|
||||||
|
$this->response = $this->makeDavRequest(null, 'PROPFIND', '', []);
|
||||||
|
} catch (\GuzzleHttp\Exception\ClientException $e) {
|
||||||
|
$this->response = $e->getResponse();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Then there are no duplicate headers
|
||||||
|
*/
|
||||||
|
public function thereAreNoDuplicateHeaders() {
|
||||||
|
$headers = $this->response->getHeaders();
|
||||||
|
foreach ($headers as $headerName => $headerValues) {
|
||||||
|
// if a header has multiple values, they must be different
|
||||||
|
if (count($headerValues) > 1 && count(array_unique($headerValues)) < count($headerValues)) {
|
||||||
|
throw new \Exception('Duplicate header found: ' . $headerName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,22 @@ Feature: webdav-related
|
||||||
Background:
|
Background:
|
||||||
Given using api version "1"
|
Given using api version "1"
|
||||||
|
|
||||||
|
Scenario: Unauthenticated call old dav path
|
||||||
|
Given using old dav path
|
||||||
|
When connecting to dav endpoint
|
||||||
|
Then the HTTP status code should be "401"
|
||||||
|
And there are no duplicate headers
|
||||||
|
And The following headers should be set
|
||||||
|
|WWW-Authenticate|Basic realm="Nextcloud"|
|
||||||
|
|
||||||
|
Scenario: Unauthenticated call new dav path
|
||||||
|
Given using new dav path
|
||||||
|
When connecting to dav endpoint
|
||||||
|
Then the HTTP status code should be "401"
|
||||||
|
And there are no duplicate headers
|
||||||
|
And The following headers should be set
|
||||||
|
|WWW-Authenticate|Basic realm="Nextcloud"|
|
||||||
|
|
||||||
Scenario: Moving a file
|
Scenario: Moving a file
|
||||||
Given using old dav path
|
Given using old dav path
|
||||||
And As an "admin"
|
And As an "admin"
|
||||||
|
|
Loading…
Reference in New Issue