From: Lukáš Ondráček Date: Wed, 16 Oct 2024 14:43:02 +0000 (+0200) Subject: daemon/ratelimiting: lint fixes X-Git-Tag: v6.0.9~1^2~16 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=refs%2Fenvironments%2Fdocs-develop-rrl-8r8r8r%2Fdeployments%2F5347;p=thirdparty%2Fknot-resolver.git daemon/ratelimiting: lint fixes --- diff --git a/doc/_static/config.schema.json b/doc/_static/config.schema.json index 036a3ce01..ca031d602 100644 --- a/doc/_static/config.schema.json +++ b/doc/_static/config.schema.json @@ -1515,7 +1515,8 @@ "renum", "exterr", "rules", - "prlayr" + "prlayr", + "defer" ] }, "description": "List of groups for which 'debug' logging level is set.", @@ -1667,6 +1668,37 @@ "graphite": false } }, + "rate-limiting": { + "description": "Configuration of rate limiting.", + "type": [ + "object", + "null" + ], + "properties": { + "capacity": { + "type": "integer", + "description": "Expected maximal number of blocked networks/hosts at the same time.", + "default": 524288 + }, + "rate-limit": { + "type": "integer", + "description": "Number of allowed queries per second from a single host." + }, + "instant-limit": { + "type": "integer", + "description": "Number of allowed queries at a single point in time from a single host.", + "default": 50 + }, + "tc-limit-perc": { + "type": "integer", + "minimum": 0, + "maximum": 100, + "description": "Percent of rate/instant limit from which responses are sent as truncated.", + "default": 90 + } + }, + "default": null + }, "lua": { "description": "Custom Lua configuration.", "type": "object", diff --git a/python/knot_resolver/datamodel/config_schema.py b/python/knot_resolver/datamodel/config_schema.py index 415360b93..16adbc166 100644 --- a/python/knot_resolver/datamodel/config_schema.py +++ b/python/knot_resolver/datamodel/config_schema.py @@ -2,7 +2,6 @@ import logging import os import socket from typing import Any, Dict, List, Literal, Optional, Tuple, Union -from knot_resolver.datamodel.rate_limiting_schema import RateLimitingSchema from knot_resolver.constants import API_SOCK_FILE, RUN_DIR, VERSION from knot_resolver.datamodel.cache_schema import CacheSchema @@ -17,6 +16,7 @@ from knot_resolver.datamodel.management_schema import ManagementSchema from knot_resolver.datamodel.monitoring_schema import MonitoringSchema from knot_resolver.datamodel.network_schema import NetworkSchema from knot_resolver.datamodel.options_schema import OptionsSchema +from knot_resolver.datamodel.rate_limiting_schema import RateLimitingSchema from knot_resolver.datamodel.templates import POLICY_CONFIG_TEMPLATE, WORKER_CONFIG_TEMPLATE from knot_resolver.datamodel.types import EscapedStr, IntPositive, WritableDir from knot_resolver.datamodel.view_schema import ViewSchema @@ -107,7 +107,7 @@ class KresConfig(ConfigSchema): logging: Logging and debugging configuration. monitoring: Metrics exposisition configuration (Prometheus, Graphite) lua: Custom Lua configuration. - rate_limiting: ... TODO + rate_limiting: Configuration of rate limiting. """ version: int = 1 diff --git a/python/knot_resolver/manager/manager.py b/python/knot_resolver/manager/manager.py index f295de256..105b2081a 100644 --- a/python/knot_resolver/manager/manager.py +++ b/python/knot_resolver/manager/manager.py @@ -1,8 +1,8 @@ import asyncio import logging +import os import sys import time -import os from secrets import token_hex from subprocess import SubprocessError from typing import Any, Callable, List, Optional