[gnus git] branch master updated: n0-13-113-ga1c3446 =1= * gssapi.el: New file separated out from imap.el to provide a general Kerberos 5 connection facility for Emacs.

Lars Magne Ingebrigtsen <[email protected]>
Newsgroups gmane.emacs.gnus.cvs
Message-ID <[email protected]>
       via  a1c3446941d2c5ee7fcb5e7d19aae516b2af4240 (commit)
      from  698d90dfd2f1ddb5789c7a3fef3064dfe08a0c81 (commit)


- Log -----------------------------------------------------------------
commit a1c3446941d2c5ee7fcb5e7d19aae516b2af4240
Author: Lars Magne Ingebrigtsen <[email protected]>
Date:   Tue Mar 15 22:02:32 2011 +0100

    * gssapi.el: New file separated out from imap.el to provide a general Kerberos 5 connection facility for Emacs.

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 0e5895a..18bace8 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,6 +1,9 @@
 2011-03-15  Lars Magne Ingebrigtsen  <[email protected]>
 
-	* message.el (message-elide-ellipsis): Document the format specs in the
+	* gssapi.el: New file separated out from imap.el to provide a general
+	Kerberos 5 connection facility for Emacs.
+
+	* message.el (message-elide-ellipsis): Document the format spec
 	ellipsis.
 
 2011-03-15  Reiner Steib  <[email protected]>
diff --git a/lisp/gssapi.el b/lisp/gssapi.el
new file mode 100644
index 0000000..3765fb8
--- /dev/null
+++ b/lisp/gssapi.el
@@ -0,0 +1,105 @@
+;;; gssapi.el --- GSSAPI/Kerberos 5 interface for Emacs
+
+;; Copyright (C) 2011 Free Software Foundation, Inc.
+
+;; Author: Simon Josefsson <[email protected]>
+;;         Lars Magne Ingebrigtsen <[email protected]>
+;; Keywords: network
+
+;; 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 <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'format-spec)
+
+(defcustom gssapi-program (list
+			   (concat "gsasl %s %p "
+				   "--mechanism GSSAPI "
+				   "--authentication-id %l")
+			   "imtest -m gssapi -u %l -p %p %s")
+  "List of strings containing commands for GSSAPI (krb5) authentication.
+%s is replaced with server hostname, %p with port to connect to, and
+%l with the value of `imap-default-user'.  The program should accept
+IMAP commands on stdin and return responses to stdout.  Each entry in
+the list is tried until a successful connection is made."
+  :group 'network
+  :type '(repeat string))
+
+(defun open-gssapi-stream (name buffer server port)
+  (let ((cmds gssapi-program)
+	cmd done)
+    (with-current-buffer buffer
+      (while (and (not done)
+		  (setq cmd (pop cmds)))
+	(message "Opening GSSAPI connection with `%s'..." cmd)
+	(erase-buffer)
+	(let* ((coding-system-for-read 'binary)
+	       (coding-system-for-write 'binary)
+	       (process (start-process
+			 name buffer shell-file-name shell-command-switch
+			 (format-spec
+			  cmd
+			  (format-spec-make
+			   ?s server
+			   ?p (number-to-string port)
+			   ?l imap-default-user))))
+	       response)
+	  (when process
+	    (while (and (memq (process-status process) '(open run))
+			(goto-char (point-min))
+			;; Athena IMTEST can output SSL verify errors
+			(or (while (looking-at "^verify error:num=")
+			      (forward-line))
+			    t)
+			(or (while (looking-at "^TLS connection established")
+			      (forward-line))
+			    t)
+			;; cyrus 1.6.x (13? < x <= 22) queries capabilities
+			(or (while (looking-at "^C:")
+			      (forward-line))
+			    t)
+			;; cyrus 1.6 imtest print "S: " before server greeting
+			(or (not (looking-at "S: "))
+			    (forward-char 3)
+			    t)
+			;; GNU SASL may print 'Trying ...' first.
+			(or (not (looking-at "Trying "))
+			    (forward-line)
+			    t)
+			(not (and (looking-at "\\* \\(OK\\|PREAUTH\\|BYE\\) ")
+				  ;; success in imtest 1.6:
+				  (re-search-forward
+				   (concat "^\\(\\(Authenticat.*\\)\\|\\("
+					   "Client authentication "
+					   "finished.*\\)\\)")
+				   nil t)
+				  (setq response (match-string 1)))))
+	      (accept-process-output process 1)
+	      (sit-for 1))
+	    (erase-buffer)
+	    (message "GSSAPI IMAP connection: %s" (or response "failed"))
+	    (if (and response (let ((case-fold-search nil))
+				(not (string-match "failed" response))))
+		(setq done process)
+	      (delete-process process)
+	      nil))))
+      done)))
+
+(provide 'gssapi)
+
+;;; gssapi.el ends here

-----------------------------------------------------------------------
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we listed those
revisions in full, above.

Summary of changes:
 lisp/ChangeLog |    5 ++-
 lisp/gssapi.el |  105 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 109 insertions(+), 1 deletions(-)
 create mode 100644 lisp/gssapi.el

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Gnus Project".

The branch, master has been updated


hooks/post-receive
-- 
Gnus Project
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.