zsh-workers
 help / color / mirror / code / Atom feed
* [PATCH] Parse Additional SSH known_hosts Syntax
@ 2013-12-12 23:52 Aaron Peschel
  2013-12-12 23:55 ` Aaron Peschel
  0 siblings, 1 reply; 4+ messages in thread
From: Aaron Peschel @ 2013-12-12 23:52 UTC (permalink / raw)
  To: zsh-workers

Hello,

I have created a patch for ZSH to support additional known_hosts
syntax. Feedback would be appreciated.

Thank you!

Aaron Peschel

-----

>From 3d05d6f46ac89f1d91f6e7ab4981c2dc410c956a Mon Sep 17 00:00:00 2001
From: Aaron Peschel <apeschel@zendesk.com>
Date: Thu, 12 Dec 2013 15:43:55 -0800
Subject: [PATCH 1/1] Parse Additional SSH known_hosts Syntax

ZSH does not currently support the full known_hosts syntax. The
known_hosts file supports lines starting with "[hostname]:post". ZSH
currently discards these lines, which breaks SSH auto-completion on
hosts using a non-standard SSH port. This patch adds support for this
syntax and allows auto-completion to work in this case.
---
 Completion/Unix/Type/_hosts | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/Completion/Unix/Type/_hosts b/Completion/Unix/Type/_hosts
index 499caed..c3133dc 100644
--- a/Completion/Unix/Type/_hosts
+++ b/Completion/Unix/Type/_hosts
@@ -41,9 +41,20 @@ if ! zstyle -a ":completion:${curcontext}:hosts"
hosts _hosts; then

     for khostfile in $khostfiles; do
       if [[ -r $khostfile ]]; then
-        khosts=(${${(s:,:)${(j:,:)${(u)${(f)"$(<$khostfile)"}%%[
|#]*}}}:#*[\[\]]*})
+        khosts=(${(s/,/j/,/u)${(f)"$(<$khostfile)"}%%[ |#]*})
+
+        # known_hosts syntax supports the host being in the form
[hostname]:port
+        # The filter below extracts the hostname from lines using this format.
+        khosts=($(for host ($khosts); do
+          if [[ $host =~ "\[(.*)\]:\d*" ]]; then
+            echo $match
+          else
+            echo $host
+          fi
+        done))
+
         if [[ -z $useip ]]; then
-         khosts=(${${${khosts:#(#s)[0-9]##.[0-9]##.[0-9]##.[0-9]##(#e)}:#(#s)[0-9a-f:]##(#e)}:#*[\[\]]*})
+          khosts=(${${khosts:#(#s)[0-9]##.[0-9]##.[0-9]##.[0-9]##(#e)}:#(#s)[0-9a-f:]##(#e)})
         fi
         _cache_hosts+=($khosts)
       fi
--
1.8.3.4 (Apple Git-47)


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

* Re: [PATCH] Parse Additional SSH known_hosts Syntax
  2013-12-12 23:52 [PATCH] Parse Additional SSH known_hosts Syntax Aaron Peschel
@ 2013-12-12 23:55 ` Aaron Peschel
  2013-12-20 20:04   ` Aaron Peschel
  0 siblings, 1 reply; 4+ messages in thread
From: Aaron Peschel @ 2013-12-12 23:55 UTC (permalink / raw)
  To: zsh-workers

[-- Attachment #1: Type: text/plain, Size: 2225 bytes --]

Hello,

The patch got corrupted in the email. I have attached the patch here instead.

--Aaron

On Thu, Dec 12, 2013 at 3:52 PM, Aaron Peschel <aaron.peschel@gmail.com> wrote:
> Hello,
>
> I have created a patch for ZSH to support additional known_hosts
> syntax. Feedback would be appreciated.
>
> Thank you!
>
> Aaron Peschel
>
> -----
>
> From 3d05d6f46ac89f1d91f6e7ab4981c2dc410c956a Mon Sep 17 00:00:00 2001
> From: Aaron Peschel <apeschel@zendesk.com>
> Date: Thu, 12 Dec 2013 15:43:55 -0800
> Subject: [PATCH 1/1] Parse Additional SSH known_hosts Syntax
>
> ZSH does not currently support the full known_hosts syntax. The
> known_hosts file supports lines starting with "[hostname]:post". ZSH
> currently discards these lines, which breaks SSH auto-completion on
> hosts using a non-standard SSH port. This patch adds support for this
> syntax and allows auto-completion to work in this case.
> ---
>  Completion/Unix/Type/_hosts | 15 +++++++++++++--
>  1 file changed, 13 insertions(+), 2 deletions(-)
>
> diff --git a/Completion/Unix/Type/_hosts b/Completion/Unix/Type/_hosts
> index 499caed..c3133dc 100644
> --- a/Completion/Unix/Type/_hosts
> +++ b/Completion/Unix/Type/_hosts
> @@ -41,9 +41,20 @@ if ! zstyle -a ":completion:${curcontext}:hosts"
> hosts _hosts; then
>
>      for khostfile in $khostfiles; do
>        if [[ -r $khostfile ]]; then
> -        khosts=(${${(s:,:)${(j:,:)${(u)${(f)"$(<$khostfile)"}%%[
> |#]*}}}:#*[\[\]]*})
> +        khosts=(${(s/,/j/,/u)${(f)"$(<$khostfile)"}%%[ |#]*})
> +
> +        # known_hosts syntax supports the host being in the form
> [hostname]:port
> +        # The filter below extracts the hostname from lines using this format.
> +        khosts=($(for host ($khosts); do
> +          if [[ $host =~ "\[(.*)\]:\d*" ]]; then
> +            echo $match
> +          else
> +            echo $host
> +          fi
> +        done))
> +
>          if [[ -z $useip ]]; then
> -         khosts=(${${${khosts:#(#s)[0-9]##.[0-9]##.[0-9]##.[0-9]##(#e)}:#(#s)[0-9a-f:]##(#e)}:#*[\[\]]*})
> +          khosts=(${${khosts:#(#s)[0-9]##.[0-9]##.[0-9]##.[0-9]##(#e)}:#(#s)[0-9a-f:]##(#e)})
>          fi
>          _cache_hosts+=($khosts)
>        fi
> --
> 1.8.3.4 (Apple Git-47)

[-- Attachment #2: 0001-Parse-Additional-SSH-known_hosts-Syntax.patch --]
[-- Type: application/octet-stream, Size: 1793 bytes --]

From 3d05d6f46ac89f1d91f6e7ab4981c2dc410c956a Mon Sep 17 00:00:00 2001
From: Aaron Peschel <apeschel@zendesk.com>
Date: Thu, 12 Dec 2013 15:43:55 -0800
Subject: [PATCH 1/1] Parse Additional SSH known_hosts Syntax

ZSH does not currently support the full known_hosts syntax. The
known_hosts file supports lines starting with "[hostname]:post". ZSH
currently discards these lines, which breaks SSH auto-completion on
hosts using a non-standard SSH port. This patch adds support for this
syntax and allows auto-completion to work in this case.
---
 Completion/Unix/Type/_hosts | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/Completion/Unix/Type/_hosts b/Completion/Unix/Type/_hosts
index 499caed..c3133dc 100644
--- a/Completion/Unix/Type/_hosts
+++ b/Completion/Unix/Type/_hosts
@@ -41,9 +41,20 @@ if ! zstyle -a ":completion:${curcontext}:hosts" hosts _hosts; then
 
     for khostfile in $khostfiles; do
       if [[ -r $khostfile ]]; then
-        khosts=(${${(s:,:)${(j:,:)${(u)${(f)"$(<$khostfile)"}%%[ |#]*}}}:#*[\[\]]*})
+        khosts=(${(s/,/j/,/u)${(f)"$(<$khostfile)"}%%[ |#]*})
+
+        # known_hosts syntax supports the host being in the form [hostname]:port
+        # The filter below extracts the hostname from lines using this format.
+        khosts=($(for host ($khosts); do
+          if [[ $host =~ "\[(.*)\]:\d*" ]]; then
+            echo $match
+          else
+            echo $host
+          fi
+        done))
+
         if [[ -z $useip ]]; then
-	  khosts=(${${${khosts:#(#s)[0-9]##.[0-9]##.[0-9]##.[0-9]##(#e)}:#(#s)[0-9a-f:]##(#e)}:#*[\[\]]*})
+          khosts=(${${khosts:#(#s)[0-9]##.[0-9]##.[0-9]##.[0-9]##(#e)}:#(#s)[0-9a-f:]##(#e)})
         fi
         _cache_hosts+=($khosts)
       fi
-- 
1.8.3.4 (Apple Git-47)


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

* Re: [PATCH] Parse Additional SSH known_hosts Syntax
  2013-12-12 23:55 ` Aaron Peschel
@ 2013-12-20 20:04   ` Aaron Peschel
  2013-12-20 20:31     ` Bart Schaefer
  0 siblings, 1 reply; 4+ messages in thread
From: Aaron Peschel @ 2013-12-20 20:04 UTC (permalink / raw)
  To: zsh-workers

Hello,

I am new to this project, what is the proper etiquette for getting
some attention on this list?

-Aaron

On Thu, Dec 12, 2013 at 3:55 PM, Aaron Peschel <aaron.peschel@gmail.com> wrote:
> Hello,
>
> The patch got corrupted in the email. I have attached the patch here instead.
>
> --Aaron
>
> On Thu, Dec 12, 2013 at 3:52 PM, Aaron Peschel <aaron.peschel@gmail.com> wrote:
>> Hello,
>>
>> I have created a patch for ZSH to support additional known_hosts
>> syntax. Feedback would be appreciated.
>>
>> Thank you!
>>
>> Aaron Peschel
>>
>> -----
>>
>> From 3d05d6f46ac89f1d91f6e7ab4981c2dc410c956a Mon Sep 17 00:00:00 2001
>> From: Aaron Peschel <apeschel@zendesk.com>
>> Date: Thu, 12 Dec 2013 15:43:55 -0800
>> Subject: [PATCH 1/1] Parse Additional SSH known_hosts Syntax
>>
>> ZSH does not currently support the full known_hosts syntax. The
>> known_hosts file supports lines starting with "[hostname]:post". ZSH
>> currently discards these lines, which breaks SSH auto-completion on
>> hosts using a non-standard SSH port. This patch adds support for this
>> syntax and allows auto-completion to work in this case.
>> ---
>>  Completion/Unix/Type/_hosts | 15 +++++++++++++--
>>  1 file changed, 13 insertions(+), 2 deletions(-)
>>
>> diff --git a/Completion/Unix/Type/_hosts b/Completion/Unix/Type/_hosts
>> index 499caed..c3133dc 100644
>> --- a/Completion/Unix/Type/_hosts
>> +++ b/Completion/Unix/Type/_hosts
>> @@ -41,9 +41,20 @@ if ! zstyle -a ":completion:${curcontext}:hosts"
>> hosts _hosts; then
>>
>>      for khostfile in $khostfiles; do
>>        if [[ -r $khostfile ]]; then
>> -        khosts=(${${(s:,:)${(j:,:)${(u)${(f)"$(<$khostfile)"}%%[
>> |#]*}}}:#*[\[\]]*})
>> +        khosts=(${(s/,/j/,/u)${(f)"$(<$khostfile)"}%%[ |#]*})
>> +
>> +        # known_hosts syntax supports the host being in the form
>> [hostname]:port
>> +        # The filter below extracts the hostname from lines using this format.
>> +        khosts=($(for host ($khosts); do
>> +          if [[ $host =~ "\[(.*)\]:\d*" ]]; then
>> +            echo $match
>> +          else
>> +            echo $host
>> +          fi
>> +        done))
>> +
>>          if [[ -z $useip ]]; then
>> -         khosts=(${${${khosts:#(#s)[0-9]##.[0-9]##.[0-9]##.[0-9]##(#e)}:#(#s)[0-9a-f:]##(#e)}:#*[\[\]]*})
>> +          khosts=(${${khosts:#(#s)[0-9]##.[0-9]##.[0-9]##.[0-9]##(#e)}:#(#s)[0-9a-f:]##(#e)})
>>          fi
>>          _cache_hosts+=($khosts)
>>        fi
>> --
>> 1.8.3.4 (Apple Git-47)


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

* Re: [PATCH] Parse Additional SSH known_hosts Syntax
  2013-12-20 20:04   ` Aaron Peschel
@ 2013-12-20 20:31     ` Bart Schaefer
  0 siblings, 0 replies; 4+ messages in thread
From: Bart Schaefer @ 2013-12-20 20:31 UTC (permalink / raw)
  To: Aaron Peschel, zsh-workers

On Dec 20, 12:04pm, Aaron Peschel wrote:
}
} I am new to this project, what is the proper etiquette for getting
} some attention on this list?

Sorry about that.  Probably just a case of everyone assuming that someone
else would pick this up.

One problem:

zsh: failed to load module: zsh/regex
zsh: -regex-match not available for regex

The test will need to be adjusted to not require the =~ operator, and it
should probably declare as local the match variables that will be set by
the backreference operation.


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

end of thread, other threads:[~2013-12-20 20:31 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-12-12 23:52 [PATCH] Parse Additional SSH known_hosts Syntax Aaron Peschel
2013-12-12 23:55 ` Aaron Peschel
2013-12-20 20:04   ` Aaron Peschel
2013-12-20 20:31     ` Bart Schaefer

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

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).