mirror of
https://github.com/MinetestForFun/mysql_auth.git
synced 2025-01-08 00:50:25 +01:00
46 lines
1.7 KiB
Lua
46 lines
1.7 KiB
Lua
local modname = minetest.get_current_modname()
|
|
local modpath = minetest.get_modpath(modname)
|
|
|
|
local thismod = _G[modname]
|
|
|
|
function thismod.import_auth_txt()
|
|
local auth_file_path = minetest.get_worldpath() .. '/auth.txt'
|
|
local create_auth_stmt = thismod.create_auth_stmt
|
|
local create_auth_params = thismod.create_auth_params
|
|
local conn = thismod.conn
|
|
local file, errmsg = io.open(auth_file_path, 'rb')
|
|
if not file then
|
|
minetest.log("info", modname .. ": " .. auth_file_path .. " could not be opened for reading" ..
|
|
"(" .. errmsg .. "); no auth entries imported")
|
|
return
|
|
end
|
|
conn:query('SET autocommit=0')
|
|
conn:query('START TRANSACTION')
|
|
for line in file:lines() do
|
|
if line ~= "" then
|
|
local fields = line:split(":", true)
|
|
local name, password, privilege_string, last_login = unpack(fields)
|
|
last_login = tonumber(last_login)
|
|
if not (name and password and privilege_string) then
|
|
minetest.log('warning', modname .. ": Invalid line in auth.txt, skipped: " .. dump(line))
|
|
end
|
|
minetest.log('info', modname .. " importing player '"..name.."'")
|
|
create_auth_params:set(1, name)
|
|
create_auth_params:set(2, password)
|
|
create_auth_params:set(3, privilege_string)
|
|
create_auth_params:set(4, last_login)
|
|
local success, msg = pcall(create_auth_stmt.exec, create_auth_stmt)
|
|
if not success then
|
|
error(modname .. ": import failed: " .. msg)
|
|
end
|
|
if create_auth_stmt:affected_rows() ~= 1 then
|
|
error(modname .. ": create_auth failed: affected row count is " ..
|
|
create_auth_stmt:affected_rows() .. ", expected 1")
|
|
end
|
|
end
|
|
end
|
|
conn:query('COMMIT')
|
|
conn:query('SET autocommit=1')
|
|
io.close(file)
|
|
end
|