ircv3 / ircv3-ideas

46 stars 3 forks source link

Standardise informing clients of the need to identify #30

Open jesopo opened 5 years ago

jesopo commented 5 years ago

I think there should be a standardised way (e.g. a numeric) for a server to inform a client that they are using a nickname/account that requires authentication, e.g. in the scenario of...

:NickServ!NickServ@services. NOTICE jesopo :This nickname is registered. Please choose a different nickname, or identify via /msg NickServ identify .

There should be a parsable standardised way to communicate this (in addition to the NOTICE) so that clients can e.g. give a popup to the user to request credentials (like HTTP Authentication popups)

jesopo commented 5 years ago

This ins't really a candidate for FAIL - do we have anything like WARN? if not, should we?

dgw commented 5 years ago

WARN suggested (by me) in ircv3/ircv3-specifications#357 a few moments ago. We could indeed have something like it. Seems like a useful addition.

DanielOaks commented 5 years ago

On the idea of this, in Oragono we have a mode where all client needs to be logged in via SASL before connection registration can complete. Freenode and other nets also do the same for certain classes of connections (particularly for proxies and such), makes sense to deliver this in a similar way using FAIL on connection to indicate it (I may pull this into the ACC spec when I get around to updating that thing).

jesopo commented 5 years ago

Literally just ran in to an issue caused by this on @slingamn's net. znc's *nickserv module didn't catch the client being asked for authentication because the source of the NOTICE was the IRC server - not nickserv which the module looks for.

slingamn commented 5 years ago

It's even worse than that: ZNC requires the message to contain both the English word "identify" and at least one of some other magic English-language strings.

https://github.com/znc/znc/blob/458ce602aa8b14ab870371e26ccec9d29c77bb97/modules/nickserv.cpp#L101

dgw commented 5 years ago

@slingamn Yeah, I've touched that code but it's frustrating that it works the way it does. Kind of amazing that it works on as many networks as it does, as-is.

DarthGandalf commented 5 years ago

ZNC's nickserv module is a workaround for networks which don't support SASL.

DanielOaks commented 5 years ago

https://github.com/ircv3/ircv3-specifications/pull/276 defines the ACCOUNT_REQUIRED code, can be either a FAIL (if a command fails to process, or e.g. you need SASL setup to connect to the network, etc), or a WARN (if you need to authenticate to prevent your nickname from getting changed, for example).