Standardise informing clients of the need to identify
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)
This ins't really a candidate for FAIL - do we have anything like WARN? if not, should we?
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.
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).
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.
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
@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.
ZNC's nickserv module is a workaround for networks which don't support SASL.
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).