404

[ Avaa Bypassed ]




Upload:

Command:

botdev@18.220.140.173: ~ $
(*
Module: Build
   Generic functions to build lenses

Author: Raphael Pinson <raphink@gmail.com>

About: License
  This file is licensed under the LGPL v2+, like the rest of Augeas.

About: Reference
  This file provides generic functions to build Augeas lenses
*)


module Build =

let eol = Util.eol

(************************************************************************
 * Group:               GENERIC CONSTRUCTIONS
 ************************************************************************)

(************************************************************************
 * View: brackets
 *   Put a lens inside brackets
 *
 *   Parameters:
 *     l:lens   - the left bracket lens
 *     r: lens  - the right bracket lens
 *     lns:lens - the lens to put inside brackets
 ************************************************************************)
let brackets (l:lens) (r:lens) (lns:lens) = l . lns . r


(************************************************************************
 * Group:             LIST CONSTRUCTIONS
 ************************************************************************)

(************************************************************************
 * View: list
 *   Build a list of identical lenses separated with a given separator
 *   (at least 2 elements)
 *
 *   Parameters:
 *     lns:lens - the lens to repeat in the list
 *     sep:lens - the separator lens, which can be taken from the <Sep> module
 ************************************************************************)
let list (lns:lens) (sep:lens) = lns . ( sep . lns )+


(************************************************************************
 * View: opt_list
 *   Same as <list>, but there might be only one element in the list
 *
 *   Parameters:
 *     lns:lens - the lens to repeat in the list
 *     sep:lens - the separator lens, which can be taken from the <Sep> module
 ************************************************************************)
let opt_list (lns:lens) (sep:lens) = lns . ( sep . lns )*


(************************************************************************
 * Group:                   LABEL OPERATIONS
 ************************************************************************)

(************************************************************************
 * View: xchg
 *   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
 *
 *   Parameters:
 *     m:regexp - the pattern to match
 *     d:string - the default value when a node in created
 *     l:string - the label to apply for such nodes
 ************************************************************************)
let xchg (m:regexp) (d:string) (l:string) = del m d . label l

(************************************************************************
 * View: xchgs
 *   Same as <xchg>, but the pattern is the default string
 *
 *   Parameters:
 *     m:string - the string to replace, also used as default
 *     l:string - the label to apply for such nodes
 ************************************************************************)
let xchgs (m:string) (l:string) = xchg m m l


(************************************************************************
 * Group:                   SUBNODE CONSTRUCTIONS
 ************************************************************************)

(************************************************************************
 * View: key_value_line
 *   A subnode with a keyword, a separator and a storing lens,
 *   and an end of line
 *
 *   Parameters:
 *     kw:regexp - the pattern to match as key
 *     sep:lens  - the separator lens, which can be taken from the <Sep> module
 *     sto:lens  - the storing lens
 ************************************************************************)
let key_value_line (kw:regexp) (sep:lens) (sto:lens) =
                                   [ key kw . sep . sto . eol ]

(************************************************************************
 * View: key_value_line_comment
 *   Same as <key_value_line>, but allows to have a comment in the end of a line
 *   and an end of line
 *
 *   Parameters:
 *     kw:regexp    - the pattern to match as key
 *     sep:lens     - the separator lens, which can be taken from the <Sep> module
 *     sto:lens     - the storing lens
 *     comment:lens - the comment lens, which can be taken from <Util>
 ************************************************************************)
let key_value_line_comment (kw:regexp) (sep:lens) (sto:lens) (comment:lens) =
                                   [ key kw . sep . sto . (eol|comment) ]

(************************************************************************
 * View: key_value
 *   Same as <key_value_line>, but does not end with an end of line
 *
 *   Parameters:
 *     kw:regexp - the pattern to match as key
 *     sep:lens  - the separator lens, which can be taken from the <Sep> module
 *     sto:lens  - the storing lens
 ************************************************************************)
let key_value (kw: regexp) (sep:lens) (sto:lens) =
                                   [ key kw . sep . sto ]

(************************************************************************
 * View: key_ws_value
 *
 *   Store a key/value pair where key and value are separated by whitespace
 *   and the value goes to the end of the line. Leading and trailing
 *   whitespace is stripped from the value. The end of line is consumed by
 *   this lens
 *
 *   Parameters:
 *     kw:regexp - the pattern to match as key
 ************************************************************************)
let key_ws_value (kw:regexp) =
  key_value_line kw Util.del_ws_spc (store Rx.space_in)

(************************************************************************
 * View: flag
 *   A simple flag subnode, consisting of a single key
 *
 *   Parameters:
 *     kw:regexp - the pattern to match as key
 ************************************************************************)
let flag (kw:regexp) = [ key kw ]

(************************************************************************
 * View: flag_line
 *   A simple flag line, consisting of a single key
 *
 *   Parameters:
 *     kw:regexp - the pattern to match as key
 ************************************************************************)
let flag_line (kw:regexp) = [ key kw . eol ]


(************************************************************************
 * Group:                   BLOCK CONSTRUCTIONS
 ************************************************************************)

(************************************************************************
 * View: block_generic
 *   A block enclosed in brackets
 *
 *   Parameters:
 *     entry:lens                - the entry to be stored inside the block.
 *                                 This entry should include <Util.empty>
 *                                 or its equivalent if necessary.
 *     entry_noindent:lens       - the entry to be stored inside the block,
 *                                 without indentation.
 *                                 This entry should not include <Util.empty>
 *     entry_noeol:lens          - the entry to be stored inside the block,
 *                                 without eol.
 *                                 This entry should not include <Util.empty>
 *     entry_noindent_noeol:lens - the entry to be stored inside the block,
 *                                 without indentation or eol.
 *                                 This entry should not include <Util.empty>
 *     comment:lens              - the comment lens used in the block
 *     comment_noindent:lens     - the comment lens used in the block,
 *                                 without indentation.
 *     ldelim_re:regexp          - regexp for the left delimiter
 *     rdelim_re:regexp          - regexp for the right delimiter
 *     ldelim_default:string     - default value for the left delimiter
 *     rdelim_default:string     - default value for the right delimiter
 ************************************************************************)
let block_generic
     (entry:lens) (entry_noindent:lens)
     (entry_noeol:lens) (entry_noindent_noeol:lens)
     (comment:lens) (comment_noindent:lens)
     (ldelim_re:regexp) (rdelim_re:regexp)
     (ldelim_default:string) (rdelim_default:string) =
     let block_single = entry_noindent_noeol | comment_noindent
  in let block_start  = entry_noindent | comment_noindent
  in let block_middle = (entry | comment)*
  in let block_end    = entry_noeol | comment
  in del ldelim_re ldelim_default
     . ( ( block_start . block_middle . block_end )
       | block_single )
     . del rdelim_re rdelim_default

(************************************************************************
 * View: block_setdefault
 *   A block enclosed in brackets
 *
 *   Parameters:
 *     entry:lens - the entry to be stored inside the block.
 *                  This entry should not include <Util.empty>,
 *                  <Util.comment> or <Util.comment_noindent>,
 *                  should not be indented or finish with an eol.
 *     ldelim_re:regexp      - regexp for the left delimiter
 *     rdelim_re:regexp      - regexp for the left delimiter
 *     ldelim_default:string - default value for the left delimiter
 *     rdelim_default:string - default value for the right delimiter
 ************************************************************************)
let block_setdelim (entry:lens)
                     (ldelim_re:regexp)
                     (rdelim_re:regexp)
                     (ldelim_default:string)
                     (rdelim_default:string) =
    block_generic (Util.empty | Util.indent . entry . eol)
                  (entry . eol) (Util.indent . entry) entry
                  Util.comment Util.comment_noindent
                  ldelim_re rdelim_re
                  ldelim_default rdelim_default

(* Variable: block_ldelim_re *)
let block_ldelim_re = /[ \t\n]+\{[ \t\n]*/

(* Variable: block_rdelim_re *)
let block_rdelim_re = /[ \t\n]*\}/

(* Variable: block_ldelim_default *)
let block_ldelim_default = " {\n"

(* Variable: block_rdelim_default *)
let block_rdelim_default = "}"

(************************************************************************
 * View: block
 *   A block enclosed in brackets
 *
 *   Parameters:
 *     entry:lens - the entry to be stored inside the block.
 *                  This entry should not include <Util.empty>,
 *                  <Util.comment> or <Util.comment_noindent>,
 *                  should not be indented or finish with an eol.
 ************************************************************************)
let block (entry:lens) = block_setdelim entry
                         block_ldelim_re block_rdelim_re
                         block_ldelim_default block_rdelim_default

(* Variable: block_ldelim_newlines_re *)
let block_ldelim_newlines_re = /[ \t\n]*\{([ \t\n]*\n)?/

(* Variable: block_rdelim_newlines_re *)
let block_rdelim_newlines_re = /[ \t]*\}/

(* Variable: block_ldelim_newlines_default *)
let block_ldelim_newlines_default = "\n{\n"

(* Variable: block_rdelim_newlines_default *)
let block_rdelim_newlines_default = "}"

(************************************************************************
 * View: block_newline
 *   A block enclosed in brackets, with newlines forced
 *   and indentation defaulting to a tab.
 *
 *   Parameters:
 *     entry:lens - the entry to be stored inside the block.
 *                  This entry should not include <Util.empty>,
 *                  <Util.comment> or <Util.comment_noindent>,
 *                  should be indented and finish with an eol.
 ************************************************************************)
let block_newlines (entry:lens) (comment:lens) =
   del block_ldelim_newlines_re block_ldelim_newlines_default
 . ((entry | comment) . (Util.empty | entry | comment)*)?
 . del block_rdelim_newlines_re block_rdelim_newlines_default

(************************************************************************
 * View: block_newlines_spc
 *   A block enclosed in brackets, with newlines forced
 *   and indentation defaulting to a tab. The opening brace
 *   must be preceded by whitespace
 *
 *   Parameters:
 *     entry:lens - the entry to be stored inside the block.
 *                  This entry should not include <Util.empty>,
 *                  <Util.comment> or <Util.comment_noindent>,
 *                  should be indented and finish with an eol.
 ************************************************************************)
let block_newlines_spc (entry:lens) (comment:lens) =
   del (/[ \t\n]/ . block_ldelim_newlines_re) block_ldelim_newlines_default
 . ((entry | comment) . (Util.empty | entry | comment)*)?
 . del block_rdelim_newlines_re block_rdelim_newlines_default

(************************************************************************
 * View: named_block
 *   A named <block> enclosed in brackets
 *
 *   Parameters:
 *     kw:regexp  - the regexp for the block name
 *     entry:lens - the entry to be stored inside the block
 *                   this entry should not include <Util.empty>
 ************************************************************************)
let named_block (kw:regexp) (entry:lens) = [ key kw . block entry . eol ]


(************************************************************************
 * Group:               COMBINATORICS
 ************************************************************************)

(************************************************************************
 * View: combine_two_ord
 *   Combine two lenses, ensuring first lens is first
 *
 *   Parameters:
 *     a:lens - the first lens
 *     b:lens - the second lens
 ************************************************************************)
let combine_two_ord (a:lens) (b:lens) = a . b

(************************************************************************
 * View: combine_two
 *   Combine two lenses
 *
 *   Parameters:
 *     a:lens - the first lens
 *     b:lens - the second lens
 ************************************************************************)
let combine_two (a:lens) (b:lens) =
  combine_two_ord a b | combine_two_ord b a

(************************************************************************
 * View: combine_two_opt_ord
 *   Combine two lenses optionally, ensuring first lens is first
 *   (a, and optionally b)
 *
 *   Parameters:
 *     a:lens - the first lens
 *     b:lens - the second lens
 ************************************************************************)
let combine_two_opt_ord (a:lens) (b:lens) = a . b?

(************************************************************************
 * View: combine_two_opt
 *   Combine two lenses optionally
 *   (either a, b, or both, in any order)
 *
 *   Parameters:
 *     a:lens - the first lens
 *     b:lens - the second lens
 ************************************************************************)
let combine_two_opt (a:lens) (b:lens) =
  combine_two_opt_ord a b | combine_two_opt_ord b a

(************************************************************************
 * View: combine_three_ord
 *   Combine three lenses, ensuring first lens is first
 *   (a followed by either b, c, in any order)
 *
 *   Parameters:
 *     a:lens - the first lens
 *     b:lens - the second lens
 *     c:lens - the third lens
 ************************************************************************)
let combine_three_ord (a:lens) (b:lens) (c:lens) =
  combine_two_ord a (combine_two b c)

(************************************************************************
 * View: combine_three
 *   Combine three lenses
 *
 *   Parameters:
 *     a:lens - the first lens
 *     b:lens - the second lens
 *     c:lens - the third lens
 ************************************************************************)
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


(************************************************************************
 * View: combine_three_opt_ord
 *   Combine three lenses optionally, ensuring first lens is first
 *   (a followed by either b, c, or any of them, in any order)
 *
 *   Parameters:
 *     a:lens - the first lens
 *     b:lens - the second lens
 *     c:lens - the third lens
 ************************************************************************)
let combine_three_opt_ord (a:lens) (b:lens) (c:lens) =
  combine_two_opt_ord a (combine_two_opt b c)

(************************************************************************
 * View: combine_three_opt
 *   Combine three lenses optionally
 *   (either a, b, c, or any of them, in any order)
 *
 *   Parameters:
 *     a:lens - the first lens
 *     b:lens - the second lens
 *     c:lens - the third 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

Filemanager

Name Type Size Permission Actions
tests Folder 0755
access.aug File 3.58 KB 0644
activemq_conf.aug File 1.47 KB 0644
activemq_xml.aug File 864 B 0644
afs_cellalias.aug File 1.56 KB 0644
aliases.aug File 2.18 KB 0644
anacron.aug File 2.49 KB 0644
approx.aug File 1.26 KB 0644
apt_update_manager.aug File 1.11 KB 0644
aptcacherngsecurity.aug File 726 B 0644
aptconf.aug File 3.9 KB 0644
aptpreferences.aug File 1.79 KB 0644
aptsources.aug File 1.98 KB 0644
authorized_keys.aug File 1.84 KB 0644
automaster.aug File 3.31 KB 0644
automounter.aug File 4.05 KB 0644
avahi.aug File 1.38 KB 0644
backuppchosts.aug File 1014 B 0644
bbhosts.aug File 4.24 KB 0644
bootconf.aug File 3.65 KB 0644
build.aug File 16.65 KB 0644
cachefilesd.aug File 2 KB 0644
carbon.aug File 1.54 KB 0644
ceph.aug File 719 B 0644
cgconfig.aug File 3.37 KB 0644
cgrules.aug File 2.38 KB 0644
channels.aug File 3.84 KB 0644
chrony.aug File 12.7 KB 0644
clamav.aug File 1.68 KB 0644
cobblermodules.aug File 398 B 0644
cobblersettings.aug File 2.24 KB 0644
collectd.aug File 869 B 0644
cpanel.aug File 824 B 0644
cron.aug File 4.05 KB 0644
cron_user.aug File 1.26 KB 0644
crypttab.aug File 3.01 KB 0644
csv.aug File 1.18 KB 0644
cups.aug File 459 B 0644
cyrus_imapd.aug File 1.51 KB 0644
darkice.aug File 773 B 0644
debctrl.aug File 3.61 KB 0644
desktop.aug File 1.39 KB 0644
device_map.aug File 620 B 0644
dhclient.aug File 6.61 KB 0644
dhcpd.aug File 20.88 KB 0644
dns_zone.aug File 2.89 KB 0644
dnsmasq.aug File 2.16 KB 0644
dovecot.aug File 3.98 KB 0644
dpkg.aug File 2.78 KB 0644
dput.aug File 2.16 KB 0644
erlang.aug File 4.33 KB 0644
ethers.aug File 663 B 0644
exports.aug File 2.37 KB 0644
fai_diskconfig.aug File 9.28 KB 0644
fonts.aug File 819 B 0644
fstab.aug File 1.2 KB 0644
fuse.aug File 871 B 0644
gdm.aug File 1.8 KB 0644
getcap.aug File 1.57 KB 0644
group.aug File 1.66 KB 0644
grub.aug File 9.6 KB 0644
grubenv.aug File 508 B 0644
gshadow.aug File 2.19 KB 0644
gtkbookmarks.aug File 855 B 0644
host_conf.aug File 1.9 KB 0644
hostname.aug File 422 B 0644
hosts.aug File 485 B 0644
hosts_access.aug File 4.32 KB 0644
htpasswd.aug File 1.02 KB 0644
httpd.aug File 7.34 KB 0644
inetd.aug File 6.22 KB 0644
inifile.aug File 15.49 KB 0644
inittab.aug File 780 B 0644
inputrc.aug File 1.62 KB 0644
interfaces.aug File 4.62 KB 0644
iproute2.aug File 323 B 0644
iptables.aug File 2.64 KB 0644
iscsid.aug File 684 B 0644
jaas.aug File 1.57 KB 0644
jettyrealm.aug File 1.52 KB 0644
jmxaccess.aug File 1.35 KB 0644
jmxpassword.aug File 1.34 KB 0644
json.aug File 2.01 KB 0644
kdump.aug File 2.91 KB 0644
keepalived.aug File 10.7 KB 0644
known_hosts.aug File 1.93 KB 0644
koji.aug File 898 B 0644
krb5.aug File 6.13 KB 0644
ldif.aug File 7.65 KB 0644
ldso.aug File 1.06 KB 0644
lightdm.aug File 1.75 KB 0644
limits.aug File 2.02 KB 0644
login_defs.aug File 615 B 0644
logrotate.aug File 4.2 KB 0644
logwatch.aug File 1.44 KB 0644
lokkit.aug File 2.16 KB 0644
lvm.aug File 2.03 KB 0644
mailscanner.aug File 1.66 KB 0644
mailscanner_rules.aug File 2.84 KB 0644
masterpasswd.aug File 4.36 KB 0644
mcollective.aug File 1.09 KB 0644
mdadm_conf.aug File 10.05 KB 0644
memcached.aug File 1.24 KB 0644
mke2fs.aug File 4.67 KB 0644
modprobe.aug File 3.34 KB 0644
modules.aug File 741 B 0644
modules_conf.aug File 1.04 KB 0644
mongodbserver.aug File 1.17 KB 0644
monit.aug File 2.13 KB 0644
multipath.aug File 4.09 KB 0644
mysql.aug File 1.95 KB 0644
nagioscfg.aug File 2.09 KB 0644
nagiosobjects.aug File 1.57 KB 0644
netmasks.aug File 1.69 KB 0644
networkmanager.aug File 2 KB 0644
networks.aug File 1.09 KB 0644
nginx.aug File 3.47 KB 0644
nrpe.aug File 1.78 KB 0644
nslcd.aug File 9.87 KB 0644
nsswitch.aug File 2.29 KB 0644
ntp.aug File 5.29 KB 0644
ntpd.aug File 4.75 KB 0644
odbc.aug File 1.42 KB 0644
opendkim.aug File 3.08 KB 0644
openshift_config.aug File 2.46 KB 0644
openshift_http.aug File 1.03 KB 0644
openshift_quickstarts.aug File 1.02 KB 0644
openvpn.aug File 22.28 KB 0644
oz.aug File 1.35 KB 0644
pagekite.aug File 2.6 KB 0644
pam.aug File 2.24 KB 0644
pamconf.aug File 1.23 KB 0644
passwd.aug File 3.52 KB 0644
pbuilder.aug File 638 B 0644
pg_hba.aug File 2.97 KB 0644
pgbouncer.aug File 1.43 KB 0644
php.aug File 2.34 KB 0644
phpvars.aug File 3.85 KB 0644
postfix_access.aug File 771 B 0644
postfix_main.aug File 1.52 KB 0644
postfix_master.aug File 1.9 KB 0644
postfix_passwordmap.aug File 1.28 KB 0644
postfix_sasl_smtpd.aug File 697 B 0644
postfix_transport.aug File 1.48 KB 0644
postfix_virtual.aug File 1.32 KB 0644
postgresql.aug File 2.1 KB 0644
properties.aug File 2.3 KB 0644
protocols.aug File 1.05 KB 0644
puppet.aug File 1.52 KB 0644
puppet_auth.aug File 1.95 KB 0644
puppetfile.aug File 1.66 KB 0644
puppetfileserver.aug File 3.12 KB 0644
pylonspaste.aug File 2.3 KB 0644
pythonpaste.aug File 1.99 KB 0644
qpid.aug File 670 B 0644
quote.aug File 6.71 KB 0644
rabbitmq.aug File 4.69 KB 0644
radicale.aug File 1.48 KB 0644
rancid.aug File 927 B 0644
redis.aug File 4.6 KB 0644
reprepro_uploaders.aug File 5.47 KB 0644
resolv.aug File 3.87 KB 0644
rhsm.aug File 1.1 KB 0644
rmt.aug File 788 B 0644
rsyncd.aug File 1.97 KB 0644
rsyslog.aug File 2.66 KB 0644
rtadvd.aug File 854 B 0644
rx.aug File 4.06 KB 0644
samba.aug File 1.71 KB 0644
schroot.aug File 1.79 KB 0644
securetty.aug File 450 B 0644
sep.aug File 1.28 KB 0644
services.aug File 2.82 KB 0644
shadow.aug File 2.35 KB 0644
shells.aug File 745 B 0644
shellvars.aug File 11.68 KB 0644
shellvars_list.aug File 1.74 KB 0644
simplelines.aug File 1.13 KB 0644
simplevars.aug File 1.39 KB 0644
sip_conf.aug File 1.61 KB 0644
slapd.aug File 5.2 KB 0644
smbusers.aug File 781 B 0644
solaris_system.aug File 3.15 KB 0644
soma.aug File 1.14 KB 0644
spacevars.aug File 1.42 KB 0644
splunk.aug File 1.64 KB 0644
squid.aug File 15.95 KB 0644
ssh.aug File 3.66 KB 0644
sshd.aug File 4 KB 0644
sssd.aug File 861 B 0644
star.aug File 941 B 0644
stunnel.aug File 2.21 KB 0644
subversion.aug File 2.75 KB 0644
sudoers.aug File 19.98 KB 0644
sysconfig.aug File 2.49 KB 0644
sysconfig_route.aug File 2.55 KB 0644
sysctl.aug File 923 B 0644
syslog.aug File 7.24 KB 0644
systemd.aug File 5.7 KB 0644
termcap.aug File 1.03 KB 0644
thttpd.aug File 1.31 KB 0644
tmpfiles.aug File 3.03 KB 0644
trapperkeeper.aug File 4.01 KB 0644
tuned.aug File 387 B 0644
up2date.aug File 2.21 KB 0644
updatedb.aug File 1.13 KB 0644
util.aug File 4.85 KB 0644
vfstab.aug File 1.71 KB 0644
vmware_config.aug File 702 B 0644
vsftpd.aug File 2.72 KB 0644
webmin.aug File 1.23 KB 0644
wine.aug File 1.92 KB 0644
xendconfsxp.aug File 1.07 KB 0644
xinetd.aug File 4.02 KB 0644
xml.aug File 6.33 KB 0644
xorg.aug File 10.12 KB 0644
xymon.aug File 2.26 KB 0644
xymon_alerting.aug File 6.11 KB 0644
yaml.aug File 1.54 KB 0644
yum.aug File 2.19 KB 0644