]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
Merge branch 'master' into rrl-wip
authorVladimír Čunát <vladimir.cunat@nic.cz>
Mon, 30 Sep 2024 13:34:11 +0000 (15:34 +0200)
committerVladimír Čunát <vladimir.cunat@nic.cz>
Mon, 30 Sep 2024 13:34:11 +0000 (15:34 +0200)
17 files changed:
1  2 
.gitlab-ci.yml
daemon/lua/kres-gen-33.lua
daemon/lua/kres-gen.sh
daemon/main.c
daemon/proxyv2.c
daemon/session2.c
daemon/session2.h
daemon/worker.c
lib/utils.c
lib/utils.h
meson.build
modules/policy/policy.lua
python/knot_resolver/datamodel/config_schema.py
python/knot_resolver/datamodel/rate_limiting_schema.py
python/knot_resolver/datamodel/templates/rate_limiting.lua.j2
python/knot_resolver/datamodel/templates/worker-config.lua.j2
python/knot_resolver/manager/manager.py

diff --cc .gitlab-ci.yml
Simple merge
Simple merge
Simple merge
diff --cc daemon/main.c
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc daemon/worker.c
Simple merge
diff --cc lib/utils.c
Simple merge
diff --cc lib/utils.h
Simple merge
diff --cc meson.build
index 8b4bd83bdcacbbd79cc618e8e9ef1b5409d9f634,82035cecc4125c73c3ae9fc8a1b8e4785fd5a127..267145ea37b158ee220d8bd180d8f14a9528379a
@@@ -27,10 -27,8 +27,10 @@@ lmdb = dependency('lmdb', required: fal
  if not lmdb.found()  # darwin workaround: missing pkgconfig
    lmdb = meson.get_compiler('c').find_library('lmdb')
  endif
- gnutls = dependency('gnutls')
+ gnutls = dependency('gnutls', version: '>=3.4')
  luajit = dependency('luajit')
 +# https://mesonbuild.com/howtox.html#add-math-library-lm-portably
 +libm = meson.get_compiler('c').find_library('m', required : false)
  message('------------------------------')
  
  
index bf796a6dd4f47ddb2d6c73f130e0a81ca7e96d00,f599e7d1a8c6d04506efcafd27d39dad6b0f0ddc..036e8cf693d126212e369cf6396980e47db8f8a9
@@@ -934,11 -938,13 +938,15 @@@ policy.layer = 
  
                if ffi.C.kr_view_select_action(req, view_action_buf) == 0 then
                        local act_str = ffi.string(view_action_buf[0].data, view_action_buf[0].len)
-                       loadstring('return ' .. act_str)()(state, req)
+                       local new_state = loadstring('return '..act_str)()(state, req)
+                       -- We still respect the chain-rule notion, i.e. we skip
+                       -- lua-configured policy rules iff the action was "final"
+                       -- (`refused` and `noanswer` in the current 6.x)
+                       if new_state ~= nil then return new_state end
                end
  
 +              if ffi.C.ratelimiting_request_begin(req) then return end
 +
                local qry = req:initial() -- same as :current() but more descriptive
                return policy.evaluate(policy.rules, req, qry, state)
                        or state
index d80f664a3e9ef7b8f35f18d957089856c93ee9e4,ddadd7fb52a7aa8f8df24246d6ec31ee7d004b77..7942eb73c3a96094fb7e28a23b584657baeab8ec
@@@ -1,34 -1,30 +1,31 @@@
  import logging
  import os
  import socket
- from typing import Any, Dict, List, Optional, Tuple, Union
- from typing_extensions import Literal
- from knot_resolver_manager.constants import MAX_WORKERS
- from knot_resolver_manager.datamodel.cache_schema import CacheSchema
- from knot_resolver_manager.datamodel.dns64_schema import Dns64Schema
- from knot_resolver_manager.datamodel.dnssec_schema import DnssecSchema
- from knot_resolver_manager.datamodel.forward_schema import ForwardSchema
- from knot_resolver_manager.datamodel.local_data_schema import LocalDataSchema, RPZSchema, RuleSchema
- from knot_resolver_manager.datamodel.logging_schema import LoggingSchema
- from knot_resolver_manager.datamodel.lua_schema import LuaSchema
- from knot_resolver_manager.datamodel.management_schema import ManagementSchema
- from knot_resolver_manager.datamodel.monitoring_schema import MonitoringSchema
- from knot_resolver_manager.datamodel.network_schema import NetworkSchema
- from knot_resolver_manager.datamodel.options_schema import OptionsSchema
- from knot_resolver_manager.datamodel.templates import POLICY_CONFIG_TEMPLATE, WORKER_CONFIG_TEMPLATE
- from knot_resolver_manager.datamodel.types import Dir, EscapedStr, IntPositive
- from knot_resolver_manager.datamodel.view_schema import ViewSchema
- from knot_resolver_manager.datamodel.webmgmt_schema import WebmgmtSchema
+ from typing import Any, Dict, List, Literal, Optional, Tuple, Union
 +from knot_resolver_manager.datamodel.rate_limiting_schema import RateLimitingSchema
- from knot_resolver_manager.utils.modeling import ConfigSchema
- from knot_resolver_manager.utils.modeling.base_schema import lazy_default
- from knot_resolver_manager.utils.modeling.exceptions import AggregateDataValidationError, DataValidationError
  
- _DEFAULT_RUNDIR = "/var/run/knot-resolver"
- DEFAULT_MANAGER_API_SOCK = _DEFAULT_RUNDIR + "/manager.sock"
+ from knot_resolver.constants import API_SOCK_FILE, RUN_DIR, VERSION
+ from knot_resolver.datamodel.cache_schema import CacheSchema
+ from knot_resolver.datamodel.dns64_schema import Dns64Schema
+ from knot_resolver.datamodel.dnssec_schema import DnssecSchema
+ from knot_resolver.datamodel.forward_schema import ForwardSchema
+ from knot_resolver.datamodel.globals import Context, get_global_validation_context, set_global_validation_context
+ from knot_resolver.datamodel.local_data_schema import LocalDataSchema, RPZSchema, RuleSchema
+ from knot_resolver.datamodel.logging_schema import LoggingSchema
+ from knot_resolver.datamodel.lua_schema import LuaSchema
+ 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.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
+ from knot_resolver.datamodel.webmgmt_schema import WebmgmtSchema
+ from knot_resolver.utils.modeling import ConfigSchema
+ from knot_resolver.utils.modeling.base_schema import lazy_default
+ from knot_resolver.utils.modeling.exceptions import AggregateDataValidationError, DataValidationError
+ WORKERS_MAX = 256
  
  logger = logging.getLogger(__name__)
  
index 4733223fa619f85afa0a926645ef1683c45cb0c8,0000000000000000000000000000000000000000..4733223fa619f85afa0a926645ef1683c45cb0c8
mode 100644,000000..100644
--- /dev/null
index 096c7f3c2d7f8915adfbb31958e00f57e2d829b0,0000000000000000000000000000000000000000..096c7f3c2d7f8915adfbb31958e00f57e2d829b0
mode 100644,000000..100644
--- /dev/null