Gnus development mailing list
 help / color / mirror / Atom feed
* [PATCH] Support host/port lists in auth-source OS X keychain search
@ 2015-12-23  0:43 Martin Jesper Low Madsen
  2016-02-06  6:17 ` Lars Ingebrigtsen
  0 siblings, 1 reply; 2+ messages in thread
From: Martin Jesper Low Madsen @ 2015-12-23  0:43 UTC (permalink / raw)
  To: ding; +Cc: Martin Jesper Low Madsen

* lisp/auth-source.el (auth-source-macos-keychain-search): Search for
  all host/port (or protocol) combinations for a match in the OS X
  keychain.
---
 lisp/auth-source.el | 34 +++++++++++++++++++++++++---------
 1 file changed, 25 insertions(+), 9 deletions(-)

diff --git a/lisp/auth-source.el b/lisp/auth-source.el
index 45ff3b7..8c634fa 100644
--- a/lisp/auth-source.el
+++ b/lisp/auth-source.el
@@ -1725,12 +1725,13 @@ entries for git.gnus.org:
 
   (let* ((coll (oref backend source))
          (max (or max 5000))     ; sanity check: default to stop at 5K
-         (ignored-keys '(:create :delete :max :backend :label))
+         ;; Filter out ignored keys from the spec
+         (ignored-keys '(:create :delete :max :backend :label :host :port))
+         ;; Build a search spec without the ignored keys
          (search-keys (loop for i below (length spec) by 2
                             unless (memq (nth i spec) ignored-keys)
                             collect (nth i spec)))
-         ;; build a search spec without the ignored keys
-         ;; if a search key is nil or t (match anything), we skip it
+         ;; If a search key value is nil or t (match anything), we skip it
          (search-spec (apply #'append (mapcar
                                       (lambda (k)
                                         (if (or (null (plist-get spec k))
@@ -1742,11 +1743,25 @@ entries for git.gnus.org:
          (returned-keys (mm-delete-duplicates (append
                                                '(:host :login :port :secret)
                                                search-keys)))
-         (items (apply #'auth-source-macos-keychain-search-items
-                       coll
-                       type
-                       max
-                       search-spec))
+         ;; Extract host and port from spec
+         (hosts (plist-get spec :host))
+         (hosts (if (and hosts (listp hosts)) hosts `(,hosts)))
+         (ports (plist-get spec :port))
+         (ports (if (and ports (listp ports)) ports `(,ports)))
+         ;; Loop through all combinations of host/port and pass each of these to
+         ;; auth-source-macos-keychain-search-items
+         (items (catch 'match
+                  (dolist (host hosts)
+                    (dolist (port ports)
+                      (let* ((port (format "%S" port))
+                             (items (apply #'auth-source-macos-keychain-search-items
+                                           coll
+                                           type
+                                           max
+                                           host port
+                                           search-spec)))
+                        (when items
+                          (throw 'match items)))))))
 
          ;; ensure each item has each key in `returned-keys'
          (items (mapcar (lambda (plist)
@@ -1762,8 +1777,9 @@ entries for git.gnus.org:
     items))
 
 (defun* auth-source-macos-keychain-search-items (coll _type _max
+                                                      host port
                                                       &key label type
-                                                      host user port
+                                                      user
                                                       &allow-other-keys)
 
   (let* ((keychain-generic (eq type 'macos-keychain-generic))
-- 
2.3.3




^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] Support host/port lists in auth-source OS X keychain search
  2015-12-23  0:43 [PATCH] Support host/port lists in auth-source OS X keychain search Martin Jesper Low Madsen
@ 2016-02-06  6:17 ` Lars Ingebrigtsen
  0 siblings, 0 replies; 2+ messages in thread
From: Lars Ingebrigtsen @ 2016-02-06  6:17 UTC (permalink / raw)
  To: Martin Jesper Low Madsen; +Cc: ding

Martin Jesper Low Madsen <martin@martinjlowm.dk> writes:

> * lisp/auth-source.el (auth-source-macos-keychain-search): Search for
>   all host/port (or protocol) combinations for a match in the OS X
>   keychain.

Thanks; applied to the Emacs trunk

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2016-02-06  6:17 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-12-23  0:43 [PATCH] Support host/port lists in auth-source OS X keychain search Martin Jesper Low Madsen
2016-02-06  6:17 ` Lars Ingebrigtsen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).