Merge pull request #1991 from pbiering/feature-sharing-prepare2

Feature sharing prepare#2
This commit is contained in:
Peter Bieringer
2026-02-23 08:19:44 +01:00
committed by GitHub
4 changed files with 16 additions and 5 deletions

View File

@@ -67,6 +67,8 @@ class ApplicationPartMove(ApplicationBase):
# Remote destination server, not supported
return httputils.REMOTE_DESTINATION
to_user = user
to_permissions_filter = None
permissions_filter = None
access = Access(self._rights, user, path, permissions_filter)
if not access.check("w"):
@@ -77,8 +79,6 @@ class ApplicationPartMove(ApplicationBase):
"start with base prefix", to_path, path)
return httputils.NOT_ALLOWED
to_path = to_path[len(base_prefix):]
to_user = user
to_permissions_filter = None
to_access = Access(self._rights, to_user, to_path, to_permissions_filter)
if not to_access.check("w"):
return httputils.NOT_ALLOWED

View File

@@ -4,7 +4,7 @@
# Copyright © 2008-2017 Guillaume Ayoub
# Copyright © 2017-2020 Unrud <unrud@outlook.com>
# Copyright © 2020-2023 Tuna Celik <tuna@jakpark.com>
# Copyright © 2024-2025 Peter Bieringer <pb@bieringer.de>
# Copyright © 2024-2026 Peter Bieringer <pb@bieringer.de>
#
# This library is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -181,7 +181,8 @@ class ApplicationPartPut(ApplicationBase):
def do_PUT(self, environ: types.WSGIEnviron, base_prefix: str,
path: str, user: str, remote_host: str, remote_useragent: str) -> types.WSGIResponse:
"""Manage PUT request."""
access = Access(self._rights, user, path)
permissions_filter = None
access = Access(self._rights, user, path, permissions_filter)
if not access.check("w"):
return httputils.NOT_ALLOWED
try:

View File

@@ -3,7 +3,7 @@
# Copyright © 2008 Pascal Halter
# Copyright © 2008-2017 Guillaume Ayoub
# Copyright © 2017-2022 Unrud <unrud@outlook.com>
# Copyright © 2024-2025 Peter Bieringer <pb@bieringer.de>
# Copyright © 2024-2026 Peter Bieringer <pb@bieringer.de>
#
# This library is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -106,6 +106,10 @@ MIMETYPES: Mapping[str, str] = {
FALLBACK_MIMETYPE: str = "application/octet-stream"
def bad_request(additional_details: str) -> types.WSGIResponse:
return (client.BAD_REQUEST, (("Content-Type", "text/plain"),), f"Bad Request: {additional_details}", None)
def decode_request(configuration: "config.Configuration",
environ: types.WSGIEnviron, text: bytes) -> str:
"""Try to magically decode ``text`` according to given ``environ``."""

View File

@@ -89,6 +89,8 @@ class BaseTest:
(str, type(http_if_match)))
remote_useragent = kwargs.pop("remote_useragent", None)
remote_host = kwargs.pop("remote_host", None)
content_type = kwargs.pop("content_type", None)
accept = kwargs.pop("accept", None)
environ: Dict[str, Any] = {k.upper(): v for k, v in kwargs.items()}
for k, v in environ.items():
if not isinstance(v, str):
@@ -104,6 +106,10 @@ class BaseTest:
environ["HTTP_USER_AGENT"] = remote_useragent
if remote_host:
environ["REMOTE_ADDR"] = remote_host
if content_type:
environ["CONTENT_TYPE"] = content_type
if accept:
environ["HTTP_ACCEPT"] = accept
environ["REQUEST_METHOD"] = method.upper()
environ["PATH_INFO"] = path
if data is not None: