View Issue Details

IDProjectCategoryView StatusLast Update
0005991unrealircdpublic2021-11-05 15:08
Reporterprogval Assigned Tosyzop  
PrioritynormalSeverityminorReproducibilityN/A
Status closedResolutionno change required 
Product Version6.0.0-beta1 
Summary0005991: Make the new extban names consistent with InspIRCd
DescriptionHi,

I noticed that both UnrealIRCd and InspIRCd are both going to introduce named extbans
in their next major version (respectively 6.x and 4.x).

As neither is released yet, I think this is a great opportunity to make them
consistent with each other, which will make life easier for client developpers.
If both Insp and Unreal can agree on these names, I have good hope
they can be standardized through IRCv3 (and followed by other IRCds
like Solanum or Ergo)
so client developers can implement nice GUIs/automation that does not require
server-specific knowledge.

Here is a review of Unreal's extbans (based on this:
https://github.com/unrealircd/unrealircd/blob/4ea6c82a5d7b069e306936204a27794235829397/doc/conf/modules.default.conf#L193-L206
and an extra from https://www.unrealircd.org/docs/Extended_bans )
compared with InspIRCd's (based on https://docs.inspircd.org/3/extended-bans/ at the time I am writing this)


> loadmodule "extbans/join"; /* +b ~j (prevent only joins) */

N/A (Insp does not have it)

> loadmodule "extbans/quiet"; /* +b ~q (prevent only messaging) */

InspIRCd calls it "mute"

> loadmodule "extbans/nickchange"; /* +b ~n (prevent only nick changes) */

InspIRCd calls it "nonick" (letter is "N")

> loadmodule "extbans/realname"; /* +b ~r (ban by real name) */

Consistent with Insp (uses a different letter, though)

> loadmodule "extbans/account"; /* +b ~a (ban/exempt if logged in with services account) */

Same name as Insp (uses a different letter, though)

According to its documentation, Insp allows a subtly different set of of values, though:

1. wildcards are allowed (Unreal only allows `*` as special value)
2. uses a different extban ("unauthed" / "U") instead of `~account:0`/`~a:0`

> loadmodule "extbans/inchannel"; /* +b ~c (ban/exempt if in channel) */

Insp calls it "channel" (and uses letter "j")

> loadmodule "extbans/operclass"; /* +b ~O (ban/exempt by operclass) */

N/A

instead, Insp has an "oper" extban that matches the oper account,
and "class" for any user class

> loadmodule "extbans/certfp"; /* +b ~S (ban/exempt by certfp) */

Insp calls it "sslfp" (letter "z")

> loadmodule "extbans/textban"; /* +b ~T (censor or block text) */

N/A

Insp uses a specific mode: https://docs.inspircd.org/3/modules/chanfilter/

> loadmodule "extbans/msgbypass"; /* +e ~m (bypass message restrictions) */

N/A

> loadmodule "extbans/timedban"; /* +b ~t (timed bans / temporary bans) */

N/A

> loadmodule "extbans/partmsg"; /* +b ~p (hide part/quit message) */

Consistent with Insp (including the letter)

> loadmodule "extbans/securitygroup"; /* +b ~G (security group) */

N/A

> loadmodule "extbans/country"; /* +b ~country (country/geoip) */

Consistent with Insp, including the values AFAICT


> f forward chanmodes/link Forward user to another channel if matching mask.

N/A



As you can see, a large part of the extbans have a nice mapping to Insp's extbans.

So I would love it if you could rename these.

(To be clear I'm not suggesting Insp's names are better; I just needed to
start somewhere and you seemed more open to the change :)
If there are some names you really don't like, I'll send a similar suggestion
to Insp to rename their extbans to yours.)


Thanks for reading!
Tagsmode
3rd party modules

Activities

syzop

2021-11-03 08:12

administrator   ~0022157

What I always try to keep in mind when adding an extban is using the following logic:
"for +b, i am banning.... [something]"
So ~join, as i am banning joins
So ~account, as i am banning an account
And so on.. channel, security-group, operclass, realname, etc.
(small side note, we do call it ~channel, just the module is called inchannel)

With that reasoning in mind, I'm not much of a fan of something like "nonick" as it means "I am banning nonick" which is incorrect. Instead, as you can see I chose "nickchange", which fits with the "i am banning nick changes". I did not chose "nick" either (not that you mentioned this option) because you are not "banning a nick", it's the nick change you are banning.

Now for 3 out of 13 this reasoning is NOT applied:
* For ~forward: I think that is fine, as it is less of a ban and more of a different thing, and I don't see a better name here
* For ~msgbypas: this one is only permitted in +e and then the name is fine. It says exactly what it does.. allows bypassing of message restrictions.
And... then we get a real one:
For "quiet", but also for "mute", the reasoning I always try to use does not work. You are not "banning quiet [people]" and you are "not banning mute(d) [people]". In fact, you're doing the opposite. If we were to follow the same logic that I try to apply everywhere, the one I mentioned at the beginning, then it would have to be called "speak", "talk" or "message", since you are "banning the ability to speak/talk/message". So:
+b ~talk:nick!user@host
+b ~speak:nick!user@host
~b ~message:nick!user@host
So that is an inconsistency i wouldn't mind getting rid of. Import thing is, of course, that end-users must still be able to understand it. If going that route then I think something like "speak" or "talk" would be better than "message", because in IRC context "message" is sometimes seen different than notice (and it would obviously ban both).
Don't know if you or Insp have any thoughts on that.
Let me put it this way: IF we are going to change the name for ~quiet then I think it should be with that logic from above, and not with another one that is "just as wrong".

So of the 3 different names between UnrealIRCd and InspIRCd:
* quiet vs mute: see above, both are technically a misnomer IMO
* nickchange vs nonick: i really think nickchange is better (see above)
* certfp vs sslfp: haven't talked about that one yet, see below
Since the name SSL is being phased more and more I don't think it would make much sense to call it ssl here. Also I think certificate is more accurate, as it is a fingerprint of the SSL/TLS certificate. Let's google a bit to see what is more common:
* "ssl fingerprint": less than 5k hits
* "tls fingerprint": 93k hits
* "certificate fingerprint": 2 million results
I have also pondered briefly about calling it just "cert" but I think "certfp" is more descriptive and as you can see where certfp stands for (certificate fingerprint) is used a lot.

progval

2021-11-03 23:50

reporter   ~0022164

Well, I asked Insp to change their names, but it's a no https://github.com/inspircd/inspircd/issues/1940

syzop

2021-11-05 15:08

administrator   ~0022168

I can understand the first and perhaps main point raised at InspIRCd. I mean, they also thought out some logic (naming them after modes). It's just not my logic or what I would prefer.
Some other things I understood less, but that is probably because I am not an InspIRCd user or dev so I'm not familiar with it.

Anyway, in the end it means the two naming philosophies are incompatible with each other. That's a pity, it was basically now or never. Well.. at least you tried :)

Issue History

Date Modified Username Field Change
2021-11-02 18:31 progval New Issue
2021-11-02 18:31 progval Tag Attached: mode
2021-11-03 08:12 syzop Note Added: 0022157
2021-11-03 23:50 progval Note Added: 0022164
2021-11-05 15:08 syzop Assigned To => syzop
2021-11-05 15:08 syzop Status new => closed
2021-11-05 15:08 syzop Resolution open => no change required
2021-11-05 15:08 syzop Note Added: 0022168