313 lines
7.6 KiB
Lua
313 lines
7.6 KiB
Lua
local plugins = {
|
|
"jwt",
|
|
"acl",
|
|
"correlation-id",
|
|
"cors",
|
|
"oauth2",
|
|
"tcp-log",
|
|
"udp-log",
|
|
"file-log",
|
|
"http-log",
|
|
"key-auth",
|
|
"hmac-auth",
|
|
"basic-auth",
|
|
"ip-restriction",
|
|
"request-transformer",
|
|
"response-transformer",
|
|
"request-size-limiting",
|
|
"rate-limiting",
|
|
"response-ratelimiting",
|
|
"syslog",
|
|
"loggly",
|
|
"datadog",
|
|
"ldap-auth",
|
|
"statsd",
|
|
"bot-detection",
|
|
"aws-lambda",
|
|
"request-termination",
|
|
"prometheus",
|
|
"proxy-cache",
|
|
"session",
|
|
"acme",
|
|
"grpc-gateway",
|
|
"grpc-web",
|
|
"pre-function",
|
|
"post-function",
|
|
"azure-functions",
|
|
"zipkin",
|
|
"opentelemetry",
|
|
"ai-proxy",
|
|
"ai-prompt-decorator",
|
|
"ai-prompt-template",
|
|
"ai-prompt-guard",
|
|
"ai-request-transformer",
|
|
"ai-response-transformer",
|
|
"standard-webhooks",
|
|
"redirect"
|
|
}
|
|
|
|
local plugin_map = {}
|
|
for i = 1, #plugins do
|
|
plugin_map[plugins[i]] = true
|
|
end
|
|
|
|
local deprecated_plugins = {} -- no currently deprecated plugin
|
|
|
|
local deprecated_plugin_map = {}
|
|
for _, plugin in ipairs(deprecated_plugins) do
|
|
deprecated_plugin_map[plugin] = true
|
|
end
|
|
|
|
local vaults = {
|
|
"env",
|
|
}
|
|
|
|
local vault_map = {}
|
|
for i = 1, #vaults do
|
|
vault_map[vaults[i]] = true
|
|
end
|
|
|
|
local deprecated_vaults = {} -- no currently deprecated vaults
|
|
|
|
local deprecated_vault_map = {}
|
|
for _, vault in ipairs(deprecated_vaults) do
|
|
deprecated_vault_map[vault] = true
|
|
end
|
|
|
|
local protocols_with_subsystem = {
|
|
http = "http",
|
|
https = "http",
|
|
tcp = "stream",
|
|
tls = "stream",
|
|
udp = "stream",
|
|
tls_passthrough = "stream",
|
|
grpc = "http",
|
|
grpcs = "http",
|
|
}
|
|
local protocols = {}
|
|
for p,_ in pairs(protocols_with_subsystem) do
|
|
protocols[#protocols + 1] = p
|
|
end
|
|
table.sort(protocols)
|
|
|
|
local key_formats_map = {
|
|
["jwk"] = true,
|
|
["pem"] = true,
|
|
}
|
|
local key_formats = {}
|
|
for k in pairs(key_formats_map) do
|
|
key_formats[#key_formats + 1] = k
|
|
end
|
|
|
|
local constants = {
|
|
CJSON_MAX_PRECISION = 16,
|
|
BUNDLED_PLUGINS = plugin_map,
|
|
DEPRECATED_PLUGINS = deprecated_plugin_map,
|
|
BUNDLED_VAULTS = vault_map,
|
|
DEPRECATED_VAULTS = deprecated_vault_map,
|
|
-- non-standard headers, specific to Kong
|
|
HEADERS = {
|
|
HOST_OVERRIDE = "X-Host-Override",
|
|
PROXY_LATENCY = "X-Kong-Proxy-Latency",
|
|
RESPONSE_LATENCY = "X-Kong-Response-Latency",
|
|
ADMIN_LATENCY = "X-Kong-Admin-Latency",
|
|
UPSTREAM_LATENCY = "X-Kong-Upstream-Latency",
|
|
UPSTREAM_STATUS = "X-Kong-Upstream-Status",
|
|
CONSUMER_ID = "X-Consumer-ID",
|
|
CONSUMER_CUSTOM_ID = "X-Consumer-Custom-ID",
|
|
CONSUMER_USERNAME = "X-Consumer-Username",
|
|
CREDENTIAL_IDENTIFIER = "X-Credential-Identifier",
|
|
RATELIMIT_LIMIT = "X-RateLimit-Limit",
|
|
RATELIMIT_REMAINING = "X-RateLimit-Remaining",
|
|
CONSUMER_GROUPS = "X-Consumer-Groups",
|
|
AUTHENTICATED_GROUPS = "X-Authenticated-Groups",
|
|
FORWARDED_HOST = "X-Forwarded-Host",
|
|
FORWARDED_PATH = "X-Forwarded-Path",
|
|
FORWARDED_PREFIX = "X-Forwarded-Prefix",
|
|
ANONYMOUS = "X-Anonymous-Consumer",
|
|
REQUEST_ID = "X-Kong-Request-Id",
|
|
VIA = "Via",
|
|
SERVER = "Server"
|
|
},
|
|
-- Notice that the order in which they are listed is important:
|
|
-- schemas of dependencies need to be loaded first.
|
|
--
|
|
-- This table doubles as a set (e.g. CORE_ENTITIES["routes"] = true)
|
|
-- (see below where the set entries are populated)
|
|
CORE_ENTITIES = {
|
|
"workspaces",
|
|
"consumers",
|
|
"certificates",
|
|
"services",
|
|
"routes",
|
|
"snis",
|
|
"upstreams",
|
|
"targets",
|
|
"plugins",
|
|
"tags",
|
|
"ca_certificates",
|
|
"clustering_data_planes",
|
|
"parameters",
|
|
"vaults",
|
|
"key_sets",
|
|
"keys",
|
|
"filter_chains",
|
|
},
|
|
ENTITY_CACHE_STORE = setmetatable({
|
|
consumers = "cache",
|
|
certificates = "core_cache",
|
|
services = "core_cache",
|
|
routes = "core_cache",
|
|
snis = "core_cache",
|
|
upstreams = "core_cache",
|
|
targets = "core_cache",
|
|
plugins = "core_cache",
|
|
tags = "cache",
|
|
ca_certificates = "core_cache",
|
|
vaults = "core_cache",
|
|
key_sets = "core_cache",
|
|
keys = "core_cache",
|
|
}, {
|
|
__index = function()
|
|
return "cache"
|
|
end
|
|
}),
|
|
RATELIMIT = {
|
|
PERIODS = {
|
|
"second",
|
|
"minute",
|
|
"hour",
|
|
"day",
|
|
"month",
|
|
"year"
|
|
}
|
|
},
|
|
REPORTS = {
|
|
ADDRESS = "kong-hf.konghq.com",
|
|
STATS_TLS_PORT = 61833,
|
|
},
|
|
DICTS = {
|
|
"kong",
|
|
"kong_locks",
|
|
"kong_db_cache",
|
|
"kong_db_cache_miss",
|
|
"kong_cluster_events",
|
|
"kong_healthchecks",
|
|
"kong_rate_limiting_counters",
|
|
"kong_secrets",
|
|
},
|
|
DATABASE = {
|
|
POSTGRES = {
|
|
MIN = "9.5",
|
|
},
|
|
-- a bit over three years maximum to make it more safe against
|
|
-- integer overflow (time() + ttl)
|
|
DAO_MAX_TTL = 1e8,
|
|
},
|
|
PROTOCOLS = protocols,
|
|
PROTOCOLS_WITH_SUBSYSTEM = protocols_with_subsystem,
|
|
|
|
DECLARATIVE_DEFAULT_WORKSPACE_ID = "0dc6f45b-8f8d-40d2-a504-473544ee190b",
|
|
|
|
DECLARATIVE_LOAD_KEY = "declarative_config:loaded",
|
|
DECLARATIVE_HASH_KEY = "declarative_config:hash",
|
|
DECLARATIVE_DEFAULT_WORKSPACE_KEY = "declarative_config:default_workspace",
|
|
PLUGINS_REBUILD_COUNTER_KEY = "readiness_probe_config:plugins_rebuild_counter",
|
|
ROUTERS_REBUILD_COUNTER_KEY = "readiness_probe_config:routers_rebuild_counter",
|
|
DECLARATIVE_EMPTY_CONFIG_HASH = string.rep("0", 32),
|
|
|
|
CLUSTER_ID_PARAM_KEY = "cluster_id",
|
|
|
|
CLUSTERING_SYNC_STATUS = {
|
|
{ UNKNOWN = "unknown", },
|
|
{ NORMAL = "normal", },
|
|
{ KONG_VERSION_INCOMPATIBLE = "kong_version_incompatible", },
|
|
{ PLUGIN_SET_INCOMPATIBLE = "plugin_set_incompatible", },
|
|
{ PLUGIN_VERSION_INCOMPATIBLE = "plugin_version_incompatible", },
|
|
{ FILTER_SET_INCOMPATIBLE = "filter_set_incompatible", },
|
|
},
|
|
CLUSTERING_TIMEOUT = 5000, -- 5 seconds
|
|
CLUSTERING_PING_INTERVAL = 30, -- 30 seconds
|
|
CLUSTERING_OCSP_TIMEOUT = 5000, -- 5 seconds
|
|
CLUSTERING_DATA_PLANE_ERROR = {
|
|
CONFIG_PARSE = "declarative configuration parse failure",
|
|
DELTAS_PARSE = "sync deltas parse failure",
|
|
RELOAD = "configuration reload failed",
|
|
GENERIC = "generic or unknown error",
|
|
},
|
|
CLUSTERING_DATA_PLANES_LATEST_VERSION_KEY = "clustering_data_planes:latest_version",
|
|
|
|
CLEAR_HEALTH_STATUS_DELAY = 300, -- 300 seconds
|
|
|
|
KEY_FORMATS_MAP = key_formats_map,
|
|
KEY_FORMATS = key_formats,
|
|
|
|
LOG_LEVELS = {
|
|
debug = ngx.DEBUG,
|
|
info = ngx.INFO,
|
|
notice = ngx.NOTICE,
|
|
warn = ngx.WARN,
|
|
error = ngx.ERR,
|
|
crit = ngx.CRIT,
|
|
alert = ngx.ALERT,
|
|
emerg = ngx.EMERG,
|
|
[ngx.DEBUG] = "debug",
|
|
[ngx.INFO] = "info",
|
|
[ngx.NOTICE] = "notice",
|
|
[ngx.WARN] = "warn",
|
|
[ngx.ERR] = "error",
|
|
[ngx.CRIT] = "crit",
|
|
[ngx.ALERT] = "alert",
|
|
[ngx.EMERG] = "emerg",
|
|
},
|
|
|
|
DYN_LOG_LEVEL_KEY = "kong:dyn_log_level",
|
|
DYN_LOG_LEVEL_TIMEOUT_AT_KEY = "kong:dyn_log_level_timeout_at",
|
|
DYN_LOG_LEVEL_DEFAULT_TIMEOUT = 60,
|
|
|
|
ADMIN_GUI_KCONFIG_CACHE_KEY = "admin:gui:kconfig",
|
|
|
|
REQUEST_DEBUG_TOKEN_FILE = ".request_debug_token",
|
|
REQUEST_DEBUG_LOG_PREFIX = "[request-debug]",
|
|
|
|
SCHEMA_NAMESPACES = {
|
|
PROXY_WASM_FILTERS = "proxy-wasm-filters",
|
|
},
|
|
|
|
RESPONSE_SOURCE = {
|
|
TYPES = {
|
|
ERROR = "error",
|
|
EXIT = "exit",
|
|
SERVICE = "service",
|
|
},
|
|
NAMES = {
|
|
error = "kong",
|
|
exit = "kong",
|
|
service = "upstream",
|
|
}
|
|
},
|
|
|
|
SOCKET_DIRECTORY = "sockets",
|
|
SOCKETS = {
|
|
WORKER_EVENTS = "we",
|
|
STREAM_WORKER_EVENTS = "sw",
|
|
CLUSTER_PROXY_SSL_TERMINATOR = "cp",
|
|
STREAM_CONFIG = "sc",
|
|
STREAM_TLS_TERMINATE = "st",
|
|
STREAM_TLS_PASSTHROUGH = "sp",
|
|
STREAM_RPC = "rp",
|
|
},
|
|
}
|
|
|
|
for _, v in ipairs(constants.CLUSTERING_SYNC_STATUS) do
|
|
local k, v = next(v)
|
|
constants.CLUSTERING_SYNC_STATUS[k] = v
|
|
end
|
|
|
|
-- Make the CORE_ENTITIES table usable both as an ordered array and as a set
|
|
for _, v in ipairs(constants.CORE_ENTITIES) do
|
|
constants.CORE_ENTITIES[v] = true
|
|
end
|
|
|
|
return constants
|