summaryrefslogtreecommitdiff
path: root/xban2
diff options
context:
space:
mode:
Diffstat (limited to 'xban2')
-rw-r--r--xban2/README.md6
-rw-r--r--xban2/init.lua25
2 files changed, 31 insertions, 0 deletions
diff --git a/xban2/README.md b/xban2/README.md
index 90eed0d..75f8e88 100644
--- a/xban2/README.md
+++ b/xban2/README.md
@@ -104,3 +104,9 @@ the supported import plugins at the time of writing:
* `v2`: Old format used by xban (`players.iplist.v2`).
**Example:** `/xban_dbi minetest`
+
+### `xban_cleanup`
+
+Removes all non-banned entries from the xban db.
+
+**Usage:** `/xban_cleanup`
diff --git a/xban2/init.lua b/xban2/init.lua
index 6f15f14..68a3508 100644
--- a/xban2/init.lua
+++ b/xban2/init.lua
@@ -314,6 +314,7 @@ minetest.register_chatcommand("xban_wl", {
end,
})
+
local function check_temp_bans()
minetest.after(60, check_temp_bans)
local to_rm = { }
@@ -374,6 +375,30 @@ local function load_db()
end
end
+minetest.register_chatcommand("xban_cleanup", {
+ description = "Removes all non-banned entries from the xban db",
+ privs = { server=true },
+ func = function(name, params)
+ local old_count = #db
+
+ local i = 1
+ while i <= #db do
+ if not db[i].banned then
+ -- not banned, remove from db
+ table.remove(db, i)
+ else
+ -- banned, hold entry back
+ i = i + 1
+ end
+ end
+
+ -- save immediately
+ save_db()
+
+ return true, "Removed " .. (old_count - #db) .. " entries, new db entry-count: " .. #db
+ end,
+})
+
minetest.register_on_shutdown(save_db)
minetest.after(SAVE_INTERVAL, save_db)
load_db()