summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2018-12-04 22:13:44 -0500
committerJune McEnroe <june@causal.agency>2018-12-04 22:13:44 -0500
commit776ce586486b09ef76eadfd9c35584dd5e09d44f (patch)
treeafdcf783ba8b7b269f57dc848c8a1f569b968db2
parentShow error if disconnected unintentionally (diff)
downloadcatgirl-776ce586486b09ef76eadfd9c35584dd5e09d44f.tar.gz
catgirl-776ce586486b09ef76eadfd9c35584dd5e09d44f.zip
Implement SASL PLAIN authentication
Diffstat (limited to '')
-rw-r--r--handle.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/handle.c b/handle.c
index 3b52f0c..dd42452 100644
--- a/handle.c
+++ b/handle.c
@@ -105,6 +105,24 @@ static void handleError(char *prefix, char *params) {
 	}
 }
 
+static void handleCap(char *prefix, char *params) {
+	char *subc, *list;
+	parse(prefix, NULL, NULL, NULL, params, 3, 0, NULL, &subc, &list);
+	if (!strcmp(subc, "ACK") && self.auth) {
+		size_t len = strlen(self.auth);
+		byte plain[1 + len];
+		plain[0] = 0;
+		for (size_t i = 0; i < len; ++i) {
+			plain[1 + i] = (self.auth[i] == ':' ? 0 : self.auth[i]);
+		}
+		char *b64 = base64(plain, sizeof(plain));
+		ircFmt("AUTHENTICATE PLAIN\r\n");
+		ircFmt("AUTHENTICATE %s\r\n", b64);
+		free(b64);
+	}
+	ircFmt("CAP END\r\n");
+}
+
 static void handleErrorErroneousNickname(char *prefix, char *params) {
 	char *mesg;
 	parse(prefix, NULL, NULL, NULL, params, 3, 0, NULL, NULL, &mesg);
@@ -481,6 +499,7 @@ static const struct {
 	{ "401", handleErrorNoSuchNick },
 	{ "432", handleErrorErroneousNickname },
 	{ "433", handleErrorErroneousNickname },
+	{ "CAP", handleCap },
 	{ "ERROR", handleError },
 	{ "JOIN", handleJoin },
 	{ "KICK", handleKick },
n/wiki?id=733a5ea2e8c0fe8565ef1dfee47fcf014f45675d&follow=1'>Remove wiki scriptJune McEnroe 2020-02-19Add The Obelisk GateJune McEnroe 2020-02-17Add Four Tet — HandsJune McEnroe 2020-02-12Simplify macOS notify-sendJune McEnroe 2020-02-12Add imbox and notemap to pageJune McEnroe 2020-02-12Collapse simple linksJune McEnroe 2020-02-12Move catgirl up the pageJune McEnroe 2020-02-12Update catgirl pty grabJune McEnroe 2020-02-12Link to cgit /about pages where appropriateJune McEnroe 2020-02-11Separate LINKS from BINS for html to workJune McEnroe 2020-02-11Add margin to Bl-bullet itemsJune McEnroe 2020-02-10Match URLs inside parens or with paired parens insideJune McEnroe 2020-02-10Duplicate effective URL before passing it back to curlJune McEnroe 2020-02-09Add To Be Taught, If FortunateJune McEnroe 2020-02-04Add The Future of Another TimelineJune McEnroe 2020-01-31Reorganize the Makefile for the umpteenth timeJune McEnroe 2020-01-28Change scout sensitivity to 1.4June McEnroe 2020-01-28Import shows.txtJune McEnroe