|
@@ -323,29 +323,40 @@ func (channel *Channel) applyModeMember(client *Client, mode ChannelMode,
|
323
|
323
|
return false
|
324
|
324
|
}
|
325
|
325
|
|
326
|
|
-func (channel *Channel) applyModeMask(client *Client, mode ChannelMode, op ModeOp, mask string) bool {
|
327
|
|
- if !channel.ClientIsOperator(client) {
|
328
|
|
- client.ErrChanOPrivIsNeeded(channel)
|
329
|
|
- return false
|
|
326
|
+func (channel *Channel) ShowMaskList(client *Client, mode ChannelMode) {
|
|
327
|
+ for lmask := range channel.lists[mode].masks {
|
|
328
|
+ client.RplMaskList(mode, channel, lmask)
|
330
|
329
|
}
|
|
330
|
+ client.RplEndOfMaskList(mode, channel)
|
|
331
|
+}
|
331
|
332
|
|
|
333
|
+func (channel *Channel) applyModeMask(client *Client, mode ChannelMode, op ModeOp,
|
|
334
|
+ mask string) bool {
|
332
|
335
|
list := channel.lists[mode]
|
333
|
336
|
if list == nil {
|
334
|
337
|
// This should never happen, but better safe than panicky.
|
335
|
338
|
return false
|
336
|
339
|
}
|
337
|
340
|
|
|
341
|
+ if (op == List) || (mask == "") {
|
|
342
|
+ channel.ShowMaskList(client, mode)
|
|
343
|
+ return false
|
|
344
|
+ }
|
|
345
|
+
|
|
346
|
+ if !channel.ClientIsOperator(client) {
|
|
347
|
+ client.ErrChanOPrivIsNeeded(channel)
|
|
348
|
+ return false
|
|
349
|
+ }
|
|
350
|
+
|
338
|
351
|
if op == Add {
|
339
|
|
- list.Add(mask)
|
340
|
|
- } else if op == Remove {
|
341
|
|
- list.Remove(mask)
|
|
352
|
+ return list.Add(mask)
|
342
|
353
|
}
|
343
|
354
|
|
344
|
|
- for lmask := range channel.lists[mode].masks {
|
345
|
|
- client.RplMaskList(mode, channel, lmask)
|
|
355
|
+ if op == Remove {
|
|
356
|
+ return list.Remove(mask)
|
346
|
357
|
}
|
347
|
|
- client.RplEndOfMaskList(mode, channel)
|
348
|
|
- return true
|
|
358
|
+
|
|
359
|
+ return false
|
349
|
360
|
}
|
350
|
361
|
|
351
|
362
|
func (channel *Channel) applyMode(client *Client, change *ChannelModeChange) bool {
|
|
@@ -353,7 +364,7 @@ func (channel *Channel) applyMode(client *Client, change *ChannelModeChange) boo
|
353
|
364
|
case BanMask, ExceptMask, InviteMask:
|
354
|
365
|
return channel.applyModeMask(client, change.mode, change.op, change.arg)
|
355
|
366
|
|
356
|
|
- case Moderated, NoOutside, OpOnlyTopic, Persistent, Private:
|
|
367
|
+ case InviteOnly, Moderated, NoOutside, OpOnlyTopic, Persistent, Private:
|
357
|
368
|
return channel.applyModeFlag(client, change.mode, change.op)
|
358
|
369
|
|
359
|
370
|
case Key:
|