Add ban support to UserRemove message.

This commit is contained in:
Mikkel Krautz 2011-05-14 17:48:33 +02:00
parent c1861a4312
commit 6295adad98

View file

@ -13,6 +13,7 @@ import (
"fmt" "fmt"
"grumble/ban" "grumble/ban"
"grumble/blobstore" "grumble/blobstore"
"time"
) )
// These are the different kinds of messages // These are the different kinds of messages
@ -502,25 +503,36 @@ func (server *Server) handleUserRemoveMessage(client *Client, msg *Message) {
return return
} }
ban := false isBan := false
if userremove.Ban != nil { if userremove.Ban != nil {
ban = *userremove.Ban isBan = *userremove.Ban
} }
// Check client's permissions // Check client's permissions
perm := Permission(KickPermission) perm := Permission(KickPermission)
if ban { if isBan {
perm = Permission(BanPermission) perm = Permission(BanPermission)
} }
if removeClient.IsSuperUser() || !server.HasPermission(client, server.root, perm) { if removeClient.IsSuperUser() || !server.HasPermission(client, server.root, perm) {
client.sendPermissionDenied(client, server.root, perm) client.sendPermissionDenied(client, server.root, perm)
return return
} }
if ban { if isBan {
// fixme(mkrautz): Implement banning. ban := ban.Ban{}
server.Printf("handleUserRemove: Banning is not yet implemented.") ban.IP = removeClient.conn.RemoteAddr().(*net.TCPAddr).IP
ban.Mask = 128
if userremove.Reason != nil {
ban.Reason = *userremove.Reason
}
ban.Username = removeClient.ShownName()
ban.CertHash = removeClient.CertHash
ban.Start = time.Seconds()
ban.Duration = 0
server.banlock.Lock()
server.Bans = append(server.Bans, ban)
server.banlock.Unlock()
} }
userremove.Actor = proto.Uint32(uint32(client.Session)) userremove.Actor = proto.Uint32(uint32(client.Session))
@ -529,6 +541,12 @@ func (server *Server) handleUserRemoveMessage(client *Client, msg *Message) {
return return
} }
if isBan {
client.Printf("Kick-banned %v (%v)", removeClient.ShownName(), removeClient.Session)
} else {
client.Printf("Kicked %v (%v)", removeClient.ShownName(), removeClient.Session)
}
removeClient.ForceDisconnect() removeClient.ForceDisconnect()
} }