forked from External/grumble
Add ban support to UserRemove message.
This commit is contained in:
parent
c1861a4312
commit
6295adad98
1 changed files with 25 additions and 7 deletions
32
message.go
32
message.go
|
|
@ -13,6 +13,7 @@ import (
|
|||
"fmt"
|
||||
"grumble/ban"
|
||||
"grumble/blobstore"
|
||||
"time"
|
||||
)
|
||||
|
||||
// These are the different kinds of messages
|
||||
|
|
@ -502,25 +503,36 @@ func (server *Server) handleUserRemoveMessage(client *Client, msg *Message) {
|
|||
return
|
||||
}
|
||||
|
||||
ban := false
|
||||
isBan := false
|
||||
if userremove.Ban != nil {
|
||||
ban = *userremove.Ban
|
||||
isBan = *userremove.Ban
|
||||
}
|
||||
|
||||
// Check client's permissions
|
||||
perm := Permission(KickPermission)
|
||||
if ban {
|
||||
if isBan {
|
||||
perm = Permission(BanPermission)
|
||||
}
|
||||
|
||||
if removeClient.IsSuperUser() || !server.HasPermission(client, server.root, perm) {
|
||||
client.sendPermissionDenied(client, server.root, perm)
|
||||
return
|
||||
}
|
||||
|
||||
if ban {
|
||||
// fixme(mkrautz): Implement banning.
|
||||
server.Printf("handleUserRemove: Banning is not yet implemented.")
|
||||
if isBan {
|
||||
ban := ban.Ban{}
|
||||
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))
|
||||
|
|
@ -529,6 +541,12 @@ func (server *Server) handleUserRemoveMessage(client *Client, msg *Message) {
|
|||
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()
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue