From a6848078aa57a3098ab5f8c2dca520161a3a282d Mon Sep 17 00:00:00 2001 From: HimbeerserverDE Date: Sat, 6 Mar 2021 15:57:39 +0100 Subject: [PATCH] Add banlist command --- ban.go | 32 ++++++++++++++++++++++++++++++++ igutils.go | 18 ++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/ban.go b/ban.go index b767d4a..464bc4d 100644 --- a/ban.go +++ b/ban.go @@ -80,6 +80,38 @@ func deleteBanItem(db *sql.DB, name string) error { return nil } +// BanList returns the list of banned players and IP addresses +func BanList() (map[string]string, error) { + sql_readBanItems := `SELECT addr, name FROM ban;` + + db, err := initAuthDB() + if err != nil { + return nil, err + } + defer db.Close() + + stmt, err := db.Prepare(sql_readBanItems) + if err != nil { + return nil, err + } + defer stmt.Close() + + rows, err := stmt.Query() + if err != nil { + return nil, err + } + + r := make(map[string]string) + + for rows.Next() { + var addr, name string + err = rows.Scan(&addr, &name) + r[addr] = name + } + + return r, nil +} + // IsBanned reports whether a Peer is banned func (p *Peer) IsBanned() (bool, string, error) { db, err := initAuthDB() diff --git a/igutils.go b/igutils.go index bc480f5..77848f7 100644 --- a/igutils.go +++ b/igutils.go @@ -362,6 +362,24 @@ func init() { p.SendChatMsg("Privileges updated.") }) + RegisterChatCommand("banlist", + privs("ban"), + "Prints the list of banned IP address and associated players. Usage: banlist", + func(p *Peer, param string) { + bans, err := BanList() + if err != nil { + p.SendChatMsg("An internal error occured while attempting to read the ban list.") + return + } + + msg := "Address | Name\n" + for addr, name := range bans { + msg += addr + " | " + name + "\n" + } + + p.SendChatMsg(msg) + }) + RegisterChatCommand("ban", privs("ban"), "Bans an IP address or a connected player. Usage: ban ",