This is a simple “key value” setup
let cacheconfig = [ key (entry_key - nocull) . space . store entry_value . eol ]
let caid = let caid_entry = [ label "caid" . store Rx.word ] in Build.opt_list caid_entry comma
test Xml.cdata get cdata1 = { "#CDATA" = "testing" }
let cdata1 = "<![CDATA[testing]]>"
let chainloader = [ command "chainloader" "\t" . [ spc . switch "force" ]? . spc . store Rx.no_spaces . eol ]
pw_change
let change_date = [ label "change_date" . store integer? . colon ]
change-add = “add” SEP 1*attrval-spec
let change_add = [ attr_changetype "add" ] . ( sep_line* . attr_val_spec )+
“control:” FILL ldap-oid 0*1(1*SPACE (“true” / “false”)) 0*1(value-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 ]
change-delete = “add” SEP 1*attrval-spec
let change_delete = [ attr_changetype "delete" ]
change-modify = “modify” SEP *mod-spec
let change_modify = [ attr_changetype "modify" ] . ( sep_line* . [ change_modspec . sep_line* . sep_modspec ] )+
(“modrdn” / “moddn”) SEP newrdn/newsuperior/deleteoldrdn
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
change-modspec = add/delete/replace: AttributeDesc SEP *attrval-spec “-”
let change_modspec = attr_modspec . ( sep_line* . attr_val_spec )*
changerecord = “changetype:” FILL (changeadd/delete/modify/moddn)
let change_record = ( change_add | change_delete | change_modify | change_modrdn)
A subnet mask can be 0 to 32 bits
let cidr = /(3[012]|[12][0-9]|[0-9])/
A continued line with a backslash
let cl = /[ \t]*\\\\\n[ \t]*/
A cl or a opt_space
let cl_or_opt_space = cl | opt_space
Deletes a Rx.cl_or_opt_space and default to a single space
let cl_or_opt_space = del Rx.cl_or_opt_space " "
A cl or a space
let cl_or_space = cl | space
Deletes a Rx.cl_or_space and default to a single space
let cl_or_space = del Rx.cl_or_space " "
pw_class
let class = [ label "class" . sto_to_col? . colon ]
A list of variables to clear /!\ The manpage is not clear on the syntax
let clear = let name = [ label "name" . store name_re_colons ] in [ indent . key "#clear" . Sep.space . Build.opt_list name Sep.space . eol ]
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 )
Allows @ for netgroups, supports [ipv6] syntax
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?
A list of clients
let client_list = Build.opt_list ( client | client_file ) list_sep
Entries identified by the “client-output-buffer-limit” keyword can be found more than once.
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 ]
Can be a tuple `(nodes, node_type)` or simple `nodes`
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
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" } } }
Can be single value or `{pause_if_all_down, [nodes], ignore | autoheal}`
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
Server/Peer/Pool options without values
let cmd_flags = "auto_offline"|"iburst"|"noselect"|"offline"|"prefer" |"require"|"trust"|"xleave"|"burst"
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)
Server/Peer/Pool options with values
let cmd_options = "asymmetry" | "key" | /maxdelay((dev)?ratio)?/ | /(min|max)poll/ | /(min|max)samples/ | "maxsources" | "mindelay" | "offset" | "polltarget" | "port" | "presend" | "version"
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 = Build.opt_list cmnd_spec sep_com
this is the standard field separator “ : “
let colon = del (Rx.opt_space . ":" . Rx.opt_space) " : "
Separation between the alias and it’s destinations
let colon = del /[ \t]*:[ \t]*/ ":\t"
let colon = del /:[ \t]*/ ": "
Separation between selinux attributes
let colon = Sep.colon
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 ":"
Deletes a colon and default to it
let colon = sep_tab_opt . Util.del_str ":" . sep_tab_opt
let color =
The color filter definition
let color = kw_word "COLOR"
Combine three lenses
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
A minimalistic optional combination lens
let combine_three = let entry (k:string) = [ key k ] in Build.combine_three (entry "a") (entry "b") (entry "c")
Combine three lenses optionally (either a, b, c, or any of them, in any order)
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
A minimalistic optional combination lens
let combine_three_opt = let entry (k:string) = [ key k ] in Build.combine_three_opt (entry "a") (entry "b") (entry "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_opt_ord (a:lens) (b:lens) (c:lens) = combine_two_opt_ord a (combine_two_opt b c)
Combine three lenses, ensuring first lens is first (a followed by either b, c, in any order)
let combine_three_ord (a:lens) (b:lens) (c:lens) = combine_two_ord a (combine_two b c)
Combine two lenses
let combine_two (a:lens) (b:lens) = combine_two_ord a b | combine_two_ord b a
A minimalistic combination lens
let combine_two = let entry (k:string) = [ key k ] in Build.combine_two (entry "a") (entry "b")
Combine two lenses optionally (either a, b, or both, in any order)
let combine_two_opt (a:lens) (b:lens) = combine_two_opt_ord a b | combine_two_opt_ord b a
A minimalistic optional combination lens
let combine_two_opt = let entry (k:string) = [ key k ] in Build.combine_two_opt (entry "a") (entry "b")
Combine two lenses optionally, ensuring first lens is first (a, and optionally b)
let combine_two_opt_ord (a:lens) (b:lens) = a . b?
Combine two lenses, ensuring first lens is first
let combine_two_ord (a:lens) (b:lens) = a . b
Separation between multiple destinations
let comma = del /[ \t]*,[ \t]*(\n[ \t]+)?/ ", "
let comma = Sep.comma
let comma = Sep.comma
let comma = ","
let comma = Sep.comma
let comma = space_or_eol "," ", "
a comma, optionally preceded or followed by spaces or newlines
let comma = del /[ \t\n]*,[ \t\n]*/ ", "
let comma = Util.del_str ","
Deletes a comma and default to it
let comma = sep_tab_opt . Util.del_str "," . sep_tab_opt
let comma_list_re = "password-stores"
let comma_sep = /([ \t]|(\\\\\n))*,([ \t]|(\\\\\n))*/
let comma_sep = del /,[ \t]*/ ", "
Parses options for filesystems
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
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 let lns = [ label l . store word . value? ] in Build.opt_list lns comma
Parses options either for filesystems or autofs
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
a command can contain spaces, if enclosed in double quotes, the case without spaces is taken care with word
let command = /(\|([^", \t\n]+|"[^"\n]+"))|("\|[^"\n]+")/
let command = boot | echo | ls | machine | set | stty
Map commands started with “!”
let command = [ command_start . key commands . Sep.space . store Rx.fspath . eol ]
let command (kw:regexp) (indent:string) = Util.del_opt_ws indent . key kw
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 command_start = Util.del_str "!"
let commands = /include|include_try/
Only supports “#” as commentary
let comment = IniFile.comment "#" "#"
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
A comment, either comment_simple or comment_multi
let comment = comment_simple | 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]*/ "; "
from 4.2.1 of the upstream doc Chrony comments start with: !
let comment = Util.comment_generic /[ \t]*[!;#%][ \t]*/ "# "
let comment = Util.comment
let comment = Util.comment
let comment = Util.comment | [ del /#[ \t]*\r?\n/ "#\n" ]
Map comments in “#comment” nodes.
let comment = Util.comment
let comment = Util.comment_generic /%[ \t]*/ "% "
let comment = Util.comment
let comment = [ Util.indent . label "#comment" . del /#[ \t]*/ "# " . store comment_re . eol ]
Map comments into “#comment” nodes
let comment (pat:regexp) (default:string) = Util.comment_generic_seteol (Rx.opt_space . pat . Rx.opt_space) default eol
Map comments in “#comment” nodes
let comment = Util.comment_generic /[ \t]*[#!][ \t]*/ "# "
let comment = Util.comment_generic /#[ \t]*/ "# "
let comment = IniFile.comment IniFile.comment_re IniFile.comment_default
let comment = Util.comment
let comment = Util.comment
Nrpe comments must start at beginning of line
let comment = Util.comment_generic /#[ \t]*/ "# "
let comment = Util.comment
let comment = Util.comment
let comment = Util.comment
let comment = IniFile.comment "#" "#"
let comment = Util.comment_generic /[ \t]*[;#][ \t]*/ "# "
An IniFile.comment entry
let comment = IniFile.comment "#" "#"
let comment = Util.comment_generic /[ \t]*\*[ \t]*/ "* "
let comment = IniFile.comment_noindent "#" "#"
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 ]
let comment = Util.comment_generic /[ \t]*[#;][ \t]*/ "# "
Map comments into “#comment” nodes Can’t use Util.comment as #+ and #!
let comment_gen (space:regexp) (sto:regexp) = [ label "#comment" . del (Rx.opt_space . "#" . space) "# " . store sto . eol ]
Comments get mapped into “#comment” nodes.
test Xml.comment get "<!-- declarations for <head> & <body> -->" = { "#comment" = " declarations for <head> & <body> " }
Comments
let comment = Util.comment
A simple comment
let comment = IniFile.comment "#" "#"
let comment = Util.comment
Map comments into “#comment” nodes
let comment = comment_generic /[ \t]*#[ \t]*/ "# "
let comment = Util.comment
let comment = Util.comment
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 ";" ";"
A comment line, C-style
let comment_c_style = comment_generic /[ \t]*\/\/[ \t]*/ "// "
A comment line, C-style or hash
let comment_c_style_or_hash = comment_generic /[ \t]*((\/\/)|#)[ \t]*/ "// "
Default value for comment pattern
let comment_default = ";"
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 = 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) = 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 ]
A multiline comment, C-style
let comment_multi = Util.comment_multiline
A C-style multiline comment
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" ]
Map comments into “#comment” nodes, no indentation allowed
let comment_noindent (pat:regexp) (default:string) = Util.comment_generic_seteol (pat . Rx.opt_space) default eol
Map comments into “#comment” nodes, without indentation
let comment_noindent = comment_generic /#[ \t]*/ "# "
A comment_eol or eol
let comment_or_eol = comment_eol | (del /[ \t]*[#!]?\n/ "\n")
let comment_or_eol = Util.comment_or_eol
A comment_eol or eol
let comment_or_eol = comment_eol | (del /([ \t]+#\n|[ \t]*\n)/ "\n")
A comment_eol or eol, with an optional empty comment
let comment_or_eol = comment_eol | (del /[ \t]*(#[ \t]*)?\n/ "\n")
let comment_re = /([^ \t\n].*[^ \t\n]|[^ \t\n])/ - /# ## (Start|End) Default Options ##/
Default regexp for comment pattern
let comment_re = /[;#]/
A one-line comment, C-style
let comment_simple = Util.comment_c_style_or_hash
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 = /(!|[<=>]+|![<=>]+)/
A more complex example, comes from the manual
let complex = "#Type Path Mode UID GID Age Argument\nd /run/user 0755 root root 10d -\nL /tmp/foobar - - - - /dev/null\n"
Complex argument example.
let complex_arg = "t /run/screen - - - - user.name=\"John Smith\" security.SMACK64=screen\n"
Tree for complex_arg
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 and trailing_ws
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" } }
An “if” declaration, recursive
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 ]
A condition is an ‘and’ node, representing a union of condition_fields, listed under ‘or’ subnodes:
let condition = logic_construct_condition "or" condition_field
A single condition field is an ‘or’ node.
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 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_list = store "*" | logic_construct_condition "and" condition
let condition_re = "source" | "byhand" | "sections" | "binaries" | "architectures" | "distribution"
A full configuration
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 "
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> "
A full configuration
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 "
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 "
A full configuration file
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 "
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
A full configuration
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
let conf = "### Comment admin: admin, admin "
let conf = "# Comment admin readwrite "
let conf = "# Comment admin activemq "
A full configuration file
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 \"/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 koji.conf
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" } }
let conf = "include /etc/ld.so.conf.d/*.conf # libc default configuration /usr/local/lib hwcap 1 nosegneg "
A full configuration file
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" }
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 .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 "
A full configuration file
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 "
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 "
A full configuration
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 rhsm.conf
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" } }
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"
A top-level config
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)*
let config = Build.key_value_line_comment "config" sep_space (store /binary_indexes|yes|no/) comment
A sample cpanel.config file
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"
Another full configuration
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\" "
let configfile = [ command "configfile" "\t" . spc . store Rx.no_spaces . eol ]
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 ]
should actually only match between -127000000 and 127000000
let correction_re = Rx.relinteger_noplus
let cronallow = "# Test comment # user1 another user2 "
let ctrl_key = /[^ \t\n\/]+/
let ctrl_value = /[^ \t\n]+/