]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
manager: server: deny dynamic changes off /cache/garbage-collector/* config
authorAleš Mrázek <ales.mrazek@nic.cz>
Mon, 7 Apr 2025 13:47:17 +0000 (15:47 +0200)
committerAleš Mrázek <ales.mrazek@nic.cz>
Tue, 5 Aug 2025 09:13:57 +0000 (11:13 +0200)
python/knot_resolver/manager/server.py

index 8096f03cc6db82e913453abd5edf9679a0173e0c..4d80bdedb8053f8c02a0ad2c1baa212624d6b20f 100644 (file)
@@ -116,6 +116,16 @@ class Server:
             )
         return Result.ok(None)
 
+    async def _deny_cache_garbage_collector_changes(
+        self, config_old: KresConfig, config_new: KresConfig
+    ) -> Result[None, str]:
+        if config_old.cache.garbage_collector != config_new.cache.garbage_collector:
+            return Result.err(
+                "/cache/garbage-collector/*: Changing configuration dynamically is not allowed."
+                " To change this configuration, you must edit the configuration file and restart the entire resolver."
+            )
+        return Result.ok(None)
+
     async def _reload_config(self) -> None:
         if self._config_path is None:
             logger.warning("The manager was started with inlined configuration - can't reload")
@@ -182,6 +192,7 @@ class Server:
         self._setup_routes()
         await self.runner.setup()
         await self.config_store.register_verifier(self._deny_management_changes)
+        await self.config_store.register_verifier(self._deny_cache_garbage_collector_changes)
         await self.config_store.register_on_change_callback(self._reconfigure)
 
     async def wait_for_shutdown(self) -> None: