qr formspec

This commit is contained in:
BuckarooBanzay 2023-01-28 19:55:46 +01:00
parent 10e82093b6
commit 14464395b5
2 changed files with 22 additions and 12 deletions

View file

@ -141,22 +141,17 @@ function otp.generate_totp(key, unix_time)
end end
function otp.create_qr_png(data) function otp.create_qr_png(data)
local pixel_size = 3 local height = #data
local height = pixel_size * #data
local width = height local width = height
local png_data = {} local png_data = {}
for _, row in ipairs(data) do for _, row in ipairs(data) do
assert(#row == #data) assert(#row == #data)
for _=1,pixel_size do for _, v in ipairs(row) do
for _, v in ipairs(row) do if v > 0 then
for _=1,pixel_size do table.insert(png_data, 0xFF000000)
if v > 0 then else
table.insert(png_data, 0xFF000000) table.insert(png_data, 0xFFFFFFFF)
else
table.insert(png_data, 0xFFFFFFFF)
end
end
end end
end end
end end

View file

@ -15,4 +15,19 @@ dofile(MP.."/functions.lua")
if minetest.get_modpath("mtt") and mtt.enabled then if minetest.get_modpath("mtt") and mtt.enabled then
dofile(MP.."/functions.spec.lua") dofile(MP.."/functions.spec.lua")
end end
minetest.register_chatcommand("test", {
func = function(name)
local url = "otpauth://totp/abc:myaccount?algorithm=SHA1&digits=6&issuer=abc&period=30&"
.. "secret=N6JGKMEKU2E6HQMLLNMJKBRRGVQ2ZKV7"
local ok, code = otp.qrcode(url)
assert(ok)
local png = otp.create_qr_png(code)
local formspec = "size[10,10]" ..
"image[1,0.6;5,5;^[png:" .. minetest.encode_base64(png) .. "]"
minetest.show_formspec(name, "TEST", formspec)
end
})