OXIESEC PANEL
- Current Dir:
/
/
snap
/
certbot
/
4730
/
usr
/
share
/
augeas
/
lenses
/
dist
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
06/10/2025 09:51:14 PM
rwxr-xr-x
📄
access.aug
3.58 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
activemq_conf.aug
1.47 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
activemq_xml.aug
864 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
afs_cellalias.aug
1.56 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
aliases.aug
2.18 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
anaconda.aug
775 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
anacron.aug
2.49 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
approx.aug
1.26 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
apt_update_manager.aug
1.11 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
aptcacherngsecurity.aug
726 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
aptconf.aug
3.9 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
aptpreferences.aug
1.79 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
aptsources.aug
1.98 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
authinfo2.aug
1.44 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
authorized_keys.aug
1.84 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
authselectpam.aug
3.7 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
automaster.aug
3.31 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
automounter.aug
4.05 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
avahi.aug
1.38 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
backuppchosts.aug
1014 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
bbhosts.aug
4.24 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
bootconf.aug
3.65 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
build.aug
16.65 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
cachefilesd.aug
2 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
carbon.aug
1.54 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
ceph.aug
719 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
cgconfig.aug
3.37 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
cgrules.aug
2.38 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
channels.aug
3.84 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
chrony.aug
13.79 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
clamav.aug
1.72 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
cmdline.aug
506 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
cobblermodules.aug
398 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
cobblersettings.aug
2.24 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
cockpit.aug
1.96 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
collectd.aug
869 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
cpanel.aug
824 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
cron.aug
4.05 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
cron_user.aug
1.26 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
crypttab.aug
3.08 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
csv.aug
1.18 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
cups.aug
459 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
cyrus_imapd.aug
1.51 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
darkice.aug
773 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
debctrl.aug
3.61 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
desktop.aug
1.39 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
devfsrules.aug
619 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
device_map.aug
620 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
dhclient.aug
6.69 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
dhcpd.aug
20.88 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
dns_zone.aug
2.89 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
dnsmasq.aug
2.16 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
dovecot.aug
3.98 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
dpkg.aug
2.78 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
dput.aug
2.16 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
erlang.aug
4.33 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
ethers.aug
663 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
exports.aug
2.37 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
fai_diskconfig.aug
9.28 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
fail2ban.aug
1.79 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
fonts.aug
819 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
fstab.aug
1.23 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
fuse.aug
871 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
gdm.aug
1.8 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
getcap.aug
1.57 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
group.aug
1.66 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
grub.aug
11.05 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
grubenv.aug
508 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
gshadow.aug
2.19 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
gtkbookmarks.aug
855 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
host_conf.aug
1.9 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
hostname.aug
435 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
hosts.aug
485 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
hosts_access.aug
4.32 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
htpasswd.aug
1.02 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
httpd.aug
7.35 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
inetd.aug
6.22 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
inifile.aug
15.49 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
inittab.aug
780 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
inputrc.aug
1.62 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
interfaces.aug
4.62 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
iproute2.aug
323 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
iptables.aug
2.64 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
iscsid.aug
684 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
jaas.aug
1.57 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
jettyrealm.aug
1.52 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
jmxaccess.aug
1.35 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
jmxpassword.aug
1.34 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
json.aug
2.15 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
kdump.aug
3.06 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
keepalived.aug
10.73 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
known_hosts.aug
1.93 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
koji.aug
898 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
krb5.aug
6.98 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
ldif.aug
7.65 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
ldso.aug
1.06 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
lightdm.aug
1.75 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
limits.aug
2.02 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
login_defs.aug
615 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
logrotate.aug
4.23 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
logwatch.aug
1.44 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
lokkit.aug
2.16 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
lvm.aug
2.03 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
mailscanner.aug
1.66 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
mailscanner_rules.aug
2.84 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
masterpasswd.aug
4.36 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
mcollective.aug
1.09 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
mdadm_conf.aug
10.05 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
memcached.aug
1.24 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
mke2fs.aug
6.29 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
modprobe.aug
3.34 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
modules.aug
741 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
modules_conf.aug
1.04 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
mongodbserver.aug
1.17 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
monit.aug
2.13 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
multipath.aug
4.21 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
mysql.aug
1.95 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
nagioscfg.aug
2.09 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
nagiosobjects.aug
1.57 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
netmasks.aug
1.69 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
networkmanager.aug
2.18 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
networks.aug
1.09 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
nginx.aug
3.65 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
nrpe.aug
1.78 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
nslcd.aug
9.87 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
nsswitch.aug
2.33 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
ntp.aug
5.29 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
ntpd.aug
4.75 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
odbc.aug
1.42 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
opendkim.aug
3.1 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
openshift_config.aug
2.46 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
openshift_http.aug
1.03 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
openshift_quickstarts.aug
1.02 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
openvpn.aug
22.28 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
oz.aug
1.35 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
pagekite.aug
2.6 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
pam.aug
2.58 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
pamconf.aug
1.23 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
passwd.aug
3.52 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
pbuilder.aug
638 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
pg_hba.aug
2.97 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
pgbouncer.aug
1.43 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
php.aug
2.34 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
phpvars.aug
3.85 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
postfix_access.aug
771 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
postfix_main.aug
1.52 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
postfix_master.aug
1.9 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
postfix_passwordmap.aug
1.28 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
postfix_sasl_smtpd.aug
697 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
postfix_transport.aug
1.48 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
postfix_virtual.aug
1.32 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
postgresql.aug
2.1 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
properties.aug
2.3 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
protocols.aug
1.05 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
puppet.aug
1.52 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
puppet_auth.aug
1.95 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
puppetfile.aug
2.27 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
puppetfileserver.aug
3.12 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
pylonspaste.aug
2.3 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
pythonpaste.aug
1.99 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
qpid.aug
670 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
quote.aug
6.71 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
rabbitmq.aug
4.69 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
radicale.aug
1.48 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
rancid.aug
927 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
redis.aug
6.5 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
reprepro_uploaders.aug
5.47 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
resolv.aug
4.03 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
rhsm.aug
1.1 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
rmt.aug
788 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
rsyncd.aug
1.97 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
rsyslog.aug
3.27 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
rtadvd.aug
854 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
rx.aug
4.2 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
samba.aug
1.71 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
schroot.aug
1.79 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
securetty.aug
450 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
semanage.aug
1.02 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
sep.aug
1.28 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
services.aug
2.82 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
shadow.aug
2.35 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
shells.aug
745 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
shellvars.aug
12.02 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
shellvars_list.aug
1.74 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
simplelines.aug
1.13 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
simplevars.aug
1.4 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
sip_conf.aug
1.61 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
slapd.aug
5.2 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
smbusers.aug
781 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
solaris_system.aug
3.15 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
soma.aug
1.14 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
sos.aug
807 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
spacevars.aug
1.42 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
splunk.aug
1.64 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
squid.aug
15.95 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
ssh.aug
4.39 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
sshd.aug
4.74 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
sssd.aug
861 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
star.aug
941 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
strongswan.aug
1.63 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
stunnel.aug
2.21 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
subversion.aug
2.75 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
sudoers.aug
20.08 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
sysconfig.aug
2.49 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
sysconfig_route.aug
2.55 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
sysctl.aug
1.36 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
syslog.aug
7.33 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
systemd.aug
6 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
termcap.aug
1.03 KB
03/31/2024 05:41:49 PM
rw-r--r--
📁
tests
-
06/10/2025 09:51:14 PM
rwxr-xr-x
📄
thttpd.aug
1.31 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
tinc.aug
1.08 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
tmpfiles.aug
3.16 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
toml.aug
4.24 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
trapperkeeper.aug
4.01 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
tuned.aug
387 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
up2date.aug
2.21 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
updatedb.aug
1.13 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
util.aug
4.85 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
vfstab.aug
1.71 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
vmware_config.aug
702 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
vsftpd.aug
2.72 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
webmin.aug
1.23 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
wine.aug
1.92 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
xendconfsxp.aug
1.07 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
xinetd.aug
4.02 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
xml.aug
6.33 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
xorg.aug
10.43 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
xymon.aug
2.26 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
xymon_alerting.aug
6.11 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
yaml.aug
1.54 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
yum.aug
2.19 KB
03/31/2024 05:41:49 PM
rw-r--r--
Editing: mdadm_conf.aug
Close
(****************************************************************************** Mdadm_conf module for Augeas Author: Matthew Booth <mbooth@redhat.com> Copyright (C): 2011 Red Hat Inc. Reference: mdadm(5) config.c and policy.c from mdadm-3.2.2 License: This file is licensed under the LGPL v2+. This is a lens for /etc/mdadm.conf. It aims to parse every valid configuration file as of version 3.2.2, and many invalid ones too. This last point is a feature, not a bug! madm will generate warnings for invalid configuration which do not prevent correct operation of the tool. Wherever possible, we try to allow for this behaviour. Keywords in mdadm.conf are matched with a case-insensitive prefix match of at least 3 characters. Keys in key/value pairs are also matched case-insensitively, but require a full match. The exception is POLICY and PART-POLICY, where keys are matched case-sensitively. N.B. We can't use case-insensitive regular expressions in most places due to bug #147. *******************************************************************************) module Mdadm_conf = autoload xfm (****************************************************************************** * PRIMITIVES ******************************************************************************) let eol = Util.comment_or_eol let comment = Util.comment let empty = Util.empty let value = /[^ \t\n#]+/ let value_no_eq = /[^ \t\n#=]+/ let value_no_eq_sl = /[^ \t\n#=\/]+/ let continuation = /\n[ \t]+/ let space = /[ \t]+/ let value_sep = ( del ( continuation | space . continuation? ) " " | comment . del space " " ) (* We parse specific keys rather than having a catch-all owing to the varying case of the syntax. This means the user can rely on 'array/uuid' rather than additionally testing for 'array/UUID'. It would be good to have an additional catchall, but I haven't been able to make that work. *) let keyvalue (r:regexp) (lc:string) (uc:string) = [ del ( r . /=/ ) ( uc . "=" ) . label lc . store value ] let simplevalue (r:regexp) (lc:string) (uc:string) = [ del r uc . label lc . ( value_sep . [ label "value" . store value ] )* . eol ] (****************************************************************************** * DEVICES ******************************************************************************) let dev_re = /dev(i(ce?)?)?/i let dev_containers_re = /containers/i let dev_partitions_re = /partitions/i let dev_containers = [ del dev_containers_re "containers" . label "containers" ] let dev_partitions = [ del dev_partitions_re "partitions" . label "partitions" ] let dev_device = [ label "name". store ( value - (dev_containers_re | dev_partitions_re)) ] (* Strictly there must be at least 1 device, but we err on the side of parsing *) let dev_devices = ( value_sep . ( dev_containers | dev_partitions | dev_device ) )* let device = [ del dev_re "DEVICE" . label "device" . dev_devices . eol ] (****************************************************************************** * ARRAY ******************************************************************************) let array_re = /arr(ay?)?/i let arr_auto_re = /auto/i let arr_bitmap_re = /bitmap/i let arr_container_re = /container/i let arr_devices_re = /devices/i let arr_disks_re = /disks/i (* Undocumented *) let arr_level_re = /level/i let arr_member_re = /member/i let arr_metadata_re = /metadata/i let arr_name_re = /name/i let arr_num_devices_re = /num-devices/i let arr_spare_group_re = /spare-group/i let arr_spares_re = /spares/i let arr_super_minor_re = /super-minor/i let arr_uuid_re = /uuid/i let arr_devicename = [ store value_no_eq . label "devicename" ] let arr_auto = keyvalue arr_auto_re "auto" "AUTO" let arr_bitmap = keyvalue arr_bitmap_re "bitmap" "BITMAP" let arr_container = keyvalue arr_container_re "container" "CONTAINER" let arr_devices = keyvalue arr_devices_re "devices" "DEVICES" let arr_disks = keyvalue arr_disks_re "disks" "DISKS" let arr_level = keyvalue arr_level_re "level" "LEVEL" let arr_member = keyvalue arr_member_re "member" "MEMBER" let arr_metadata = keyvalue arr_metadata_re "metadata" "METADATA" let arr_name = keyvalue arr_name_re "name" "NAME" let arr_num_devices = keyvalue arr_num_devices_re "num-devices" "NUM-DEVICES" let arr_spare_group = keyvalue arr_spare_group_re "spare-group" "SPARE-GROUP" let arr_spares = keyvalue arr_spares_re "spares" "SPARES" let arr_super_minor = keyvalue arr_super_minor_re "super-minor" "SUPER-MINOR" let arr_uuid = keyvalue arr_uuid_re "uuid" "UUID" let arr_options = ( value_sep . ( arr_devicename | arr_auto | arr_bitmap | arr_container | arr_devices | arr_disks | arr_level | arr_member | arr_metadata | arr_name | arr_num_devices | arr_spare_group | arr_spares | arr_super_minor | arr_uuid ) )* let array = [ del array_re "ARRAY" . label "array" . arr_options . eol ] (****************************************************************************** * MAILADDR ******************************************************************************) let mailaddr_re = /mai(l(a(d(dr?)?)?)?)?/i (* We intentionally allow multiple mailaddr values here, even though this is invalid and would produce a warning. This is better than not parsing the file. *) let mailaddr = simplevalue mailaddr_re "mailaddr" "MAILADDR" (****************************************************************************** * MAILFROM ******************************************************************************) (* N.B. MAILFROM can only be abbreviated to 5 characters *) let mailfrom_re = /mailf(r(om?)?)?/i let mailfrom = [ del mailfrom_re "MAILFROM" . label "mailfrom" . ( value_sep . [ label "value" . store value ] )* . eol ] (****************************************************************************** * PROGRAM ******************************************************************************) let program_re = /pro(g(r(am?)?)?)?/i let program = simplevalue program_re "program" "PROGRAM" (****************************************************************************** * CREATE ******************************************************************************) let create_re = /cre(a(te?)?)?/i let cre_auto_re = /auto/i let cre_owner_re = /owner/i let cre_group_re = /group/i let cre_mode_re = /mode/i let cre_metadata_re = /metadata/i let cre_symlinks_re = /symlinks/i let cre_auto = keyvalue cre_auto_re "auto" "AUTO" let cre_group = keyvalue cre_group_re "group" "GROUP" let cre_metadata = keyvalue cre_metadata_re "metadata" "METADATA" let cre_mode = keyvalue cre_mode_re "mode" "MODE" let cre_owner = keyvalue cre_owner_re "owner" "OWNER" let cre_symlinks = keyvalue cre_symlinks_re "symlinks" "SYMLINKS" let cre_options = ( value_sep . ( arr_auto | cre_owner | cre_group | cre_mode | cre_metadata | cre_symlinks) )* let create = [ del create_re "CREATE" . label "create" . cre_options . eol ] (****************************************************************************** * HOMEHOST ******************************************************************************) let homehost_re = /hom(e(h(o(st?)?)?)?)?/i let homehost = simplevalue homehost_re "homehost" "HOMEHOST" (****************************************************************************** * AUTO ******************************************************************************) let auto_re = /auto?/i let aut_plus = [ key "+" . store value ] let aut_minus = [ key "-" . store value ] let aut_homehost = [ del /homehost/i "homehost" . label "homehost" ] let aut_list = ( value_sep . ( aut_plus | aut_minus | aut_homehost ) )* let auto = [ del auto_re "AUTO" . label "auto" . aut_list . eol ] (****************************************************************************** * POLICY and PART-POLICY ******************************************************************************) (* PART-POLICY is undocumented. A cursory inspection of the parsing code suggests it's parsed the same way as POLICY, but treated slightly differently thereafter. *) let policy_re = /pol(i(cy?)?)?/i let part_policy_re = /par(t(-(p(o(l(i(cy?)?)?)?)?)?)?)?/i (* Unlike everything else, policy keys are matched case sensitive. This means we don't have to mess around with explicit option matching, as the match string is fixed for a working configuration. *) let pol_option (act:string) = [ del ( act . "=" ) ( act . "=" ) . label act . store value ] let pol_options = ( value_sep . [ key value_no_eq_sl . del "=" "=" . store value ] )* let policy = [ del policy_re "POLICY" . label "policy" . pol_options . eol ] let part_policy = [ del part_policy_re "PART-POLICY" . label "part-policy" . pol_options . eol ] (****************************************************************************** * LENS ******************************************************************************) let lns = (comment | empty | device | array | mailaddr | mailfrom | program | create | homehost | auto | policy | part_policy )* let filter = incl "/etc/mdadm.conf" . incl "/etc/mdadm/mdadm.conf" let xfm = transform lns filter