Index - Augeas Documentation

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
| Cachefilesd
| caid, Channels
| Carbon
| caret, Test_Tmpfiles
| caret_tree, Test_Tmpfiles
| CAVEATS, Sshd
| cdata, Test_Xml.Xml
| cdata1, Test_Xml
| cgconfig
| cgrules
| 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
| Channels
| Chrony
| cidr, Sysconfig_Route
| cl, Rx
| cl_or_opt_space Rx Sep
| cl_or_space Rx Sep
| ClamAV
| 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 Test_Rabbitmq.Rabbitmq
| cluster_partition_handling, Rabbitmq
| cluster_partition_handling,single value, Test_Rabbitmq.Rabbitmq
| cluster_partition_handling,tuple, Test_Rabbitmq.Rabbitmq
| cmd_flags, Chrony
| cmd_kv, Solaris_System
| cmd_moddir, Solaris_System
| cmd_options, Chrony
| cmd_set, Solaris_System
| Cmdline
| cmnd_alias, Sudoers
| cmnd_spec, Sudoers
| cmnd_spec_list, Sudoers
| Cockpit
| Collectd
| colon Access Aliases AptPreferences Cachefilesd Channels Hosts_Access Postfix_Passwordmap Postfix_Transport Sep Syslog
| color Grub Xymon_Alerting
| Columns definitions, Pg_Hba
| COMBINATORICS Build Test_Build
| 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 Crypttab Erlang Nslcd Postfix_Virtual Puppetfile Sep Syslog
| comma_list_re, Subversion
| comma_sep Hosts_Access JettyRealm
| comma_sep_list Automounter Crypttab
| comma_spc_sep_list, Automaster
| command Aliases BootConf Dovecot Grub Nrpe
| command_start, Dovecot
| commands, Dovecot
| COMMANDS, Solaris_System
| comment Global Access AFS_cellalias Aliases Approx Apt_Update_Manager AptConf Aptsources Automaster Automounter Avahi BootConf Cachefilesd cgrules Channels Chrony Cron Crypttab CSV Dovecot Erlang FAI_DiskConfig Grub IniFile Keepalived Ldif Mke2fs Modprobe Netmasks Nrpe Nslcd Nsswitch Ntpd Oz Resolv Schroot Solaris_System Subversion Sudoers Sysctl Syslog Test_Xml.Xml Tmpfiles Toml Trapperkeeper Util Xorg Xymon_Alerting
| Comment, Util
| comment_ace, Test_IniFile
| comment_acf, Test_IniFile
| comment_ade, Test_IniFile
| comment_adf, Test_IniFile
| comment_bce, Test_IniFile
| comment_bcf, Test_IniFile
| comment_bde, Test_IniFile
| comment_bdf, Test_IniFile
| comment_c_style, Util
| comment_c_style_or_hash, Util
| comment_default, IniFile
| 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 IniFile
| comment_simple, AptConf
| comments, Test_Erlang
| Comments, Test_Xml
| Comments and empty lines Access AFS_cellalias Aliases Cachefilesd cgrules Keepalived MasterPasswd Nslcd Passwd Sudoers Syslog Tmpfiles
| COMMON ENTRIES, Mke2fs
| common_entries_bool, Mke2fs
| common_entries_double, Mke2fs
| common_entries_int, Mke2fs
| common_entries_list, Mke2fs
| common_entries_string, Mke2fs
| common_entry, Mke2fs
| comparison, Syslog
| comparison The greater and lesser than operators, Xymon_Alerting
| complex, Test_Tmpfiles
| complex_arg, Test_Tmpfiles
| complex_arg_tree, Test_Tmpfiles
| complex_tree, Test_Tmpfiles
| condition Inputrc Reprepro_Uploaders
| condition_field, Reprepro_Uploaders
| condition_list, Reprepro_Uploaders
| condition_re, Reprepro_Uploaders
| CONDITIONALS AND LOOPS, Shellvars
| conf Test_Access Test_ActiveMQ_Conf Test_ActiveMQ_XML Test_AFS_cellalias Test_Anacron Test_Channels Test_Cups Test_Fonts Test_Fuse Test_Inputrc Test_Iscsid Test_JettyRealm Test_JMXAccess Test_JMXPassword Test_Keepalived Test_Koji Test_Ldso Test_LVM Test_MongoDBServer Test_NetworkManager Test_OpenShift_Config Test_OpenShift_Http Test_OpenShift_Quickstarts Test_Postfix_Passwordmap Test_Postfix_Transport Test_Postfix_Virtual Test_Postgresql Test_Protocols Test_Reprepro_Uploaders Test_Rhsm Test_Rsyslog Test_Semanage Test_Simplelines Test_Simplevars Test_SmbUsers Test_Subversion Test_Up2date Test_VMware_Config
| conf_ace, Test_IniFile
| conf_acf, Test_IniFile
| conf_ade, Test_IniFile
| conf_adf, Test_IniFile
| conf_bce, Test_IniFile
| conf_bcf, Test_IniFile
| conf_bde, Test_IniFile
| conf_bdf, Test_IniFile
| conf_norealm, Test_JettyRealm
| config Global Cachefilesd Erlang Modprobe Test_CPanel Test_Erlang
| config1, Test_FAI_DiskConfig
| config2, Test_FAI_DiskConfig
| config3, Test_FAI_DiskConfig
| configfile, Grub
| CONFIGURATION ENTRIES, Nslcd
| Configuration file Anaconda Sos
| Configuration files Access ActiveMQ_Conf ActiveMQ_XML Aliases Anacron Approx Apt_Update_Manager AptConf Authorized_Keys AuthselectPam Automaster Automounter BackupPCHosts BootConf Cachefilesd Carbon cgconfig cgrules Channels Chrony ClamAV Cockpit Collectd CPanel Cron Cron_User Crypttab CSV Dhcpd Dovecot Erlang Fonts Fuse GtkBookmarks Host_Conf Hosts_Access Inputrc JettyRealm JMXAccess JMXPassword Kdump Keepalived keepalived.aug ldso.aug Known_Hosts Koji Lightdm Login_defs LVM Mailscanner Mailscanner_rules Mke2fs Modprobe Modules MongoDBServer NagiosConfig NagiosObjects Netmasks NetworkManager Networks Nginx Nslcd Nsswitch Ntpd OpenShift_Config OpenShift_Quickstarts Pam PamConf Pbuilder Pg_Hba Pgbouncer Postfix_Passwordmap Postfix_Transport Postfix_Virtual Postgresql Protocols Puppet_Auth Puppetfile PylonsPaste Rabbitmq Reprepro_Uploaders Resolv Rhsm Rsyslog Schroot Semanage Services Shells Simplelines Sip_Conf Solaris_System Splunk Sshd Sudoers Sysconfig_Route Sysctl Syslog Systemd Tmpfiles Toml Trapperkeeper Up2date UpdateDB Vfstab VWware_Config Xorg Xymon_Alerting
| content, Test_Xml.Xml
| controller, cgrules
| CONTROLLER, cgrules
| correction_re, Ntpd
| CPanel
| Create required expressions, Chrony
| Cron
| Cron_User
| cronallow, Test_Simplelines
| Crypttab
| CSV
| ctrl_key, cgrules
| ctrl_value, cgrules
| Cups

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

This is a simple “key value” setup
Parses /etc/cachefilesd.conf

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

Parses Carbon’s configuration files

> let caret = "f^ /etc/motd.d/50-provision.conf - - - - login.motd\n"

Example with a caret in the type

> let caret_tree = { "1" { "type" = "f^" } { "path" = "/etc/motd.d/50-provision.conf" } { "mode" = "-" } { "uid" = "-" } { "gid" = "-" } { "age" = "-" } { "argument" = "login.motd" } }

Tree for caret
In sshd_config, Match blocks must be located at the end of the file.

> test Xml.cdata get cdata1 = { "#CDATA" = "testing" }

> let cdata1 = "<![CDATA[testing]]>"

Parses /etc/cgconfig.conf
Parses /etc/cgrules.conf

> 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)
Parses channels.conf files
Parses the chrony config file

> let cidr = /(3[012]|[12][0-9]|[0-9])/

A subnet mask can be 0 to 32 bits

> let cl = /[ \t]*\\\\\n[ \t]*/

A continued line with a backslash

> let cl_or_opt_space = cl | opt_space

A cl or a opt_space

> let cl_or_opt_space = del Rx.cl_or_opt_space " "

Deletes a Rx.cl_or_opt_space and default to a single space

> let cl_or_space = cl | space

A cl or a space

> let cl_or_space = del Rx.cl_or_space " "

Deletes a Rx.cl_or_space and default to a single space
Parses ClamAV clamd and freshclam configuration files.

> 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`

> test Rabbitmq.cluster_nodes get "{cluster_nodes, {['rabbit@rabbit1', 'rabbit@rabbit2', 'rabbit@rabbit3'], disc}}" = { "cluster_nodes" { "tuple" { "value" { "value" = "rabbit@rabbit1" } { "value" = "rabbit@rabbit2" } { "value" = "rabbit@rabbit3" } } { "value" = "disc" } } }

> 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_flags = "auto_offline"|"iburst"|"noselect"|"offline"|"prefer" |"copy"|"require"|"trust"|"xleave"|"burst"|"nts"

Server/Peer/Pool options without values

> 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_options = "asymmetry" | "certset" | "extfield" | "

Server/Peer/Pool options with values

> 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
Parses /proc/cmdline and /etc/kernel/cmdline

> 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
Cockpit module for Augeas
Parses collectd configuration files

> let colon = del (Rx.opt_space . ":" . Rx.opt_space) " : "

this is the standard field separator “ : “

> 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 colon = Util.del_str ":"

> let colon = sep_tab_opt . Util.del_str ":" . sep_tab_opt

Deletes a colon and default to it

> 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 = ","

> 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 = Util.del_str ","

> let comma = sep_tab_opt . Util.del_str "," . sep_tab_opt

Deletes a comma and default to it

> let comma_list_re = "password-stores"

> let comma_sep = /([ \t]|(\\\\\n))*,([ \t]|(\\\\\n))*/

> 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 = /(\|([^", \t\n]+|"[^"\n]+"))|("\|[^"\n]+")/

a command can contain spaces, if enclosed in double quotes, the case without spaces is taken care with word

> 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 commands = /include|include_try/

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

Only supports “#” as commentary

> let comment = Util.comment

> 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

> 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

> let comment = Util.comment

> 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.comment

> 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 #!

> test Xml.comment get "<!-- declarations for <head> & <body> -->" = { "#comment" = " declarations for <head> & <body> " }

Comments get mapped into “#comment” nodes.

> 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 = Util.comment

This is a general definition of comment It allows indentation for comments, removes the leading and trailing spaces of comments and stores them in nodes, except for empty comments which are ignored together with empty lines

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

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

> let comment_ade = IniFile.comment ";" ";"

> let comment_adf = IniFile.comment ";" ";"

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

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

> let comment_bde = IniFile.comment ";" ";"

> let comment_bdf = IniFile.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_default = ";"

Default value for comment pattern

> 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_re = /[;#]/

Default regexp for comment pattern

> let comment_simple = Util.comment_c_style_or_hash

A one-line comment, C-style

> let common_entries_bool = ("auto_64-bit_support"|"discard" |"enable_periodic_fsck"|"lazy_itable_init" |"lazy_journal_init"|"packed_meta_blocks")

Entries with a boolean value

> let common_entries_double = ("reserved_ratio")

Entries with a double value

> let common_entries_int = ("cluster_size"|"flex_bg_size"|"force_undo" |"inode_ratio"|"inode_size"|"num_backup_sb")

Entries with an integer value

> let common_entries_list = ("base_features"|"default_features"|"default_mntopts")

Entries with a list value

> let common_entries_string = ("encoding"|"journal_location")

Entries with a string value

> let common_entry = list_sto common_entries_list (key Rx.word) | entry_sto common_entries_int Rx.integer | entry_sto common_entries_bool boolean | entry_sto common_entries_string Rx.word | entry_sto common_entries_double Rx.decimal | entry_sto "blocksize" ("-"? . Rx.integer) | entry_sto "hash_alg" ("legacy"|"half_md4"|"tea") | entry_sto "errors" ("continue"|"remount-ro"|"panic") | list_sto "features" ([del /\^/ "^" . label "disable"]? . key Rx.word) | list_sto "options" (key Rx.word . Util.del_str "=" . store Rx.word)

Entries shared between defaults and fs_types sections

> let comparison = /(!|[<=>]+|![<=>]+)/

a comparison is an optional !

> let complex = "#Type Path Mode UID GID Age Argument\nd /run/user 0755 root root 10d -\nL /tmp/foobar - - - - /dev/null\n"

A more complex example, comes from the manual

> let complex_arg = "t /run/screen - - - - user.name=\"John Smith\" security.SMACK64=screen\n"

Complex argument example.

> let complex_arg_tree = { "1" { "type" = "t" } { "path" = "/run/screen" } { "mode" = "-" } { "uid" = "-" } { "gid" = "-" } { "age" = "-" } { "argument" = "user.name=\"John Smith\" security.SMACK64=screen" } }

Tree for complex_arg

> let complex_tree = { "#comment" = "Type Path Mode UID GID Age Argument" } { "1" { "type" = "d" } { "path" = "/run/user" } { "mode" = "0755" } { "uid" = "root" } { "gid" = "root" } { "age" = "10d" } { "argument" = "-" } } { "2" { "type" = "L" } { "path" = "/tmp/foobar" } { "mode" = "-" } { "uid" = "-" } { "gid" = "-" } { "age" = "-" } { "argument" = "/dev/null" } }

Tree for complex and trailing_ws

> 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 = "+ : ALL : LOCAL + : root : localhost.localdomain - : root : 127.0.0.1 .localdomain + : root alice@server1 @admins (wheel) : cron crond :0 tty1 tty2 tty3 tty4 tty5 tty6 # IP v6 support + : john foo : 2001:4ca0:0:101::1 2001:4ca0:0:101::/64 # Except + : ALL EXCEPT john @wheel : ALL EXCEPT LOCAL .win.tue.nl # No spaces +:root:.example.com "

A full configuration

> let conf = " ACTIVEMQ_HOME=/usr/share/activemq ACTIVEMQ_BASE=${ACTIVEMQ_HOME} "

> let conf = "<beans> <broker xmlns=\"http://activemq.apache.org/schema/core\" brokerName=\"localhost\" dataDirectory=\"${activemq.data}\"> <transportConnectors> <transportConnector name=\"openwire\" uri=\"tcp://0.0.0.0:61616\"/> </transportConnectors> </broker> </beans> "

> let conf = "# Cell Aliases are meant to act like symlinks like '/afs/openafs.org -> oao' # in root.afs, so sites relying on such a link for their cell can use dynroot. # These aliases are set with 'fs newalias', or read from # /usr/vice/etc/CellAlias # # Formatting for /usr/vice/etc/CellAlias is in the form # <target> <alias> # an example would be # fnal.gov/common/usr usr fnal.gov fnal fnal.gov/files fnal-files "

A full configuration

> let conf = "# /etc/anacrontab: configuration file for anacron SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # These replace cron's entries 1 5 cron.daily nice run-parts --report /etc/cron.daily 7 10 cron.weekly nice run-parts --report /etc/cron.weekly @monthly 15 cron.monthly nice run-parts --report /etc/cron.monthly "

> let conf = "Direct 8 TV;SES ASTRA:12551:VC56M2O0S0:S19.2E:22000:1111=2:1112=fra@3:1116:0:12174:1:1108:0 :FAVORIS Direct 8 TV;SES ASTRA:12551:VC56M2O0S0:S19.2E:22000:1111=2:1112=fra@3:1116:0:12175:1:1108:0 TF1;CSAT:11895:VC34M2O0S0:S19.2E:27500:171=2:124=fra+spa@4,125=eng@4;126=deu@4:53:500,1811,1863,100:8371:1:1074:0 :TNT TF1;SMR6:690167:I999B8C999D999M998T999G999Y0:T:27500:120=2:130=fra@3,131=eng@3,133=qad@3:140;150=fra,151=eng:0:1537:8442:6:0 ; this is a comment France 5;GR1:618167:I999B8C999D999M998T999G999Y0:T:27500:374+320=2:330=fra@3,331=qad@3:0;340=fra:0:260:8442:1:0 CANAL+ FAMILY HD:12012:VC23M5O35S1:S19.2E:27500:164=27:0;98=@106,99=eng@106:0;45=fra+fra:1811,500,1863,100,9C4,9C7,9AF:8825:1:1080:0 "

A full configuration file

> let conf = "# Sample configuration file for the CUPS scheduler. LogLevel warn # Deactivate CUPS' internal logrotating, as we provide a better one, especially # LogLevel debug2 gets usable now MaxLogSize 0 # Administrator user group... SystemGroup lpadmin # Only listen for connections from the local machine. Listen localhost:631 Listen /var/run/cups/cups.sock # Show shared printers on the local network. BrowseOrder allow,deny BrowseAllow all BrowseLocalProtocols CUPS dnssd BrowseAddress @LOCAL # Default authentication type, when authentication is required... DefaultAuthType Basic # Web interface setting... WebInterface Yes # Restrict access to the server... <Location /> Order allow,deny </Location> # Restrict access to the admin pages... <Location /admin> Order allow,deny </Location> # Restrict access to configuration files... <Location /admin/conf> AuthType Default Require user @SYSTEM Order allow,deny </Location> # Set the default printer/job policies... <Policy default> # Job/subscription privacy... JobPrivateAccess default JobPrivateValues default SubscriptionPrivateAccess default SubscriptionPrivateValues default # Job-related operations must be done by the owner or an administrator... <Limit Create-Job Print-Job Print-URI Validate-Job> Order deny,allow </Limit> <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document> Require user @OWNER @SYSTEM Order deny,allow </Limit> # All administration operations require an administrator to authenticate... <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default CUPS-Get-Devices> AuthType Default Require user @SYSTEM Order deny,allow </Limit> # All printer operations require a printer operator to authenticate... <Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs> AuthType Default Require user @SYSTEM Order deny,allow </Limit> # Only the owner or an administrator can cancel or authenticate a job... <Limit Cancel-Job CUPS-Authenticate-Job> Require user @OWNER @SYSTEM Order deny,allow </Limit> <Limit All> Order deny,allow </Limit> </Policy> # Set the authenticated printer/job policies... <Policy authenticated> # Job/subscription privacy... JobPrivateAccess default JobPrivateValues default SubscriptionPrivateAccess default SubscriptionPrivateValues default # Job-related operations must be done by the owner or an administrator... <Limit Create-Job Print-Job Print-URI Validate-Job> AuthType Default Order deny,allow </Limit> <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document> AuthType Default Require user @OWNER @SYSTEM Order deny,allow </Limit> # All administration operations require an administrator to authenticate... <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default> AuthType Default Require user @SYSTEM Order deny,allow </Limit> # All printer operations require a printer operator to authenticate... <Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs> AuthType Default Require user @SYSTEM Order deny,allow </Limit> # Only the owner or an administrator can cancel or authenticate a job... <Limit Cancel-Job CUPS-Authenticate-Job> AuthType Default Require user @OWNER @SYSTEM Order deny,allow </Limit> <Limit All> Order deny,allow </Limit> </Policy> "

> let conf = "<?xml version=\"1.0\"?> <!DOCTYPE fontconfig SYSTEM \"fonts.dtd\"> <!-- /etc/fonts/fonts.conf file to configure system font access --> <fontconfig> <!-- DO NOT EDIT THIS FILE. IT WILL BE REPLACED WHEN FONTCONFIG IS UPDATED. LOCAL CHANGES BELONG IN 'local.conf'. The intent of this standard configuration file is to be adequate for most environments. If you have a reasonably normal environment and have found problems with this configuration, they are probably things that others will also want fixed. Please submit any problems to the fontconfig bugzilla system located at fontconfig.org Note that the normal 'make install' procedure for fontconfig is to replace any existing fonts.conf file with the new version. Place any local customizations in local.conf which this file references. Keith Packard --> <!-- Font directory list --> <dir>/usr/share/fonts</dir> <dir>/usr/X11R6/lib/X11/fonts</dir> <dir>/usr/local/share/fonts</dir> <dir>~/.fonts</dir> <!-- Accept deprecated 'mono' alias, replacing it with 'monospace' --> <match target=\"pattern\"> <test qual=\"any\" name=\"family\"> <string>mono</string> </test> <edit name=\"family\" mode=\"assign\"> <string>monospace</string> </edit> </match> <!-- Accept alternate 'sans serif' spelling, replacing it with 'sans-serif' --> <match target=\"pattern\"> <test qual=\"any\" name=\"family\"> <string>sans serif</string> </test> <edit name=\"family\" mode=\"assign\"> <string>sans-serif</string> </edit> </match> <!-- Accept deprecated 'sans' alias, replacing it with 'sans-serif' --> <match target=\"pattern\"> <test qual=\"any\" name=\"family\"> <string>sans</string> </test> <edit name=\"family\" mode=\"assign\"> <string>sans-serif</string> </edit> </match> <!-- Load local system customization file --> <include ignore_missing=\"yes\">conf.d</include> <!-- Font cache directory list --> <cachedir>/var/cache/fontconfig</cachedir> <cachedir>~/.fontconfig</cachedir> <config> <!-- These are the default Unicode chars that are expected to be blank in fonts. All other blank chars are assumed to be broken and won't appear in the resulting charsets --> <blank> <int>0x0020</int> <!-- SPACE --> <int>0x00A0</int> <!-- NO-BREAK SPACE --> <int>0x00AD</int> <!-- SOFT HYPHEN --> <int>0x034F</int> <!-- COMBINING GRAPHEME JOINER --> <int>0x0600</int> <!-- ARABIC NUMBER SIGN --> <int>0x0601</int> <!-- ARABIC SIGN SANAH --> <int>0x0602</int> <!-- ARABIC FOOTNOTE MARKER --> <int>0x0603</int> <!-- ARABIC SIGN SAFHA --> <int>0x06DD</int> <!-- ARABIC END OF AYAH --> <int>0x070F</int> <!-- SYRIAC ABBREVIATION MARK --> <int>0x115F</int> <!-- HANGUL CHOSEONG FILLER --> <int>0x1160</int> <!-- HANGUL JUNGSEONG FILLER --> <int>0x1680</int> <!-- OGHAM SPACE MARK --> <int>0x17B4</int> <!-- KHMER VOWEL INHERENT AQ --> <int>0x17B5</int> <!-- KHMER VOWEL INHERENT AA --> <int>0x180E</int> <!-- MONGOLIAN VOWEL SEPARATOR --> <int>0x2000</int> <!-- EN QUAD --> <int>0x2001</int> <!-- EM QUAD --> <int>0x2002</int> <!-- EN SPACE --> <int>0x2003</int> <!-- EM SPACE --> <int>0x2004</int> <!-- THREE-PER-EM SPACE --> <int>0x2005</int> <!-- FOUR-PER-EM SPACE --> <int>0x2006</int> <!-- SIX-PER-EM SPACE --> <int>0x2007</int> <!-- FIGURE SPACE --> <int>0x2008</int> <!-- PUNCTUATION SPACE --> <int>0x2009</int> <!-- THIN SPACE --> <int>0x200A</int> <!-- HAIR SPACE --> <int>0x200B</int> <!-- ZERO WIDTH SPACE --> <int>0x200C</int> <!-- ZERO WIDTH NON-JOINER --> <int>0x200D</int> <!-- ZERO WIDTH JOINER --> <int>0x200E</int> <!-- LEFT-TO-RIGHT MARK --> <int>0x200F</int> <!-- RIGHT-TO-LEFT MARK --> <int>0x2028</int> <!-- LINE SEPARATOR --> <int>0x2029</int> <!-- PARAGRAPH SEPARATOR --> <int>0x202A</int> <!-- LEFT-TO-RIGHT EMBEDDING --> <int>0x202B</int> <!-- RIGHT-TO-LEFT EMBEDDING --> <int>0x202C</int> <!-- POP DIRECTIONAL FORMATTING --> <int>0x202D</int> <!-- LEFT-TO-RIGHT OVERRIDE --> <int>0x202E</int> <!-- RIGHT-TO-LEFT OVERRIDE --> <int>0x202F</int> <!-- NARROW NO-BREAK SPACE --> <int>0x205F</int> <!-- MEDIUM MATHEMATICAL SPACE --> <int>0x2060</int> <!-- WORD JOINER --> <int>0x2061</int> <!-- FUNCTION APPLICATION --> <int>0x2062</int> <!-- INVISIBLE TIMES --> <int>0x2063</int> <!-- INVISIBLE SEPARATOR --> <int>0x206A</int> <!-- INHIBIT SYMMETRIC SWAPPING --> <int>0x206B</int> <!-- ACTIVATE SYMMETRIC SWAPPING --> <int>0x206C</int> <!-- INHIBIT ARABIC FORM SHAPING --> <int>0x206D</int> <!-- ACTIVATE ARABIC FORM SHAPING --> <int>0x206E</int> <!-- NATIONAL DIGIT SHAPES --> <int>0x206F</int> <!-- NOMINAL DIGIT SHAPES --> <int>0x2800</int> <!-- BRAILLE PATTERN BLANK --> <int>0x3000</int> <!-- IDEOGRAPHIC SPACE --> <int>0x3164</int> <!-- HANGUL FILLER --> <int>0xFEFF</int> <!-- ZERO WIDTH NO-BREAK SPACE --> <int>0xFFA0</int> <!-- HALFWIDTH HANGUL FILLER --> <int>0xFFF9</int> <!-- INTERLINEAR ANNOTATION ANCHOR --> <int>0xFFFA</int> <!-- INTERLINEAR ANNOTATION SEPARATOR --> <int>0xFFFB</int> <!-- INTERLINEAR ANNOTATION TERMINATOR --> </blank> <!-- Rescan configuration every 30 seconds when FcFontSetList is called --> <rescan> <int>30</int> </rescan> </config> </fontconfig> "

> let conf = "# Set the maximum number of FUSE mounts allowed to non-root users. mount_max = 1000 # Allow non-root users to specify the 'allow_other' or 'allow_root' user_allow_other "

> let conf = "# /etc/inputrc - global inputrc for libreadline # See readline(3readline) and `info rluserman' for more information. # Be 8 bit clean. set input-meta on set output-meta on # To allow the use of 8bit-characters like the german umlauts, uncomment # the line below. However this makes the meta key not work as a meta key, # which is annoying to those which don't need to type in 8-bit characters. # set convert-meta off # try to enable the application keypad when it is called. Some systems # need this to enable the arrow keys. # set enable-keypad on # see /usr/share/doc/bash/inputrc.arrows for other codes of arrow keys # do not bell on tab-completion # set bell-style none # set bell-style visible # some defaults / modifications for the emacs mode $if mode=emacs # allow the use of the Home/End keys

> let conf = "################ # iSNS settings ################ # Address of iSNS server isns.address = 127.0.0.1 isns.port = 3260 # ************* # CHAP Settings # ************* # To enable CHAP authentication set node.session.auth.authmethod # to CHAP. The default is None. node.session.auth.authmethod = CHAP # To set a CHAP username and password for initiator # authentication by the target(s), uncomment the following lines: node.session.auth.username = someuser1 node.session.auth.password = somep$31#$^&7! # To enable CHAP authentication for a discovery session to the target # set discovery.sendtargets.auth.authmethod to CHAP. The default is None. discovery.sendtargets.auth.authmethod = CHAP # To set a discovery session CHAP username and password for the initiator # authentication by the target(s), uncomment the following lines: discovery.sendtargets.auth.username = someuser3

A full configuration

> let conf = "### Comment admin: admin, admin "

> let conf = "# Comment admin readwrite "

> let conf = "# Comment admin activemq "

> let conf = "! This is a comment ! Configuration File for keepalived global_defs { ! this is who emails will go to on alerts notification_email { admins@example.com fakepager@example.com ! add a few more email addresses here if you would like } notification_email_from admins@example.com smtp_server 127.0.0.1 ! I use the local machine to relay mail smtp_connect_timeout 30 ! each load balancer should have a different ID ! this will be used in SMTP alerts, so you should make ! each router easily identifiable lvs_id LVS_EXAMPLE_01 vrrp_mcast_group4 224.0.0.18 vrrp_mcast_group6 ff02::12 } vrrp_sync_group VG1 { group { inside_network # name of vrrp_instance (below) outside_network # One for each moveable IP. } notify /usr/bin/foo notify_master /usr/bin/foo smtp_alert } vrrp_instance VI_1 { state MASTER interface eth0 track_interface { eth0 # Back eth1 # DMZ } track_script { check_apache2 # weight = +2 si ok, 0 si nok } garp_master_delay 5 garp_master_repeat 5 garp_master_refresh 5 garp_master_refresh_repeat 5 priority 50 advert_int 2 authentication { auth_type PASS auth_pass mypass } virtual_ipaddress { 10.234.66.146/32 dev eth0 } lvs_sync_daemon_interface eth0 ha_suspend notify_master \"/svr/scripts/notify_master.sh\" notify_backup \"/svr/scripts/notify_backup.sh\" notify_fault \"/svr/scripts/notify_fault.sh\" notify_stop \"/svr/scripts/notify_stop.sh\" notify_deleted \"/svr/scripts/notify_deleted.sh\" notify \"/svr/scripts/notify.sh\" ! each virtual router id must be unique per instance name! virtual_router_id 51 ! MASTER and BACKUP state are determined by the priority ! even if you specify MASTER as the state, the state will ! be voted on by priority (so if your state is MASTER but your ! priority is lower than the router with BACKUP, you will lose ! the MASTER state) ! I make it a habit to set priorities at least 50 points apart ! note that a lower number is lesser priority - lower gets less vote priority 150 ! how often should we vote, in seconds? advert_int 1 ! send an alert when this instance changes state from MASTER to BACKUP smtp_alert ! this authentication is for syncing between failover servers ! keepalived supports PASS, which is simple password ! authentication ! or AH, which is the IPSec authentication header. ! I don't use AH ! yet as many people have reported problems with it authentication { auth_type PASS auth_pass example } ! these are the IP addresses that keepalived will setup on this ! machine. Later in the config we will specify which real ! servers are behind these IPs ! without this block, keepalived will not setup and takedown the ! any IP addresses virtual_ipaddress { 192.168.1.11 10.234.66.146/32 dev vlan933 # parse it well ! and more if you want them } use_vmac vmac_xmit_base native_ipv6 dont_track_primary preempt_delay mcast_src_ip 192.168.1.1 unicast_src_ip 192.168.1.1 unicast_peer { 192.168.1.2 192.168.1.3 } } virtual_server 192.168.1.11 22 { delay_loop 6 ! use round-robin as a load balancing algorithm lb_algo rr ! we are doing NAT lb_kind NAT nat_mask 255.255.255.0 protocol TCP sorry_server 10.20.40.30 22 ! there can be as many real_server blocks as you need real_server 10.20.40.10 22 { ! if we used weighted round-robin or a similar lb algo, ! we include the weight of this server weight 1 ! here is a health checker for this server. ! we could use a custom script here (see the keepalived docs) ! but we will just make sure we can do a vanilla tcp connect() ! on port 22 ! if it fails, we will pull this realserver out of the pool ! and send email about the removal TCP_CHECK { connect_timeout 3 connect_port 22 } } } virtual_server_group DNS_1 { 192.168.0.1 22 10.234.55.22-25 36 10.45.58.59/32 27 } vrrp_script chk_apache2 { # Requires keepalived-1.1.13 script \"killall -0 apache2\" # faster interval 2 # check every 2 seconds weight 2 # add 2 points of prio if OK fall 5 raise 5 } ! that's all "

A full configuration file

> let conf = "[koji] ;configuration for koji cli tool ;url of XMLRPC server server = http://localhost/kojihub ;url of web interface weburl = http://localhost/koji ;url of package download site pkgurl = http://localhost/packages ;path to the koji top directory topdir = /mnt/koji ;configuration for SSL athentication ;client certificate cert = /etc/pki/koji/kojiadm.pem ;certificate of the CA that issued the client certificate ca = /etc/pki/koji/koji_ca_cert.crt ;certificate of the CA that issued the HTTP server certificate serverca = /etc/pki/koji/koji_ca_cert.crt " test Koji.lns get conf = { "section" = "koji" { } { "#comment" = "configuration for koji cli tool" } { } { "#comment" = "url of XMLRPC server" } { "server" = "http://localhost/kojihub" } { } { "#comment" = "url of web interface" } { "weburl" = "http://localhost/koji" } { } { "#comment" = "url of package download site" } { "pkgurl" = "http://localhost/packages" } { } { "#comment" = "path to the koji top directory" } { "topdir" = "/mnt/koji" } { } { "#comment" = "configuration for SSL athentication" } { } { "#comment" = "client certificate" } { "cert" = "/etc/pki/koji/kojiadm.pem" } { } { "#comment" = "certificate of the CA that issued the client certificate" } { "ca" = "/etc/pki/koji/koji_ca_cert.crt" } { } { "#comment" = "certificate of the CA that issued the HTTP server certificate" } { "serverca" = "/etc/pki/koji/koji_ca_cert.crt" } }

A full koji.conf

> let conf = "include /etc/ld.so.conf.d/*.conf # libc default configuration /usr/local/lib hwcap 1 nosegneg "

> let conf = "# Generated by LVM2: date contents = \"Text Format Volume Group\" version = 1 description = \"Created *after* executing 'eek'\" creation_host = \"eek\" # Linux eek creation_time = 6666666666 # eeeek VG1 { id = \"uuid-uuid-uuid-uuid\" seqno = 2 status = [\"RESIZEABLE\", \"READ\", \"WRITE\"] extent_size = 8192 # 4 Megabytes max_lv = 0 max_pv = 0 process_priority = -18 physical_volumes { pv0 { id = \"uuid-uuid-uuid-uuid\" device = \"/dev/sda6\" # Hint only status = [\"ALLOCATABLE\"] pe_start = 123 pe_count = 123456 # many Gigabytes } } logical_volumes { LogicalEek { id = \"uuid-uuid-uuid-uuid\" status = [\"READ\", \"WRITE\", \"VISIBLE\"] segment_count = 1 segment1 { start_extent = 0 extent_count = 123456 # beaucoup Gigabytes type = \"striped\" stripe_count = 1 # linear stripes = [ \"pv0\", 0 ] } } } } " test LVM.int get "5" = { "int" = "5" }

A full configuration file

> let conf = "port = 27017 fork = true pidfilepath = /var/run/mongodb/mongodb.pid logpath = /var/log/mongodb/mongodb.log dbpath =/var/lib/mongodb journal = true nohttpinterface = true "

> let conf = "[connection] id=wifoobar uuid=16fa8830-cf15-4523-8c1f-c6c635246855 permissions=user:foo:; type=802-11-wireless [802-11-wireless] ssid=wifoobar mode=infrastructure mac-address=11:00:99:33:33:AA security=802-11-wireless-security [802-11-wireless-security] key-mgmt=none wep-key0=123abc123abc [ipv4] method=auto [ipv6] method=auto [vpn] NAT Traversal Mode=natt DPD idle timeout (our side)=0\n"

> let conf = "CLOUD_DOMAIN=\"example.com\" VALID_GEAR_SIZES=\"small,medium\" DEFAULT_MAX_GEARS=\"100\" DEFAULT_GEAR_CAPABILITIES=\"small\" DEFAULT_GEAR_SIZE=\"small\" MONGO_HOST_PORT=\"localhost:27017\" MONGO_USER=\"openshift\" MONGO_PASSWORD=\"mooo\" MONGO_DB=\"openshift_broker_dev\" MONGO_SSL=\"false\" ENABLE_USAGE_TRACKING_DATASTORE=\"false\" ENABLE_USAGE_TRACKING_AUDIT_LOG=\"false\" USAGE_TRACKING_AUDIT_LOG_FILE=\"/var/log/openshift/broker/usage.log\" ENABLE_ANALYTICS=\"false\" ENABLE_USER_ACTION_LOG=\"true\" USER_ACTION_LOG_FILE=\"/var/log/openshift/broker/user_action.log\" AUTH_PRIVKEYFILE=\"/etc/openshift/server_priv.pem\" AUTH_PRIVKEYPASS=\"\" AUTH_PUBKEYFILE=\"/etc/openshift/server_pub.pem\" AUTH_RSYNC_KEY_FILE=\"/etc/openshift/rsync_id_rsa\" AUTH_SCOPE_TIMEOUTS=\"session=1.days|7.days, *=1.months|6.months\" ENABLE_MAINTENANCE_MODE=\"false\" MAINTENANCE_NOTIFICATION_FILE=\"/etc/openshift/outage_notification.txt\" DOWNLOAD_CARTRIDGES_ENABLED=\"false\" "

> let conf = "Listen 127.0.0.1:8080 User apache Group apache include /etc/httpd/conf.d/ruby193-passenger.conf PassengerUser apache PassengerMaxPoolSize 80 PassengerMinInstances 2 PassengerPreStart http://127.0.0.1:8080/ PassengerUseGlobalQueue off RackBaseURI /broker PassengerRuby /var/www/openshift/broker/script/broker_ruby <Directory /var/www/openshift/broker/httpd/root/broker> Options -MultiViews </Directory> "

> let conf = "[ {\"quickstart\": { \"id\": \"1\", \"name\":\"CakePHP\", \"website\":\"http://cakephp.org/\", \"initial_git_url\":\"git://github.com/openshift/cakephp-example.git\", \"cartridges\":[\"php-5.4\",\"mysql-5.1\"], \"summary\":\"CakePHP is a rapid development framework for PHP which uses commonly known design patterns like Active Record, Association Data Mapping, Front Controller and MVC.\", \"tags\":[\"php\",\"cakephp\",\"framework\"], \"admin_tags\":[] }}, {\"quickstart\": { \"id\": \"2\", \"name\":\"Django\", \"website\":\"https://www.djangoproject.com/\", \"initial_git_url\":\"git://github.com/openshift/django-example.git\", \"cartridges\":[\"python-2.7\"], \"summary\":\"A high-level Python web framework that encourages rapid development and clean, pragmatic design. Administrator user name and password are written to $OPENSHIFT_DATA_DIR/CREDENTIALS.\", \"tags\":[\"python\",\"django\",\"framework\"], \"admin_tags\":[] }}, {\"quickstart\":{ \"id\": \"4\", \"name\":\"Drupal\", \"website\":\"http://drupal.org/\", \"initial_git_url\":\"git://github.com/openshift/drupal-example.git\", \"cartridges\":[\"php-5.4\",\"mysql-5.1\"], \"summary\":\"An open source content management platform written in PHP powering millions of websites and applications. It is built, used, and supported by an active and diverse community of people around the world. Administrator user name and password are written to $OPENSHIFT_DATA_DIR/CREDENTIALS.\", \"tags\":[\"php\",\"drupal\",\"wiki\",\"framework\",\"instant_app\"], \"admin_tags\":[] }}, {\"quickstart\":{ \"id\": \"6\", \"name\":\"Ruby on Rails\", \"website\":\"http://rubyonrails.org/\", \"initial_git_url\":\"git://github.com/openshift/rails-example.git\", \"cartridges\":[\"ruby-1.9\",\"mysql-5.1\"], \"summary\":\"An open source web framework for Ruby that is optimized for programmer happiness and sustainable productivity. It lets you write beautiful code by favoring convention over configuration.\", \"tags\":[\"ruby\",\"rails\",\"framework\"], \"admin_tags\":[] }}, {\"quickstart\":{ \"id\": \"8\", \"name\":\"WordPress\", \"website\":\"http://wordpress.org\", \"initial_git_url\":\"git://github.com/openshift/wordpress-example.git\", \"cartridges\":[\"php-5.4\",\"mysql-5.1\"], \"summary\":\"A semantic personal publishing platform written in PHP with a MySQL back end, focusing on aesthetics, web standards, and usability. Administrator user name and password are written to $OPENSHIFT_DATA_DIR/CREDENTIALS.\", \"tags\":[\"php\",\"wordpress\",\"blog\",\"framework\",\"instant_app\"], \"admin_tags\":[] }} ]"

> 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 firstname_lastname@example.com discard: .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 conf = "data_directory = '/var/lib/postgresql/8.4/main' # use data in another directory hba_file = '/etc/postgresql/8.4/main/pg_hba.conf' # host-based authentication file ident_file = '/etc/postgresql/8.4/main/pg_ident.conf' # ident configuration file # If external_pid_file is not explicitly set, no extra PID file is written. external_pid_file = '/var/run/postgresql/8.4-main.pid' # write an extra PID file listen_addresses = 'localhost' # what IP address(es) to listen on; port = 5432 # (change requires restart) max_connections = 100 # (change requires restart) superuser_reserved_connections = 3 # (change requires restart) unix_socket_directory = '/var/run/postgresql' # (change requires restart) unix_socket_group = '' # (change requires restart) unix_socket_permissions = 0777 # begin with 0 to use octal notation # (change requires restart) bonjour_name = '' # defaults to the computer name authentication_timeout = 1min # 1s-600s ssl = true # (change requires restart) ssl_ciphers = 'ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH' # allowed SSL ciphers ssl_renegotiation_limit = 512MB # amount of data between renegotiations password_encryption = on db_user_namespace = off search_path = '\"$user\",public' # schema names default_tablespace = '' # a tablespace name, '' uses the default temp_tablespaces = '' # a list of tablespace names, '' uses datestyle = 'iso, mdy' intervalstyle = 'postgres' timezone = unknown # actually, defaults to TZ environment "

A full configuration file

> let conf = "# Internet (IP) protocols ip 0 IP # internet protocol, pseudo protocol number #hopopt 0 HOPOPT # IPv6 Hop-by-Hop Option [RFC1883] icmp 1 ICMP # internet control message protocol igmp 2 IGMP # Internet Group Management tp++ 39 TP++ # TP++ Transport Protocol a/n 107 A/N # Active Networks "

> let conf = "# ftpmaster allow * by key 74BF771E allow sections 'desktop/*' by anybody allow sections 'gforge/*' and binaries contain 'bzr' or not source '*melanie*'|'katya' by any key "

A full configuration

> let conf = "# Red Hat Subscription Manager Configuration File: # Unified Entitlement Platform Configuration [server] # Server hostname: hostname = subscription.rhn.redhat.com # Server prefix: prefix = /subscription # Server port: port = 443 # Set to 1 to disable certificate validation: insecure = 0 # Set the depth of certs which should be checked # when validating a certificate ssl_verify_depth = 3 # an http proxy server to use proxy_hostname = # port for http proxy server proxy_port = # user name for authenticating to an http proxy, if needed proxy_user = # password for basic http proxy auth, if needed proxy_password = [rhsm] # Content base URL: baseurl= https://cdn.redhat.com # Server CA certificate location: ca_cert_dir = /etc/rhsm/ca/ # Default CA cert to use when generating yum repo configs: repo_ca_cert = %(ca_cert_dir)sredhat-uep.pem # Where the certificates should be stored productCertDir = /etc/pki/product entitlementCertDir = /etc/pki/entitlement consumerCertDir = /etc/pki/consumer # Manage generation of yum repositories for subscribed content: manage_repos = 1 # Refresh repo files with server overrides on every yum command full_refresh_on_yum = 0 # If set to zero, the client will not report the package profile to # the subscription management service. report_package_profile = 1 # The directory to search for subscription manager plugins pluginDir = /usr/share/rhsm-plugins # The directory to search for plugin configuration files pluginConfDir = /etc/rhsm/pluginconf.d [rhsmcertd] # Interval to run cert check (in minutes): certCheckInterval = 240 # Interval to run auto-attach (in minutes): autoAttachInterval = 1440 " test Rhsm.lns get conf = { "#comment" = "Red Hat Subscription Manager Configuration File:" } { } { "#comment" = "Unified Entitlement Platform Configuration" } { "server" { "#comment" = "Server hostname:" } { "hostname" = "subscription.rhn.redhat.com" } { } { "#comment" = "Server prefix:" } { "prefix" = "/subscription" } { } { "#comment" = "Server port:" } { "port" = "443" } { } { "#comment" = "Set to 1 to disable certificate validation:" } { "insecure" = "0" } { } { "#comment" = "Set the depth of certs which should be checked" } { "#comment" = "when validating a certificate" } { "ssl_verify_depth" = "3" } { } { "#comment" = "an http proxy server to use" } { "proxy_hostname" } { } { "#comment" = "port for http proxy server" } { "proxy_port" } { } { "#comment" = "user name for authenticating to an http proxy, if needed" } { "proxy_user" } { } { "#comment" = "password for basic http proxy auth, if needed" } { "proxy_password" } { } } { "rhsm" { "#comment" = "Content base URL:" } { "baseurl" = "https://cdn.redhat.com" } { } { "#comment" = "Server CA certificate location:" } { "ca_cert_dir" = "/etc/rhsm/ca/" } { } { "#comment" = "Default CA cert to use when generating yum repo configs:" } { "repo_ca_cert" = "%(ca_cert_dir)sredhat-uep.pem" } { } { "#comment" = "Where the certificates should be stored" } { "productCertDir" = "/etc/pki/product" } { "entitlementCertDir" = "/etc/pki/entitlement" } { "consumerCertDir" = "/etc/pki/consumer" } { } { "#comment" = "Manage generation of yum repositories for subscribed content:" } { "manage_repos" = "1" } { } { "#comment" = "Refresh repo files with server overrides on every yum command" } { "full_refresh_on_yum" = "0" } { } { "#comment" = "If set to zero, the client will not report the package profile to" } { "#comment" = "the subscription management service." } { "report_package_profile" = "1" } { } { "#comment" = "The directory to search for subscription manager plugins" } { "pluginDir" = "/usr/share/rhsm-plugins" } { } { "#comment" = "The directory to search for plugin configuration files" } { "pluginConfDir" = "/etc/rhsm/pluginconf.d" } { } } { "rhsmcertd" { "#comment" = "Interval to run cert check (in minutes):" } { "certCheckInterval" = "240" } { "#comment" = "Interval to run auto-attach (in minutes):" } { "autoAttachInterval" = "1440" } }

A full rhsm.conf

> let conf = "# rsyslog v5 configuration file $ModLoad imuxsock # provides support for local system logging (e.g. via logger command) $ModLoad imklog # provides kernel logging support (previously done by rklogd)

> let conf = "

> let conf = "# This is a comment word a line indented line with $péci@l cH@r2ct3rs "

> let conf = "# this is a comment mykey = myvalue # eol comment anotherkey = another value "

> let conf = "# this is a comment jarwin = JosephArwin manderso = MarkAnderson MarkusAndersonus users = @account nobody = * ;commented = SomeOne "

> let conf = "# This file configures various client-side behaviors. [auth] password-stores = gnome-keyring,kwallet store-passwords = no store-auth-creds = no [helpers] editor-cmd = /usr/bin/vim diff-cmd = /usr/bin/diff diff3-cmd = /usr/bin/diff3 diff3-has-program-arg = yes [tunnels] ssh = $SVN_SSH ssh -o ControlMaster=no rsh = /path/to/rsh -l myusername [miscellany] global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo *.rej *~ #*# .#* .*.swp .DS_Store # Set log-encoding to the default encoding for log messages log-encoding = latin1 use-commit-times = yes no-unlock = yes mime-types-file = /path/to/mime.types preserved-conflict-file-exts = doc ppt xls od? enable-auto-props = yes interactive-conflicts = no [auto-props] *.c = svn:eol-style=native *.cpp = svn:eol-style=native *.h = svn:eol-style=native *.dsp = svn:eol-style=CRLF *.dsw = svn:eol-style=CRLF *.sh = svn:eol-style=native;svn:executable *.txt = svn:eol-style=native *.png = svn:mime-type=image/png *.jpg = svn:mime-type=image/jpeg Makefile = svn:eol-style=native "

> let conf = "# Red Hat Update Agent config file. # Format: 1.0 debug[comment]=Whether or not debugging is enabled debug=0 systemIdPath[comment]=Location of system id systemIdPath=/etc/sysconfig/rhn/systemid serverURL[comment]=Remote server URL (use FQDN) #serverURL=https://xmlrpc.rhn.redhat.com/XMLRPC serverURL=https://enter.your.server.url.here/XMLRPC hostedWhitelist[comment]=RHN Hosted URL's hostedWhitelist= enableProxy[comment]=Use a HTTP Proxy enableProxy=0 versionOverride[comment]=Override the automatically determined system version versionOverride= httpProxy[comment]=HTTP proxy in host:port format, e.g. squid.redhat.com:3128 httpProxy= noReboot[comment]=Disable the reboot actions noReboot=0 networkRetries[comment]=Number of attempts to make at network connections before giving up networkRetries=1 disallowConfChanges[comment]=Config options that can not be overwritten by a config update action disallowConfChanges=noReboot;sslCACert;useNoSSLForPackages;noSSLServerURL;serverURL;disallowConfChanges; sslCACert[comment]=The CA cert used to verify the ssl server sslCACert=/usr/share/rhn/RHNS-CA-CERT # Akamai does not support http protocol, therefore setting this option as side effect disable \"Location aware\" function useNoSSLForPackages[comment]=Use the noSSLServerURL for package, package list, and header fetching (disable Akamai) useNoSSLForPackages=0 retrieveOnly[comment]=Retrieve packages only retrieveOnly=0 skipNetwork[comment]=Skips network information in hardware profile sync during registration. skipNetwork=0 tmpDir[comment]=Use this Directory to place the temporary transport files tmpDir=/tmp writeChangesToLog[comment]=Log to /var/log/up2date which packages has been added and removed writeChangesToLog=0 stagingContent[comment]=Retrieve content of future actions in advance stagingContent=1 stagingContentWindow[comment]=How much forward we should look for future actions. In hours. stagingContentWindow=24 "

> let conf = "libdir = \"/usr/lib/vmware\" dhcpd.fullpath = \"/usr/bin/vmnet-dhcpd\" authd.fullpath = \"/usr/sbin/vmware-authd\" authd.client.port = \"902\" loop.fullpath = \"/usr/bin/vmware-loop\" vmware.fullpath = \"/usr/bin/vmware\" control.fullpath = \"/usr/bin/vmware-cmd\" serverd.fullpath = \"/usr/sbin/vmware-serverd\" wizard.fullpath = \"/usr/bin/vmware-wizard\" serverd.init.fullpath = \"/usr/lib/vmware/serverd/init.pl\" serverd.vpxuser = \"vpxuser\" serverd.snmpdconf.subagentenabled = \"TRUE\" template.useFlatDisks = \"TRUE\" autoStart.defaultStartDelay = \"60\" autoStart.enabled = \"True\" autoStart.defaultStopDelay = \"60\" "

> let conf_ace = "# comment with sharp [section1] test_ace = value # end of line comment test_ace = test_ace = \"value with spaces\" ; comment with colon "

> let conf_acf = "# comment with sharp [section1] test_acf = value test_acf = test_acf : value2 # end of line comment ; comment with colon "

> let conf_ade = "; a first comment with colon [section1] test_ade = value test_ade : value2 ; end of line comment ; comment with colon test_ade = "

> let conf_adf = "; a first comment with colon [section1] test_adf = value test_adf : value2 ; end of line comment ; comment with colon test_adf = "

> let conf_bce = "# comment with sharp [section1] test_bce = value # end of line comment ; comment with colon test_bce = "

> let conf_bcf = "# conf with sharp [section1] test_bcf = value # end of line comment ; comment with colon test_bcf = "

> let conf_bde = "; first comment with colon [section1] test_bde = value ; end of line comment ; comment with colon test_bde = "

> let conf_bdf = "; first comment with colon [section1] test_bdf = value ; end of line comment ; comment with colon test_bdf = "

> let conf_norealm = "### Comment admin: admin "

> let config = " # This is a comment webserver: { bar: { # A comment host: localhost port= 9000 default-server: true } foo: { host: localhost port = 10000 } } jruby-puppet: { # This setting determines where JRuby will look for gems. It is also # used by the `puppetserver gem` command line tool. gem-home: /var/lib/puppet/jruby-gems # (optional) path to puppet conf dir; if not specified, will use the puppet default master-conf-dir: /etc/puppet # (optional) path to puppet var dir; if not specified, will use the puppet default master-var-dir: /var/lib/puppet # (optional) maximum number of JRuby instances to allow; defaults to <num-cpus>+2 #max-active-instances: 1 } # CA-related settings certificate-authority: { # settings for the certificate_status HTTP endpoint certificate-status: { # this setting contains a list of client certnames who are whitelisted to # have access to the certificate_status endpoint. Any requests made to # this endpoint that do not present a valid client cert mentioned in # this list will be denied access. client-whitelist: [] } } os-settings: { ruby-load-path: [/usr/lib/ruby/vendor_ruby, /home/foo/ruby ] } \n"

> 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 config = "#### NOTICE #### # After manually editing any configuration settings in this file, # please run '/usr/local/cpanel/whostmgr/bin/whostmgr2 --updatetweaksettings' # to fully update your server's configuration. skipantirelayd=1 ionice_optimizefs=6 account_login_access=owner_root enginepl=cpanel.pl stats_log=/usr/local/cpanel/logs/stats_log cpaddons_notify_users=Allow users to choose apache_port=0.0.0.0:80 allow_server_info_status_from= system_diskusage_warn_percent=82.5500 maxemailsperhour email_send_limits_max_defer_fail_percentage default_archive-logs=1 SecurityPolicy::xml-api=1\n"

A sample cpanel.config file

> let config1 = "disk_config disk1 bootable:1 preserve_always:all always_format:5,6,7,8,9,10,11 primary - 0 - - primary - 0 - - logical / 0 ext3 rw,relatime,errors=remount-ro createopts=\"-c -j\" logical swap 0 swap sw logical /var 0 ext3 rw,relatime createopts=\"-m 5 -j\" logical /tmp 0 ext3 rw createopts=\"-m 0 -j\" logical /usr 0 ext3 rw,relatime createopts=\"-j\" logical /home 0 ext3 rw,relatime,nosuid,nodev createopts=\"-m 1 -j\" logical /wrk 0 ext3 rw,relatime,nosuid,nodev createopts=\"-m 1 -j\" logical /transfer 0 vfat rw "

Another full configuration

> let config2 = "disk_config /dev/sda primary - 250M - - primary - 20G - - logical - 8G - - logical - 4G - - logical - 5G - - disk_config /dev/sdb sameas:/dev/sda disk_config raid raid1 /boot sda1,sdb1 ext3 defaults raid1 / sda2,sdb2 ext3 defaults,errors=remount-ro raid1 swap sda5,sdb5 swap defaults raid1 /tmp sda6,sdb6 ext3 defaults createopts=\"-m 1\" raid1 /var sda7,sdb7 ext3 defaults "

Another full configuration

> let config3 = "disk_config /dev/sdb primary / 21750 ext3 defaults,errors=remount-ro primary /boot 250 ext3 defaults logical - 4000 - - logical - 2000 - - logical - 10- - - disk_config cryptsetup randinit swap swap /dev/sdb5 swap defaults tmp /tmp /dev/sdb6 ext2 defaults luks /local00 /dev/sdb7 ext3 defaults,errors=remount-ro createopts=\"-m 0\" "

Another full configuration

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

This lens applies to /etc/sysconfig/anaconda.
This lens applies to /etc/sos/sos.conf
This lens applies to /etc/security/access.conf.
This lens applies to relevant conf files located in /etc/activemq/ and the file /etc/activemq.conf .
This lens applies to relevant XML files located in /etc/activemq/ .
This lens applies to /etc/aliases.
This lens applies to /etc/anacrontab.
This lens applies to /etc/approx/approx.conf.
This lens applies to files in /etc/update-manager.
This lens applies to /etc/apt/apt.conf and /etc/apt/apt.conf.d/*.
This lens applies to SSH authorized_keys.
This lens also autoloads /etc/authselect/custom/*/*-auth and /etc/authselect/custom/*/postlogin because these files are PAM template files on machines that have authselect custom profiles.
This lens applies to /etc/auto.master, auto_master and /etc/auto.master.d/* files.
This lens applies to /etc/auto.*, auto_*, excluding known scripts.
This lens applies to /etc/backuppc/hosts.
This lens applies to /etc/boot.conf.
This lens applies to /etc/cachefilesd.conf.
This lens applies to most files in /etc/carbon/.
This lens applies to /etc/cgconfig.conf.
This lens applies to /etc/cgconfig.conf.
This lens applies to channels.conf files.
This lens applies to /etc/chrony.conf
This lens applies to /etc/clamd.conf, /etc/freshclam.conf and files in /etc/clamd.d.
cockpit.conf is a standard INI File.
This lens applies to collectd configuration files.
This lens applies to cpanel.config files.
This lens applies to /etc/cron.d/* and /etc/crontab.
This lens applies to /var/spool/cron*.
This lens applies to /etc/crypttab.
This lens applies to /etc/dhcpd3/dhcpd.conf.
This lens applies to /etc/dovecot/dovecot.conf and files in /etc/dovecot/conf.d/.
This lens applies to Erlang configuration files.
This lens applies to files in the /etc/fonts directory.
This lens applies to /etc/fuse.conf.
This lens applies to $HOME/.gtk-bookmarks.
This lens applies to /etc/host.conf.
This lens applies to /etc/hosts.{allow,deny}.
This lens applies to /etc/inputrc.
This lens applies to jetty-realm.properties files.
This lens applies to relevant conf files located in /etc/activemq/ The following views correspond to the related files:
This lens applies to relevant conf files located in /etc/activemq/ The following views correspond to the related files:
This lens applies to /etc/kdump.conf.
This lens applies to /etc/keepalived/keepalived.conf.
This lens applies to SSH known_hosts files.
/etc/koji.conf /etc/kojid/kojid.conf /etc/koji-hub/hub.conf /etc/kojira/kojira.conf /etc/kojiweb/web.conf /etc/koji-shadow/koji-shadow.conf
This lens applies to /etc/lightdm/*.conf.
This lens applies to /etc/login.defs.
This lens applies to files in /etc/lvm/backup and /etc/lvm/archive.
This lens applies to /etc/MailScanner/MailScanner.conf and files in /etc/MailScanner/conf.d/.
This lens applies to MailScanner rules files The format is described below:
This lens applies to /etc/mke2fs.conf.
This lens applies to /etc/modprobe.conf and /etc/modprobe.d/*.
This lens applies to /etc/modules.
This lens applies to /etc/mongodb.conf.
This lens applies to /etc/{nagios{3,},icinga}/*.cfg.
This lens applies to /etc/{nagios{3,},icinga}/objects/*.cfg.
This lens applies to /etc/netmasks and /etc/inet/netmasks.
This lens applies to /etc/NetworkManager/system-connections/*.
This lens applies to /etc/networks.
This lens applies to /etc/nginx/nginx.conf.
This lens applies to /etc/nslcd.conf.
This lens applies to /etc/nsswitch.conf.
This lens applies to /etc/ntpd.conf.
This lens autoloads /etc/pam.d/* for service specific files.
This lens applies to /etc/pam.conf.
This lens applies to /etc/pbuilderrc and /etc/pbuilder/pbuilderrc.
This lens applies to pg_hba.conf.
This lens applies to /etc/pgbouncer.ini See filter.
This lens applies to /etc/postfix/*passwd.
This lens applies to /etc/postfix/transport.
This lens applies to /etc/postfix/virtual.
This lens applies to postgresql.conf.
This lens applies to /etc/protocols.
This lens applies to /etc/puppet/auth.conf.
This lens applies to Puppetfiles.
This lens applies to /etc/baruwa See filter.
This lens applies to Rabbitmq configuration files.
This lens applies to reprepro’s uploaders files.
This lens applies to /etc/resolv.conf.
/etc/rhsm/rhsm.conf
This lens applies to /etc/rsyslog.conf.
This lens applies to /etc/schroot/schroot.conf.
This lens applies to /etc/selinux/semanage.conf.
This lens applies to /etc/services.
This lens applies to /etc/shells.
See filter.
This lens applies to /etc/asterisk/sip.conf.
This lens applies to /etc/system on Solaris.
This lens applies to conf files under /opt/splunk/etc and /opt/splunkforwarder/etc See filter.
This lens applies to /etc/ssh/sshd_config
This lens applies to /etc/sudoers.
This lens applies to /etc/sysconfig/network-scripts/route-*
This lens applies to /etc/sysctl.conf and /etc/sysctl.d/*.
This lens applies to /etc/syslog.conf.
This lens applies to /lib/systemd/system/* and /etc/systemd/system/*.
This lens applies to /etc/tmpfiles.d/*.conf /usr/lib/tmpfiles.d/*.conf and /run/tmpfiles.d/*.conf.
This lens applies to TOML files.
This lens applies to Trapperkeeper webservice configuration files.
This lens applies to /etc/sysconfig/rhn/up2date.
This lens applies to /etc/updatedb.conf.
This lens applies to /etc/vfstab.
This lens applies to /etc/vmware/config.
This lens applies to /etc/X11/xorg.conf.
This lens applies to /etc/xymon/alerts.d/*.cfg and /etc/xymon/alerts.cfg.

> test Xml.content put "<a><b/></a>" after clear "/a/b" = "<a><b></b>\n</a>"

> let controller = ws . [ key ctrl_key . ws . store ctrl_value ]

> let correction_re = Rx.relinteger_noplus

should actually only match between -127000000 and 127000000
Parses cpanel.config
Parses /etc/cron.d/*, /etc/crontab
Parses /var/spool/cron/*

> let cronallow = "# Test comment # user1 another user2 "

Parses /etc/crypttab from the cryptsetup package.
Generic CSV lens collection

> let ctrl_key = /[^ \t\n\/]+/

> let ctrl_value = /[^ \t\n]+/

Parses cups configuration files
Close