From 912c69cd6ca6e4c48eb64cbb722190fadc4ceeee Mon Sep 17 00:00:00 2001 From: scyto Date: Mon, 18 Aug 2025 11:03:59 -0700 Subject: [PATCH] refactor listen settings to add ipv6 --- .../main/rootfs/etc/s6-overlay/s6-rc.d/certsync/run | 2 +- docker/main/rootfs/etc/s6-overlay/s6-rc.d/nginx/run | 2 +- .../{get_tls_settings.py => get_listen_settings.py} | 3 ++- frigate/config/config.py | 5 ++++- frigate/config/ipv6.py | 9 --------- frigate/config/network.py | 11 +++++++++++ 6 files changed, 19 insertions(+), 13 deletions(-) rename docker/main/rootfs/usr/local/nginx/{get_tls_settings.py => get_listen_settings.py} (87%) delete mode 100644 frigate/config/ipv6.py create mode 100644 frigate/config/network.py diff --git a/docker/main/rootfs/etc/s6-overlay/s6-rc.d/certsync/run b/docker/main/rootfs/etc/s6-overlay/s6-rc.d/certsync/run index af3bc04de..5b8291665 100755 --- a/docker/main/rootfs/etc/s6-overlay/s6-rc.d/certsync/run +++ b/docker/main/rootfs/etc/s6-overlay/s6-rc.d/certsync/run @@ -10,7 +10,7 @@ echo "[INFO] Starting certsync..." lefile="/etc/letsencrypt/live/frigate/fullchain.pem" -tls_enabled=`python3 /usr/local/nginx/get_tls_settings.py | jq -r .enabled` +tls_enabled=`python3 /usr/local/nginx/get_listen_settings.py | jq -r .enabled` while true do diff --git a/docker/main/rootfs/etc/s6-overlay/s6-rc.d/nginx/run b/docker/main/rootfs/etc/s6-overlay/s6-rc.d/nginx/run index 273182930..8bd9b5250 100755 --- a/docker/main/rootfs/etc/s6-overlay/s6-rc.d/nginx/run +++ b/docker/main/rootfs/etc/s6-overlay/s6-rc.d/nginx/run @@ -85,7 +85,7 @@ python3 /usr/local/nginx/get_base_path.py | \ -out /usr/local/nginx/conf/base_path.conf # build templates for optional TLS support -python3 /usr/local/nginx/get_tls_settings.py | \ +python3 /usr/local/nginx/get_listen_settings.py | \ tempio -template /usr/local/nginx/templates/listen.gotmpl \ -out /usr/local/nginx/conf/listen.conf diff --git a/docker/main/rootfs/usr/local/nginx/get_tls_settings.py b/docker/main/rootfs/usr/local/nginx/get_listen_settings.py similarity index 87% rename from docker/main/rootfs/usr/local/nginx/get_tls_settings.py rename to docker/main/rootfs/usr/local/nginx/get_listen_settings.py index 927d6f7a5..184318d75 100644 --- a/docker/main/rootfs/usr/local/nginx/get_tls_settings.py +++ b/docker/main/rootfs/usr/local/nginx/get_listen_settings.py @@ -27,7 +27,8 @@ except FileNotFoundError: config: dict[str, Any] = {} tls_config: dict[str, any] = config.get("tls", {"enabled": True}) -ipv6_config: dict[str, any] = config.get("ipv6", {"enabled": False}) +networking_config = config.get("networking", {}) +ipv6_config = networking_config.get("ipv6", {"enabled": False}) output = { "tls": tls_config, diff --git a/frigate/config/config.py b/frigate/config/config.py index bb34b139f..206a71072 100644 --- a/frigate/config/config.py +++ b/frigate/config/config.py @@ -61,7 +61,7 @@ from .classification import ( ) from .database import DatabaseConfig from .env import EnvVars -from .ipv6 import IPv6Config +from .network import IPv6Config from .logger import LoggerConfig from .mqtt import MqttConfig from .proxy import ProxyConfig @@ -361,6 +361,9 @@ class FrigateConfig(FrigateBaseModel): notifications: NotificationConfig = Field( default_factory=NotificationConfig, title="Global notification configuration." ) + networking: NetworkingConfig = Field( + default_factory=NetworkingConfig, title="Networking configuration" + ) proxy: ProxyConfig = Field( default_factory=ProxyConfig, title="Proxy configuration." ) diff --git a/frigate/config/ipv6.py b/frigate/config/ipv6.py deleted file mode 100644 index 48a2883ac..000000000 --- a/frigate/config/ipv6.py +++ /dev/null @@ -1,9 +0,0 @@ -from pydantic import Field - -from .base import FrigateBaseModel - -__all__ = ["IPv6Config"] - - -class IPv6Config(FrigateBaseModel): - enabled: bool = Field(default=False, title="Enable IPv6 for port 5000 and /or 8971") \ No newline at end of file diff --git a/frigate/config/network.py b/frigate/config/network.py new file mode 100644 index 000000000..bf81930f1 --- /dev/null +++ b/frigate/config/network.py @@ -0,0 +1,11 @@ +from pydantic import Field + +from .base import FrigateBaseModel + +__all__ = ["IPv6Config", "NetworkingConfig"] + +class NetworkingConfig(FrigateBaseModel): + ipv6: IPv6Config = Field(default_factory=IPv6Config, title="IPv6 configuration") + +class IPv6Config(FrigateBaseModel): + enabled: bool = Field(default=False, title="Enable IPv6 for port 5000 and/or 8971") \ No newline at end of file