fix redis not contacted in subsequent phases and reflect changes on stream configs

This commit is contained in:
florian 2023-05-21 14:24:26 +02:00
parent 1624c4e766
commit 5adec84d5a
No known key found for this signature in database
GPG key ID: 3D80806F12602A7C
10 changed files with 148 additions and 176 deletions

View file

@ -148,7 +148,6 @@ end
helpers.fill_ctx = function() helpers.fill_ctx = function()
-- Return errors as table -- Return errors as table
local errors = {} local errors = {}
local use_redis = nil
-- Check if ctx is already filled -- Check if ctx is already filled
if not ngx.ctx.bw then if not ngx.ctx.bw then
-- Instantiate bw table -- Instantiate bw table
@ -180,15 +179,14 @@ helpers.fill_ctx = function()
-- Misc info -- Misc info
data.integration = utils.get_integration() data.integration = utils.get_integration()
data.version = utils.get_version() data.version = utils.get_version()
-- Common objects
use_redis, err = utils.get_variable("USE_REDIS", false)
if not use_redis then
table.insert(errors, "can't get variable from datastore : " .. err)
end
-- Fill ctx -- Fill ctx
ngx.ctx.bw = data ngx.ctx.bw = data
end end
-- Always create new objects for current phases in case of cosockets -- Always create new objects for current phases in case of cosockets
local use_redis, err = utils.get_variable("USE_REDIS", false)
if not use_redis then
table.insert(errors, "can't get variable from datastore : " .. err)
end
ngx.ctx.bw.datastore = require "bunkerweb.datastore":new() ngx.ctx.bw.datastore = require "bunkerweb.datastore":new()
ngx.ctx.bw.clusterstore = require "bunkerweb.clusterstore":new() ngx.ctx.bw.clusterstore = require "bunkerweb.clusterstore":new()
ngx.ctx.bw.cachestore = require "bunkerweb.cachestore":new(use_redis == "yes") ngx.ctx.bw.cachestore = require "bunkerweb.cachestore":new(use_redis == "yes")

View file

@ -66,10 +66,6 @@ server {
local order, err = datastore:get("plugins_order") local order, err = datastore:get("plugins_order")
if not order then if not order then
logger:log(ngx.ERR, "can't get plugins order from datastore : " .. err) logger:log(ngx.ERR, "can't get plugins order from datastore : " .. err)
local ok, err = lock:unlock()
if not ok then
logger:log(ngx.ERR, "lock:unlock() failed : " .. err)
end
return return
end end
order = cjson.decode(order) order = cjson.decode(order)

View file

@ -7,20 +7,13 @@ init_by_lua_block {
local cjson = require "cjson" local cjson = require "cjson"
-- Start init phase -- Start init phase
local logger = clogger:new("INIT-STREAM") local logger = clogger:new("INIT")
local datastore = cdatastore:new() local datastore = cdatastore:new()
logger:log(ngx.NOTICE, "init-stream phase started") logger:log(ngx.NOTICE, "init-stream phase started")
-- Purge cache
local cachestore = require "bunkerweb.cachestore":new()
local ok, err = cachestore:purge()
if not ok then
logger:log(ngx.ERR, "can't purge cachestore : " .. err)
end
-- Remove previous data from the datastore -- Remove previous data from the datastore
logger:log(ngx.NOTICE, "deleting old keys from datastore ...") logger:log(ngx.NOTICE, "deleting old keys from datastore ...")
local data_keys = {"^plugin_", "^variable_", "^plugins$", "^api_", "^misc_"} local data_keys = {"^plugin", "^variable_", "^api_", "^misc_"}
for i, key in pairs(data_keys) do for i, key in pairs(data_keys) do
local ok, err = datastore:delete_all(key) local ok, err = datastore:delete_all(key)
if not ok then if not ok then
@ -50,6 +43,13 @@ init_by_lua_block {
end end
logger:log(ngx.NOTICE, "saved variables into datastore") logger:log(ngx.NOTICE, "saved variables into datastore")
-- Purge cache
local cachestore = require "bunkerweb.cachestore":new(false, true)
local ok, err = cachestore:purge()
if not ok then
logger:log(ngx.ERR, "can't purge cachestore : " .. err)
end
-- Set API values into the datastore -- Set API values into the datastore
logger:log(ngx.NOTICE, "saving API values into datastore ...") logger:log(ngx.NOTICE, "saving API values into datastore ...")
local value, err = datastore:get("variable_USE_API") local value, err = datastore:get("variable_USE_API")
@ -155,4 +155,3 @@ init_by_lua_block {
logger:log(ngx.NOTICE, "init-stream phase ended") logger:log(ngx.NOTICE, "init-stream phase ended")
} }

View file

@ -46,10 +46,6 @@ end
local order, err = datastore:get("plugins_order") local order, err = datastore:get("plugins_order")
if not order then if not order then
logger:log(ngx.ERR, "can't get plugins order from datastore : " .. err) logger:log(ngx.ERR, "can't get plugins order from datastore : " .. err)
local ok, err = lock:unlock()
if not ok then
logger:log(ngx.ERR, "lock:unlock() failed : " .. err)
end
return return
end end
order = cjson.decode(order) order = cjson.decode(order)

View file

@ -27,10 +27,6 @@ logger:log(ngx.INFO, "ngx.ctx filled (ret = " .. ret .. ")")
local order, err = datastore:get("plugins_order") local order, err = datastore:get("plugins_order")
if not order then if not order then
logger:log(ngx.ERR, "can't get plugins order from datastore : " .. err) logger:log(ngx.ERR, "can't get plugins order from datastore : " .. err)
local ok, err = lock:unlock()
if not ok then
logger:log(ngx.ERR, "lock:unlock() failed : " .. err)
end
return return
end end
order = cjson.decode(order) order = cjson.decode(order)

View file

@ -27,10 +27,6 @@ logger:log(ngx.INFO, "ngx.ctx filled (ret = " .. ret .. ")")
local order, err = datastore:get("plugins_order") local order, err = datastore:get("plugins_order")
if not order then if not order then
logger:log(ngx.ERR, "can't get plugins order from datastore : " .. err) logger:log(ngx.ERR, "can't get plugins order from datastore : " .. err)
local ok, err = lock:unlock()
if not ok then
logger:log(ngx.ERR, "lock:unlock() failed : " .. err)
end
return return
end end
order = cjson.decode(order) order = cjson.decode(order)

View file

@ -42,10 +42,6 @@ logger:log(ngx.INFO, "ngx.ctx filled (ret = " .. ret .. ")")
local order, err = datastore:get("plugins_order") local order, err = datastore:get("plugins_order")
if not order then if not order then
logger:log(ngx.ERR, "can't get plugins order from datastore : " .. err) logger:log(ngx.ERR, "can't get plugins order from datastore : " .. err)
local ok, err = lock:unlock()
if not ok then
logger:log(ngx.ERR, "lock:unlock() failed : " .. err)
end
return return
end end
order = cjson.decode(order) order = cjson.decode(order)

View file

@ -27,10 +27,6 @@ logger:log(ngx.INFO, "ngx.ctx filled (ret = " .. ret .. ")")
local order, err = datastore:get("plugins_order") local order, err = datastore:get("plugins_order")
if not order then if not order then
logger:log(ngx.ERR, "can't get plugins order from datastore : " .. err) logger:log(ngx.ERR, "can't get plugins order from datastore : " .. err)
local ok, err = lock:unlock()
if not ok then
logger:log(ngx.ERR, "lock:unlock() failed : " .. err)
end
return return
end end
order = cjson.decode(order) order = cjson.decode(order)
@ -45,7 +41,7 @@ for i, plugin_id in ipairs(order.log_stream) do
elseif plugin_lua == nil then elseif plugin_lua == nil then
logger:log(ngx.INFO, err) logger:log(ngx.INFO, err)
else else
-- Check if plugin has log method -- Check if plugin has log_stream method
if plugin_lua.log_stream ~= nil then if plugin_lua.log_stream ~= nil then
-- New call -- New call
local ok, plugin_obj = helpers.new_plugin(plugin_lua) local ok, plugin_obj = helpers.new_plugin(plugin_lua)

View file

@ -77,7 +77,7 @@ for i, plugin_id in ipairs(order.preread) do
if ret.status then if ret.status then
if ret.status == utils.get_deny_status() then if ret.status == utils.get_deny_status() then
ngx.ctx.reason = plugin_id ngx.ctx.reason = plugin_id
logger:log(ngx.WARN, "denied access from " .. plugin_id .. " : " .. ret.msg) logger:log(ngx.WARN, "denied preread from " .. plugin_id .. " : " .. ret.msg)
else else
logger:log(ngx.NOTICE, plugin_id .. " returned status " .. tostring(ret.status) .. " : " .. ret.msg) logger:log(ngx.NOTICE, plugin_id .. " returned status " .. tostring(ret.status) .. " : " .. ret.msg)
end end

View file

@ -169,7 +169,6 @@ function dnsbl:is_in_dnsbl(ip, server)
end end
for i, ip in ipairs(ips) do for i, ip in ipairs(ips) do
if ip:find("^127%.0%.0%.") then if ip:find("^127%.0%.0%.") then
ngx.sleep(5)
return true, server return true, server
end end
end end