From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Joseph Gay Newsgroups: gmane.emacs.devel Subject: Re: [PATCH 2/2] response handlers needed for SASL PLAIN authentication Date: Wed, 01 Feb 2012 12:32:29 -0600 Message-ID: <87fweue75u.fsf@geneva.hpsy.me> References: <87ty3ae7s1.fsf@geneva.hpsy.me> <87obtie7lp.fsf@geneva.hpsy.me> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: dough.gmane.org 1328121042 28671 80.91.229.3 (1 Feb 2012 18:30:42 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Wed, 1 Feb 2012 18:30:42 +0000 (UTC) Cc: Michael Olson To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Feb 01 19:30:41 2012 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Rsex5-000332-Vc for ged-emacs-devel@m.gmane.org; Wed, 01 Feb 2012 19:30:40 +0100 Original-Received: from localhost ([::1]:35736 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Rsex5-0005oX-6s for ged-emacs-devel@m.gmane.org; Wed, 01 Feb 2012 13:30:39 -0500 Original-Received: from eggs.gnu.org ([140.186.70.92]:35332) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Rsex0-0005oN-8c for emacs-devel@gnu.org; Wed, 01 Feb 2012 13:30:37 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Rsews-0007X3-9X for emacs-devel@gnu.org; Wed, 01 Feb 2012 13:30:34 -0500 Original-Received: from plane.gmane.org ([80.91.229.3]:52960) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Rsews-0007Wx-21 for emacs-devel@gnu.org; Wed, 01 Feb 2012 13:30:26 -0500 Original-Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1Rsewq-0002wz-CZ for emacs-devel@gnu.org; Wed, 01 Feb 2012 19:30:24 +0100 Original-Received: from 166.137.14.7 ([166.137.14.7]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 01 Feb 2012 19:30:24 +0100 Original-Received: from gilleylen by 166.137.14.7 with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 01 Feb 2012 19:30:24 +0100 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 90 Original-X-Complaints-To: usenet@dough.gmane.org X-Gmane-NNTP-Posting-Host: 166.137.14.7 User-Agent: Gnus/5.110018 (No Gnus v0.18) Emacs/24.0.92 (gnu/linux) Cancel-Lock: sha1:O4WKNpRwgAo/G6mbIUPvNsZVI3k= X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 80.91.229.3 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:148101 Archived-At: Revised to fix an error and shorten lines to <= 79 columns. --- erc-sasl.el | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 76 insertions(+), 0 deletions(-) create mode 100644 erc-sasl.el diff --git a/erc-sasl.el b/erc-sasl.el new file mode 100644 index 0000000..b791e96 --- /dev/null +++ b/erc-sasl.el @@ -0,0 +1,76 @@ +;; erc-sasl.el -- handle SASL PLAIN authentication + +;; Copyright (C) 2012 Free Software Foundation, Inc. + +;; Author: Joseph Gay +;; Keywords: comm + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see . + +;;; Commentary: + +;; This file implements SASL PLAIN authentication +;; To activate: +;; +;; (require 'erc-sasl) +;; +;; To disable: +;; (setq erc-sasl-use-sasl nil) +;; +;; NOTE: requires passing a password initially to (erc) and variants + +;;; Code: + +(defvar erc-sasl-use-sasl t + "Set to nil to disable SASL auth") + +(define-erc-response-handler (CAP) + "Client capability framework is used to request SASL auth, need + to wait for ACK to begin" nil + (let ((msg (erc-response.contents parsed))) + (when (string-match " *sasl" msg) + (erc-server-send "AUTHENTICATE PLAIN") + ;; now wait for AUTHENTICATE + + ))) + +(define-erc-response-handler (AUTHENTICATE) + "Handling empty server response indicating ready to receive + authentication." nil + (if erc-session-password + (let ((msg (erc-response.contents parsed))) + (when (string= "+" msg) + ;; plain auth + (erc-server-send + (format "AUTHENTICATE %s" + (base64-encode-string + (concat "\0" (erc-current-nick) + "\0" erc-session-password) t))))) + (progn + (erc-display-message + parsed 'error + (if erc-server-connected 'active proc) + "You must set a password in order to use SASL authentication.") + ;; aborting SASL auth + (erc-server-send (erc-server-send "AUTHENTICATE *"))))) + +(define-erc-response-handler (903) + "Handling a successful SASL authentication." nil + (erc-server-send "CAP END")) + +;;; erc-sasl.el ends here +;; Local Variables: +;; indent-tabs-mode: nil +;; End: -- 1.7.2.5