martynsmith / node-irc

NodeJS IRC client library
GNU General Public License v3.0
1.32k stars 425 forks source link

Fix CAP match for some IRC daemons #515

Open filler opened 7 years ago

filler commented 7 years ago

Some IRC daemons such as InspIRCd return an random string after a client's CAP REQ request. This would fail to match and block SASL AUTHENTICATEs. Also the space after sasl would also block the above AUTHENTICATEs.

This change:

Example InspIRCd output:

$ openssl s_client -connect irc.corp.com:6697
...
CAP REQ :sasl
:irc.corp.com CAP 354AAUXBK ACK :sasl
^C
$ openssl s_client -connect irc.corp.com:6697
...
CAP REQ :sasl
:irc.corp.com CAP 354AAUXC8 ACK :sasl
^C
Throne3d commented 7 years ago

I'm not really sure that this project is being updated any more – I forked it a while back (irc-upd on npm) and recently fixed up the SASL handling to be more compliant with the IRCv3 spec (including a change similar to this one – it requires only that sasl be one of the arguments in the ACK response, and does not attempt to match the ident – and it now also emits an error if it gets a NAK response to the request). You might consider looking at that version of the library instead.