Add server dbpurgeage warning state in API and mark task complete
This commit is contained in:
@@ -56,3 +56,7 @@ class ServerSettingsResponse(BaseModel):
|
||||
model_config = ConfigDict(strict=True)
|
||||
|
||||
settings: ServerSettings
|
||||
warnings: dict[str, bool] = Field(
|
||||
default_factory=dict,
|
||||
description="Warnings highlighting potentially unsafe settings.",
|
||||
)
|
||||
|
||||
@@ -160,8 +160,12 @@ async def get_settings(socket_path: str) -> ServerSettingsResponse:
|
||||
db_max_matches=db_max_matches,
|
||||
)
|
||||
|
||||
log.info("server_settings_fetched")
|
||||
return ServerSettingsResponse(settings=settings)
|
||||
warnings: dict[str, bool] = {
|
||||
"db_purge_age_too_low": db_purge_age < 86400,
|
||||
}
|
||||
|
||||
log.info("server_settings_fetched", db_purge_age=db_purge_age, warnings=warnings)
|
||||
return ServerSettingsResponse(settings=settings, warnings=warnings)
|
||||
|
||||
|
||||
async def update_settings(socket_path: str, update: ServerSettingsUpdate) -> None:
|
||||
|
||||
@@ -68,7 +68,8 @@ def _make_settings() -> ServerSettingsResponse:
|
||||
db_path="/var/lib/fail2ban/fail2ban.sqlite3",
|
||||
db_purge_age=86400,
|
||||
db_max_matches=10,
|
||||
)
|
||||
),
|
||||
warnings={"db_purge_age_too_low": False},
|
||||
)
|
||||
|
||||
|
||||
@@ -93,6 +94,7 @@ class TestGetServerSettings:
|
||||
data = resp.json()
|
||||
assert data["settings"]["log_level"] == "INFO"
|
||||
assert data["settings"]["db_purge_age"] == 86400
|
||||
assert data["warnings"]["db_purge_age_too_low"] is False
|
||||
|
||||
async def test_401_when_unauthenticated(self, server_client: AsyncClient) -> None:
|
||||
"""GET /api/server/settings returns 401 without session."""
|
||||
|
||||
@@ -63,6 +63,16 @@ class TestGetSettings:
|
||||
assert result.settings.log_target == "/var/log/fail2ban.log"
|
||||
assert result.settings.db_purge_age == 86400
|
||||
assert result.settings.db_max_matches == 10
|
||||
assert result.warnings == {"db_purge_age_too_low": False}
|
||||
|
||||
async def test_db_purge_age_warning_when_below_minimum(self) -> None:
|
||||
"""get_settings sets warning when db_purge_age is below 86400 seconds."""
|
||||
responses = {**_DEFAULT_RESPONSES, "get|dbpurgeage": (0, 3600)}
|
||||
with _patch_client(responses):
|
||||
result = await server_service.get_settings(_SOCKET)
|
||||
|
||||
assert result.settings.db_purge_age == 3600
|
||||
assert result.warnings == {"db_purge_age_too_low": True}
|
||||
|
||||
async def test_db_path_parsed(self) -> None:
|
||||
"""get_settings returns the correct database file path."""
|
||||
|
||||
Reference in New Issue
Block a user