no case sensitive whitelist

master
Zughy 2020-10-24 13:13:40 +02:00
parent 51264ccc57
commit 5747c49cf9
3 changed files with 20 additions and 14 deletions

View File

@ -11,12 +11,12 @@ Whitelisted players and whitelist status are both saved into the mod storage, an
* `whitelist.enable(<sender>)`: enables the whitelist * `whitelist.enable(<sender>)`: enables the whitelist
* `whitelist.disable(<sender>)`: disables the whitelist * `whitelist.disable(<sender>)`: disables the whitelist
* `whitelist.add_player(p_name, <sender>)`: adds `p_name` to the whitelist * `whitelist.add_player(p_name, <sender>)`: adds `p_name` to the whitelist (not case sensitive)
* `whitelist.remove_player(p_name, <sender>)`: removes `p_name` from the whitelist * `whitelist.remove_player(p_name, <sender>)`: removes `p_name` from the whitelist (not case sensitive)
### 2.2 Utils ### 2.2 Utils
* `whitelist.print_list(sender)`: prints a message to `sender` containing all the whitelisted players * `whitelist.print_list(sender)`: prints a message to `sender` containing all the whitelisted players
* `whitelist.is_player_whitelisted(p_name)`: returns whether `p_name` is whitelisted, as a boolean * `whitelist.is_player_whitelisted(p_name)`: returns whether `p_name` is whitelisted, as a boolean. If true, it also returns the name as it appears in the whitelist (as it's not case sensitive)
* `whitelist.is_whitelist_enabled()`: returns whether the whitelist is enabled, as a boolean * `whitelist.is_whitelist_enabled()`: returns whether the whitelist is enabled, as a boolean
## 3. About the author ## 3. About the author

View File

@ -6,8 +6,8 @@ Filter who can enter a Minetest server and who can't through a whitelist
### Commands ### Commands
`/whitelist on`: enables the whitelist `/whitelist on`: enables the whitelist
`/whitelist off`: disables the whitelist `/whitelist off`: disables the whitelist
`/whitelist add <player>`: adds <player> to the whitelist `/whitelist add <player>`: adds <player> to the whitelist (not case sensitive)
`/whitelist remove <player>`: removes <player> from the whitelist `/whitelist remove <player>`: removes <player> from the whitelist (not case sensitive)
`/whitelist who`: lists all the whitelisted players `/whitelist who`: lists all the whitelisted players
### API ### API

24
api.lua
View File

@ -6,7 +6,6 @@ local storage = minetest.get_mod_storage()
---------------------------------------------- ----------------------------------------------
---------------DICHIARAZIONI------------------ ---------------DICHIARAZIONI------------------
---------------------------------------------- ----------------------------------------------
@ -27,7 +26,7 @@ end
---------------------------------------------- ----------------------------------------------
--------------------CORE---------------------- -------------------CORPO----------------------
---------------------------------------------- ----------------------------------------------
function whitelist.enable(sender) function whitelist.enable(sender)
@ -69,7 +68,7 @@ function whitelist.add_player(p_name, sender)
sender = sender or "" sender = sender or ""
-- se già c'è -- se già c'è
if whitelisted_players[p_name] then if whitelist.is_player_whitelisted(p_name) then
minetest.chat_send_player(sender, minetest.colorize("#e6482e", S("[!] @1 is already whitelisted!", p_name))) minetest.chat_send_player(sender, minetest.colorize("#e6482e", S("[!] @1 is already whitelisted!", p_name)))
return end return end
@ -83,9 +82,10 @@ end
function whitelist.remove_player(p_name, sender) function whitelist.remove_player(p_name, sender)
sender = sender or "" sender = sender or ""
local is_whitelisted, wl_name = whitelist.is_player_whitelisted(p_name)
-- se già non c'è -- se già non c'è
if not whitelisted_players[p_name] then if not is_whitelisted then
minetest.chat_send_player(sender, minetest.colorize("#e6482e", S("[!] There is no player whitelisted with that name..."))) minetest.chat_send_player(sender, minetest.colorize("#e6482e", S("[!] There is no player whitelisted with that name...")))
return end return end
@ -94,16 +94,16 @@ function whitelist.remove_player(p_name, sender)
minetest.chat_send_player(sender, minetest.colorize("#e6482e", S("[!] You can't remove yourself!"))) minetest.chat_send_player(sender, minetest.colorize("#e6482e", S("[!] You can't remove yourself!")))
return end return end
whitelisted_players[p_name] = nil whitelisted_players[wl_name] = nil
-- se si rimuove l'ultimo giocatore mentre è attiva -- se si rimuove l'ultimo giocatore mentre è attiva
if not next(whitelisted_players) and is_whitelist_on then if not next(whitelisted_players) and is_whitelist_on then
minetest.chat_send_player(sender, minetest.colorize("#e6482e", S("[!] Whitelist can't be empty when enabled!"))) minetest.chat_send_player(sender, minetest.colorize("#e6482e", S("[!] Whitelist can't be empty when enabled!")))
whitelisted_players[p_name] = true whitelisted_players[wl_name] = true
return end return end
storage:set_string("PLAYERS", minetest.serialize(whitelisted_players)) storage:set_string("PLAYERS", minetest.serialize(whitelisted_players))
minetest.chat_send_player(sender, "[WHITELIST] " .. minetest.colorize("#f16a54", "- " .. p_name)) minetest.chat_send_player(sender, "[WHITELIST] " .. minetest.colorize("#f16a54", "- " .. wl_name))
end end
@ -126,8 +126,14 @@ end
function whitelist.is_player_whitelisted(p_name) function whitelist.is_player_whitelisted(p_name) -- no case sensitive
return whitelisted_players[p_name] ~= nil local p_name_lower = p_name:lower()
for name, _ in pairs(whitelisted_players) do
if name:lower() == p_name_lower then
return true, name
end
end
return false
end end