2020-09-29 11:08:10 +02:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
# TODO Find .htacces from ServerHome
|
2020-09-24 17:21:30 +02:00
|
|
|
|
|
|
|
set -e
|
|
|
|
|
|
|
|
apache_dir=/etc/apache2
|
|
|
|
apache_conf=$apache_dir/apache2.conf
|
|
|
|
|
|
|
|
tmp_dir=$(mktemp -d /tmp/apache-require.XXXX)
|
|
|
|
conf_files=$tmp_dir/conf_files
|
|
|
|
|
|
|
|
module_loaded() {
|
|
|
|
apache2ctl -D DUMP_MODULES | grep -q access_compat_module
|
|
|
|
}
|
|
|
|
|
|
|
|
# Get all config files included the
|
|
|
|
get_conf_files() {
|
|
|
|
# Initialize le the list of configuration files with the default conf
|
|
|
|
printf "%s\\n" $apache_conf > "$conf_files"
|
|
|
|
|
2020-09-29 11:08:10 +02:00
|
|
|
cd "$apache_dir"
|
|
|
|
# TODO: Refactor this mess
|
2020-09-24 17:21:30 +02:00
|
|
|
conf_files_size=0
|
|
|
|
while [ "$conf_files_size" -lt "$(stat -c %s "$conf_files")" ]; do
|
|
|
|
conf_files_size=$(stat -c %s "$conf_files")
|
|
|
|
for conf_file in $(cat "$conf_files"); do
|
|
|
|
# XXX: Expand the filenames
|
|
|
|
for glob in $(awk '/^[[:space:]]*Include/ {print $2}' "$conf_file"); do
|
|
|
|
realpath $glob >> "$conf_files"
|
|
|
|
done
|
|
|
|
done
|
|
|
|
sort "$conf_files" | uniq > "$conf_files"_tmp && mv "$conf_files"_tmp "$conf_files"
|
|
|
|
done
|
2020-09-29 11:08:10 +02:00
|
|
|
cd - 1>/dev/null
|
2020-09-24 17:21:30 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
count_directives() {
|
|
|
|
directives="Allow Order Deny Satisfy"
|
|
|
|
|
|
|
|
for directive in $directives; do
|
|
|
|
export "$directive"="$(grep -Ec "^[[:blank:]]*$directive\\s" "$1")"
|
|
|
|
done
|
|
|
|
# shellcheck disable=SC2154
|
|
|
|
printf "%s %d %d %d %d\\n" "$1" "$Allow" "$Order" "$Deny" "$Satisfy"
|
|
|
|
}
|
|
|
|
|
2020-09-29 11:08:10 +02:00
|
|
|
display_results() {
|
2020-09-29 11:12:57 +02:00
|
|
|
printf 'File\tAllow\tOrder\tDeny\tSatsify\n'
|
2020-09-29 11:08:10 +02:00
|
|
|
for file in $(cat $conf_files); do
|
|
|
|
count_directives "$file"
|
|
|
|
done
|
|
|
|
}
|
2020-09-24 17:21:30 +02:00
|
|
|
|
2020-09-29 11:08:10 +02:00
|
|
|
get_conf_files
|
|
|
|
display_results
|