Augeas Lens Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z

C |
| cacheconfig, Cachefilesd
| caid, Channels
| chainloader, Grub
| change, MasterPasswd
| change_add, Ldif
| change_control, Ldif
| change_delete, Ldif
| change_modify, Ldif
| change_modrdn, Ldif
| change_modspec, Ldif
| change_record, Ldif
| class, MasterPasswd
| clear, AptConf
| client, Hosts_Access
| client_file, Hosts_Access
| client_file_item, Hosts_Access
| client_host_item, Hosts_Access
| client_list, Hosts_Access
| client_output_buffer_limit_entry, Redis
| cluster_nodes, Rabbitmq
| cluster_partition_handling, Rabbitmq
| cmd_kv, Solaris_System
| cmd_moddir, Solaris_System
| cmd_set, Solaris_System
| cmnd_alias, Sudoers
| cmnd_spec, Sudoers
| cmnd_spec_list, Sudoers
| colon Aliases AptPreferences Cachefilesd Channels Hosts_Access Postfix_Passwordmap Postfix_Transport
| color Grub Xymon_Alerting
| combine_three Build Test_Build
| combine_three_opt Build Test_Build
| combine_three_opt_ord, Build
| combine_three_ord, Build
| combine_two Build Test_Build
| combine_two_opt Build Test_Build
| combine_two_opt_ord, Build
| combine_two_ord, Build
| comma Aliases Channels Nslcd Postfix_Virtual Puppetfile
| comma_sep, JettyRealm
| comma_sep_list Automounter Crypttab
| comma_spc_sep_list, Automaster
| command BootConf Dovecot Grub Nrpe
| command_start, Dovecot
| comment AFS_cellalias Aliases Approx Apt_Update_Manager AptConf Aptsources Automaster Automounter Avahi BootConf Cachefilesd Channels Chrony CSV Dovecot Erlang Grub IniFile Keepalived Ldif Mke2fs Modprobe Netmasks Nrpe Nslcd Nsswitch Ntpd Oz Resolv Schroot Solaris_System Subversion Sudoers Sysctl Syslog Tmpfiles Toml Trapperkeeper Util Xymon_Alerting
| comment_c_style, Util
| comment_c_style_or_hash, Util
| comment_eol Keepalived Resolv Sudoers Util
| comment_generic, Util
| comment_generic_seteol, Util
| comment_multi, AptConf
| comment_multiline, Util
| comment_noindent IniFile Util
| comment_or_eol Keepalived Netmasks Sudoers Util
| comment_re, Grub
| comment_simple, AptConf
| common_entry, Mke2fs
| comparison The greater and lesser than operators, Xymon_Alerting
| condition Inputrc Reprepro_Uploaders
| condition_field, Reprepro_Uploaders
| condition_list, Reprepro_Uploaders
| condition_re, Reprepro_Uploaders
| conf Test_Postfix_Passwordmap Test_Postfix_Transport Test_Postfix_Virtual
| config Erlang Modprobe
| configfile, Grub
| correction_re, Ntpd

> let cacheconfig = [ key (entry_key - nocull) . space . store entry_value . eol ]

This is a simple “key value” setup

> let caid = let caid_entry = [ label "caid" . store Rx.word ] in Build.opt_list caid_entry comma

> let chainloader = [ command "chainloader" "\t" . [ spc . switch "force" ]? . spc . store Rx.no_spaces . eol ]

> let change_date = [ label "change_date" . store integer? . colon ]

pw_change

> let change_add = [ attr_changetype "add" ] . ( sep_line* . attr_val_spec )+

change-add = “add” SEP 1*attrval-spec

> let change_control = let attr_criticality = [ Util.del_ws_spc . label "criticality" . store /true|false/ ] in let attr_ctrlvalue = [ label "value" . (attr_safe_string | attr_base64_string | attr_url_string ) ] in [ key "control" . sep_colon . store ldapoid_re . attr_criticality? . attr_ctrlvalue? . eol ]

“control:” FILL ldap-oid 0*1(1*SPACE (“true” / “false”)) 0*1(value-spec)

> let change_delete = [ attr_changetype "delete" ]

change-delete = “add” SEP 1*attrval-spec

> let change_modify = [ attr_changetype "modify" ] . ( sep_line* . [ change_modspec . sep_line* . sep_modspec ] )+

change-modify = “modify” SEP *mod-spec

> let change_modrdn = let attr_deleteoldrdn = [ key "deleteoldrdn" . attr_intflag . eol ] in let attrs_modrdn = attr_dn_value "newrdn" | attr_dn_value "newsuperior" | attr_deleteoldrdn in [ attr_changetype /modr?dn/ ] . ( sep_line | attrs_modrdn )* . attrs_modrdn

(“modrdn” / “moddn”) SEP newrdn/newsuperior/deleteoldrdn

> let change_modspec = attr_modspec . ( sep_line* . attr_val_spec )*

change-modspec = add/delete/replace: AttributeDesc SEP *attrval-spec “-”

> let change_record = ( change_add | change_delete | change_modify | change_modrdn)

changerecord = “changetype:” FILL (changeadd/delete/modify/moddn)

> let class = [ label "class" . sto_to_col? . colon ]

pw_class

> let clear = let name = [ label "name" . store name_re_colons ] in [ indent . key "#clear" . Sep.space . Build.opt_list name Sep.space . eol ]

A list of variables to clear /!\ The manpage is not clear on the syntax

> let client = let user = [ label "user" . list_item . Util.del_str "@" ] in [ label "client" . user? . client_host_item ]

> let client_file = [ label "file" . client_file_item ]

> let client_file_item = let client_file_rx = /\/[^ \t\n,:]+/ in store ( client_file_rx - /EXCEPT/i )

> let client_host_item = let client_hostname_rx = /[A-Za-z0-9_.@?*-][A-Za-z0-9_.?*-]*/ in let client_ipv6_rx = "[" . /[A-Za-z0-9:?*%]+/ . "]" in let client_host_rx = client_hostname_rx | client_ipv6_rx in let netmask = [ Util.del_str "/" . label "netmask" . store Rx.word ] in store ( client_host_rx - /EXCEPT/i ) . netmask?

Allows @ for netgroups, supports [ipv6] syntax

> let client_list = Build.opt_list ( client | client_file ) list_sep

A list of clients

> let client_output_buffer_limit_entry = [ indent . key cobl_cmd . del_ws_spc . class . del_ws_spc . hard_limit . del_ws_spc . soft_limit . del_ws_spc . soft_seconds . eol ]

Entries identified by the “client-output-buffer-limit” keyword can be found more than once.

> let cluster_nodes = let nodes = Erlang.opt_list (Erlang.make_value Erlang.quoted) in let value = Erlang.tuple nodes Erlang.bare | nodes in Erlang.value "cluster_nodes" value

Can be a tuple `(nodes, node_type)` or simple `nodes`

> let cluster_partition_handling = let nodes = Erlang.opt_list (Erlang.make_value Erlang.quoted) in let value = Erlang.tuple3 Erlang.bare nodes Erlang.bare | Erlang.bare in Erlang.value "cluster_partition_handling" value

Can be single value or `{pause_if_all_down, [nodes], ignore | autoheal}`

> let cmd_kv (cmd:string) (value:regexp) = Build.key_value_line cmd sep_colon (store value)

Function for simple key/value setting commands such as rootfs

> let cmd_moddir = Build.key_value_line "moddir" sep_colon (Build.opt_list modpath sep_moddir)

The moddir command for specifying module search paths

> let cmd_set = [ key "set" . Util.del_ws_spc . ( set_var | set_varmod ) . set_sep_spc . [ label "operator" . store set_operators ] . set_sep_spc . set_value . Util.eol ]

The set command for individual kernel/module parameters

> let cmnd_alias = alias_entry "Cmnd_Alias" "command" sto_to_com_cmnd

Cmnd_Alias, see alias_field

> let cmnd_spec = [ label "command" . runas_spec? . tag_spec* . sto_to_com_cmnd ]

Command specification for spec, with optional runas_spec and any amount of tag_specs

> let cmnd_spec_list = Build.opt_list cmnd_spec sep_com

A list of comma-separated cmnd_specs

> let colon = del /[ \t]*:[ \t]*/ ":\t"

Separation between the alias and it’s destinations

> let colon = del /:[ \t]*/ ": "

> let colon = Sep.colon

Separation between selinux attributes

> let colon = Sep.colon

> let colon = del /[ \t]*(\\\\[ \t]*\n[ \t]+)?:[ \t]*(\\\\[ \t]*\n[ \t]+)?/ ": "

> let colon = Sep.colon

> let colon = Sep.colon

> let color =

> let color = kw_word "COLOR"

The color filter definition

> let combine_three (a:lens) (b:lens) (c:lens) = combine_three_ord a b c | combine_three_ord b a c | combine_three_ord c b a

Combine three lenses

> let combine_three = let entry (k:string) = [ key k ] in Build.combine_three (entry "a") (entry "b") (entry "c")

A minimalistic optional combination lens

> let combine_three_opt (a:lens) (b:lens) (c:lens) = combine_three_opt_ord a b c | combine_three_opt_ord b a c | combine_three_opt_ord c b a

Combine three lenses optionally (either a, b, c, or any of them, in any order)

> let combine_three_opt = let entry (k:string) = [ key k ] in Build.combine_three_opt (entry "a") (entry "b") (entry "c")

A minimalistic optional combination lens

> let combine_three_opt_ord (a:lens) (b:lens) (c:lens) = combine_two_opt_ord a (combine_two_opt b c)

Combine three lenses optionally, ensuring first lens is first (a followed by either b, c, or any of them, in any order)

> let combine_three_ord (a:lens) (b:lens) (c:lens) = combine_two_ord a (combine_two b c)

Combine three lenses, ensuring first lens is first (a followed by either b, c, in any order)

> let combine_two (a:lens) (b:lens) = combine_two_ord a b | combine_two_ord b a

Combine two lenses

> let combine_two = let entry (k:string) = [ key k ] in Build.combine_two (entry "a") (entry "b")

A minimalistic combination lens

> let combine_two_opt (a:lens) (b:lens) = combine_two_opt_ord a b | combine_two_opt_ord b a

Combine two lenses optionally (either a, b, or both, in any order)

> let combine_two_opt = let entry (k:string) = [ key k ] in Build.combine_two_opt (entry "a") (entry "b")

A minimalistic optional combination lens

> let combine_two_opt_ord (a:lens) (b:lens) = a . b?

Combine two lenses optionally, ensuring first lens is first (a, and optionally b)

> let combine_two_ord (a:lens) (b:lens) = a . b

Combine two lenses, ensuring first lens is first

> let comma = del /[ \t]*,[ \t]*(\n[ \t]+)?/ ", "

Separation between multiple destinations

> let comma = Sep.comma

> let comma = Sep.comma

> let comma = space_or_eol "," ", "

> let comma = del /[ \t\n]*,[ \t\n]*/ ", "

a comma, optionally preceded or followed by spaces or newlines

> let comma_sep = del /,[ \t]*/ ", "

> let comma_sep_list (l:string) = let value = [ label "value" . Util.del_str "=" . store Rx.neg1 ] in let lns = [ label l . store optlabel . value? ] in Build.opt_list lns Sep.comma

Parses options for filesystems

> let comma_sep_list (l:string) = let value = [ label "value" . Util.del_str "=" . store optval ] in let lns = [ label l . store word . value? ] in Build.opt_list lns comma

A comma separated list of options (opt=value or opt)

> let comma_spc_sep_list (l:string) = let value = [ label "value" . Util.del_str "=" . store Rx.neg1 ] in let lns = [ label l . store optlabel . value? ] in Build.opt_list lns optsep

Parses options either for filesystems or autofs

> let command = boot | echo | ls | machine | set | stty

> let command = [ command_start . key commands . Sep.space . store Rx.fspath . eol ]

Map commands started with “!”

> let command (kw:regexp) (indent:string) = Util.del_opt_ws indent . key kw

> let command = let obrkt = del /\[/ "[" in let cbrkt = del /\]/ "]" in [ key "command" . [ obrkt . key /[^]\/\n]+/ . cbrkt . eq . store /[^\n]+/ . del /\n/ "\n" ] ]

nrpe.cfg usually has many entries defining commands to run

> let command_start = Util.del_str "!"

> let comment = Util.comment

> let comment = Util.comment

> let comment = [ indent . label "#comment" . del /[#;][ \t]*/ "# " . store /([^ \t\n].*[^ \t\n]|[^ \t\n])/ . eol ]

> let comment = IniFile.comment IniFile.comment_re IniFile.comment_default

> let comment = comment_simple | comment_multi

A comment, either comment_simple or comment_multi

> let comment = Util.comment

> let comment = Util.comment

> let comment = Util.comment

> let comment = IniFile.comment "#" "#"

> let comment = Util.comment

> let comment = Util.comment

> let comment = Util.comment_generic /;[ \t]*/ "; "

> let comment = Util.comment_generic /[ \t]*[!;#%][ \t]*/ "# "

from 4.2.1 of the upstream doc Chrony comments start with: !

> let comment = Util.comment | [ del /#[ \t]*\r?\n/ "#\n" ]

> let comment = Util.comment

Map comments in “#comment” nodes.

> let comment = Util.comment_generic /%[ \t]*/ "% "

> let comment = [ Util.indent . label "#comment" . del /#[ \t]*/ "# " . store comment_re . eol ]

> let comment (pat:regexp) (default:string) = Util.comment_generic_seteol (Rx.opt_space . pat . Rx.opt_space) default eol

Map comments into “#comment” nodes

> let comment = Util.comment_generic /[ \t]*[#!][ \t]*/ "# "

Map comments in “#comment” nodes

> let comment = Util.comment_generic /#[ \t]*/ "# "

> let comment = IniFile.comment IniFile.comment_re IniFile.comment_default

> let comment = Util.comment

> let comment = Util.comment

> let comment = Util.comment_generic /#[ \t]*/ "# "

Nrpe comments must start at beginning of line

> let comment = Util.comment

> let comment = Util.comment

> let comment = Util.comment

> let comment = IniFile.comment "#" "#"

> let comment = Util.comment_generic /[ \t]*[;#][ \t]*/ "# "

> let comment = IniFile.comment "#" "#"

An IniFile.comment entry

> let comment = Util.comment_generic /[ \t]*\*[ \t]*/ "* "

> let comment = IniFile.comment_noindent "#" "#"

> let comment = let sto_to_eol = store (/([^ \t\n].*[^ \t\n]|[^ \t\n])/ - /include(dir)?.*/) in [ label "#comment" . del /[ \t]*#[ \t]*/ "# " . sto_to_eol . eol ]

Map comments in “#comment” nodes

> let comment = Util.comment_generic /[ \t]*[#;][ \t]*/ "# "

> let comment_gen (space:regexp) (sto:regexp) = [ label "#comment" . del (Rx.opt_space . "#" . space) "# " . store sto . eol ]

Map comments into “#comment” nodes Can’t use Util.comment as #+ and #!

> let comment = Util.comment

Comments

> let comment = IniFile.comment "#" "#"

A simple comment

> let comment = Util.comment

> let comment = comment_generic /[ \t]*#[ \t]*/ "# "

Map comments into “#comment” nodes

> let comment = Util.comment

> let comment_c_style = comment_generic /[ \t]*\/\/[ \t]*/ "// "

A comment line, C-style

> let comment_c_style_or_hash = comment_generic /[ \t]*((\/\/)|#)[ \t]*/ "// "

A comment line, C-style or hash

> let comment_eol = Util.comment_generic /[ \t]*[#!][ \t]*/ " # "

Map comments at eol

> let comment_eol = Util.comment_generic /[ \t]*[;#][ \t]*/ " # "

> let comment_eol = Util.comment_generic /[ \t]+#[ \t]*/ " # "

Requires a space before the #

> let comment_eol = comment_generic /[ \t]*#[ \t]*/ " # "

Map eol comments into “#comment” nodes Add a space before # for end of line comments

> let comment_generic (r:regexp) (d:string) = comment_generic_seteol r d doseol

Map comments and set default comment sign

> let comment_generic_seteol (r:regexp) (d:string) (eol:lens) = [ label "#comment" . del r d . store /([^ \t\r\n].*[^ \t\r\n]|[^ \t\r\n])/ . eol ]

Map comments and set default comment sign

> let comment_multi = Util.comment_multiline

A multiline comment, C-style

> let comment_multiline = let mline_re = (/[^ \t\r\n].*[^ \t\r\n]|[^ \t\r\n]/ - /.*\*\/.*/) in let mline = [ seq "mline" . del /[ \t\r\n]*/ "\n" . store mline_re ] in [ label "#mcomment" . del /[ \t]*\/\*/ "/*" . counter "mline" . mline . (eol . mline)* . del /[ \t\r\n]*\*\/[ \t]*\r?\n/ "\n*/\n" ]

A C-style multiline comment

> let comment_noindent (pat:regexp) (default:string) = Util.comment_generic_seteol (pat . Rx.opt_space) default eol

Map comments into “#comment” nodes, no indentation allowed

> let comment_noindent = comment_generic /#[ \t]*/ "# "

Map comments into “#comment” nodes, without indentation

> let comment_or_eol = comment_eol | (del /[ \t]*[#!]?\n/ "\n")

A comment_eol or eol

> let comment_or_eol = Util.comment_or_eol

> let comment_or_eol = comment_eol | (del /([ \t]+#\n|[ \t]*\n)/ "\n")

A comment_eol or eol

> let comment_or_eol = comment_eol | (del /[ \t]*(#[ \t]*)?\n/ "\n")

A comment_eol or eol, with an optional empty comment

> let comment_re = /([^ \t\n].*[^ \t\n]|[^ \t\n])/ - /# ## (Start|End) Default Options ##/

> let comment_simple = Util.comment_c_style_or_hash

A one-line comment, C-style

> let common_entry = list_sto ("base_features"|"default_features") (key Rx.word) | entry_sto "blocksize" ("-"? . Rx.integer) | entry_sto "hash_alg" ("legacy"|"half_md4"|"tea") | entry_sto ("inode_ratio"|"inode_size") Rx.integer

Entries shared between defaults and fs_types sections

> let rec condition = [ Util.del_str "$if" . label "@if" . Sep.space . store Rx.space_in . Util.eol . (Util.empty | Util.comment | condition | variable | entry)* . [ Util.del_str "$else" . label "@else" . Util.eol . (Util.empty | Util.comment | condition | variable | entry)* ] ? . Util.del_str "$endif" . Util.eol ]

An “if” declaration, recursive

> let condition = logic_construct_condition "or" condition_field

A condition is an ‘and’ node, representing a union of condition_fields, listed under ‘or’ subnodes:

> let condition_field = let sto_condition = Util.del_str "'" . store /[^'\n]+/ . Util.del_str "'" in [ key "not" . Sep.space ]? . store condition_re . [ Sep.space . key "contain" ]? . Sep.space . logic_construct_field "or" "|" sto_condition

A single condition field is an ‘or’ node.

> let condition_list = store "*" | logic_construct_condition "and" condition

A list of conditions, inspired by Debctrl.dependency_list An upload condition list is either the wildcard ‘*’, stored verbatim, or an intersection of conditions listed under ‘and’ subnodes:

> let condition_re = "source" | "byhand" | "sections" | "binaries" | "architectures" | "distribution"

> let conf = "# comment * username:password [mail.isp.example] username:password [mail.isp.example]:submission username:password [mail.isp.example]:587 username:password mail.isp.example username:password user@mail.isp.example username: mail.isp.example username2:password2 "

> let conf = "# a comment the.backed-up.domain.tld relay:[their.mail.host.tld] .my.domain : * smtp:outbound-relay.my.domain example.com uucp:example example.com slow: example.com :[gateway.example.com] user.foo@example.com smtp:bar.example:2025 .example.com error:mail for *.example.com is not deliverable "

> let conf = "# a comment virtual-alias.domain anything postmaster@virtual-alias.domain postmaster user1@virtual-alias.domain address1 user2@virtual-alias.domain address2, address3 root robert.oot@domain.com @example.net root,postmaster postmaster mtaadmin+root=mta1 some_user localuser "

> let config (app:lens) = (Util.empty | comment)* . rspace lbrack . Build.opt_list (kernel | app) (lrspace comma) . lrspace rbrack . Util.del_str "." . Util.eol . (Util.empty | comment)*

A top-level config

> let config = Build.key_value_line_comment "config" sep_space (store /binary_indexes|yes|no/) comment

> let configfile = [ command "configfile" "\t" . spc . store Rx.no_spaces . eol ]

> let correction_re = Rx.relinteger_noplus

should actually only match between -127000000 and 127000000
Close