about summary refs log tree commit diff
path: root/pkgs/servers
diff options
context:
space:
mode:
authorMartin Weinelt <hexa@darmstadt.ccc.de>2024-02-11 03:54:28 +0100
committerMartin Weinelt <hexa@darmstadt.ccc.de>2024-02-11 03:54:28 +0100
commitad719a45037641bf03524b956b0e71218634528e (patch)
treea5d6d1704cf974ad1e368407ccf644c0827a4215 /pkgs/servers
parente72d6a1d3facbcbbc771ca53f8f31c07838825b3 (diff)
home-assistant: update patch to follow symlinks in static dir
Diffstat (limited to 'pkgs/servers')
-rw-r--r--pkgs/servers/home-assistant/default.nix2
-rw-r--r--pkgs/servers/home-assistant/patches/static-follow-symlinks.patch12
-rw-r--r--pkgs/servers/home-assistant/patches/static-symlinks.patch37
3 files changed, 13 insertions, 38 deletions
diff --git a/pkgs/servers/home-assistant/default.nix b/pkgs/servers/home-assistant/default.nix
index a3d74d51c4dfb..107a93fed6a97 100644
--- a/pkgs/servers/home-assistant/default.nix
+++ b/pkgs/servers/home-assistant/default.nix
@@ -485,7 +485,7 @@ in python.pkgs.buildPythonApplication rec {
   # leave this in, so users don't have to constantly update their downstream patch handling
   patches = [
     # Follow symlinks in /var/lib/hass/www
-    ./patches/static-symlinks.patch
+    ./patches/static-follow-symlinks.patch
 
     # Patch path to ffmpeg binary
     (substituteAll {
diff --git a/pkgs/servers/home-assistant/patches/static-follow-symlinks.patch b/pkgs/servers/home-assistant/patches/static-follow-symlinks.patch
new file mode 100644
index 0000000000000..c99a8d88a1e8b
--- /dev/null
+++ b/pkgs/servers/home-assistant/patches/static-follow-symlinks.patch
@@ -0,0 +1,12 @@
+diff --git a/homeassistant/components/http/static.py b/homeassistant/components/http/static.py
+index e6e773d4c0..b53e0b4a11 100644
+--- a/homeassistant/components/http/static.py
++++ b/homeassistant/components/http/static.py
+@@ -31,7 +31,6 @@ def _get_file_path(rel_url: str, directory: Path) -> Path | None:
+         # where the static dir is totally different
+         raise HTTPForbidden
+     filepath: Path = directory.joinpath(filename).resolve()
+-    filepath.relative_to(directory)
+     # on opening a dir, load its contents if allowed
+     if filepath.is_dir():
+         return None
diff --git a/pkgs/servers/home-assistant/patches/static-symlinks.patch b/pkgs/servers/home-assistant/patches/static-symlinks.patch
deleted file mode 100644
index 7784a60f6b2a2..0000000000000
--- a/pkgs/servers/home-assistant/patches/static-symlinks.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-diff --git a/homeassistant/components/frontend/__init__.py b/homeassistant/components/frontend/__init__.py
-index 2ec991750f..9a937006ce 100644
---- a/homeassistant/components/frontend/__init__.py
-+++ b/homeassistant/components/frontend/__init__.py
-@@ -383,7 +383,7 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
- 
-     local = hass.config.path("www")
-     if os.path.isdir(local):
--        hass.http.register_static_path("/local", local, not is_dev)
-+        hass.http.register_static_path("/local", local, not is_dev, follow_symlinks=True)
- 
-     # Can be removed in 2023
-     hass.http.register_redirect("/config/server_control", "/developer-tools/yaml")
-diff --git a/homeassistant/components/http/__init__.py b/homeassistant/components/http/__init__.py
-index 122b7b79ce..3cf2b7e0db 100644
---- a/homeassistant/components/http/__init__.py
-+++ b/homeassistant/components/http/__init__.py
-@@ -411,16 +411,16 @@ class HomeAssistantHTTP:
-         )
- 
-     def register_static_path(
--        self, url_path: str, path: str, cache_headers: bool = True
-+        self, url_path: str, path: str, cache_headers: bool = True, follow_symlinks: bool = False
-     ) -> None:
-         """Register a folder or file to serve as a static path."""
-         if os.path.isdir(path):
-             if cache_headers:
-                 resource: CachingStaticResource | web.StaticResource = (
--                    CachingStaticResource(url_path, path)
-+                    CachingStaticResource(url_path, path, follow_symlinks=follow_symlinks)
-                 )
-             else:
--                resource = web.StaticResource(url_path, path)
-+                resource = web.StaticResource(url_path, path, follow_symlinks=follow_symlinks)
-             self.app.router.register_resource(resource)
-             self.app["allow_configured_cors"](resource)
-             return