OXIESEC PANEL
- Current Dir:
/
/
usr
/
sbin
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
π
..
-
10/21/2019 03:48:12 PM
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
03/08/2023 05:34:33 PM
rwxr-xr-x
π
aa-remove-unknown
2.85 KB
06/20/2023 11:51:13 PM
rwxr-xr-x
π
aa-status
8.41 KB
06/20/2023 11:51:13 PM
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
03/08/2023 05:34:33 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
06/20/2023 11:51:13 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
01/26/2021 01:33:08 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
π
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
π
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/03/2020 09:28:48 PM
rwxr-xr-x
π
cryptdisks_stop
1.16 KB
08/03/2020 09:28:48 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/2023 08:21:55 AM
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
π
escapesrc
22.16 KB
10/19/2021 07:44:28 PM
rwxr-xr-x
π
faillock
13.99 KB
02/02/2023 09:24:07 AM
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
π
genccode
10.36 KB
10/19/2021 07:44:28 PM
rwxr-xr-x
π
gencmn
10.44 KB
10/19/2021 07:44:28 PM
rwxr-xr-x
π
genl
58.05 KB
01/26/2021 01:33:08 PM
rwxr-xr-x
π
gennorm2
54.59 KB
10/19/2021 07:44:28 PM
rwxr-xr-x
π
gensprep
18.5 KB
10/19/2021 07:44:28 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/01/2023 05:49:01 PM
rwxr-xr-x
π
grub-macbless
780.84 KB
02/01/2023 05:49:01 PM
rwxr-xr-x
π
grub-mkconfig
8.03 KB
02/01/2023 05:49:01 PM
rwxr-xr-x
π
grub-mkdevicemap
207.62 KB
02/01/2023 05:49:01 PM
rwxr-xr-x
π
grub-probe
793.09 KB
02/01/2023 05:49:01 PM
rwxr-xr-x
π
grub-reboot
4.73 KB
02/01/2023 05:49:01 PM
rwxr-xr-x
π
grub-set-default
832 bytes
03/24/2018 12:56:45 AM
rwxr-xr-x
π
grub-set-default-legacy-ec2
3.13 KB
03/24/2018 12:56:45 AM
rwxr-xr-x
π
grub-set-default.real
3.47 KB
02/01/2023 05:49:01 PM
rwxr-xr-x
π
httxt2dbm
9.99 KB
03/08/2023 05:34:33 PM
rwxr-xr-x
π
iconvconfig
30.25 KB
05/03/2022 10:19:39 AM
rwxr-xr-x
π
icupkg
18.77 KB
10/19/2021 07:44:28 PM
rwxr-xr-x
π
init.lxc
38.5 KB
05/05/2023 12:06:12 PM
rwxr-xr-x
π
init.lxc.static
1005.91 KB
05/05/2023 12:06:12 PM
rwxr-xr-x
π
invoke-rc.d
15.66 KB
10/25/2017 03:38:42 PM
rwxr-xr-x
π
ip6tables-apply
6.85 KB
05/09/2023 06:42:18 PM
rwxr-xr-x
π
iptables-apply
6.85 KB
05/09/2023 06:42:18 PM
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
04/06/2022 07:19:56 PM
rwxr-xr-x
π
iscsi_discovery
5.16 KB
09/29/2016 06:33:24 PM
rwxr-xr-x
π
iscsid
398.15 KB
04/06/2022 07:19:56 PM
rwxr-xr-x
π
iscsistart
358.13 KB
04/06/2022 07:19:56 PM
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
π
luksformat
3.32 KB
08/03/2020 09:28:48 PM
rwxr-xr-x
π
maidag
69.88 KB
11/07/2017 09:06:00 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.89 KB
07/01/2021 01:11:48 PM
rwxr-xr-x
π
mklost+found
9.99 KB
06/02/2022 02:37:00 PM
rwxr-xr-x
π
mysqld
23.16 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
π
netplan
798 bytes
09/07/2021 03:19:37 PM
rwxr-xr-x
π
newusers
82.39 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
π
nfnl_osf
13.99 KB
05/09/2023 06:42:18 PM
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
02/02/2023 09:24:07 AM
rwxr-xr-x
π
paperconfig
4.07 KB
04/28/2017 05:17:56 AM
rwxr-xr-x
π
php-fpm7.2
4.65 MB
02/23/2023 01:29:25 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
π
postalias
17.99 KB
08/12/2021 12:43:19 PM
rwxr-xr-x
π
postcat
18.06 KB
08/12/2021 12:43:19 PM
rwxr-xr-x
π
postconf
179.47 KB
08/12/2021 12:43:19 PM
rwxr-xr-x
π
postdrop
14.12 KB
08/12/2021 12:43:19 PM
r-xr-xr-x
π
postfix
14.07 KB
08/12/2021 12:43:19 PM
rwxr-xr-x
π
postfix-add-filter
4.9 KB
08/12/2021 12:43:19 PM
rwxr-xr-x
π
postfix-add-policy
3.83 KB
08/12/2021 12:43:19 PM
rwxr-xr-x
π
postkick
9.99 KB
08/12/2021 12:43:19 PM
rwxr-xr-x
π
postlock
9.99 KB
08/12/2021 12:43:19 PM
rwxr-xr-x
π
postlog
10.15 KB
08/12/2021 12:43:19 PM
rwxr-xr-x
π
postmap
17.99 KB
08/12/2021 12:43:19 PM
rwxr-xr-x
π
postmulti
26.38 KB
08/12/2021 12:43:19 PM
rwxr-xr-x
π
postqueue
22.07 KB
08/12/2021 12:43:19 PM
r-xr-xr-x
π
postsuper
22.32 KB
08/12/2021 12:43:19 PM
rwxr-xr-x
π
posttls-finger
34.09 KB
08/12/2021 12:43:19 PM
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
π
qmqp-sink
13.99 KB
08/12/2021 12:43:19 PM
rwxr-xr-x
π
qmqp-source
18.01 KB
08/12/2021 12:43:19 PM
rwxr-xr-x
π
qshape
12.55 KB
08/12/2021 12:43: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
π
rmail
13.99 KB
08/12/2021 12:43:19 PM
rwxr-xr-x
π
rmt
58.39 KB
02/15/2023 02:55:10 PM
rwxr-xr-x
π
rmt-tar
58.39 KB
02/15/2023 02:55:10 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
π
sendmail
26.15 KB
08/12/2021 12:43:19 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
π
slapacl
1.2 MB
05/12/2022 01:52:38 PM
rwxr-xr-x
π
slapadd
1.2 MB
05/12/2022 01:52:38 PM
rwxr-xr-x
π
slapauth
1.2 MB
05/12/2022 01:52:38 PM
rwxr-xr-x
π
slapcat
1.2 MB
05/12/2022 01:52:38 PM
rwxr-xr-x
π
slapd
1.2 MB
05/12/2022 01:52:38 PM
rwxr-xr-x
π
slapdn
1.2 MB
05/12/2022 01:52:38 PM
rwxr-xr-x
π
slapindex
1.2 MB
05/12/2022 01:52:38 PM
rwxr-xr-x
π
slappasswd
1.2 MB
05/12/2022 01:52:38 PM
rwxr-xr-x
π
slapschema
1.2 MB
05/12/2022 01:52:38 PM
rwxr-xr-x
π
slaptest
1.2 MB
05/12/2022 01:52:38 PM
rwxr-xr-x
π
smtp-sink
30.93 KB
08/12/2021 12:43:19 PM
rwxr-xr-x
π
smtp-source
22.02 KB
08/12/2021 12:43:19 PM
rwxr-xr-x
π
split-logfile
2.36 KB
03/08/2023 05:34:33 PM
rwxr-xr-x
π
sshd
772.41 KB
03/30/2022 01:17:14 PM
rwxr-xr-x
π
tarcat
936 bytes
02/15/2023 02:55:10 PM
rwxr-xr-x
π
tcpdump
999.6 KB
02/10/2023 06:11:16 PM
rwxr-xr-x
π
tzconfig
106 bytes
04/03/2023 11:03:22 AM
rwxr-xr-x
π
ufw
4.82 KB
10/25/2021 05:30:24 PM
rwxr-xr-x
π
update-ca-certificates
5.27 KB
05/18/2023 01:09:37 PM
rwxr-xr-x
π
update-grub
64 bytes
02/01/2023 05:49:01 PM
rwxr-xr-x
π
update-grub-legacy-ec2
43.96 KB
03/24/2018 12:56:45 AM
rwxr-xr-x
π
update-grub2
64 bytes
02/01/2023 05:49:01 PM
rwxr-xr-x
π
update-gsfontmap
450 bytes
04/13/2023 01:09:22 PM
rwxr-xr-x
π
update-icon-caches
596 bytes
04/02/2019 03:46:36 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
03/18/2021 06:48:17 PM
rwxr-xr-x
π
update-java-alternatives
3.09 KB
01/06/2017 12:03:20 PM
rwxr-xr-x
π
update-locale
2.99 KB
05/03/2022 04:27:41 AM
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
01/31/2023 11:57:37 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
04/04/2023 12:44:58 PM
rwxr-xr-x
π
vpddecode
14.27 KB
01/27/2020 06:09:10 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
05/03/2022 10:19:39 AM
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