Skip to content

Commit

Permalink
feat: Add allowed_view_extensions config node
Browse files Browse the repository at this point in the history
Signed-off-by: Kostiantyn Miakshyn <[email protected]>
  • Loading branch information
Koc committed Oct 26, 2024
1 parent 7b36547 commit 9026673
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 0 deletions.
7 changes: 7 additions & 0 deletions apps/dav/lib/DAV/ViewOnlyPlugin.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
use OCP\Files\Folder;
use OCP\Files\NotFoundException;
use OCP\Files\Storage\ISharedStorage;
use OCP\IConfig;
use Sabre\DAV\Exception\NotFound;
use Sabre\DAV\Server;
use Sabre\DAV\ServerPlugin;
Expand All @@ -27,6 +28,7 @@ class ViewOnlyPlugin extends ServerPlugin {

public function __construct(
private ?Folder $userFolder,
private IConfig $config,
) {
}

Expand Down Expand Up @@ -92,6 +94,11 @@ public function checkViewOnly(RequestInterface $request): bool {
return true;
}

$allowedFileExtensions = $this->config->getSystemValue('allowed_view_extensions', []);
if ($allowedFileExtensions && in_array($node->getExtension(), $allowedFileExtensions, true)) {
return true;
}

// Check if read-only and on whether permission can download is both set and disabled.
$canDownload = $attributes->getAttribute('permissions', 'download');
if ($canDownload !== null && !$canDownload) {
Expand Down
1 change: 1 addition & 0 deletions apps/dav/lib/Server.php
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,7 @@ public function __construct(
// Allow view-only plugin for webdav requests
$this->server->addPlugin(new ViewOnlyPlugin(
\OC::$server->getUserFolder(),
\OCP\Server::get(IConfig::class),
));

// custom properties plugin must be the last one
Expand Down

0 comments on commit 9026673

Please sign in to comment.