Subject: bug#38284: closed (Re: bug#38284: 27.0.50; [PATCH] Make auth-source-pass-search understand port lists)

From: [email-masked] (GNU bug Tracking System)
Date: Wed, 22 Jan 2020 08:03:02 +0000

Your bug report

#38284: 27.0.50; [PATCH] Make auth-source-pass-search understand port lists

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
38284: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=38284
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#38284: 27.0.50; [PATCH] Make auth-source-pass-search understand port lists
From: Stefan Kangas <[email-masked]>
To: Damien Cassou <[email-masked]>
Cc: [email-masked], Nicolas Petton <[email-masked]>,João Távora <[email-masked]>
Date: Wed, 22 Jan 2020 09:02:45 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Damien Cassou <[email-masked]> writes:

>> Damien, could you please re-send the patch formatted by "git
>> format-patch -1"?  Please also include a commit message with a
>> ChangeLog entry as described in the CONTRIBUTE file.
>
> The patch was only meant to be added to João's own patch.

Understood.

> Here is a standalone one.

Thanks, it seems to be working fine (the test passes), so I have now
pushed this to master as commit abb2515b0c.

I don't see anything more to do here, so I'm also closing this bug.

Best regards,
Stefan Kangas

Subject: 27.0.50; [PATCH] Make auth-source-pass-search understand port lists
From: João Távora <[email-masked]>
To: [email-masked]
Date: Wed, 20 Nov 2019 00:20:28 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

When trying to follow along a tutorial on setting up Gnus for GMAIL, I
tried to use auth-source-pass.el to access encrypted entries under
~/.password-store instead of the usual ~/.authinfo.gpg.

After much wrestling with the system, I couldn't figure out why my
entry:

   gmail:imap.gpg

whose contents are

   NotReallyThePassword
   host: imap.gmail.com
   user: [email-masked]
   port: 993

weren't being understood by the new auth-source.  Eventually I came to
this patch, which seems to do the right thing.

>From 4a6c24c23c9f7097807c1ef58688b51db330f503 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jo=C3=A3o=20T=C3=A1vora?= <[email-masked]>
Date: Wed, 20 Nov 2019 00:11:00 +0000
Subject: [PATCH] Make auth-source-pass-search understand port lists

For cases such as a typical IMAP Gnus setup, auto-source-pass-search
will be passed a list of "port aliases" like (993 "imaps" "imap" "993"
"143") in hopes of finding a matching ~/.password-store entry.

This modification makes this library understand and unroll the port
list so that, i.e. "domain:993", "domain:imaps"", "domain:imap",
etc. are computed as potential suffixes.  Previously a nonsensical
string "domain:(993 imaps imap ...)" was return.

* lisp/auth-source-pass.el
(auth-source-pass--generate-entry-suffixes): Allow PORT to
be a list of ports.
---
 lisp/auth-source-pass.el | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/lisp/auth-source-pass.el b/lisp/auth-source-pass.el
index 524a72792c..cc0a6fe4de 100644
--- a/lisp/auth-source-pass.el
+++ b/lisp/auth-source-pass.el
@@ -269,10 +269,15 @@ auth-source-pass--generate-entry-suffixes
 
 Based on the supported pathname patterns for HOSTNAME, USER, &
 PORT, return a list of possible suffixes for matching entries in
-the password-store."
+the password-store.
+
+PORT may be a list of ports."
   (let ((domains (auth-source-pass--domains (split-string hostname "\\."))))
-    (seq-mapcat (lambda (n)
-                  (auth-source-pass--name-port-user-suffixes n user port))
+    (seq-mapcat (lambda (d)
+                  (seq-mapcat
+                   (lambda (p)
+                     (auth-source-pass--name-port-user-suffixes d user p))
+                   (if (listp port) port (list port))))
                 domains)))
 
 (defun auth-source-pass--domains (name-components)
-- 
2.24.0

Please have a look,
João