1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-09-30 19:22:14 +00:00

fix formatting

This commit is contained in:
Abdurahman Elmawi 2025-06-30 04:17:00 +03:00
parent 453c4d061b
commit 440f3a5ac1

View file

@ -1,183 +1,169 @@
keyringmgr = { keyringmgr = {
keyring = nil, keyring = nil
} }
--------------------------------------------------------------------------------
local function get_keyring_path() local function get_keyring_path()
return core.get_user_path() .. DIR_DELIM .. "client" .. DIR_DELIM .. core.settings:get("keyring_file") return core.get_user_path() .. DIR_DELIM .. "client" .. DIR_DELIM .. core.settings:get("keyring_file")
end end
--------------------------------------------------------------------------------
local function save_keyring(keyring) local function save_keyring(keyring)
core.safe_file_write(get_keyring_path(), core.write_json(keyring)) core.safe_file_write(get_keyring_path(), core.write_json(keyring))
end end
--------------------------------------------------------------------------------
local function read_keyring() local function read_keyring()
local path = get_keyring_path() local path = get_keyring_path()
local file = io.open(path, "r") local file = io.open(path, "r")
if file then if file then
local json = file:read("*all") local json = file:read("*all")
file:close() file:close()
return core.parse_json(json) return core.parse_json(json)
end end
end end
--------------------------------------------------------------------------------
local function is_for_server(keys, address, port) local function is_for_server(keys, address, port)
return keys.address == address and keys.port == port return keys.address == address and keys.port == port
end end
--------------------------------------------------------------------------------
local function delete_keys(keyring, address, port) local function delete_keys(keyring, address, port)
for i=1, #keyring do for i = 1, #keyring do
local keys = keyring[i] local keys = keyring[i]
if is_for_server(keys, address, port) then if is_for_server(keys, address, port) then
table.remove(keyring, i) table.remove(keyring, i)
return return
end end
end end
end end
--------------------------------------------------------------------------------
local function get_keys(keyring, address, port) local function get_keys(keyring, address, port)
for i=1, #keyring do for i = 1, #keyring do
local keys = keyring[i] local keys = keyring[i]
if is_for_server(keys, address, port) then if is_for_server(keys, address, port) then
return keys return keys
end
end end
end -- If we don't find any existing keys, we make a blank set for the server
-- If we don't find any existing keys, we make a blank set for the server local keys = {
local keys = { address = address,
address = address, port = port,
port = port, logins = {},
logins = {}, last_login = false
last_login = false, }
} table.insert(keyring, 1, keys)
table.insert(keyring, 1, keys) save_keyring(keyring)
save_keyring(keyring) return keys
return keys
end end
--------------------------------------------------------------------------------
local function rewrite_keys(keyring, address, port, new_keys) local function rewrite_keys(keyring, address, port, new_keys)
delete_keys(keyring, address, port) delete_keys(keyring, address, port)
table.insert(keyring, 1, new_keys) table.insert(keyring, 1, new_keys)
save_keyring(keyring) save_keyring(keyring)
end end
--------------------------------------------------------------------------------
function keyringmgr.get_keyring() function keyringmgr.get_keyring()
if keyringmgr.keyring then if keyringmgr.keyring then
return keyringmgr.keyring return keyringmgr.keyring
end
keyringmgr.keyring = {}
-- Add keyring, removing duplicates
local seen = {}
for _, keys in ipairs(read_keyring() or {}) do
local key = ("%s:%d"):format(keys.address:lower(), keys.port)
if not seen[key] then
seen[key] = true
keyringmgr.keyring[#keyringmgr.keyring + 1] = keys
end
end
return keyringmgr.keyring
end
--------------------------------------------------------------------------------
function keyringmgr.set_last_login(address, port, playername)
local keyring = keyringmgr.get_keyring()
local new_keys = get_keys(keyring, address, port)
new_keys.last_login = playername
rewrite_keys(keyring, address, port, new_keys)
end
--------------------------------------------------------------------------------
function keyringmgr.set_login(address, port, playername, password)
-- If the user doesn't want to remember logins, we completely skip the process
if not core.settings:get_bool("remember_login") then
return
end
assert(type(port) == "number")
local keyring = keyringmgr.get_keyring()
local new_keys = get_keys(keyring, address, port);
-- Check for existing entires for playername
for _, login in ipairs(new_keys.logins or {}) do
if login.playername and login.playername == playername then
login.password = password
break
end
end
-- If not, we add a new key
if not new_keys.logins then
new_keys.logins = {}
end
table.insert(new_keys.logins, 1, {
playername = playername,
password = password
})
keyringmgr.set_last_login(address, port, playername)
rewrite_keys(keyring, address, port, new_keys)
end
--------------------------------------------------------------------------------
function keyringmgr.get_login(address, port, playername)
assert(type(port) == "number")
local keyring = keyringmgr.get_keyring()
local new_keys = get_keys(keyring, address, port);
-- Check for existing entires for playername
for _, login in ipairs(new_keys.logins) do
if login.playername and login.playername == playername then
return login
end
end
error("No login found on " .. address .. ":" .. port .. " for player " .. playername)
end
--------------------------------------------------------------------------------
function keyringmgr.remove_login(address, port, playername)
assert(type(port) == "number")
local keyring = keyringmgr.get_keyring()
local new_keys = get_keys(keyring, address, port);
for i=1, #new_keys.logins do
local login = new_keys.logins[i]
if(login.playername == playername) then
table.remove(new_keys.logins, i)
break
end end
end
rewrite_keys(keyring, address, port, new_keys) keyringmgr.keyring = {}
-- Add keyring, removing duplicates
local seen = {}
for _, keys in ipairs(read_keyring() or {}) do
local key = ("%s:%d"):format(keys.address:lower(), keys.port)
if not seen[key] then
seen[key] = true
keyringmgr.keyring[#keyringmgr.keyring + 1] = keys
end
end
return keyringmgr.keyring
end
function keyringmgr.set_last_login(address, port, playername)
local keyring = keyringmgr.get_keyring()
local new_keys = get_keys(keyring, address, port)
new_keys.last_login = playername
rewrite_keys(keyring, address, port, new_keys)
end
function keyringmgr.set_login(address, port, playername, password)
-- If the user doesn't want to remember logins, we completely skip the process
if not core.settings:get_bool("remember_login") then
return
end
assert(type(port) == "number")
local keyring = keyringmgr.get_keyring()
local new_keys = get_keys(keyring, address, port);
-- Check for existing entires for playername
for _, login in ipairs(new_keys.logins or {}) do
if login.playername and login.playername == playername then
login.password = password
break
end
end
-- If not, we add a new key
if not new_keys.logins then
new_keys.logins = {}
end
table.insert(new_keys.logins, 1, {
playername = playername,
password = password
})
keyringmgr.set_last_login(address, port, playername)
rewrite_keys(keyring, address, port, new_keys)
end
function keyringmgr.get_login(address, port, playername)
assert(type(port) == "number")
local keyring = keyringmgr.get_keyring()
local new_keys = get_keys(keyring, address, port);
-- Check for existing entires for playername
for _, login in ipairs(new_keys.logins) do
if login.playername and login.playername == playername then
return login
end
end
error("No login found on " .. address .. ":" .. port .. " for player " .. playername)
end
function keyringmgr.remove_login(address, port, playername)
assert(type(port) == "number")
local keyring = keyringmgr.get_keyring()
local new_keys = get_keys(keyring, address, port);
for i = 1, #new_keys.logins do
local login = new_keys.logins[i]
if (login.playername == playername) then
table.remove(new_keys.logins, i)
break
end
end
rewrite_keys(keyring, address, port, new_keys)
end end
--------------------------------------------------------------------------------
function keyringmgr.delete_keys(address, port) function keyringmgr.delete_keys(address, port)
local keyring = keyringmgr.get_keyring() local keyring = keyringmgr.get_keyring()
delete_keys(keyring, address, port) delete_keys(keyring, address, port)
save_keyring(keyring) save_keyring(keyring)
end end
--------------------------------------------------------------------------------
function keyringmgr.get_last_login(address, port) function keyringmgr.get_last_login(address, port)
local playername = get_keys(keyringmgr.get_keyring(), address, port).last_login local playername = get_keys(keyringmgr.get_keyring(), address, port).last_login
if playername then if playername then
return keyringmgr.get_login(address, port, playername) return keyringmgr.get_login(address, port, playername)
end end
return false return false
end end