feat: added functionality to set quasi-random cookie if captcha is passed

This commit is contained in:
Eugene Prodan
2021-06-08 00:40:37 +03:00
parent 0fde9b873b
commit 0f7bd9951b
3 changed files with 24 additions and 2 deletions

View File

@ -113,7 +113,8 @@ RUN wget "https://luarocks.org/releases/luarocks-3.3.1.tar.gz" &&\
RUN /usr/local/bin/luarocks install luasocket &&\
/usr/local/bin/luarocks install luasec &&\
/usr/local/bin/luarocks install net-url
/usr/local/bin/luarocks install net-url &&\
/usr/local/bin/luarocks install md5
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]

View File

@ -3,6 +3,9 @@ hcaptcha = {}
local url = require("net.url")
local https = require("ssl.https")
local json = require("json")
local utils = require("utils")
local floating_hash = utils.get_floating_hash()
function hcaptcha.view(applet)
local hcaptcha_secret = os.getenv("HCAPTCHA_SECRET")
@ -34,7 +37,7 @@ function hcaptcha.view(applet)
if api_response.success == true then
print("HCAPTCHA SUCCESSFULLY PASSED")
print("... success captcha flow goes here ...")
applet:add_header("set-cookie", string.format("z_ddos_protection=%s; Max-Age=14400", floating_hash))
else
print("HCAPTCHA FAILED", body)
end

18
scripts/utils.lua Normal file
View File

@ -0,0 +1,18 @@
local _M = {}
local md5 = require("md5")
function _M.get_hostname()
local f = io.popen ("/bin/hostname")
local hostname = f:read("*a") or ""
f:close()
hostname =string.gsub(hostname, "\n$", "")
return hostname
end
function _M.get_floating_hash()
-- This ensures that a cookie is rotated every day
return md5.sumhexa(_M.get_hostname() .. os.date("%d"))
end
return _M