Files
kong--kong/kong/plugins/pre-function/_schema.lua
T
2026-07-13 12:32:21 +08:00

64 lines
1.6 KiB
Lua

-- schema file for both the pre-function and post-function plugin
return function(plugin_name)
local Schema = require "kong.db.schema"
local typedefs = require "kong.db.schema.typedefs"
local loadstring = loadstring
local function validate_function(fun)
local _, err = loadstring(fun)
if err then
return false, "error parsing " .. plugin_name .. ": " .. err
end
return true
end
local phase_functions = Schema.define {
required = true,
default = {},
description = "Custom functions, which can be user-defined, are cached and executed sequentially during specific phases: `certificate`, `rewrite`, `access`, `header_filter`, `body_filter`, and `log`.",
type = "array",
elements = {
type = "string",
required = false,
custom_validator = validate_function,
}
}
return {
name = plugin_name,
fields = {
{ consumer = typedefs.no_consumer },
{ protocols = typedefs.protocols },
{
config = {
type = "record",
fields = {
-- new interface
{ certificate = phase_functions },
{ rewrite = phase_functions },
{ access = phase_functions },
{ header_filter = phase_functions },
{ body_filter = phase_functions },
{ log = phase_functions },
},
},
},
},
entity_checks = {
{ at_least_one_of = {
"config.certificate",
"config.rewrite",
"config.access",
"config.header_filter",
"config.body_filter",
"config.log",
} },
},
}
end