| A | |
| access, Access | |
| Access | |
| action, Syslog | |
| address, Pg_Hba | |
| alias | |
| alias_entry, Sudoers | |
| alias_entry_single, Sudoers | |
| alias_field, Sudoers | |
| alias_list, Sudoers | |
| alias_name, Sudoers | |
| ALIASES, Sudoers | |
| alpha, Cron | |
| alphanum, Cron | |
| at, Syslog | |
| Augeas Lenses | |
| Augeas Variables | |
| B | |
| bang, Syslog | |
| block, Keepalived | |
| body, Xinetd | |
| brackets, Build | |
| Build | |
| C | |
| CAVEATS, Sshd | |
| cgconfig | |
| cgrules | |
| cmd_kv, Solaris_System | |
| cmd_moddir, Solaris_System | |
| cmd_set, Solaris_System | |
| cmnd_alias, Sudoers | |
| cmnd_spec, Sudoers | |
| cmnd_spec_list, Sudoers | |
| colon | |
| Columns definitions, Pg_Hba | |
| comma | |
| comma_sep_list | |
| command, Nrpe | |
| COMMANDS, Solaris_System | |
| comment | |
| Comment, Util | |
| comment_c_style, Util | |
| comment_default, IniFile | |
| comment_eol | |
| comment_generic, Util | |
| comment_multiline, Util | |
| comment_or_eol | |
| comment_re, IniFile | |
| Comments and empty lines | |
| COMMON ENTRIES, Mke2fs | |
| common_entry, Mke2fs | |
| comparison, Syslog | |
| Configuration files | |
| controller, cgrules | |
| CONTROLLER, cgrules | |
| Cron | |
| crypttab.aug | |
| ctrl_key, cgrules | |
| ctrl_value, cgrules |
Allow (+) or deny (-) access
let access = label "access" . store /[+-]/
let address = [ label "address" . store ipaddr ]
let alias = [ label "alias" . store word_re ]
Every kind of Alias entry, see user_alias, runas_alias, host_alias and cmnd_alias
let alias = user_alias | runas_alias | host_alias | cmnd_alias
Alias entry, a list of comma-separated alias_entry_single fields
let alias_entry ( kw:string ) (field:string) (sto:lens) = [ indent . key kw . sep_cont . alias_entry_single field sto . ( sep_col . alias_entry_single field sto )* . eol ]
Single alias_entry, named using alias_name and listing alias_list
let alias_entry_single ( field:string ) (sto:lens) = [ label "alias" . alias_name . sep_eq . alias_list field sto ]
Generic alias field to gather all Alias definitions
let alias_field ( kw:string ) (sto:lens) = [ label kw . sto ]
List of alias_fields, separated by commas
let alias_list ( kw:string ) (sto:lens) = alias_field kw sto . ( sep_com . alias_field kw sto )*
Name of an alias_entry_single
let alias_name = [ label "name" . store /[A-Z][A-Z0-9_]*/ ]
let alpha = /[A-Za-z]{3}/
let alphanum = num | alpha
Deletes a at and default to it
let at = Util.del_str "@"
Deletes a bang and default to it
let bang = Util.del_str "!"
A simple block with just a block title
let block ( kw:string ) (sto:lens) = lens_block (key kw) sto
We would really like to say “the body can contain any of a list of a list of attributes, each of them at most once”; but that would require that we build a lens that matches the permutation of all attributes; with around 40 individual attributes, that’s not computationally feasible, even if we didn’t have to worry about how to write that down.
let body ( attr:lens ) = Util.del_str "\n{\n" . (empty|comment|attr)* . del /[ \t]*}[ \t]*\n/ "}\n"
Put a lens inside brackets
let brackets ( l:lens ) (r:lens) (lns:lens) = l . lns . r
Function for simple key/value setting commands such as rootfs
let cmd_kv ( cmd:string ) (value:regexp) = Build.key_value_line cmd sep_colon (store value)
The moddir command for specifying module search paths
let cmd_moddir = Build.key_value_line "moddir" sep_colon ( Build.opt_list modpath sep_moddir )
The set command for individual kernel/module parameters
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 ]
Cmnd_Alias, see alias_field
let cmnd_alias = alias_entry "Cmnd_Alias" "command" sto_to_com_cmnd
Command specification for spec, with optional runas_spec and any amount of tag_specs
let cmnd_spec = [ label "command" . runas_spec? . tag_spec* . sto_to_com_cmnd ]
A list of comma-separated cmnd_specs
let cmnd_spec_list = cmnd_spec . ( sep_com . cmnd_spec )*
this is the standard field separator “ : “
let colon = Sep.space . Sep.colon . Sep.space
Deletes a colon and default to it
let colon = sep_tab_opt . Util.del_str ":" . sep_tab_opt
let comma = Sep.comma
Deletes a comma and default to it
let comma = sep_tab_opt . Util.del_str "," . sep_tab_opt
A comma separated list of options (opt=value or opt)
let comma_sep_list ( l:string ) = let value = [ label "value" . Util.del_str "=" . store optval ] in
nrpe.cfg usually has many entries defining commands to run
let command = let obrkt = del /\[/ "[" in let cbrkt = del /\]/ "]" in [ key "command" . [ obrkt . key /[^]\/\n]+/ . cbrkt . eq . store /[^=\n]+/ . del /\n/ "\n" ] ]
let comment = Util.comment
let comment = Util.comment
let comment = Util.comment
let comment = Util.comment
Map comments into “#comment” nodes
let comment ( pat:regexp ) (default:string) = [ label "#comment" . sep pat default . sto_to_eol? . eol ]
Map comments in “#comment” nodes
let comment = Util.comment_generic /[ \t]*[#!][ \t]*/ "# "
let comment = IniFile.comment IniFile.comment_re IniFile.comment_default
Nrpe comments must start at beginning of line
let comment = Util.comment_generic /#[ \t]*/ "# "
let comment = Util.comment
let comment = Util.comment_generic /[ \t]*[;#][ \t]*/ "# "
let comment = Util.comment_generic /[ \t]*\*[ \t]*/ "* "
Map comments in “#comment” nodes
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 into “#comment” nodes Can’t use Util.comment as #+ and #!
let comment = [ label "#comment" . del /#[ \t]*/ "# " . store /([^ \t\n+!-].*[^ \t\n]|[^ \t\n+!-])/ . eol ]
Map comments into “#comment” nodes
let comment = comment_generic /[ \t]*#[ \t]*/ "# "
let comment = Util.comment
A comment line, C-style
let comment_c_style = comment_generic /[ \t]*\/\/[ \t]*/ "// "
Default value for comment pattern
let comment_default = ";"
Map comments at eol
let comment_eol = Util.comment_generic /[ \t]*[#!][ \t]*/ " # "
Map eol comments into “#comment” nodes Add a space before # for end of line comments
let comment_eol = comment_generic /[ \t]*#[ \t]*/ " # "
Map comments and set default comment sign
let comment_generic ( r:regexp ) (d:string) = [ label "#comment" . del r d . store /([^ \t\n].*[^ \t\n]|[^ \t\n])/ . eol ]
A C-style multiline comment
let comment_multiline = let mline_re = ( /[^ \t\n].*[^ \t\n]|[^ \t\n]/ - /.*\*\/.*/ ) in
A comment_eol or eol
let comment_or_eol = comment_eol | ( del /[ \t]*#?\n/ "\n" )
A comment_eol or eol
let comment_or_eol = comment_eol | ( del /[ \t]*#?\n/ "\n" )
Default regexp for comment pattern
let comment_re = /[;#]/
Entries shared between defaults and fs_types sections
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
a comparison is an optional !
let comparison = /( !|[<=>]+|![<=>]+ )/
let controller = ws . [ key ctrl_key . ws . store ctrl_value ]
let ctrl_key = /[^ \t\n\/]+/
let ctrl_value = /[^ \t\n]+/