Add banlist command

master
HimbeerserverDE 2021-03-06 15:57:39 +01:00
parent a79c7736ba
commit a6848078aa
No known key found for this signature in database
GPG Key ID: 1A651504791E6A8B
2 changed files with 50 additions and 0 deletions

32
ban.go
View File

@ -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()

View File

@ -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 <playername | IP address>",