#!/bin/sh -e
# Initialize variables
SYSCONFDIR='/etc/apache2'
prompt=1
enabledsites=
usage="
Usage: ${0} [OPTION] [FILE] [FILE]...
Options:
-f Never prompt
-h This message
"
while getopts ":ft" OPT
do
case $OPT in
f )
prompt=0
;;
h )
echo "$usage"
exit 1
;;
\?)
echo "$usage"
exit 1;;
esac
done
# remove the flags from $@
shift $((${OPTIND} - 1))
# If a2ensite is called without an argument, then
# print a list of sites to choose from. Multiple sites
# can be passed to the SITENAME variable, (including globbing).
if [ -z $1 ]; then
echo "Which site would you like to enable?"
echo "Your choices are: "
ls $SYSCONFDIR/sites-available/
echo -n "Site name? "
read SITENAME
else
SITENAME="$@"
fi
ensite="y"
# Loop through the site files in SITENAME
for siteentry in $SITENAME
do
# Allow for file globbing
for site in $(ls $SYSCONFDIR/sites-available/$siteentry | xargs -n1 -r basename)
do
# Set default site with top priority
if [ $site = "default" ]; then
PRIORITY="000"
fi
# Check to see if the site has already been enabled
if [ -e $SYSCONFDIR/sites-enabled/$site -o \
-e $SYSCONFDIR/sites-enabled/"$PRIORITY"-"$site" ]; then
echo "$site is already enabled!"
enabled=1
fi
if ! [ -e $SYSCONFDIR/sites-available/$site ]; then
echo "$site does not exist!"
enabled=1
fi
# If -f flag is not passed to the script, prompt user for confirmation on each site.
if [ ${enabled:-0} -eq 0 ]; then
if [ $prompt -eq 1 ]; then
ensitelast=$ensite
echo -n "a2ensite: enable $site? [${ensitelast}] "
read ensite
if [ "$ensite" = "" ]; then
ensite=$ensitelast
fi
if [ ${ensite:-n} = "y" ]; then
if [ $site = "default" ]; then
ln -sf $SYSCONFDIR/sites-available/$site \
$SYSCONFDIR/sites-enabled/"$PRIORITY"-"$site"
else
ln -sf $SYSCONFDIR/sites-available/$site \
$SYSCONFDIR/sites-enabled/$site
fi
enabledsites="$enabledsites $site "
fi
else
if [ $site = "default" ]; then
ln -sf $SYSCONFDIR/sites-available/$site \
$SYSCONFDIR/sites-enabled/"$PRIORITY"-"$site"
else
ln -sf $SYSCONFDIR/sites-available/$site \
$SYSCONFDIR/sites-enabled/$site
fi
enabledsites="$enabledsites $site "
fi
fi
unset enabled
done
done
# Print list of enabled sites, if any.
# Test to see if any sites were enabled
if [ ${#enabledsites} -gt 0 ]; then
echo "Following site(s) enabled: "
echo
for vhost in $enabledsites
do
echo "$vhost"
done
echo
echo "Run /etc/init.d/apache2 reload to fully enable."
else
echo
echo "No sites were enabled."
fi
unset enabledsites
|