This is an Apache config sanitizer, it checks to make sure there are no orphaned files in the Debian style sites-available/sites-enabled type setup and checks to make sure each virtual host has a valid DNS.
#!/bin/bash
# Apache config sanitizer.. Checks to make sure all sites are correctly configured
# for DNS and checks for orphaned config files.
#
# By Gerhard Mack <gmack@innerfire.net>
function getipaddress {
if [[ "${1}" == 4 ]]
then
getent ahostsv4 "${2}" | grep STREAM | head -n 1 | cut -d ' ' -f 1
return
fi
if [[ "${1}" == 6 ]]
then
getent ahostsv6 "${2}" | grep STREAM | head -n 1 | cut -d ' ' -f 1
return
fi
}
while read line
do
name="$(basename $line)"
#Ignore common standard files
if [[ "${name}" == "000-default-le-ssl.conf" ]]
then
continue
fi
if [[ "${name}" == "default-ssl.conf" ]]
then
continue
fi
if [[ "${name}" == "000-default.conf" ]]
then
continue
fi
if [[ ! -e "/etc/apache2/sites-enabled/${name}" ]]
then
echo orphaned file: ${line}
fi
done <<< "$(find /etc/apache2/sites-available/ -name '*.conf')"
while read line
do
array=( $line )
if [[ "${line:0:1}" == [0-9] ]]
then
VIP=$(echo ${array[0]} | cut -d: -f1 )
IPV=4
continue
fi
if [[ "${line:0:1}" == "[" ]]
then
VIP=$(echo ${array[0]} | cut -d\] -f1 | cut -d \[ -f2)
IPV=6
continue
fi
if [[ "${line:0:1}" == "*" ]]
then
continue
fi
if [[ "${array[0]}" == "port" ]]
then
VHOST="${array[3]}"
IP=$(getipaddress ${IPV} ${VHOST})
if [[ -z "${IP}" ]]
then
echo ${VHOST} does not resolve. \(should be \"${VIP}\"\)
continue
fi
if [[ "${IP}" == "::ffff:"* ]]
then
echo ${VHOST} does not have an IPv6 address. \(should be \"${VIP}\"\)
continue
fi
if [[ "$IP" != "$VIP" ]]
then
echo vhost ${VHOST} points to \"${IP}\" \(should be \"${VIP}\"\)
fi
continue
fi
if [[ "$array[0]" == "alias[0]" ]]
then
VALIAS="${array[1]}"
IP=$(getipaddress ${IPV} ${VALIAS})
if [[ -z $IP ]] ; then
echo ${VHOST} alias ${VALIAS} does not resolve. \(should be \"${VIP}\"\)
continue
fi
if [[ ${IP} == "::ffff:"* ]]
then
echo ${VHOST} alias ${VALIAS} does not have an IPv6 address. \(should be \"${VIP}\"\)
continue
fi
if [[ "$IP" != "$VIP" ]] ; then
echo vhost ${VHOST} alias $VALIAS points to \"${IP}\" \(should be \"${VIP}\"\)
fi
continue
fi
done <<< "$(apachectl -S)"
Pretty nice Gerhard! See you on Freenode? 😉
At some point, I checked my IRC window and realized I had been idle for over a year so I’ve cut back to google hangouts/facebook/skype etc. Unless there is something I need or is arranged in advance.
Yeah I don’t really get on there much either. Been since May now, for instance.
There is always facebook, ring or google messenger.