ingress-nginx-helm/rootfs/etc/nginx/lua/lua_ingress.lua

42 lines
799 B
Lua
Raw Normal View History

2018-12-19 13:46:53 +00:00
local _M = {}
local seeds = {}
local original_randomseed = math.randomseed
local function get_seed_from_urandom()
local seed
local frandom = io.open("/dev/urandom", "rb")
if frandom then
local str = frandom:read(4)
frandom:close()
seed = 0
for i = 1, 4 do
seed = 256 * seed + str:byte(i)
end
end
return seed
end
math.randomseed = function()
local pid = ngx.worker.pid()
local seed = seeds[pid]
if seed then
2018-12-19 13:46:53 +00:00
ngx.log(ngx.WARN,
2019-01-18 02:08:33 +00:00
string.format("ignoring math.randomseed() since PRNG is already seeded for worker %d", pid))
2018-12-19 13:46:53 +00:00
return
end
seed = get_seed_from_urandom()
if not seed then
seed = ngx.now() * 1000 + pid
end
2018-12-19 13:46:53 +00:00
original_randomseed(seed)
seeds[pid] = seed
end
function _M.init_worker()
math.randomseed()
2018-12-19 13:46:53 +00:00
end
return _M