aboutsummaryrefslogtreecommitdiff
path: root/init.lua
diff options
context:
space:
mode:
authorDiego Martinez <kaeza@users.sf.net>2014-07-09 06:32:24 -0300
committerDiego Martinez <kaeza@users.sf.net>2014-07-09 06:38:28 -0300
commit7923c393e9d2db75fa630a65f5e03491473299ef (patch)
treeb255a853787e073fe79cdda2293cd18c226d49b4 /init.lua
parent19d92df3bc219641de436994e9b21d1b200f10c8 (diff)
downloadxban2-7923c393e9d2db75fa630a65f5e03491473299ef.tar.gz
xban2-7923c393e9d2db75fa630a65f5e03491473299ef.tar.bz2
xban2-7923c393e9d2db75fa630a65f5e03491473299ef.zip
Add simple GUI to check records interactively.
Diffstat (limited to 'init.lua')
-rw-r--r--init.lua57
1 files changed, 35 insertions, 22 deletions
diff --git a/init.lua b/init.lua
index 53b2e8d..6a4c06f 100644
--- a/init.lua
+++ b/init.lua
@@ -131,6 +131,32 @@ function xban.unban_player(player, source) --> bool, err
return true
end
+function xban.get_record(player)
+ local e = xban.find_entry(player)
+ if not e then
+ return nil, ("No entry for `%s'"):format(player)
+ elseif (not e.record) or (#e.record == 0) then
+ return nil, ("`%s' has no ban records"):format(player)
+ end
+ local record = { }
+ for _, rec in ipairs(e.record) do
+ local msg
+ if rec.expires then
+ msg = ("%s, Expires: %s"):format(
+ rec.reason, os.date("%c", e.expires))
+ else
+ msg = rec.reason
+ end
+ table.insert(record, ("[%s]: %s"):format(os.date("%c", e.time), msg))
+ end
+ local last_pos
+ if e.last_pos then
+ last_pos = ("User was last seen at %s"):format(
+ minetest.pos_to_string(e.last_pos))
+ end
+ return record, last_pos
+end
+
minetest.register_on_prejoinplayer(function(name, ip)
local e = xban.find_entry(name) or xban.find_entry(ip)
if not e then return end
@@ -220,31 +246,17 @@ minetest.register_chatcommand("xban_record", {
"Usage: /xban_record <player_or_ip>")
return
end
- local e = xban.find_entry(params)
- if not e then
- minetest.chat_send_player(name,
- ("[xban_record] No entry for `%s'"):format(params))
- return
- elseif (not e.record) or (#e.record == 0) then
- minetest.chat_send_player(name,
- ("[xban_record] `%s' has no ban records"):format(params))
+ local record, last_pos = xban.get_record(plname)
+ if not record then
+ local err = last_pos
+ minetest.chat_send_player(name, "[xban] "..err)
return
end
- for _, rec in ipairs(e.record) do
- local msg
- if rec.expires then
- msg = ("%s, Expires: %s"):format(
- rec.reason, os.date("%c", rec.expires))
- else
- msg = rec.reason
- end
- minetest.chat_send_player(name,
- ("[%s]: %s"):format(os.date("%c", rec.time), msg))
+ for _, e in ipairs(record) do
+ minetest.chat_send_player(name, "[xban] "..e)
end
- if e.last_pos then
- minetest.chat_send_player(name,
- ("User was last seen at %s"):format(
- minetest.pos_to_string(e.last_pos)))
+ if last_pos then
+ minetest.chat_send_player(name, "[xban] "..last_pos)
end
end,
})
@@ -311,3 +323,4 @@ load_db()
xban.db = db
dofile(xban.MP.."/dbimport.lua")
+dofile(xban.MP.."/gui.lua")