OXIESEC PANEL
- Current Dir:
/
/
usr
/
sbin
Server IP: 10.0.0.4
Upload:
Create Dir:
Name
Size
Modified
Perms
π
..
-
09/26/2021 03:27:18 AM
rwxr-xr-x
π
a2disconf
15.89 KB
02/23/2021 04:35:16 PM
rwxr-xr-x
π
a2dismod
15.89 KB
02/23/2021 04:35:16 PM
rwxr-xr-x
π
a2dissite
15.89 KB
02/23/2021 04:35:16 PM
rwxr-xr-x
π
a2enconf
15.89 KB
02/23/2021 04:35:16 PM
rwxr-xr-x
π
a2enmod
15.89 KB
02/23/2021 04:35:16 PM
rwxr-xr-x
π
a2ensite
15.89 KB
02/23/2021 04:35:16 PM
rwxr-xr-x
π
a2query
9.64 KB
06/23/2022 12:51:37 PM
rwxr-xr-x
π
aa-remove-unknown
2.85 KB
09/27/2018 06:20:54 PM
rwxr-xr-x
π
aa-status
8.41 KB
09/27/2018 06:20:54 PM
rwxr-xr-x
π
aad_certhandler
253.48 KB
07/14/2023 12:01:46 AM
rwxr-xr-x
π
aaduseradd
64.54 KB
07/14/2023 12:01:46 AM
rwxr-xr-x
π
aaduserdel
55.16 KB
07/14/2023 12:01:46 AM
rwxr-xr-x
π
accessdb
10.23 KB
08/04/2018 07:16:12 PM
rwxr-xr-x
π
acpid
50.84 KB
04/28/2017 04:28:10 AM
rwxr-xr-x
π
add-shell
860 bytes
12/30/2017 06:15:02 PM
rwxr-xr-x
π
addgnupghome
3.01 KB
07/04/2022 04:20:59 PM
rwxr-xr-x
π
addgroup
36.45 KB
12/05/2017 04:57:20 PM
rwxr-xr-x
π
adduser
36.45 KB
12/05/2017 04:57:20 PM
rwxr-xr-x
π
apache2
659.69 KB
06/23/2022 12:51:37 PM
rwxr-xr-x
π
apache2ctl
7.06 KB
03/04/2022 10:48:50 AM
rwxr-xr-x
π
apachectl
7.06 KB
03/04/2022 10:48:50 AM
rwxr-xr-x
π
apparmor_status
8.41 KB
09/27/2018 06:20:54 PM
rwxr-xr-x
π
applygnupgdefaults
2.17 KB
07/04/2022 04:20:59 PM
rwxr-xr-x
π
arp
61.3 KB
01/10/2017 04:25:08 AM
rwxr-xr-x
π
arpd
54.03 KB
07/15/2020 03:16:31 PM
rwxr-xr-x
π
atd
26.01 KB
02/20/2018 06:59:43 AM
rwxr-xr-x
π
bcache-super-show
13.99 KB
08/05/2020 08:44:05 PM
rwxr-xr-x
π
biosdecode
18.87 KB
01/27/2020 06:09:10 PM
rwxr-xr-x
π
bpftool
1.58 KB
11/01/2022 04:52:05 PM
rwxr-xr-x
π
check_forensic
952 bytes
04/26/2011 03:10:00 PM
rwxr-xr-x
π
chgpasswd
57.83 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
π
chmem
42.08 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
π
chpasswd
53.86 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
π
chroot
38.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
π
cifs.idmap
14.07 KB
06/01/2022 04:19:46 PM
rwxr-xr-x
π
cifs.upcall
34.28 KB
06/01/2022 04:19:46 PM
rwxr-xr-x
π
cpgr
55.96 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
π
cppw
55.96 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
π
cron
46.3 KB
05/10/2022 08:59:19 PM
rwxr-xr-x
π
cryptdisks_start
1.11 KB
08/23/2018 02:36:42 PM
rwxr-xr-x
π
cryptdisks_stop
1.16 KB
08/23/2018 02:36:42 PM
rwxr-xr-x
π
delgroup
16.11 KB
12/05/2017 04:57:20 PM
rwxr-xr-x
π
deluser
16.11 KB
12/05/2017 04:57:20 PM
rwxr-xr-x
π
dmidecode
106.54 KB
01/27/2020 06:09:10 PM
rwxr-xr-x
π
dnsmasq
379.6 KB
04/18/2022 03:41:06 PM
rwxr-xr-x
π
dpkg-preconfigure
3.58 KB
05/06/2019 04:30:30 PM
rwxr-xr-x
π
dpkg-reconfigure
4.34 KB
05/06/2019 04:30:30 PM
rwxr-xr-x
π
e2freefrag
14.07 KB
06/02/2022 02:37:00 PM
rwxr-xr-x
π
e4crypt
22.07 KB
06/02/2022 02:37:00 PM
rwxr-xr-x
π
e4defrag
25.99 KB
06/02/2022 02:37:00 PM
rwxr-xr-x
π
ephemeral-disk-warning
982 bytes
05/23/2019 09:15:53 PM
rwxr-xr-x
π
fdformat
30.08 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
π
filefrag
14.02 KB
06/02/2022 02:37:00 PM
rwxr-xr-x
π
genl
58.05 KB
07/15/2020 03:16:31 PM
rwxr-xr-x
π
groupadd
61.92 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
π
groupdel
70.37 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
π
groupmems
57.87 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
π
groupmod
68.18 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
π
grpck
53.8 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
π
grpconv
49.68 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
π
grpunconv
49.68 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
π
grub-install
1003.51 KB
02/24/2021 07:47:47 PM
rwxr-xr-x
π
grub-macbless
780.84 KB
02/24/2021 07:47:47 PM
rwxr-xr-x
π
grub-mkconfig
8.03 KB
02/24/2021 07:47:47 PM
rwxr-xr-x
π
grub-mkdevicemap
207.62 KB
02/24/2021 07:47:47 PM
rwxr-xr-x
π
grub-probe
793.09 KB
02/24/2021 07:47:47 PM
rwxr-xr-x
π
grub-reboot
4.73 KB
02/24/2021 07:47:47 PM
rwxr-xr-x
π
grub-set-default
3.47 KB
02/24/2021 07:47:47 PM
rwxr-xr-x
π
httxt2dbm
9.99 KB
06/23/2022 12:51:37 PM
rwxr-xr-x
π
hv_fcopy_daemon
1.58 KB
11/01/2022 04:52:05 PM
rwxr-xr-x
π
hv_get_dhcp_info
1.39 KB
11/01/2022 04:52:05 PM
rwxr-xr-x
π
hv_get_dns_info
622 bytes
11/01/2022 04:52:05 PM
rwxr-xr-x
π
hv_kvp_daemon
1.58 KB
11/01/2022 04:52:05 PM
rwxr-xr-x
π
hv_set_ifconfig
7.72 KB
11/01/2022 04:52:05 PM
rwxr-xr-x
π
hv_vss_daemon
1.58 KB
11/01/2022 04:52:05 PM
rwxr-xr-x
π
iconvconfig
30.25 KB
01/24/2022 12:53:44 PM
rwxr-xr-x
π
init.lxc
38.5 KB
11/23/2018 04:49:34 AM
rwxr-xr-x
π
init.lxc.static
1001.56 KB
11/23/2018 04:49:34 AM
rwxr-xr-x
π
invoke-rc.d
15.66 KB
10/25/2017 03:38:42 PM
rwxr-xr-x
π
ip6tables-apply
6.85 KB
11/12/2017 02:52:05 AM
rwxr-xr-x
π
iptables-apply
6.85 KB
11/12/2017 02:52:05 AM
rwxr-xr-x
π
irqbalance
62.68 KB
01/09/2019 10:38:44 AM
rwxr-xr-x
π
irqbalance-ui
34.06 KB
01/09/2019 10:38:44 AM
rwxr-xr-x
π
iscsi-iname
9.99 KB
05/11/2020 01:27:31 AM
rwxr-xr-x
π
iscsi_discovery
5.16 KB
09/29/2016 06:33:24 PM
rwxr-xr-x
π
iscsid
398.15 KB
05/11/2020 01:27:31 AM
rwxr-xr-x
π
iscsistart
358.13 KB
05/11/2020 01:27:31 AM
rwxr-xr-x
π
ldattach
30.08 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
π
locale-gen
4.3 KB
12/07/2020 04:38:09 PM
rwxr-xr-x
π
logrotate
74.09 KB
08/21/2017 11:01:27 PM
rwxr-xr-x
π
lsvmbus
1.58 KB
11/01/2022 04:52:05 PM
rwxr-xr-x
π
luksformat
3.32 KB
08/23/2018 02:36:42 PM
rwxr-xr-x
π
make-bcache
18.07 KB
08/05/2020 08:44:05 PM
rwxr-xr-x
π
make-ssl-cert
3.78 KB
04/28/2017 07:58:22 PM
rwxr-xr-x
π
mkinitramfs
10.79 KB
08/12/2020 08:12:11 PM
rwxr-xr-x
π
mklost+found
9.99 KB
06/02/2022 02:37:00 PM
rwxr-xr-x
π
mysqld
23.15 MB
10/19/2022 12:58:42 PM
rwxr-xr-x
π
netplan
798 bytes
05/28/2020 09:09:51 PM
rwxr-xr-x
π
newusers
82.39 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
π
nfnl_osf
13.99 KB
11/12/2017 02:52:05 AM
rwxr-xr-x
π
nologin
5.99 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
π
overlayroot-chroot
2.45 KB
09/20/2018 01:29:41 PM
rwxr-xr-x
π
ownership
10.13 KB
01/27/2020 06:09:10 PM
rwxr-xr-x
π
pam-auth-update
19.38 KB
07/21/2020 11:40:59 PM
rwxr-xr-x
π
pam_getenv
2.82 KB
08/23/2018 11:37:53 PM
rwxr-xr-x
π
pam_timestamp_check
9.99 KB
07/21/2020 11:40:59 PM
rwxr-xr-x
π
phpdismod
7.11 KB
01/17/2018 11:50:00 PM
rwxr-xr-x
π
phpenmod
7.11 KB
01/17/2018 11:50:00 PM
rwxr-xr-x
π
phpquery
6.24 KB
01/17/2018 11:50:00 PM
rwxr-xr-x
π
popcon-largest-unused
543 bytes
02/22/2018 05:15:22 AM
rwxr-xr-x
π
popularity-contest
4.92 KB
02/22/2018 05:15:22 AM
rwxr-xr-x
π
pwck
49.8 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
π
pwconv
45.7 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
π
pwunconv
45.68 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
π
readprofile
18.11 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
π
remove-shell
904 bytes
12/30/2017 06:15:02 PM
rwxr-xr-x
π
rmt
58.39 KB
03/15/2022 12:58:06 PM
rwxr-xr-x
π
rmt-tar
58.39 KB
03/15/2022 12:58:06 PM
rwxr-xr-x
π
rsyslogd
668.54 KB
05/03/2022 09:20:37 AM
rwxr-xr-x
π
rtcwake
42.08 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
π
samba_kcc
11.76 KB
01/25/2022 03:20:03 PM
rwxr-xr-x
π
service
9.04 KB
10/25/2017 03:38:42 PM
rwxr-xr-x
π
setvesablank
14.07 KB
01/22/2018 01:49:48 PM
rwxr-xr-x
π
split-logfile
2.36 KB
06/23/2022 12:51:37 PM
rwxr-xr-x
π
sshd
772.41 KB
08/11/2021 06:02:09 PM
rwxr-xr-x
π
tarcat
936 bytes
03/15/2022 12:58:06 PM
rwxr-xr-x
π
tcpdump
999.6 KB
04/07/2022 03:43:23 PM
rwxr-xr-x
π
tzconfig
106 bytes
10/12/2022 07:07:15 PM
rwxr-xr-x
π
ufw
4.82 KB
03/25/2019 09:14:25 PM
rwxr-xr-x
π
update-ca-certificates
5.27 KB
06/02/2022 02:19:50 PM
rwxr-xr-x
π
update-grub
64 bytes
02/23/2021 04:23:39 PM
rwxr-xr-x
π
update-grub2
64 bytes
02/23/2021 04:23:39 PM
rwxr-xr-x
π
update-info-dir
1.66 KB
02/05/2018 02:48:18 PM
rwxr-xr-x
π
update-initramfs
8.04 KB
08/12/2020 08:12:11 PM
rwxr-xr-x
π
update-locale
2.99 KB
12/07/2020 04:38:09 PM
rwxr-xr-x
π
update-mime
8.84 KB
07/15/2016 12:06:12 PM
rwxr-xr-x
π
update-passwd
30.41 KB
09/12/2017 09:48:16 PM
rwxr-xr-x
π
update-pciids
2.84 KB
02/10/2019 06:25:12 PM
rwxr-xr-x
π
update-rc.d
16.12 KB
10/25/2017 03:38:42 PM
rwxr-xr-x
π
update-secureboot-policy
7.43 KB
08/27/2020 11:32:46 AM
rwxr-xr-x
π
update-usbids
1.05 KB
04/21/2017 08:59:17 PM
rwxr-xr-x
π
useradd
123.28 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
π
userdel
82.48 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
π
usermod
123.06 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
π
uuidd
34.16 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
π
validlocale
1.73 KB
12/07/2020 04:38:09 PM
rwxr-xr-x
π
vcstime
9.99 KB
01/22/2018 01:49:48 PM
rwxr-xr-x
π
vigr
60.18 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
π
vipw
60.18 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
π
visudo
208.8 KB
01/19/2021 02:36:00 PM
rwxr-xr-x
π
vpddecode
14.27 KB
01/27/2020 06:09:10 PM
rwxr-xr-x
π
waagent
1.48 KB
01/14/2020 04:44:47 PM
rwxr-xr-x
π
waagent2.0
246.41 KB
01/14/2020 04:44:47 PM
rwxr-xr-x
π
xfs_admin
1.35 KB
04/18/2018 06:44:31 AM
rwxr-xr-x
π
xfs_bmap
638 bytes
04/18/2018 06:44:31 AM
rwxr-xr-x
π
xfs_copy
394.31 KB
04/18/2018 06:44:31 AM
rwxr-xr-x
π
xfs_db
667.63 KB
04/18/2018 06:44:31 AM
rwxr-xr-x
π
xfs_estimate
10.01 KB
04/18/2018 06:44:31 AM
rwxr-xr-x
π
xfs_freeze
767 bytes
04/18/2018 06:44:31 AM
rwxr-xr-x
π
xfs_fsr
30.02 KB
04/18/2018 06:44:31 AM
rwxr-xr-x
π
xfs_growfs
382.27 KB
04/18/2018 06:44:31 AM
rwxr-xr-x
π
xfs_info
472 bytes
04/18/2018 06:44:31 AM
rwxr-xr-x
π
xfs_io
130.93 KB
04/18/2018 06:44:31 AM
rwxr-xr-x
π
xfs_logprint
414.27 KB
04/18/2018 06:44:31 AM
rwxr-xr-x
π
xfs_mdrestore
370.28 KB
04/18/2018 06:44:31 AM
rwxr-xr-x
π
xfs_metadump
747 bytes
04/18/2018 06:44:31 AM
rwxr-xr-x
π
xfs_mkfile
1007 bytes
04/18/2018 06:44:31 AM
rwxr-xr-x
π
xfs_ncheck
650 bytes
04/18/2018 06:44:31 AM
rwxr-xr-x
π
xfs_quota
86.01 KB
04/18/2018 06:44:31 AM
rwxr-xr-x
π
xfs_rtcp
13.99 KB
04/18/2018 06:44:31 AM
rwxr-xr-x
π
zerofree
9.99 KB
11/14/2016 02:44:00 PM
rwxr-xr-x
π
zic
54.14 KB
01/24/2022 12:53:44 PM
rwxr-xr-x
Editing: a2query
Close
#! /usr/bin/perl # a2query - Apache2 helper to retrieve configuration informations # Copyright (C) 2012 Arno TΓΆll <debian@toell.net> # # This program is licensed at your choice under the terms of the GNU General # Public License version 2+ or under the terms of the Apache Software License # 2.0. # # For GPL-2+: # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, # USA. # # For ASF 2.0: # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. use feature "switch"; use strict; use Getopt::Std; =head1 NAME a2query - retrieve runtime configuration from a local Apache 2 HTTP server =cut our $APACHE2 = "apache2ctl"; our $API = "20120211"; our $MODULE_DIR = "/usr/lib/apache2/modules/"; our $SERVER_VERSION = "2.4.29"; our $MODULE_DIR = "/usr/lib/apache2/modules/"; our $STATE_DIR = "/var/lib/apache2"; our @STATES = ("maint", "admin"); our $MPM = "invalid"; our $CONFIG_DIR = "/etc/apache2"; our $QUIET = 0; # time to introduce more _exit_ values our $E_OK = '0'; our $E_FOUND = '0'; our $E_NOTFOUND = '1'; our $E_OFFBYADMIN = '32'; our $E_OFFBYMAINT = '33'; our @RETVALS = ( $E_OK, $E_FOUND, $E_OFFBYADMIN, $E_NOTFOUND, $E_OFFBYMAINT ); our @MODULES = (); our @CONFS = (); our @SITES =(); our @HELP = (); our %verbose_state = ( 'admin' => 'site administrator', 'maint' => 'maintainer script', 'unknown' => 'unknown' ); =head1 SYNOPSIS B<a2query> [S<-m> [I<MODULE>]] [S<-s> [I<SITE>]] [S<-c> [I<CONF>]] [S<-a>] [S<-v>] [S<-M>] [S<-d>] [S<-h>] =head1 DESCRIPTION B<a2query> is a program designed to retrieve configuration values from a locally available Apache 2 HTTP web server. It was designed to be as robust as possible by returning feasible values even if the Apache 2 syntax validator fails. This program is primarily meant to be used from maintainer scripts. =head1 OPTIONS =over 4 =item S<-a> Returns the Apache 2 "Module Magic Version" (API version) number, the server was compiled with. The returned version does not contain any minor versions which are known to be compatible with the major version returned. =item S<-c> [I<CONF>] Checks whether the configuration I<CONF> is enabled. If no argument was given, all enabled configuration files are being returned. I<CONF> is compared by string comparison by ignoring a leading "mod_" prefix and possibly a '.conf' or '.load' suffix. =item S<-h> Displays a brief summary how the program can be called and exits. =item S<-m> [I<MODULE>] Checks whether the module I<MODULE> is enabled, The argument is interpreted in the same way, as for configuration files queried by the S<-c> switch. =item S<-M> Returns the currently enabled Apache 2 MPM (Multi Processing Module). =item S<-s> [I<SITE>] Checks whether the module I<SITE> is enabled, The argument is interpreted in the same way, as for configuration files queried by the S<-c> switch. =item S<-v> returns the currently installed Apache 2 HTTP server version =item S<-q> suppress any output. This is useful to invoke a2query from another script. This is useful if only the return code is of interest. =back =head1 EXIT CODES B<a2query> returns with a zero (S<0>) exit status if the requested operation was effectuated successfully and with a non-zero status otherwise. In case of an error it leaves with error code S<32> if a requested module, site or configuration was not found and S<33> if a module, site or configuration was disabled by a maintainer script. However, exit status S<1> is returned if the module was not found at all =head1 SEE ALSO L<apache2ctl>(8), L<apache2>(8), L<perl>(1) =head1 AUTHOR This manual and L<a2query> was written by Arno Toell <debian@toell.net>. =cut sub output { print @_ unless $QUIET; } sub warning { print STDERR @_ unless $QUIET; } sub fail { die('usage: fail($reason, $retval)') if @_ != 2; my $reason = shift; my $retval = shift; warning "$reason\n"; exit $retval; } sub load_defaults { my @out = `$APACHE2 -V 2>/dev/null`; return if $?; foreach my $line (@out) { if ($line =~ m/(Server version|Server MPM|Magic Number):\s+(.*?)$/) { my ($pattern, $value) = ($1, $2); if ($pattern =~ /version/) { $SERVER_VERSION = $value; $SERVER_VERSION =~ s/[^\d\.]//g; } elsif ($pattern =~ /MPM/) { $MPM = $value; } elsif ($pattern =~ /Magic/) { $API = $value; $API =~ s/\:\d+//; } } } } sub load_modules { my $conf_dir = $CONFIG_DIR . "/mods-enabled"; opendir(DIR, $conf_dir) || fail("$conf_dir: $!", 1); while ( readdir(DIR) ) { my $file = $_; next if $file !~ m/\.load$/; $file =~ s/\.load//; if ($file =~ /mpm_(event|worker|prefork)/) { $MPM = $1 if $MPM eq 'invalid'; if (grep { $_ =~ m/^mpm_(?:event|worker|prefork)/ } @MODULES) { fail("There is more than one MPM loaded. Do not proceed due to undefined results", 1); } } push @MODULES, $file; } closedir(DIR); } sub load_conf { if ($#CONFS >= 0) { return; } my $conf_dir = $CONFIG_DIR . "/conf-enabled"; opendir(DIR, $conf_dir) || fail("$conf_dir: $!", 1); while ( readdir(DIR) ) { my $file = $_; next if $file !~ m/\.conf$/; $file =~ s/\.conf$//; push @CONFS, $file; } closedir(DIR); } sub load_sites { if ($#SITES >= 0) { return; } my $conf_dir = $CONFIG_DIR . "/sites-enabled"; opendir(DIR, $conf_dir) || fail("$conf_dir: $!", 1); while ( readdir(DIR) ) { my $file = $_; next if $file !~ m/\.conf$/; $file =~ s/\.conf$//; push @SITES, $file; } closedir(DIR); } sub switch_history { die('usage: switch_history([module|site|conf], [enabled|disabled], $name)') if @_ != 3; my $which = shift; my $what = shift; my $name = shift; $name =~ s/\.conf$//; foreach my $state (@STATES) { my $state_token = "$STATE_DIR/$which/$what" . "_by_$state/" . $name; if (-e $state_token) { return $state; } } return 0; } sub query_state { my $type = shift; my $pattern = shift; my $listref = shift; $pattern =~ s/^mod//; $pattern =~ s/\.(conf|load)//; my @candidates; if ($pattern) { @candidates = grep { $_ eq $pattern } @{ $listref }; } else { @candidates = @{ $listref } } my $matches = 0; foreach my $module (@candidates) { my $state = switch_history($type, "enabled", $module); if (!$state) { $state = "unknown"; } output("$module (enabled by $verbose_state{$state})\n"); $matches++; } if (!$matches) { my $reason = "No $type matches $pattern"; my $retval = $E_NOTFOUND; my $state = switch_history($type, "disabled", $pattern); if ($state) { $reason .= " (disabled by $verbose_state{$state})"; if ($state eq 'maint') { $retval = $E_OFFBYMAINT; } if ($state eq 'admin') { $retval = $E_OFFBYADMIN; } } fail($reason, $retval); } } load_defaults(); load_modules(); my %opts; my $help = 1; getopts('m:s:c:havMdq', \%opts); #foreach my $key (keys %opts) { print("$key=$opts{$key}\n");} push @HELP, ["q", "suppress any output. Useful for invocation from scripts"]; if (exists $opts{'q'}) { --$help; $QUIET=1; } push @HELP, ["m [MODULE]", "checks whether the module MODULE is enabled, lists all enabled modules if no argument was given"]; if (exists $opts{'m'}) { --$help; query_state('module', $opts{'m'}, \@MODULES); } push @HELP, ["s [SITE]", "checks whether the site SITE is enabled, lists all sites if no argument was given"]; if (exists $opts{'s'}) { --$help; load_sites(); query_state('site', $opts{'s'}, \@SITES); } push @HELP, ["c [CONF]", "checks whether the configuration CONF is enabled, lists all configurations if no argument was given"]; if (exists $opts{'c'}) { --$help; load_conf(); query_state('conf', $opts{'c'}, \@CONFS); } push @HELP, ["a", "returns the current Apache 2 module magic version"]; if (exists $opts{'a'}) { --$help; output("$API\n"); } push @HELP, ["v", "returns the current Apache 2 version"]; if (exists $opts{'v'}) { --$help; output("$SERVER_VERSION\n"); } push @HELP, ["M", "returns the enabled Apache 2 MPM"]; if (exists $opts{'M'}) { --$help; output("$MPM\n"); } push @HELP, ["d", "returns the Apache 2 module directory"]; if (exists $opts{'d'}) { --$help; output("$MODULE_DIR\n"); } push @HELP, ["h", "display this help"]; if (exists $opts{'h'} or $help == 1) { my $usage = "$0 "; map { $usage .= "-$_->[0] " } @HELP; print("Usage: $usage\n"); my $switch_name; my $description; format STDOUT = @<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< "-$switch_name", $description, ~~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< $description, . foreach my $switch (@HELP) { ($switch_name, $description) = ($switch->[0], $switch->[1]); write STDOUT; } exit $E_OK; } # vim: syntax=perl sw=8 sts=8 sr noet