[augeas-devel] lens for /etc/ssh/ssh_config
Jiri Suchomel
jsuchome at suse.cz
Fri Aug 26 10:48:59 UTC 2011
Dne St 24. srpna 2011 16:24:00 Francis Giraldeau napsal(a):
> On Wed, 2011-08-24 at 12:39 +0200, Jiri Suchomel wrote:
> > Hi!
> >
> > I've tried to create simple lens for /etc/ssh/ssh_config
> >
> > Could you check if it does not contain some obvious errors, and
> > potentially add it to your standard set of lenses?
>
> The Ciphers directive doesn't split all elements from the list ...
> ...
> Also, ProxyCommand and RemoteForward directives makes the lens fail:
> ...
> With those additions, I think it would be complete.
OK, what about this one?
Now I've added handling for Ciphers, ProxyCommand, RemoteForward, LocalForward
and MACs. And included your hint for reseting the counter.
Jiri
--
Jiri Suchomel
SUSE LINUX, s.r.o. e-mail: jsuchome at suse.cz
Lihovarská 1060/12 tel: +420 284 028 960
190 00 Praha 9, Czech Republic http://www.suse.cz
-------------- next part --------------
(*
Module: Ssh
Parses /etc/ssh/ssh_config
*)
module Ssh =
autoload xfm
let eol = del /[ \t]*\n/ "\n"
let spc = Util.del_ws_spc
let key_re = /[A-Za-z0-9]+/
- /SendEnv|Host|ProxyCommand|RemoteForward|LocalForward|MACs|Ciphers/
let comment = Util.comment
let empty = Util.empty
let comma = Util.del_str ","
let indent = del /[ \t]*/ ""
let value_to_eol = store /([^ \t\n].*[^ \t\n]|[^ \t\n])/
let value_to_spc = store /[^ \t\n]+/
let value_to_comma = store /[^, \t\n]+/
let array_entry (k:string) =
[ key k . counter k . [ spc . seq k . value_to_spc]* . eol ]
let commas_entry (k:string) =
[ key k . counter k . spc .
[ seq k . value_to_comma] . ([ seq k . comma . value_to_comma])* . eol ]
let send_env = array_entry "SendEnv"
let proxy_command = [ indent . key "ProxyCommand" . spc . value_to_eol . eol ]
let fw_entry (k:string) = [ indent . key k . spc .
[ key /[^ \t\n\/]+/ . spc . value_to_eol . eol ]]
let remote_fw = fw_entry "RemoteForward"
let local_fw = fw_entry "LocalForward"
let ciphers = commas_entry "Ciphers"
let macs = commas_entry "MACs"
let other_entry =
[ indent . key key_re . spc . value_to_spc . eol ]
let entry = (comment | empty
| send_env
| proxy_command
| remote_fw
| local_fw
| macs
| ciphers
| other_entry)
let host = [ key "Host" . spc . value_to_eol . eol . entry* ]
let lns = (comment | empty) * . host*
let xfm = transform lns (incl "/etc/ssh/ssh_config")
-------------- next part --------------
module Test_ssh_config =
let conf =
"# start
Host suse.cz
ForwardAgent yes
SendEnv LC_LANG
Host *
ForwardAgent no
ForwardX11Trusted yes
# IdentityFile ~/.ssh/identity
SendEnv LC_IDENTIFICATION LC_ALL
ProxyCommand ssh -q -W %h:%p gateway.example.com
RemoteForward [1.2.3.4]:20023 localhost:22
RemoteForward 2221 lhost1:22
LocalForward 3001 remotehost:3000
Ciphers aes128-ctr,aes192-ctr
MACs hmac-md5,hmac-sha1,umac-64 at openssh.com
"
test Ssh.lns get conf =
{ "#comment" = "start" }
{ "Host" = "suse.cz"
{ "ForwardAgent" = "yes" }
{ "SendEnv"
{ "1" = "LC_LANG" } }
{ }
}
{ "Host" = "*"
{ "ForwardAgent" = "no" }
{ "ForwardX11Trusted" = "yes" }
{ }
{ "#comment" = "IdentityFile ~/.ssh/identity" }
{ "SendEnv"
{ "1" = "LC_IDENTIFICATION" }
{ "2" = "LC_ALL" } }
{ "ProxyCommand" = "ssh -q -W %h:%p gateway.example.com" }
{ "RemoteForward"
{ "[1.2.3.4]:20023" = "localhost:22" }
}
{ "RemoteForward"
{ "2221" = "lhost1:22" }
}
{ "LocalForward"
{ "3001" = "remotehost:3000" }
}
{ "Ciphers"
{ "1" = "aes128-ctr" }
{ "2" = "aes192-ctr" }
}
{ "MACs"
{ "1" = "hmac-md5" }
{ "2" = "hmac-sha1" }
{ "3" = "umac-64 at openssh.com" }
}
}
More information about the augeas-devel
mailing list