Blame SOURCES/0007-Ssh-add-Match-keyword-support-695.patch

78c0ed
From efd61b77563489ca0fa21904cc1fecfc482afd06 Mon Sep 17 00:00:00 2001
f3517b
From: granquet <ranquet.guillaume@gmail.com>
f3517b
Date: Tue, 6 Oct 2020 23:03:18 +0200
5501fb
Subject: [PATCH 7/9] Ssh: add Match keyword support (#695)
f3517b
f3517b
Signed-off-by: Guillaume Ranquet <guillaume-externe.ranquet@edf.fr>
f3517b
---
f3517b
 lenses/ssh.aug            | 19 +++++++++++++++++--
f3517b
 lenses/tests/test_ssh.aug | 12 ++++++++++++
f3517b
 2 files changed, 29 insertions(+), 2 deletions(-)
f3517b
f3517b
diff --git a/lenses/ssh.aug b/lenses/ssh.aug
f3517b
index 4e731581..c140c9a9 100644
f3517b
--- a/lenses/ssh.aug
f3517b
+++ b/lenses/ssh.aug
f3517b
@@ -92,7 +92,7 @@ module Ssh =
f3517b
                         | rekey_limit
f3517b
 
f3517b
     let key_re = /[A-Za-z0-9]+/
f3517b
-               - /SendEnv|Host|ProxyCommand|RemoteForward|LocalForward|MACs|Ciphers|(HostKey|Kex)Algorithms|PubkeyAcceptedKeyTypes|GlobalKnownHostsFile|RekeyLimit/i
f3517b
+               - /SendEnv|Host|Match|ProxyCommand|RemoteForward|LocalForward|MACs|Ciphers|(HostKey|Kex)Algorithms|PubkeyAcceptedKeyTypes|GlobalKnownHostsFile|RekeyLimit/i
f3517b
 
f3517b
 
f3517b
     let other_entry = [ indent . key key_re
f3517b
@@ -105,11 +105,26 @@ module Ssh =
f3517b
     let host = [ key /Host/i . spc . value_to_eol . eol . entry* ]
f3517b
 
f3517b
 
f3517b
+   let condition_entry =
f3517b
+    let value = store  /[^ \t\r\n=]+/ in
f3517b
+    [ spc . key /[A-Za-z0-9]+/ . spc . value ]
f3517b
+
f3517b
+   let match_cond =
f3517b
+     [ label "Condition" . condition_entry+ . eol ]
f3517b
+
f3517b
+   let match_entry = entry
f3517b
+
f3517b
+   let match =
f3517b
+     [ key /Match/i . match_cond
f3517b
+        . [ label "Settings" .  match_entry+ ]
f3517b
+     ]
f3517b
+
f3517b
+
f3517b
 (************************************************************************
f3517b
  * Group:                 LENS
f3517b
  *************************************************************************)
f3517b
 
f3517b
-    let lns = entry* . host*
f3517b
+    let lns = entry* . (host | match)*
f3517b
 
f3517b
     let xfm = transform lns (incl "/etc/ssh/ssh_config" .
f3517b
                              incl (Sys.getenv("HOME") . "/.ssh/config") .
f3517b
diff --git a/lenses/tests/test_ssh.aug b/lenses/tests/test_ssh.aug
f3517b
index f5fca252..456624e4 100644
f3517b
--- a/lenses/tests/test_ssh.aug
f3517b
+++ b/lenses/tests/test_ssh.aug
f3517b
@@ -5,6 +5,9 @@ module Test_ssh =
f3517b
 "# start
f3517b
 IdentityFile /etc/ssh/identity.asc
f3517b
 
f3517b
+Match final all
f3517b
+   GSSAPIAuthentication yes
f3517b
+
f3517b
 Host suse.cz
f3517b
    ForwardAgent yes
f3517b
 SendEnv LC_LANG
f3517b
@@ -30,6 +33,15 @@ PubkeyAcceptedKeyTypes ssh-ed25519-cert-v01@openssh.com,ssh-ed25519,ssh-rsa-cert
f3517b
     { "#comment" = "start" }
f3517b
     { "IdentityFile" = "/etc/ssh/identity.asc" }
f3517b
     { }
f3517b
+    { "Match"
f3517b
+      { "Condition"
f3517b
+        { "final" = "all" }
f3517b
+      }
f3517b
+      { "Settings"
f3517b
+        { "GSSAPIAuthentication" = "yes" }
f3517b
+        {  }
f3517b
+      }
f3517b
+    }
f3517b
     { "Host"	= "suse.cz"
f3517b
 	{ "ForwardAgent"  = "yes" }
f3517b
 	{ "SendEnv"
f3517b
-- 
78c0ed
2.31.1
f3517b