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
(* Module: Shellvars Generic lens for shell-script config files like the ones found in /etc/sysconfig About: License This file is licenced under the LGPL v2+, like the rest of Augeas. About: Lens Usage To be documented *) module Shellvars = autoload xfm (* Delete a blank line, rather than mapping it *) let del_empty = del (Util.empty_generic_re . "\n") "\n" let empty = Util.empty let empty_part_re = Util.empty_generic_re . /\n+/ let eol = del (/[ \t]+|[ \t]*[;\n]/ . empty_part_re*) "\n" let semicol_eol = del (/[ \t]*[;\n]/ . empty_part_re*) "\n" let brace_eol = del /[ \t\n]+/ "\n" let key_re = /[A-Za-z0-9_]+(\[[0-9A-Za-z_,]+\])?/ - ("unset" | "export") let matching_re = "${!" . key_re . /[\*@]\}/ let eq = Util.del_str "=" let eol_for_comment = del /([ \t]*\n)([ \t]*(#[ \t]*)?\n)*/ "\n" let comment = Util.comment_generic_seteol /[ \t]*#[ \t]*/ " # " eol_for_comment (* comment_eol in shell MUST begin with a space *) let comment_eol = Util.comment_generic_seteol /[ \t]+#[ \t]*/ " # " eol_for_comment let comment_or_eol = comment_eol | semicol_eol let xchgs = Build.xchgs let semicol = del /;?/ "" let char = /[^`;()'"&|\n\\# \t]#*|\\\\./ let dquot = let char = /[^"\\]|\\\\./ | Rx.cl in "\"" . char* . "\"" (* " Emacs, relax *) let squot = /'[^']*'/ let bquot = /`[^`\n]+`/ (* dbquot don't take spaces or semi-colons *) let dbquot = /``[^` \t\n;]+``/ let dollar_assign = /\$\([^\(\)#\n]*\)/ let dollar_arithm = /\$\(\([^\)#\n]*\)\)/ let anyquot = (char|dquot|squot|dollar_assign|dollar_arithm)+ | bquot | dbquot let sto_to_semicol = store (anyquot . (Rx.cl_or_space . anyquot)*) (* Array values of the form '(val1 val2 val3)'. We do not handle empty *) (* arrays here because of typechecking headaches. Instead, they are *) (* treated as a simple value *) let array = let array_value = store anyquot in del /\([ \t]*/ "(" . counter "values" . [ seq "values" . array_value ] . [ del /[ \t\n]+/ " " . seq "values" . array_value ] * . del /[ \t]*\)/ ")" (* Treat an empty list () as a value '()'; that's not quite correct *) (* but fairly close. *) let simple_value = let empty_array = /\([ \t]*\)/ in store (anyquot | empty_array)? let export = [ key "export" . Util.del_ws_spc ] let kv = Util.indent . export? . key key_re . eq . (simple_value | array) let var_action (name:string) = Util.indent . del name name . Util.del_ws_spc . label ("@" . name) . counter "var_action" . Build.opt_list [ seq "var_action" . store (key_re | matching_re) ] Util.del_ws_spc let unset = var_action "unset" let bare_export = var_action "export" let source = Util.indent . del /\.|source/ "." . label ".source" . Util.del_ws_spc . store /[^;=# \t\n]+/ let shell_builtin_cmds = "ulimit" | "shift" | "exit" let eval = Util.indent . Util.del_str "eval" . Util.del_ws_spc . label "@eval" . store anyquot let alias = Util.indent . Util.del_str "alias" . Util.del_ws_spc . label "@alias" . store key_re . eq . [ label "value" . store anyquot ] let builtin = Util.indent . label "@builtin" . store shell_builtin_cmds . (Sep.cl_or_space . [ label "args" . sto_to_semicol ])? let keyword (kw:string) = Util.indent . Util.del_str kw let keyword_label (kw:string) (lbl:string) = keyword kw . label lbl let return = Util.indent . label "@return" . Util.del_str "return" . ( Util.del_ws_spc . store Rx.integer )? let action (operator:string) (lbl:string) (sto:lens) = let sp = Rx.cl_or_opt_space | /[ \t\n]+/ in [ del (sp . operator . sp) (" " . operator . " ") . label ("@".lbl) . sto ] let action_pipe = action "|" "pipe" let action_and = action "&&" "and" let action_or = action "||" "or" let condition = let cond (start:string) (end:string) = [ label "type" . store start ] . Util.del_ws_spc . sto_to_semicol . Util.del_ws_spc . Util.del_str end . ( action_and sto_to_semicol | action_or sto_to_semicol )* in Util.indent . label "@condition" . (cond "[" "]" | cond "[[" "]]") (* Entry types *) let entry_eol_item (item:lens) = [ item . comment_or_eol ] let entry_item (item:lens) = [ item ] let entry_eol_nocommand = entry_eol_item source | entry_eol_item kv | entry_eol_item unset | entry_eol_item bare_export | entry_eol_item builtin | entry_eol_item return | entry_eol_item condition | entry_eol_item eval | entry_eol_item alias let entry_noeol_nocommand = entry_item source | entry_item kv | entry_item unset | entry_item bare_export | entry_item builtin | entry_item return | entry_item condition | entry_item eval | entry_item alias (* Command *) let rec command = let env = [ key key_re . eq . store anyquot . Sep.cl_or_space ] in let reserved_key = /exit|shift|return|ulimit|unset|export|source|\.|if|for|select|while|until|then|else|fi|done|case|eval|alias/ in let word = /[A-Za-z0-9_.-\/]+/ in let entry_eol = entry_eol_nocommand | entry_eol_item command in let entry_noeol = entry_noeol_nocommand | entry_item command in let entry = entry_eol | entry_noeol in let pipe = action_pipe (entry_eol_item command | entry_item command) in let and = action_and entry in let or = action_or entry in Util.indent . label "@command" . env* . store (word - reserved_key) . [ Sep.cl_or_space . label "@arg" . sto_to_semicol]? . ( pipe | and | or )? let entry_eol = entry_eol_nocommand | entry_eol_item command let entry_noeol = entry_noeol_nocommand | entry_item command (************************************************************************ * Group: CONDITIONALS AND LOOPS *************************************************************************) let generic_cond_start (start_kw:string) (lbl:string) (then_kw:string) (contents:lens) = keyword_label start_kw lbl . Sep.space . sto_to_semicol . semicol_eol . keyword then_kw . eol . contents let generic_cond (start_kw:string) (lbl:string) (then_kw:string) (contents:lens) (end_kw:string) = [ generic_cond_start start_kw lbl then_kw contents . keyword end_kw . comment_or_eol ] let cond_if (entry:lens) = let elif = [ generic_cond_start "elif" "@elif" "then" entry+ ] in let else = [ keyword_label "else" "@else" . eol . entry+ ] in generic_cond "if" "@if" "then" (entry+ . elif* . else?) "fi" let loop_for (entry:lens) = generic_cond "for" "@for" "do" entry+ "done" let loop_while (entry:lens) = generic_cond "while" "@while" "do" entry+ "done" let loop_until (entry:lens) = generic_cond "until" "@until" "do" entry+ "done" let loop_select (entry:lens) = generic_cond "select" "@select" "do" entry+ "done" let case (entry:lens) (entry_noeol:lens) = let pattern = [ label "@pattern" . sto_to_semicol . Sep.opt_space ] in let case_entry = [ label "@case_entry" . Util.indent . pattern . (Util.del_str "|" . Sep.opt_space . pattern)* . Util.del_str ")" . eol . entry* . entry_noeol? . Util.indent . Util.del_str ";;" . eol ] in [ keyword_label "case" "@case" . Sep.space . store (char+ | ("\"" . char+ . "\"")) . del /[ \t\n]+/ " " . Util.del_str "in" . eol . (empty* . comment* . case_entry)* . empty* . comment* . keyword "esac" . comment_or_eol ] let subshell (entry:lens) = [ Util.indent . label "@subshell" . Util.del_str "{" . brace_eol . entry+ . Util.indent . Util.del_str "}" . eol ] let function (entry:lens) = [ Util.indent . label "@function" . del /(function[ \t]+)?/ "" . store Rx.word . del /[ \t]*\(\)/ "()" . (comment_eol|brace_eol) . Util.del_str "{" . brace_eol . entry+ . Util.indent . Util.del_str "}" . eol ] let rec rec_entry = let entry = comment | entry_eol | rec_entry in cond_if entry | loop_for entry | loop_select entry | loop_while entry | loop_until entry | case entry entry_noeol | function entry | subshell entry let lns_norec = del_empty* . (comment | entry_eol) * let lns = del_empty* . (comment | entry_eol | rec_entry) * let sc_incl (n:string) = (incl ("/etc/sysconfig/" . n)) let sc_excl (n:string) = (excl ("/etc/sysconfig/" . n)) let filter_sysconfig = sc_incl "*" . sc_excl "bootloader" . sc_excl "hw-uuid" . sc_excl "hwconf" . sc_excl "ip*tables" . sc_excl "ip*tables.save" . sc_excl "kernel" . sc_excl "*.pub" . sc_excl "sysstat.ioconf" . sc_excl "system-config-firewall" . sc_excl "system-config-securitylevel" . sc_incl "network/config" . sc_incl "network/dhcp" . sc_incl "network/dhcp6r" . sc_incl "network/dhcp6s" . sc_incl "network/ifcfg-*" . sc_incl "network/if-down.d/*" . sc_incl "network/ifroute-*" . sc_incl "network/if-up.d/*" . sc_excl "network/if-up.d/SuSEfirewall2" . sc_incl "network/providers/*" . sc_excl "network-scripts" . sc_incl "network-scripts/ifcfg-*" . sc_excl "rhn" . sc_incl "rhn/allowed-actions/*" . sc_excl "rhn/allowed-actions/script" . sc_incl "rhn/allowed-actions/script/*" . sc_incl "rhn/rhnsd" . sc_excl "SuSEfirewall2.d" . sc_incl "SuSEfirewall2.d/cobbler" . sc_incl "SuSEfirewall2.d/services/*" . sc_excl "SuSEfirewall2.d/services/TEMPLATE" . sc_excl "*.systemd" let filter_default = incl "/etc/default/*" . excl "/etc/default/grub_installdevice*" . excl "/etc/default/rmt" . excl "/etc/default/star" . excl "/etc/default/whoopsie" . incl "/etc/profile" . incl "/etc/profile.d/*" let filter_misc = incl "/etc/arno-iptables-firewall/debconf.cfg" . incl "/etc/conf.d/*" . incl "/etc/cron-apt/config" . incl "/etc/environment" . incl "/etc/firewalld/firewalld.conf" . incl "/etc/blkid.conf" . incl "/etc/adduser.conf" . incl "/etc/cowpoke.conf" . incl "/etc/cvs-cron.conf" . incl "/etc/cvs-pserver.conf" . incl "/etc/devscripts.conf" . incl "/etc/kamailio/kamctlrc" . incl "/etc/lbu/lbu.conf" . incl "/etc/lintianrc" . incl "/etc/lsb-release" . incl "/etc/os-release" . incl "/etc/periodic.conf" . incl "/etc/popularity-contest.conf" . incl "/etc/rc.conf" . incl "/etc/rc.conf.local" . incl "/etc/selinux/config" . incl "/etc/ucf.conf" . incl "/etc/locale.conf" . incl "/etc/vconsole.conf" . incl "/etc/byobu/*" let filter = filter_sysconfig . filter_default . filter_misc . Util.stdexcl let xfm = transform lns filter (* Local Variables: *) (* mode: caml *) (* End: *)