forked from External/ergo
Updates to channel persistence
1. Implement persistent channel keys (#208) 2. Persist changes to registered channel modes 3. Backend changes for persisting operator status (partial #198)
This commit is contained in:
parent
f41067029e
commit
8fb5a38851
8 changed files with 291 additions and 110 deletions
|
|
@ -1351,20 +1351,17 @@ func cmodeHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *Res
|
|||
applied = channel.ApplyChannelModeChanges(client, msg.Command == "SAMODE", changes, rb)
|
||||
}
|
||||
|
||||
// save changes to banlist/exceptlist/invexlist
|
||||
var banlistUpdated, exceptlistUpdated, invexlistUpdated bool
|
||||
// save changes
|
||||
var includeFlags uint
|
||||
for _, change := range applied {
|
||||
if change.Mode == modes.BanMask {
|
||||
banlistUpdated = true
|
||||
} else if change.Mode == modes.ExceptMask {
|
||||
exceptlistUpdated = true
|
||||
} else if change.Mode == modes.InviteMask {
|
||||
invexlistUpdated = true
|
||||
includeFlags |= IncludeModes
|
||||
if change.Mode == modes.BanMask || change.Mode == modes.ExceptMask || change.Mode == modes.InviteMask {
|
||||
includeFlags |= IncludeLists
|
||||
}
|
||||
}
|
||||
|
||||
if (banlistUpdated || exceptlistUpdated || invexlistUpdated) && channel.IsRegistered() {
|
||||
go server.channelRegistry.StoreChannel(channel, true)
|
||||
if channel.IsRegistered() && includeFlags != 0 {
|
||||
go server.channelRegistry.StoreChannel(channel, includeFlags)
|
||||
}
|
||||
|
||||
// send out changes
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue