From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Alex McGrath via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#48601: [PATCH] Add support for plain SASL authentication to rcirc Date: Sun, 23 May 2021 13:16:19 +0100 Message-ID: <87im39ir1o.fsf@t480s.lan> Reply-To: Alex McGrath Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="35890"; mail-complaints-to="usenet@ciao.gmane.io" To: 48601@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sun May 23 14:17:14 2021 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lkn2f-00093f-8c for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 23 May 2021 14:17:13 +0200 Original-Received: from localhost ([::1]:58410 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lkn2e-0005SU-Bb for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 23 May 2021 08:17:12 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:60652) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lkn2X-0005S5-Fz for bug-gnu-emacs@gnu.org; Sun, 23 May 2021 08:17:05 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:57479) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lkn2U-0007RT-Rb for bug-gnu-emacs@gnu.org; Sun, 23 May 2021 08:17:05 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1lkn2U-0005CK-LM for bug-gnu-emacs@gnu.org; Sun, 23 May 2021 08:17:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Alex McGrath Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 23 May 2021 12:17:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 48601 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.162177221719964 (code B ref -1); Sun, 23 May 2021 12:17:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 23 May 2021 12:16:57 +0000 Original-Received: from localhost ([127.0.0.1]:40792 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lkn2O-0005Bw-Vp for submit@debbugs.gnu.org; Sun, 23 May 2021 08:16:57 -0400 Original-Received: from lists.gnu.org ([209.51.188.17]:45888) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lkn2M-0005Bl-0m for submit@debbugs.gnu.org; Sun, 23 May 2021 08:16:55 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:60566) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lkn2L-0005Q9-OO for bug-gnu-emacs@gnu.org; Sun, 23 May 2021 08:16:53 -0400 Original-Received: from out1.migadu.com ([2001:41d0:2:863f::]:39911) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lkn24-0007KP-W4 for bug-gnu-emacs@gnu.org; Sun, 23 May 2021 08:16:47 -0400 X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amk.ie; s=key1; t=1621772189; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type; bh=/p/+C+C2SPPGnaojhlJjYdN/fO3U3KHK2LwqBP/LQjI=; b=BQdmU+wh4WulJ5GkC1cJnYEKr3ztYIVtkdWZjr8XzpIV4t1W49ofzf6IuM2jjHXOcLJE+n bIaPsmIMiOreyFf8FnqBslFOjB6kVkjjxzFKukFZt7pZqBEsBilBhXe1Csm8Aghg6fbZhG BiBhmiiWCCQcD8Xh/mxUBaHy3Bh2wA+P/sLtHSTIHuPdQihEkUf2BP+BACfngc60zhf2gm 2nGpQl8qewoj9qaX4mr1xjDl4yycBDwY9BYSLXs7k1EjaicUmHw7zvgNUM76vjWXcSkHRq 1JXyvblhxPzUBAigDCftY2v3trzHV5tYuu9jEpoo7CBdrzpL5rAOX/zVB0WRZg== X-Migadu-Flow: FLOW_OUT X-Migadu-Auth-User: amk@amk.ie Received-SPF: pass client-ip=2001:41d0:2:863f::; envelope-from=amk@amk.ie; helo=out1.migadu.com X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:207088 Archived-At: --=-=-= Content-Type: text/plain This adds support for PLAIN SASL authentication to rcirc. ietf rfc: https://datatracker.ietf.org/doc/html/rfc4616 Thanks, Alex --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0001-Add-support-for-SASL-authentication-to-rcirc.patch Content-Description: Patch File >From 9ec0e5711621f17c8086365a15d80cb75352972b Mon Sep 17 00:00:00 2001 From: Alex McGrath Date: Sun, 23 May 2021 12:47:17 +0100 Subject: [PATCH] Add support for SASL authentication to rcirc --- lisp/net/rcirc.el | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el index 7251640bf2..f22096fc6d 100644 --- a/lisp/net/rcirc.el +++ b/lisp/net/rcirc.el @@ -245,13 +245,15 @@ The ARGUMENTS for each METHOD symbol are: `chanserv': NICK CHANNEL PASSWORD `bitlbee': NICK PASSWORD `quakenet': ACCOUNT PASSWORD + `sasl': NICK PASSWORD Examples: ((\"freenode\" nickserv \"bob\" \"p455w0rd\") (\"freenode\" chanserv \"bob\" \"#bobland\" \"passwd99\") (\"bitlbee\" bitlbee \"robert\" \"sekrit\") (\"dal.net\" nickserv \"bob\" \"sekrit\" \"NickServ@services.dal.net\") - (\"quakenet.org\" quakenet \"bobby\" \"sekrit\"))" + (\"quakenet.org\" quakenet \"bobby\" \"sekrit\") + (\"oftc\" sasl \"bob\" \"hunter2\"))" :type '(alist :key-type (regexp :tag "Server") :value-type (choice (list :tag "NickServ" (const nickserv) @@ -269,6 +271,10 @@ Examples: (list :tag "QuakeNet" (const quakenet) (string :tag "Account") + (string :tag "Password")) + (list :tag "SASL" + (const sasl) + (string :tag "Nick") (string :tag "Password"))))) (defcustom rcirc-auto-authenticate-flag t @@ -543,6 +549,22 @@ If ARG is non-nil, instead prompt for connection parameters." (defvar rcirc-connection-info nil) (defvar rcirc-process nil) +(defun rcirc-get-server-method (rcirc-server) + (catch 'method + (dolist (i rcirc-authinfo) + (let ((server (car i)) + (method (cadr i))) + (when (and (string-match server rcirc-server)) + (throw 'method method)))))) + +(defun rcirc-get-server-password (rcirc-server) + (catch 'pass + (dolist (i rcirc-authinfo) + (let ((server (car i)) + (args (cl-cdddr i))) + (when (and (string-match server rcirc-server)) + (throw 'pass (car args))))))) + ;;;###autoload (defun rcirc-connect (server &optional port nick user-name full-name startup-channels password encryption @@ -598,6 +620,11 @@ If ARG is non-nil, instead prompt for connection parameters." (rcirc-send-string process (concat "NICK " nick)) (rcirc-send-string process (concat "USER " user-name " 0 * :" full-name)) + ;; setup sasl, and initiate authentication + (when (and rcirc-auto-authenticate-flag + (eq (rcirc-get-server-method server) 'sasl)) + (rcirc-send-string process "CAP REQ sasl") + (rcirc-send-string process "AUTHENTICATE PLAIN")) ;; setup ping timer if necessary (unless rcirc-keepalive-timer @@ -2922,7 +2949,8 @@ Passwords are stored in `rcirc-authinfo' (which see)." (rcirc-send-privmsg process "&bitlbee" - (concat "IDENTIFY " (car args))))) + (concat "IDENTIFY " (car args)))) + (sasl nil)) ;; quakenet authentication doesn't rely on the user's nickname. ;; the variable `nick' here represents the Q account name. (when (eq method 'quakenet) @@ -2968,6 +2996,13 @@ Passwords are stored in `rcirc-authinfo' (which see)." (defun rcirc-handler-CTCP-response (process _target sender message) (rcirc-print process sender "CTCP" nil message t)) + +(defun rcirc-handler-AUTHENTICATE (process _cmd _args _text) + (rcirc-send-string process (format "AUTHENTICATE %s" + (base64-encode-string + (concat "\0" (rcirc-buffer-nick) + "\0" (rcirc-get-server-password rcirc-server)))))) + (defgroup rcirc-faces nil "Faces for rcirc." -- 2.30.2 --=-=-= Content-Type: text/plain Date: Sun, 23 May 2021 13:16:02 +0100 Message-ID: <87lf85ir25.fsf@t480s.lan> --=-=-=--