"ddos challenge" style script #4

Open
luna wants to merge 20 commits from claude/ddos-protection-challenge-01CMAtrK6Dt24x9Q3v6Gz9fS into mistress
3 changed files with 56 additions and 0 deletions
Showing only changes of commit fbe238d3c1 - Show all commits

View file

@ -2,6 +2,14 @@ lu = require('luaunit')
local rex = require('rex_pcre2') local rex = require('rex_pcre2')
require('util') require('util')
-- Preload mock resty libraries for testing
package.preload['resty.sha256'] = function()
return require('tests.mock_resty_sha256')
end
package.preload['resty.string'] = function()
return require('tests.mock_resty_string')
end
function createNgx() function createNgx()
local ngx = { local ngx = {
status = nil status = nil

View file

@ -0,0 +1,35 @@
-- Mock implementation of resty.sha256 for testing
-- Uses system sha256sum command since we don't have OpenResty libraries
local sha256 = {}
sha256.__index = sha256
function sha256:new()
local obj = {
buffer = ""
}
setmetatable(obj, sha256)
return obj
end
function sha256:update(data)
self.buffer = self.buffer .. data
end
function sha256:final()
-- Use sha256sum command to compute hash
local handle = io.popen("echo -n '" .. self.buffer:gsub("'", "'\\''") .. "' | sha256sum")
local result = handle:read("*a")
handle:close()
-- Parse hex string into binary
local hex = result:match("^(%x+)")
local binary = {}
for i = 1, #hex, 2 do
table.insert(binary, string.char(tonumber(hex:sub(i, i+1), 16)))
end
return table.concat(binary)
end
return sha256

View file

@ -0,0 +1,13 @@
-- Mock implementation of resty.string for testing
local str = {}
function str.to_hex(binary)
local hex = {}
for i = 1, #binary do
table.insert(hex, string.format("%02x", string.byte(binary, i)))
end
return table.concat(hex)
end
return str