Linux vps-61133.fhnet.fr 4.9.0-19-amd64 #1 SMP Debian 4.9.320-2 (2022-06-30) x86_64
Apache/2.4.25 (Debian)
Server IP : 93.113.207.21 & Your IP : 216.73.216.119
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
share /
augeas /
lenses /
dist /
Delete
Unzip
Name
Size
Permission
Date
Action
tests
[ DIR ]
drwxrwxrwx
2020-08-25 15:28
access.aug
3.58
KB
-rwxrwxrwx
2017-08-18 07:56
activemq_conf.aug
1.47
KB
-rwxrwxrwx
2017-08-18 07:56
activemq_xml.aug
864
B
-rwxrwxrwx
2017-08-18 07:56
afs_cellalias.aug
1.56
KB
-rwxrwxrwx
2017-08-18 07:56
aliases.aug
2.18
KB
-rwxrwxrwx
2017-08-18 07:56
anacron.aug
2.49
KB
-rwxrwxrwx
2017-08-18 07:56
approx.aug
1.26
KB
-rwxrwxrwx
2017-08-18 07:56
apt_update_manager.aug
1.11
KB
-rwxrwxrwx
2017-08-18 07:56
aptcacherngsecurity.aug
726
B
-rwxrwxrwx
2017-08-18 07:56
aptconf.aug
3.89
KB
-rwxrwxrwx
2017-08-18 07:56
aptpreferences.aug
1.79
KB
-rwxrwxrwx
2017-08-18 07:56
aptsources.aug
1.98
KB
-rwxrwxrwx
2017-08-18 07:56
authorized_keys.aug
1.84
KB
-rwxrwxrwx
2017-08-18 07:56
automaster.aug
3.31
KB
-rwxrwxrwx
2017-08-18 07:56
automounter.aug
4.05
KB
-rwxrwxrwx
2017-08-18 07:56
avahi.aug
1.38
KB
-rwxrwxrwx
2017-08-18 07:56
backuppchosts.aug
1014
B
-rwxrwxrwx
2017-08-18 07:56
bbhosts.aug
4.24
KB
-rwxrwxrwx
2017-08-18 07:56
bootconf.aug
3.65
KB
-rwxrwxrwx
2017-08-18 07:56
build.aug
16.65
KB
-rwxrwxrwx
2017-08-18 07:56
cachefilesd.aug
2
KB
-rwxrwxrwx
2017-08-18 07:56
carbon.aug
1.54
KB
-rwxrwxrwx
2017-08-18 07:56
cgconfig.aug
3.35
KB
-rwxrwxrwx
2017-08-18 07:56
cgrules.aug
2.38
KB
-rwxrwxrwx
2017-08-18 07:56
channels.aug
3.84
KB
-rwxrwxrwx
2017-08-18 07:56
chrony.aug
12.7
KB
-rwxrwxrwx
2017-08-18 07:56
clamav.aug
1.53
KB
-rwxrwxrwx
2017-08-18 07:56
cobblermodules.aug
398
B
-rwxrwxrwx
2017-08-18 07:56
cobblersettings.aug
2.24
KB
-rwxrwxrwx
2017-08-18 07:56
collectd.aug
869
B
-rwxrwxrwx
2017-08-18 07:56
cpanel.aug
824
B
-rwxrwxrwx
2017-08-18 07:56
cron.aug
4.05
KB
-rwxrwxrwx
2017-08-18 07:56
cron_user.aug
1.26
KB
-rwxrwxrwx
2017-08-18 07:56
crypttab.aug
3.01
KB
-rwxrwxrwx
2017-08-18 07:56
csv.aug
1.18
KB
-rwxrwxrwx
2017-08-18 07:56
cups.aug
459
B
-rwxrwxrwx
2017-08-18 07:56
cyrus_imapd.aug
1.51
KB
-rwxrwxrwx
2017-08-18 07:56
darkice.aug
773
B
-rwxrwxrwx
2017-08-18 07:56
debctrl.aug
3.61
KB
-rwxrwxrwx
2017-08-18 07:56
desktop.aug
1.39
KB
-rwxrwxrwx
2017-08-18 07:56
device_map.aug
620
B
-rwxrwxrwx
2017-08-18 07:56
dhclient.aug
6.61
KB
-rwxrwxrwx
2017-08-18 07:56
dhcpd.aug
20.88
KB
-rwxrwxrwx
2017-08-18 07:56
dns_zone.aug
2.89
KB
-rwxrwxrwx
2017-08-18 07:56
dnsmasq.aug
2.16
KB
-rwxrwxrwx
2017-08-18 07:56
dovecot.aug
3.86
KB
-rwxrwxrwx
2017-08-18 07:56
dpkg.aug
2.79
KB
-rwxrwxrwx
2017-08-18 07:56
dput.aug
2.16
KB
-rwxrwxrwx
2017-08-18 07:56
erlang.aug
4.33
KB
-rwxrwxrwx
2017-08-18 07:56
ethers.aug
663
B
-rwxrwxrwx
2017-08-18 07:56
exports.aug
2.37
KB
-rwxrwxrwx
2017-08-18 07:56
fai_diskconfig.aug
9.28
KB
-rwxrwxrwx
2017-08-18 07:56
fonts.aug
819
B
-rwxrwxrwx
2017-08-18 07:56
fstab.aug
1.2
KB
-rwxrwxrwx
2017-08-18 07:56
fuse.aug
871
B
-rwxrwxrwx
2017-08-18 07:56
gdm.aug
1.8
KB
-rwxrwxrwx
2017-08-18 07:56
group.aug
1.66
KB
-rwxrwxrwx
2017-08-18 07:56
grub.aug
9.53
KB
-rwxrwxrwx
2017-08-18 07:56
gshadow.aug
2.19
KB
-rwxrwxrwx
2017-08-18 07:56
gtkbookmarks.aug
855
B
-rwxrwxrwx
2017-08-18 07:56
host_conf.aug
1.9
KB
-rwxrwxrwx
2017-08-18 07:56
hostname.aug
422
B
-rwxrwxrwx
2017-08-18 07:56
hosts.aug
485
B
-rwxrwxrwx
2017-08-18 07:56
hosts_access.aug
4.32
KB
-rwxrwxrwx
2017-08-18 07:56
htpasswd.aug
1.02
KB
-rwxrwxrwx
2017-08-18 07:56
httpd.aug
5.12
KB
-rwxrwxrwx
2017-08-18 07:56
inetd.aug
6.22
KB
-rwxrwxrwx
2017-08-18 07:56
inifile.aug
15.49
KB
-rwxrwxrwx
2017-08-18 07:56
inittab.aug
780
B
-rwxrwxrwx
2017-08-18 07:56
inputrc.aug
1.62
KB
-rwxrwxrwx
2017-08-18 07:56
interfaces.aug
4.62
KB
-rwxrwxrwx
2017-08-18 07:56
iproute2.aug
323
B
-rwxrwxrwx
2017-08-18 07:56
iptables.aug
2.64
KB
-rwxrwxrwx
2017-08-18 07:56
iscsid.aug
684
B
-rwxrwxrwx
2017-08-18 07:56
jaas.aug
1.57
KB
-rwxrwxrwx
2017-08-18 07:56
jettyrealm.aug
1.52
KB
-rwxrwxrwx
2017-08-18 07:56
jmxaccess.aug
1.35
KB
-rwxrwxrwx
2017-08-18 07:56
jmxpassword.aug
1.34
KB
-rwxrwxrwx
2017-08-18 07:56
json.aug
2.01
KB
-rwxrwxrwx
2017-08-18 07:56
kdump.aug
2.91
KB
-rwxrwxrwx
2017-08-18 07:56
keepalived.aug
10.7
KB
-rwxrwxrwx
2017-08-18 07:56
known_hosts.aug
1.93
KB
-rwxrwxrwx
2017-08-18 07:56
koji.aug
898
B
-rwxrwxrwx
2017-08-18 07:56
krb5.aug
6.13
KB
-rwxrwxrwx
2017-08-18 07:56
ldif.aug
7.65
KB
-rwxrwxrwx
2017-08-18 07:56
ldso.aug
1.06
KB
-rwxrwxrwx
2017-08-18 07:56
lightdm.aug
1.75
KB
-rwxrwxrwx
2017-08-18 07:56
limits.aug
2.02
KB
-rwxrwxrwx
2017-08-18 07:56
login_defs.aug
615
B
-rwxrwxrwx
2017-08-18 07:56
logrotate.aug
4.2
KB
-rwxrwxrwx
2017-08-18 07:56
logwatch.aug
1.44
KB
-rwxrwxrwx
2017-08-18 07:56
lokkit.aug
2.16
KB
-rwxrwxrwx
2017-08-18 07:56
lvm.aug
2.03
KB
-rwxrwxrwx
2017-08-18 07:56
mailscanner.aug
1.66
KB
-rwxrwxrwx
2017-08-18 07:56
mailscanner_rules.aug
2.84
KB
-rwxrwxrwx
2017-08-18 07:56
masterpasswd.aug
4.36
KB
-rwxrwxrwx
2017-08-18 07:56
mcollective.aug
1.09
KB
-rwxrwxrwx
2017-08-18 07:56
mdadm_conf.aug
10.05
KB
-rwxrwxrwx
2017-08-18 07:56
memcached.aug
1.24
KB
-rwxrwxrwx
2017-08-18 07:56
mke2fs.aug
4.67
KB
-rwxrwxrwx
2017-08-18 07:56
modprobe.aug
3.34
KB
-rwxrwxrwx
2017-08-18 07:56
modules.aug
741
B
-rwxrwxrwx
2017-08-18 07:56
modules_conf.aug
1.04
KB
-rwxrwxrwx
2017-08-18 07:56
mongodbserver.aug
1.17
KB
-rwxrwxrwx
2017-08-18 07:56
monit.aug
2.13
KB
-rwxrwxrwx
2017-08-18 07:56
multipath.aug
4.09
KB
-rwxrwxrwx
2017-08-18 07:56
mysql.aug
1.95
KB
-rwxrwxrwx
2017-08-18 07:56
nagioscfg.aug
2.09
KB
-rwxrwxrwx
2017-08-18 07:56
nagiosobjects.aug
1.57
KB
-rwxrwxrwx
2017-08-18 07:56
netmasks.aug
1.69
KB
-rwxrwxrwx
2017-08-18 07:56
networkmanager.aug
2
KB
-rwxrwxrwx
2017-08-18 07:56
networks.aug
1.09
KB
-rwxrwxrwx
2017-08-18 07:56
nginx.aug
3.37
KB
-rwxrwxrwx
2017-08-18 07:56
nrpe.aug
1.78
KB
-rwxrwxrwx
2017-08-18 07:56
nsswitch.aug
2.27
KB
-rwxrwxrwx
2017-08-18 07:56
ntp.aug
5.25
KB
-rwxrwxrwx
2017-08-18 07:56
ntpd.aug
4.75
KB
-rwxrwxrwx
2017-08-18 07:56
odbc.aug
1.42
KB
-rwxrwxrwx
2017-08-18 07:56
opendkim.aug
3.08
KB
-rwxrwxrwx
2017-08-18 07:56
openshift_config.aug
2.46
KB
-rwxrwxrwx
2017-08-18 07:56
openshift_http.aug
1.03
KB
-rwxrwxrwx
2017-08-18 07:56
openshift_quickstarts.aug
1.02
KB
-rwxrwxrwx
2017-08-18 07:56
openvpn.aug
22.28
KB
-rwxrwxrwx
2017-08-18 07:56
pagekite.aug
2.6
KB
-rwxrwxrwx
2017-08-18 07:56
pam.aug
2.24
KB
-rwxrwxrwx
2017-08-18 07:56
pamconf.aug
1.23
KB
-rwxrwxrwx
2017-08-18 07:56
passwd.aug
3.52
KB
-rwxrwxrwx
2017-08-18 07:56
pbuilder.aug
638
B
-rwxrwxrwx
2017-08-18 07:56
pg_hba.aug
2.97
KB
-rwxrwxrwx
2017-08-18 07:56
pgbouncer.aug
1.43
KB
-rwxrwxrwx
2017-08-18 07:56
php.aug
2.34
KB
-rwxrwxrwx
2017-08-18 07:56
phpvars.aug
3.85
KB
-rwxrwxrwx
2017-08-18 07:56
postfix_access.aug
732
B
-rwxrwxrwx
2017-08-18 07:56
postfix_main.aug
1.46
KB
-rwxrwxrwx
2017-08-18 07:56
postfix_master.aug
1.84
KB
-rwxrwxrwx
2017-08-18 07:56
postfix_passwordmap.aug
1.23
KB
-rwxrwxrwx
2017-08-18 07:56
postfix_sasl_smtpd.aug
636
B
-rwxrwxrwx
2017-08-18 07:56
postfix_transport.aug
1.43
KB
-rwxrwxrwx
2017-08-18 07:56
postfix_virtual.aug
1.27
KB
-rwxrwxrwx
2017-08-18 07:56
postgresql.aug
2.1
KB
-rwxrwxrwx
2017-08-18 07:56
properties.aug
2.25
KB
-rwxrwxrwx
2017-08-18 07:56
protocols.aug
1.05
KB
-rwxrwxrwx
2017-08-18 07:56
puppet.aug
1.52
KB
-rwxrwxrwx
2017-08-18 07:56
puppet_auth.aug
1.95
KB
-rwxrwxrwx
2017-08-18 07:56
puppetfile.aug
1.66
KB
-rwxrwxrwx
2017-08-18 07:56
puppetfileserver.aug
3.12
KB
-rwxrwxrwx
2017-08-18 07:56
pylonspaste.aug
2.3
KB
-rwxrwxrwx
2017-08-18 07:56
pythonpaste.aug
1.99
KB
-rwxrwxrwx
2017-08-18 07:56
qpid.aug
670
B
-rwxrwxrwx
2017-08-18 07:56
quote.aug
6.71
KB
-rwxrwxrwx
2017-08-18 07:56
rabbitmq.aug
4.69
KB
-rwxrwxrwx
2017-08-18 07:56
radicale.aug
1.48
KB
-rwxrwxrwx
2017-08-18 07:56
redis.aug
4.6
KB
-rwxrwxrwx
2017-08-18 07:56
reprepro_uploaders.aug
5.47
KB
-rwxrwxrwx
2017-08-18 07:56
resolv.aug
3.85
KB
-rwxrwxrwx
2017-08-18 07:56
rhsm.aug
1.1
KB
-rwxrwxrwx
2017-08-18 07:56
rmt.aug
788
B
-rwxrwxrwx
2017-08-18 07:56
rsyncd.aug
1.97
KB
-rwxrwxrwx
2017-08-18 07:56
rsyslog.aug
2.46
KB
-rwxrwxrwx
2017-08-18 07:56
rx.aug
4.06
KB
-rwxrwxrwx
2017-08-18 07:56
samba.aug
1.71
KB
-rwxrwxrwx
2017-08-18 07:56
schroot.aug
1.79
KB
-rwxrwxrwx
2017-08-18 07:56
securetty.aug
450
B
-rwxrwxrwx
2017-08-18 07:56
sep.aug
1.28
KB
-rwxrwxrwx
2017-08-18 07:56
services.aug
2.82
KB
-rwxrwxrwx
2017-08-18 07:56
shadow.aug
2.35
KB
-rwxrwxrwx
2017-08-18 07:56
shells.aug
745
B
-rwxrwxrwx
2017-08-18 07:56
shellvars.aug
11.63
KB
-rwxrwxrwx
2017-08-18 07:56
shellvars_list.aug
1.74
KB
-rwxrwxrwx
2017-08-18 07:56
simplelines.aug
1.13
KB
-rwxrwxrwx
2017-08-18 07:56
simplevars.aug
1.39
KB
-rwxrwxrwx
2017-08-18 07:56
sip_conf.aug
1.61
KB
-rwxrwxrwx
2017-08-18 07:56
slapd.aug
5.2
KB
-rwxrwxrwx
2017-08-18 07:56
smbusers.aug
781
B
-rwxrwxrwx
2017-08-18 07:56
solaris_system.aug
3.15
KB
-rwxrwxrwx
2017-08-18 07:56
soma.aug
1.14
KB
-rwxrwxrwx
2017-08-18 07:56
spacevars.aug
1.42
KB
-rwxrwxrwx
2017-08-18 07:56
splunk.aug
1.64
KB
-rwxrwxrwx
2017-08-18 07:56
squid.aug
15.95
KB
-rwxrwxrwx
2017-08-18 07:56
ssh.aug
3.57
KB
-rwxrwxrwx
2017-08-18 07:56
sshd.aug
3.76
KB
-rwxrwxrwx
2017-08-18 07:56
sssd.aug
861
B
-rwxrwxrwx
2017-08-18 07:56
star.aug
941
B
-rwxrwxrwx
2017-08-18 07:56
stunnel.aug
2.21
KB
-rwxrwxrwx
2017-08-18 07:56
subversion.aug
2.75
KB
-rwxrwxrwx
2017-08-18 07:56
sudoers.aug
19.96
KB
-rwxrwxrwx
2017-08-18 07:56
sysconfig.aug
2.49
KB
-rwxrwxrwx
2017-08-18 07:56
sysconfig_route.aug
2.55
KB
-rwxrwxrwx
2017-08-18 07:56
sysctl.aug
923
B
-rwxrwxrwx
2017-08-18 07:56
syslog.aug
7.22
KB
-rwxrwxrwx
2017-08-18 07:56
systemd.aug
5.65
KB
-rwxrwxrwx
2017-08-18 07:56
thttpd.aug
1.31
KB
-rwxrwxrwx
2017-08-18 07:56
tmpfiles.aug
3.03
KB
-rwxrwxrwx
2017-08-18 07:56
trapperkeeper.aug
4.01
KB
-rwxrwxrwx
2017-08-18 07:56
tuned.aug
387
B
-rwxrwxrwx
2017-08-18 07:56
up2date.aug
2.21
KB
-rwxrwxrwx
2017-08-18 07:56
updatedb.aug
1.13
KB
-rwxrwxrwx
2017-08-18 07:56
util.aug
4.85
KB
-rwxrwxrwx
2017-08-18 07:56
vfstab.aug
1.71
KB
-rwxrwxrwx
2017-08-18 07:56
vmware_config.aug
702
B
-rwxrwxrwx
2017-08-18 07:56
vsftpd.aug
2.7
KB
-rwxrwxrwx
2017-08-18 07:56
webmin.aug
1.23
KB
-rwxrwxrwx
2017-08-18 07:56
wine.aug
1.92
KB
-rwxrwxrwx
2017-08-18 07:56
xendconfsxp.aug
1.07
KB
-rwxrwxrwx
2017-08-18 07:56
xinetd.aug
4.02
KB
-rwxrwxrwx
2017-08-18 07:56
xml.aug
6.33
KB
-rwxrwxrwx
2017-08-18 07:56
xorg.aug
10.12
KB
-rwxrwxrwx
2017-08-18 07:56
xymon.aug
2.18
KB
-rwxrwxrwx
2017-08-18 07:56
xymon_alerting.aug
6.11
KB
-rwxrwxrwx
2017-08-18 07:56
yaml.aug
1.4
KB
-rwxrwxrwx
2017-08-18 07:56
yum.aug
2.19
KB
-rwxrwxrwx
2017-08-18 07:56
Save
Rename
(****************************************************************************** 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 intentially 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