Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for SASL PLAIN authentication #199

Merged
merged 4 commits into from
Aug 13, 2023
Merged

Add support for SASL PLAIN authentication #199

merged 4 commits into from
Aug 13, 2023

Conversation

anisse
Copy link
Contributor

@anisse anisse commented Sep 7, 2022

This implements a minimal state machine to do the SASL PLAIN authentication dance.

It could have been done even simpler by sending all the commands and not checking for server capabilities, but I don't think it's being a good citizen.

It changes the ServerConnection api by adding a sasl_login argument, and reusing the old password argument, since I couldn't think of a usecase where both were needed. The SimpleIRCClient and SingleServerIRCBot can also pass this new argument.

A new "login_failed" generated event is added and is sent in some of the cases where the SASL login can fail. Note that there is no timeout on the state machine, so if the server does not send any of the expected commands, it will just stay active forever, potentially with the login failing.

It was tested on libera.chat with the cobe bot and seems to work reasonably well.

Fixes #195

This can be used by clients to implement their own sasl authentication
mechanism with names instead of numbers for event types.
This implements a minimal state machine to do the SASL PLAIN
authentication dance.

It could have been done even simpler by sending all the commands and not
checking for server capabilities, but I don't think it's being a good
citizen.

It changes the ServerConnection api by adding a sasl_login argument, and
reusing the old password argument, since I couldn't think of a usecase
where both were needed. The SimpleIRCClient and SingleServerIRCBot can
also pass this new argument.

A new "login_failed" generated event is added and is sent in some of the
cases where the SASL login can fail. Note that there is no timeout on
the state machine, so if the server does not send any of the expected
commands, it will just stay active forever, potentially with the login
failing.

It was tested on libera.chat with the cobe bot and seems to work
reasonably well.

Fixes jaraco#195
@jaraco
Copy link
Owner

jaraco commented Aug 12, 2023

Oh, gosh. I can't believe I let this library languish for so long. Thanks for the contrib. I'll review and get it in ASAP.

@jaraco jaraco self-assigned this Aug 12, 2023
@jaraco jaraco merged commit 6bee9b0 into jaraco:main Aug 13, 2023
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add support for SASL
2 participants