diff options
Diffstat (limited to 'lisp/gnus')
-rw-r--r-- | lisp/gnus/ChangeLog | 19 | ||||
-rw-r--r-- | lisp/gnus/auth-source.el | 17 | ||||
-rw-r--r-- | lisp/gnus/mail-source.el | 28 | ||||
-rw-r--r-- | lisp/gnus/nnimap.el | 8 | ||||
-rw-r--r-- | lisp/gnus/nntp.el | 8 |
5 files changed, 59 insertions, 21 deletions
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index aefb2fd4cbb..4f244d71522 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -3,6 +3,25 @@ * gnus-sum.el (gnus-summary-next-article): XEmacs-friendly version of 2009-01-09 change. +2009-01-26 Teodor Zlatanov <tzlatanov@jumptrading.com> + + * auth-source.el (auth-source-forget-user-or-password): Clarify docs. + (auth-source-forget-all-cached): New convenience function. + (auth-source-user-or-password): Accept list of modes or a single mode. + + * mail-source.el (mail-source-bind, mail-source-set-1): Use list of + auth-source modes. + + * nnimap.el (nnimap-open-connection): Use list of + auth-source modes. + + * nntp.el (nntp-send-authinfo): Use list of + auth-source modes. + +2009-01-26 Teodor Zlatanov <tzz@lifelogs.com> + + * nntp.el (nntp-send-authinfo): + 2009-01-16 Teodor Zlatanov <tzz@lifelogs.com> * auth-source.el: Update docs to reflect epa-file-enable is to be used diff --git a/lisp/gnus/auth-source.el b/lisp/gnus/auth-source.el index 27de702b976..1bec08f076f 100644 --- a/lisp/gnus/auth-source.el +++ b/lisp/gnus/auth-source.el @@ -163,12 +163,20 @@ Returns fallback choices (where PROTOCOL or HOST are nil) with FALLBACK t." (interactive "slogin/password: \nsHost: \nsProtocol: \n") ;for testing (remhash (format "%s %s:%s" mode host protocol) auth-source-cache)) +(defun auth-source-forget-all-cached () + "Forget all cached auth-source authentication tokens." + (interactive) + (setq auth-source-cache (make-hash-table :test 'equal))) + (defun auth-source-user-or-password (mode host protocol) - "Find user or password (from the string MODE) matching HOST and PROTOCOL." + "Find MODE (string or list of strings) matching HOST and PROTOCOL. +MODE can be \"login\" or \"password\" for example." (gnus-message 9 "auth-source-user-or-password: get %s for %s (%s)" mode host protocol) - (let* ((cname (format "%s %s:%s" mode host protocol)) + (let* ((listy (listp mode)) + (mode (if listy mode (list mode))) + (cname (format "%s %s:%s" mode host protocol)) (found (gethash cname auth-source-cache))) (if found (progn @@ -176,7 +184,7 @@ Returns fallback choices (where PROTOCOL or HOST are nil) with FALLBACK t." "auth-source-user-or-password: cached %s=%s for %s (%s)" mode ;; don't show the password - (if (equal mode "password") "SECRET" found) + (if (member "password" mode) "SECRET" found) host protocol) found) (dolist (choice (auth-source-pick host protocol)) @@ -191,8 +199,9 @@ Returns fallback choices (where PROTOCOL or HOST are nil) with FALLBACK t." "auth-source-user-or-password: found %s=%s for %s (%s)" mode ;; don't show the password - (if (equal mode "password") "SECRET" found) + (if (member "password" mode) "SECRET" found) host protocol) + (setq found (if listy found (car-safe found))) (when auth-source-do-cache (puthash cname found auth-source-cache))) (return found))))) diff --git a/lisp/gnus/mail-source.el b/lisp/gnus/mail-source.el index f144e910410..7dbe30b91d8 100644 --- a/lisp/gnus/mail-source.el +++ b/lisp/gnus/mail-source.el @@ -453,10 +453,11 @@ the `mail-source-keyword-map' variable." (put 'mail-source-bind 'lisp-indent-function 1) (put 'mail-source-bind 'edebug-form-spec '(sexp body)) +;; TODO: use the list format for auth-source-user-or-password modes (defun mail-source-set-1 (source) (let* ((type (pop source)) (defaults (cdr (assq type mail-source-keyword-map))) - default value keyword user-auth pass-auth) + default value keyword auth-info user-auth pass-auth) (while (setq default (pop defaults)) ;; for each default :SYMBOL, set SYMBOL to the plist value for :SYMBOL ;; using `mail-source-value' to evaluate the plist value @@ -469,20 +470,21 @@ the `mail-source-keyword-map' variable." ((and (eq keyword :user) (setq user-auth - (auth-source-user-or-password - "login" - ;; this is "host" in auth-sources - (if (boundp 'server) (symbol-value 'server) "") - type))) + (nth 0 (auth-source-user-or-password + '("login" "password") + ;; this is "host" in auth-sources + (if (boundp 'server) (symbol-value 'server) "") + type)))) user-auth) ((and - (eq keyword :password) - (setq pass-auth - (auth-source-user-or-password - "password" - ;; this is "host" in auth-sources - (if (boundp 'server) (symbol-value 'server) "") - type))) + (eq keyword :password) + (setq pass-auth + (nth 1 + (auth-source-user-or-password + '("login" "password") + ;; this is "host" in auth-sources + (if (boundp 'server) (symbol-value 'server) "") + type)))) pass-auth) (t (if (setq value (plist-get source keyword)) (mail-source-value value) diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el index 87edde6a77b..cfcad522b45 100644 --- a/lisp/gnus/nnimap.el +++ b/lisp/gnus/nnimap.el @@ -805,8 +805,12 @@ If EXAMINE is non-nil the group is selected read-only." (port (if nnimap-server-port (int-to-string nnimap-server-port) "imap")) + (auth-info + (auth-source-user-or-password '("login" "password") server port)) + (auth-user (nth 0 auth-info)) + (auth-passwd (nth 1 auth-info)) (user (or - (auth-source-user-or-password "login" server port) ; this is preferred to netrc-* + auth-user ; this is preferred to netrc-* (netrc-machine-user-or-password "login" list @@ -816,7 +820,7 @@ If EXAMINE is non-nil the group is selected read-only." (list port) (list "imap" "imaps" "143" "993")))) (passwd (or - (auth-source-user-or-password "password" server port) ; this is preferred to netrc-* + auth-passwd ; this is preferred to netrc-* (netrc-machine-user-or-password "password" list diff --git a/lisp/gnus/nntp.el b/lisp/gnus/nntp.el index 6e9978d4c32..8a6c9a2d78a 100644 --- a/lisp/gnus/nntp.el +++ b/lisp/gnus/nntp.el @@ -1179,14 +1179,18 @@ If SEND-IF-FORCE, only send authinfo to the server if the (let* ((list (netrc-parse nntp-authinfo-file)) (alist (netrc-machine list nntp-address "nntp")) (force (or (netrc-get alist "force") nntp-authinfo-force)) + (auth-info + (auth-source-user-or-password '("login" "password") nntp-address "nntp")) + (auth-user (nth 0 auth-info)) + (auth-passwd (nth 1 auth-info)) (user (or ;; this is preferred to netrc-* - (auth-source-user-or-password "login" nntp-address "nntp") + auth-user (netrc-get alist "login") nntp-authinfo-user)) (passwd (or ;; this is preferred to netrc-* - (auth-source-user-or-password "password" nntp-address "nntp") + auth-passwd (netrc-get alist "password")))) (when (or (not send-if-force) force) |