Page 1 of 1

[Request] Ban_negate module

Posted: Thu Jun 25, 2020 4:05 pm
by PeGaSuS
Idea
Some IRCds, like InspIRCd, seems to have this feature.
On the IRCd mentioned above, a negate ban is prepended by the ~ character.

On UnrealIRCd, we already have said character to denote extended bans, so we could prepend something like $ or any other to said extended bans, turning them to $~.

Purpose
To take an action upon users that doesn't match the specified ban/etc

Examples
To auto-voice users that aren't in some channel
/mode #channel +v $~c:#lamers

To mute users that aren't identified to services (instead setting chmode +M) when they join:
/mode #channel +b ~q:$~a:* (we need to be able to use a wildcard here or just $~a)

To ban users that don't have a certain level in a channel:
/mode #channel +b $~c:@#lamers

Summary
I could think of some more examples, but I believe that the ones above are enough to understand the idea behind the module request.

Cheers

Re: [Request] Ban_negate module

Posted: Fri Jun 26, 2020 7:33 am
by Syzop
I've always seen too limited usefulness. So when I implemented "extended bans" in 2003 as the first major IRCd (but not my idea, original credit goes to SorceryNet) I did not add the negate feature.

Yes, examples are always nice to illustrate the pro's and cons:
The_Myth wrote: Thu Jun 25, 2020 4:05 pm Examples
To auto-voice users that aren't in some channel
/mode #channel +v $~c:#lamers
+v doesn't work that way (and is unlikely to be expanded for that in the future). Also, "auto voicing" is rather stupid because it has no purpose. I say this, because if you autovoice everyone then voice has no meaning. And if you selectively auto-voice, then... see next:
Selective auto voicing is basically the opposite of a quiet ban. And indeed, the effect of what you are asking for can be achieved also by: +b ~q:#lamers
To mute users that aren't identified to services (instead setting chmode +M) when they join:
/mode #channel +b ~q:$~a:* (we need to be able to use a wildcard here or just $~a)
But, indeed.. why not just set +M? Same effect.
To ban users that don't have a certain level in a channel:
/mode #channel +b $~c:@#lamers
That one is sort-of legit I guess. But you could achieve something similar with +b ~c:#lamers and then +e ~c:@#lamers. It would not be 100% the same, since it means you allow those chanops to bypass bans (in contrast with your example). But if you are trusting them... is there really much difference in trust level in your example and mine? I wonder. In practice.

So as you can see, I can shoot down 2 out of 3 examples, and the last one has some use but it is limited. Is that worth it?

We also have to take into account the complexity of this feature, not just in server-code but also to users.