Augeas Lens Index

T |
| table, Toml
| table_gen, Toml
| tag_spec, Sudoers
| tcp_check_field, Keepalived
| tcp_listen_options, Rabbitmq
| tempcomp, Chrony
| terminal, Grub
| time Cron Xymon_Alerting
| title Global puppetfileserver.aug sssd.aug Apt_Update_Manager Avahi Grub IniFile Oz Schroot Subversion Systemd
| title_label, IniFile
| top level sequence, Yaml
| tpid, Channels
| transport, Postfix_Transport
| trim, Host_Conf
| tuple, Erlang
| tuple3, Erlang
| type Automaster Known_Hosts Tmpfiles
U |
| uid MasterPasswd Passwd
| unmatched, Xymon_Alerting
| uri, Aptsources
| user Access Cron Pg_Hba
| user_alias, Sudoers
| user_allow_other, Fuse
| user_list, Access
| user_re, Access
| username, Postfix_Passwordmap
| users Rsyslog Syslog
V |
| val, LVM
| value, Erlang
| value_list Aliases Erlang
| value_sep, Grub
| value_to_eol, Grub
| variable, Inputrc
| version_pin, AptPreferences
| videoram, Xorg
| virtual_server, Keepalived
| virtual_server_field, Keepalived
| virtual_server_group, Keepalived
| virtual_server_group_field, Keepalived
| vpid, Channels
| vrrp_instance, Keepalived
| vrrp_instance_field, Keepalived
| vrrp_script, Keepalived
| vrrp_script_field, Keepalived
| vrrp_sync_group, Keepalived
| vrrp_sync_group_field, Keepalived
| vrrpd_conf, Keepalived
W |
| weight, Automounter
| weight_re, Ntpd
| word Aptsources BackupPCHosts BootConf Modules Nrpe Ntpd Postfix_Passwordmap Postfix_Virtual
| word_opt_quot, Postgresql
| word_quot, Postgresql
| ws, Xymon_Alerting
| ws_or_eol, Xymon_Alerting
X |
| xchg Build Test_Build
| xchgs Build Test_Build
| xfm, GtkBookmarks

> let table = table_gen "table" "[" "]" | table_gen "@table" "[[" "]]"

A table or array of tables

> let table_gen (name:string) (lbrack:string) (rbrack:string) = let title = Util.indent . label name . Util.del_str lbrack . store /[^]\r\n.]+(\.[^]\r\n.]+)*/ . Util.del_str rbrack . eol in [ title . (entry|empty|comment)* ]

A generic table

> let tag_spec = [ label "tag" . store /(NO)?(PASSWD|EXEC|SETENV)/ . sep_col ]

Tag specification for spec

> let tcp_check_field = let word_re = "bindto" in let num_re = /connect_(timeout|port)/ in field word_re sto_word | field num_re sto_num

> let tcp_listen_options = let value = Erlang.make_value Erlang.bare | Erlang.tuple Erlang.bare Erlang.bare in Erlang.list "tcp_listen_options" value

> let tempcomp = [ Util.indent . key "tempcomp" . space . [ label "sensorfile" . store path ] . space . [ label "interval" . store number ] . space . ( [ label "t0" . store number ] . space . [ label "k0" . store number ] . space . [ label "k1" . store number ] . space . [ label "k2" . store number ] | [ label "pointfile" . store path ] ) . eol ]

tempcomp has specific syntax

> let terminal = [ command "terminal" "" . ([ spc . switch /dumb|no-echo|no-edit|silent/ ] |[ spc . switch_arg /timeout|lines/ ])* . [ spc . key /console|serial|hercules/ ]* . eol ]

> let time = [ label "time" . minute . sep_spc . hour . sep_spc . dayofmonth . sep_spc . month . sep_spc . dayofweek ]

Time in the format “minute hour dayofmonth month dayofweek”

> let time = kw_word "TIME"

The time filter definition

> let title = IniFile.indented_title IniFile.record_re

Uses standard INI File title

> let title = IniFile.title Rx.word

> let title = IniFile.indented_title IniFile.record_re

> let title = del /title[ \t=]+/ "title " . value_to_eol . eol

> let title (kw:regexp) = Util.del_str "[" . key kw . Util.del_str "]". eol

Title for record.

> let title = IniFile.indented_title IniFile.record_re

> let title = IniFile.title IniFile.record_re

An IniFile.title

> let title = IniFile.title IniFile.entry_re

> let title = IniFile.title IniFile.record_re

An IniFile.title

> let title_label (name:string) (kw:regexp) = label name . Util.del_str "[" . store kw . Util.del_str "]". eol

Title for record.

> let tpid = let tpid_bylang = [ label "tpid_bylang" . store Rx.integer . (equal . langs)? ] in field_int "tpid" . ( semicol . Build.opt_list tpid_bylang comma )?

> let transport = [ label "transport" . (store Rx.word)? ] . colon . nexthop

> let trim = let trim_list = Build.opt_list [seq "trim" . store Rx.word] (del /[:;,]/ ":") in Build.key_value_line "trim" Sep.space trim_list

> let tuple (one:lens) (two:lens) = [ rspace lbrace . label "tuple" . [ label "value" . one ] . lrspace comma . [ label "value" . two ] . lspace rbrace ]

A tuple of values

> let tuple3 (one:lens) (two:lens) (three:lens) = [ rspace lbrace . label "tuple" . [ label "value" . one ] . lrspace comma . [ label "value" . two ] . lrspace comma . [ label "value" . three ] . lspace rbrace ]

A tuple of 3 values

> let type = Rx.word - /ldap/

yp, file, dir etc but not ldap

> let type = [ label "type" . store Rx.neg1 ]

Bits, exponent, and modulus are taken directly from the RSA host key; they can be obtained, for example, from /etc/ssh/ssh_host_key.pub.

> let type = /([fFwdDevqQpLcbCxXrRzZtThHaAm]|[fFwpLcbaA]\+)[-!=~^]*/

One letter.

> let uid = [ label "uid" . store integer . colon ]

pw_uid

> let uid = [ label "uid" . store integer . colon ]

pw_uid

> let unmatched = flag_filters_opt "UNMATCHED"

The unmatched recipient definition

> let uri = let protocol = /[a-z+]+:/ in let path = /\/[^] \t]*/ in let path_brack = /\[[^]]+\]\/?/ in protocol? . path | protocol . path_brack

> let user = [ label "user" . ( store user_re | store Rx.word . Util.del_str "@" . [ label "host" . store Rx.word ] ) ]

user can be a username, username@hostname or a group

> let user = [ label "user" . store Rx.word ]

> let user = comma_sep_list "user"

TODO: support for quoted strings

> let user_alias = alias_entry "User_Alias" "user" sto_to_com

User_Alias, see alias_field

> let user_allow_other = Build.flag_line "user_allow_other"

> let user_list = Build.opt_list (user|group|netgroup) Sep.space

A list of users or netgroups to apply the rule to

> let user_re = identifier_re - /[Ee][Xx][Cc][Ee][Pp][Tt]/

Regex for user/netgroup fields

> let username = [ label "username" . word ]

Map :omusrmsg: and a list of users, or a single *

> let users = label_opt_list_or "user" (store word) comma "*"

a list of users or a “*”

> let val = flat_literal | list

Any value that appears on the right hand side of an assignment

> let value (kw:regexp) (sto:lens) = [ rspace lbrace . key kw . lrspace comma . sto . lspace rbrace ]

A single value

> let value_list = Build.opt_list ([ label "value" . store destination]) comma

List of destinations

> let value_list (kw:regexp) (sto:lens) = list kw (make_value sto)

A list of seq entries

> let value_sep (dflt:string) = del /[ \t]*[ \t=][ \t]*/ dflt

> let value_to_eol = store /[^= \t\n][^\n]*[^= \t\n]|[^= \t\n]/

> let variable = [ Util.del_str "set" . Sep.space . key (Rx.word - "entry") . Sep.space . store Rx.word . Util.eol ]

An inputrc variable declaration

> let version_pin = pin_gen "version"

> let videoram = entry_int "VideoRam" /[vV]ideo[rR]am/

> let virtual_server = named_block_arg "virtual_server" "ip" "port" virtual_server_field

> let virtual_server_field = let num_re = "delay_loop" | "persistence_timeout" | "quorum" | "hysteresis" in let word_re = /lb_(algo|kind)/ | "nat_mask" | "protocol" | "persistence_granularity" | "virtualhost" in let flag_re = "ops" | "ha_suspend" | "alpha" | "omega" in let to_eol_re = /quorum_(up|down)/ in let ip_port_re = "sorry_server" in field num_re sto_num | field word_re sto_word | flag flag_re | field to_eol_re sto_to_eol | field ip_port_re ip_port | named_block_arg "real_server" "ip" "port" real_server_field

> let virtual_server_group = named_block "virtual_server_group" virtual_server_group_field

> let virtual_server_group_field = [ indent . label "vip" . [ ipaddr ] . sep_spc . [ label "port" . sto_num ] . comment_or_eol ]

> let vpid = let codec = [ equal . label "codec" . store Rx.integer ] in let vpid_entry (lbl:string) = [ label lbl . store Rx.integer . codec? ] in vpid_entry "vpid" . ( plus . vpid_entry "vpid_pcr" )?

> let vrrp_instance = named_block "vrrp_instance" vrrp_instance_field

> let vrrp_instance_field = let word_re = "state" | "interface" | "lvs_sync_daemon_interface" in let num_re = "virtual_router_id" | "priority" | "advert_int" | /garp_master_(delay|repeat|refresh|refresh_repeat)/ in let to_eol_re = /notify(_master|_backup|_fault|_stop|_deleted)?/ | /(mcast|unicast)_src_ip/ in let flag_re = "smtp_alert" | "nopreempt" | "ha_suspend" | "debug" | "use_vmac" | "vmac_xmit_base" | "native_ipv6" | "dont_track_primary" | "preempt_delay" in field word_re sto_word | field num_re sto_num | field to_eol_re sto_to_eol | flag flag_re | block "authentication" ( field /auth_(type|pass)/ sto_word ) | block "virtual_ipaddress" static_ipaddress_field | block /track_(interface|script)/ ( flag word ) | block "unicast_peer" static_ipaddress_field

> let vrrp_script = named_block "vrrp_script" vrrp_script_field

> let vrrp_script_field = let num_re = "interval" | "weight" | "fall" | "raise" in let to_eol_re = "script" in field to_eol_re sto_to_eol | field num_re sto_num

> let vrrp_sync_group = named_block "vrrp_sync_group" vrrp_sync_group_field

> let vrrp_sync_group_field = let to_eol_re = /notify(_master|_backup|_fault|_stop|_deleted)?/ in let flag_re = "smtp_alert" in field to_eol_re sto_to_eol | flag flag_re | block "group" [ indent . key word . comment_or_eol ]

> let vrrpd_conf = vrrp_sync_group | vrrp_instance | vrrp_script

contains subblocks of VRRP synchronization group(s) and VRRP instance(s)

> let weight = Rx.integer

> let weight_re = /10|[1-9]/

value between 1 and 10

> let word = /[^][# \n\t]+/

> let word = /[^#, \n\t\/]+/

> let word = Rx.word

> let word = /[^#, \n\t\/]+/

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

> let word = Rx.word

> let word = store /[A-Za-z0-9@_\+\*.-]+/

> let word = store /[A-Za-z0-9@\*.+=_-]+/

> let word_opt_quot = Quote.do_squote_opt (store word_opt_quot_re)

Storing a word_opt_quot_re, with or without quotes

> let word_quot = let esc_squot = /\\\\'/ in let no_quot = /[^#'\n]/ in let forbidden = word_opt_quot_re | number_re in let value = (no_quot|esc_squot)* - forbidden in Quote.do_squote (store value)

Anything other than word_opt_quot or number Quotes are mandatory

> let ws = Sep.space

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

> let xchg (m:regexp) (d:string) (l:string) = del m d . label l

Replace a pattern with a different label in the tree, thus emulating a key but allowing to replace the keyword with a different value than matched

> let xchg = [ Build.xchg Rx.space " " "space" ]

> let xchgs (m:string) (l:string) = xchg m m l

Same as xchg, but the pattern is the default string

> let xchgs = [ Build.xchgs " " "space" ]

> let xfm = transform lns (incl (Sys.getenv("HOME") . "/.gtk-bookmarks"))

Close