[augeas-devel] [PATCH] Add support for rpc services in inetd.aug, rework lens to allow it and add tests accordingly.
Raphaël Pinson
raphink at gmail.com
Tue Nov 2 23:13:38 UTC 2010
Committed as f50bd349377052b367c20896bc0bb0a0dc30d61b
2010/10/27 Raphaël Pinson <raphink at gmail.com>
> As a note, using "#rpc" nodes would prevent from breaking compatibility,
> but I'm really not in favor of using "#field" nodes, as I'd rather keep them
> for special uses (such as "#comment").
>
>
>
> On Wed, Oct 27, 2010 at 10:48 PM, Raphael Pinson <raphink at gmail.com>wrote:
>
>> This patch adds support for RPC service lines in inetd.aug (fixes ticket
>> #109). This requires to change the logic of the lens, because the services
>> are currently mapped using key, so mapping rpc lines leads to a union.put
>> conflict.
>>
>> The normal service lines are now mapped with a "service" label, while RPC
>> services are mapped using a "rpc_service" label. Once this change is made,
>> the "#address" special label is not necessary anymore (it used "#" to
>> prevent conflicts with normal services nodes) and is thus renamed as
>> "address".
>>
>> I believe this lens could get a bit of refactoring love still while we're
>> busy breaking compatibility, but at least this fixes the reported issue.
>>
>> ---
>> lenses/inetd.aug | 42 +++++++++++++++++++++++++++-----
>> lenses/tests/test_inetd.aug | 55
>> ++++++++++++++++++++++++++++---------------
>> 2 files changed, 71 insertions(+), 26 deletions(-)
>>
>> diff --git a/lenses/inetd.aug b/lenses/inetd.aug
>> index 356a8df..c2d0879 100644
>> --- a/lenses/inetd.aug
>> +++ b/lenses/inetd.aug
>> @@ -58,9 +58,8 @@ arguments -- A sequence of arguments to pass to the
>> command.
>>
>> In addition to this straightforward tree, inetd has the ability to set
>> "default" listen addresses; this is a little used feature which
>> nonetheless
>> -comes in handy sometimes. The key for entries of this type is "#address"
>> -(to prevent collision with any real services that might one day be called
>> -"address"), and the subtree should be a sequence of addresses. "*" can
>> +comes in handy sometimes. The key for entries of this type is "address"
>> +, and the subtree should be a sequence of addresses. "*" can
>> always be used to return the default behaviour of listening on
>> INADDR_ANY.
>>
>> *)
>> @@ -97,7 +96,7 @@ module Inetd =
>> * ELEMENTS
>> ***************************)
>>
>> - let service = ( [label "address" . address_list . del_str ":" ]? .
>> key /[^ \t\n\/:#]+/ )
>> + let service (l:string) = ( label l . [label "address" .
>> address_list . del_str ":" ]? . store /[^ \t\n\/:#]+/ )
>>
>> let socket = [ label "socket" . store /[^ \t\n#]+/ ]
>>
>> @@ -122,7 +121,7 @@ module Inetd =
>> * SERVICE LINES
>> ***************************)
>>
>> - let service_line = [ service
>> + let service_line = [ service "service"
>> . sep
>> . socket
>> . sep
>> @@ -136,11 +135,40 @@ module Inetd =
>> . eol
>> ]
>>
>> +
>> + (***************************
>> + * RPC LINES
>> + ***************************)
>> +
>> + let rpc_service = service "rpc_service" . Util.del_str "/"
>> + . [ label "version" . store Rx.integer ]
>> +
>> + let rpc_endpoint = [ label "endpoint-type" . store Rx.word ]
>> + let rpc_protocol = Util.del_str "rpc/"
>> + . (Build.opt_list
>> + [label "protocol" . store /[^ \t\n,#]+/ ]
>> + Sep.comma)
>> +
>> + let rpc_line = [ rpc_service
>> + . sep
>> + . rpc_endpoint
>> + . sep
>> + . rpc_protocol
>> + . sep
>> + . wait
>> + . sep
>> + . usergroup
>> + . sep
>> + . command
>> + . eol
>> + ]
>> +
>> +
>> (***************************
>> * DEFAULT LISTEN ADDRESSES
>> ***************************)
>>
>> - let default_listen_address = [ label "#address"
>> + let default_listen_address = [ label "address"
>> . address_list
>> . del_str ":"
>> . eol
>> @@ -150,7 +178,7 @@ module Inetd =
>> * LENS / FILTER
>> ***********************)
>>
>> - let lns = (comment|empty|service_line|default_listen_address)*
>> + let lns =
>> (comment|empty|service_line|rpc_line|default_listen_address)*
>>
>> let filter = incl "/etc/inetd.conf"
>>
>> diff --git a/lenses/tests/test_inetd.aug b/lenses/tests/test_inetd.aug
>> index cc9c6ad..8f9f656 100644
>> --- a/lenses/tests/test_inetd.aug
>> +++ b/lenses/tests/test_inetd.aug
>> @@ -22,19 +22,21 @@ dotgroupsrv stream tcp nowait fred.wilma
>> /usr/bin/dotgroupsrv
>> colongroupsrv stream tcp nowait fred:wilma
>> /usr/bin/colongroupsrv
>>
>> maxsrv stream tcp nowait.20 fred /usr/bin/maxsrv
>> +
>> +dummy/1 tli rpc/circuit_v,udp wait root
>> /tmp/test_svc test_svc
>> "
>>
>> test Inetd.lns get conf =
>> { "#comment" = "Blah di blah comment" }
>> {}
>> - { "simplesrv"
>> + { "service" = "simplesrv"
>> { "socket" = "stream" }
>> { "protocol" = "tcp" }
>> { "wait" = "nowait" }
>> { "user" = "fred" }
>> { "command" = "/usr/bin/simplesrv" }
>> }
>> - { "arguserve"
>> + { "service" = "arguserve"
>> { "socket" = "dgram" }
>> { "protocol" = "udp" }
>> { "wait" = "wait" }
>> @@ -47,7 +49,7 @@ maxsrv stream tcp nowait.20
>> fred /usr/bin/maxsrv
>> }
>> }
>> {}
>> - { "1234"
>> + { "service" = "1234"
>> { "socket" = "stream" }
>> { "protocol" = "tcp" }
>> { "wait" = "nowait" }
>> @@ -55,7 +57,7 @@ maxsrv stream tcp nowait.20
>> fred /usr/bin/maxsrv
>> { "command" = "/usr/bin/numbersrv" }
>> }
>> {}
>> - { "addrsrv"
>> + { "service" = "addrsrv"
>> { "address"
>> { "1" = "127.0.0.1" }
>> }
>> @@ -65,7 +67,7 @@ maxsrv stream tcp nowait.20
>> fred /usr/bin/maxsrv
>> { "user" = "fred" }
>> { "command" = "/usr/bin/addrsrv" }
>> }
>> - { "multiaddrsrv"
>> + { "service" = "multiaddrsrv"
>> { "address"
>> { "1" = "127.0.0.1" }
>> { "2" = "10.0.0.1" }
>> @@ -76,18 +78,18 @@ maxsrv stream tcp nowait.20
>> fred /usr/bin/maxsrv
>> { "user" = "fred" }
>> { "command" = "/usr/bin/multiaddrsrv" }
>> }
>> - { "#address"
>> + { "address"
>> { "1" = "faff.fred.com" }
>> }
>> - { "#address"
>> + { "address"
>> { "1" = "127.0.0.1" }
>> { "2" = "faff.fred.com" }
>> }
>> - { "#address"
>> + { "address"
>> { "1" = "*" }
>> }
>> {}
>> - { "sndbufsrv"
>> + { "service" = "sndbufsrv"
>> { "socket" = "stream" }
>> { "protocol" = "tcp" }
>> { "sndbuf" = "12k" }
>> @@ -95,7 +97,7 @@ maxsrv stream tcp nowait.20
>> fred /usr/bin/maxsrv
>> { "user" = "fred" }
>> { "command" = "/usr/bin/sndbufsrv" }
>> }
>> - { "rcvbufsrv"
>> + { "service" = "rcvbufsrv"
>> { "socket" = "stream" }
>> { "protocol" = "tcp" }
>> { "rcvbuf" = "24k" }
>> @@ -103,7 +105,7 @@ maxsrv stream tcp nowait.20
>> fred /usr/bin/maxsrv
>> { "user" = "fred" }
>> { "command" = "/usr/bin/rcvbufsrv" }
>> }
>> - { "allbufsrv"
>> + { "service" = "allbufsrv"
>> { "socket" = "stream" }
>> { "protocol" = "tcp" }
>> { "sndbuf" = "1m" }
>> @@ -113,7 +115,7 @@ maxsrv stream tcp nowait.20
>> fred /usr/bin/maxsrv
>> { "command" = "/usr/bin/allbufsrv" }
>> }
>> {}
>> - { "dotgroupsrv"
>> + { "service" = "dotgroupsrv"
>> { "socket" = "stream" }
>> { "protocol" = "tcp" }
>> { "wait" = "nowait" }
>> @@ -121,7 +123,7 @@ maxsrv stream tcp nowait.20
>> fred /usr/bin/maxsrv
>> { "group" = "wilma" }
>> { "command" = "/usr/bin/dotgroupsrv" }
>> }
>> - { "colongroupsrv"
>> + { "service" = "colongroupsrv"
>> { "socket" = "stream" }
>> { "protocol" = "tcp" }
>> { "wait" = "nowait" }
>> @@ -130,7 +132,7 @@ maxsrv stream tcp nowait.20
>> fred /usr/bin/maxsrv
>> { "command" = "/usr/bin/colongroupsrv" }
>> }
>> {}
>> - { "maxsrv"
>> + { "service" = "maxsrv"
>> { "socket" = "stream" }
>> { "protocol" = "tcp" }
>> { "wait" = "nowait" }
>> @@ -138,6 +140,18 @@ maxsrv stream tcp nowait.20
>> fred /usr/bin/maxsrv
>> { "user" = "fred" }
>> { "command" = "/usr/bin/maxsrv" }
>> }
>> + {}
>> + { "rpc_service" = "dummy"
>> + { "version" = "1" }
>> + { "endpoint-type" = "tli" }
>> + { "protocol" = "circuit_v" }
>> + { "protocol" = "udp" }
>> + { "wait" = "wait" }
>> + { "user" = "root" }
>> + { "command" = "/tmp/test_svc" }
>> + { "arguments"
>> + { "1" = "test_svc" } }
>> + }
>>
>>
>>
>> (**************************************************************************)
>> @@ -145,9 +159,12 @@ maxsrv stream tcp nowait.20
>> fred /usr/bin/maxsrv
>> (* Test new file creation *)
>>
>> test Inetd.lns put "" after
>> - set "/faffsrv/socket" "stream";
>> - set "/faffsrv/protocol" "tcp";
>> - set "/faffsrv/wait" "nowait";
>> - set "/faffsrv/user" "george";
>> - set "/faffsrv/command" "/sbin/faffsrv"
>> + set "/service" "faffsrv";
>> + set "/service/socket" "stream";
>> + set "/service/protocol" "tcp";
>> + set "/service/wait" "nowait";
>> + set "/service/user" "george";
>> + set "/service/command" "/sbin/faffsrv"
>> = "faffsrv stream tcp nowait george /sbin/faffsrv\n"
>> +
>> +
>> --
>> 1.7.0.4
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/augeas-devel/attachments/20101103/4f25a7ee/attachment.htm>
More information about the augeas-devel
mailing list