189 lines
3.9 KiB
Plaintext
189 lines
3.9 KiB
Plaintext
|
# httpd-related functions
|
||
|
# taken from the webapps-common project
|
||
|
# copyright (c) 2005, sean finney (GPL)
|
||
|
|
||
|
wc_httpd_apaches="apache2"
|
||
|
|
||
|
# if they have not specified what they support, assume support for all
|
||
|
if [ ! "$wc_httpd_supported" ]; then
|
||
|
wc_httpd_supported="$wc_httpd_apaches"
|
||
|
fi
|
||
|
|
||
|
#
|
||
|
# wc_httpd_installed: test for installed httpds
|
||
|
# usage:
|
||
|
# wc_httpd_installed [ httpd1 httpd2 ... ]
|
||
|
#
|
||
|
# no arguments implies to test for all servers
|
||
|
wc_httpd_installed(){
|
||
|
local httpds
|
||
|
if [ "$*" ]; then
|
||
|
httpds=$*
|
||
|
else
|
||
|
httpds=$wc_httpd_supported
|
||
|
fi
|
||
|
for f in $httpds; do
|
||
|
if test -x /usr/sbin/$f; then
|
||
|
echo $f
|
||
|
fi
|
||
|
done
|
||
|
}
|
||
|
|
||
|
#
|
||
|
# wc_httpd_running: test for running httpds
|
||
|
# usage:
|
||
|
# wc_httpd_running [ httpd1 httpd2 ... ]
|
||
|
#
|
||
|
# no arguments implies to test for all servers
|
||
|
wc_httpd_running(){
|
||
|
local httpds
|
||
|
if [ "$*" ]; then
|
||
|
httpds=$*
|
||
|
else
|
||
|
httpds=$wc_httpd_supported
|
||
|
fi
|
||
|
for f in $httpds; do
|
||
|
if pgrep -fx "/usr/sbin/$f( .*)*$" >/dev/null; then
|
||
|
echo $f
|
||
|
fi
|
||
|
done
|
||
|
}
|
||
|
|
||
|
# wc_httpd_invoke: issue start/stop/etc command to web server init script
|
||
|
# usage:
|
||
|
# wc_httpd_invoke {start|stop|status|whatever} [ httpd1 httpd2 ... ]
|
||
|
#
|
||
|
# no servers implies to invoke all running servers
|
||
|
wc_httpd_invoke(){
|
||
|
local httpds cmd err
|
||
|
if [ ! "$1" ]; then
|
||
|
echo "i need at least a command!" 2>&1
|
||
|
return 1
|
||
|
fi
|
||
|
cmd="$1"
|
||
|
shift
|
||
|
if [ "$*" ]; then
|
||
|
httpds=$*
|
||
|
else
|
||
|
httpds=`wc_httpd_running`
|
||
|
fi
|
||
|
for f in $httpds; do
|
||
|
if [ -x /etc/init.d/$f ]; then
|
||
|
invoke-rc.d $f $cmd || return $?
|
||
|
fi
|
||
|
done
|
||
|
}
|
||
|
|
||
|
# wc_httpd_apache_include: include a file in the apache configuration
|
||
|
# usage:
|
||
|
# wc_httpd_apache_include file name [ httpd1 httpd2 ... ]
|
||
|
#
|
||
|
# no arguments implies all installed apache servers
|
||
|
wc_httpd_apache_include(){
|
||
|
local h incfile httpds confdir
|
||
|
if [ ! "$1" ]; then
|
||
|
echo "i need at least a file!" 2>&1
|
||
|
return 1
|
||
|
fi
|
||
|
incfile="$1"
|
||
|
shift
|
||
|
if [ ! "$1" ]; then
|
||
|
echo "i also need a name!" 2>&1
|
||
|
return 1
|
||
|
fi
|
||
|
name="$1"
|
||
|
shift
|
||
|
if [ ! -e "$incfile" ]; then
|
||
|
echo "include file $incfile does not exist!" 2>&1
|
||
|
return 1
|
||
|
fi
|
||
|
if [ "$*" ]; then
|
||
|
httpds=$*
|
||
|
else
|
||
|
httpds=`wc_httpd_installed $wc_httpd_supported`
|
||
|
fi
|
||
|
for h in $httpds; do
|
||
|
confdir="/etc/$h/conf.d"
|
||
|
conflink="$confdir/${name}.conf"
|
||
|
if [ -d "$confdir" -a ! -e "$conflink" ]; then
|
||
|
ln -s "$incfile" "$conflink"
|
||
|
fi
|
||
|
done
|
||
|
}
|
||
|
|
||
|
# wc_httpd_apache_configured: determine what servers are configured for a pkg
|
||
|
# usage:
|
||
|
# wc_httpd_apache_configured file name [ httpd1 httpd2 ... ]
|
||
|
#
|
||
|
# no arguments implies all installed apache servers
|
||
|
# outputs the list of servers that are configured with file->name
|
||
|
wc_httpd_apache_configured(){
|
||
|
local h incfile httpds confdir
|
||
|
if [ ! "$1" ]; then
|
||
|
echo "i need at least a file!" 2>&1
|
||
|
return 1
|
||
|
fi
|
||
|
incfile="$1"
|
||
|
shift
|
||
|
if [ ! "$1" ]; then
|
||
|
echo "i also need a name!" 2>&1
|
||
|
return 1
|
||
|
fi
|
||
|
name="$1"
|
||
|
shift
|
||
|
if [ ! -e "$incfile" ]; then
|
||
|
echo "include file $incfile does not exist!" 2>&1
|
||
|
return 1
|
||
|
fi
|
||
|
if [ "$*" ]; then
|
||
|
httpds=$*
|
||
|
else
|
||
|
httpds=`wc_httpd_installed $wc_httpd_supported`
|
||
|
fi
|
||
|
for h in $httpds; do
|
||
|
confdir="/etc/$h/conf.d"
|
||
|
conflink="$confdir/${name}.conf"
|
||
|
if [ -L "$conflink" ]; then
|
||
|
echo "$h "
|
||
|
fi
|
||
|
done
|
||
|
}
|
||
|
|
||
|
# wc_httpd_apache_uninclude: uninclude a file in the apache configuration
|
||
|
# usage:
|
||
|
# wc_httpd_apache_uninclude file name [ httpd1 httpd2 ... ]
|
||
|
#
|
||
|
# no arguments implies all installed apache servers
|
||
|
wc_httpd_apache_uninclude(){
|
||
|
local h incfile name httpds conflink
|
||
|
if [ ! "$1" ]; then
|
||
|
echo "i need at least a file!" 2>&1
|
||
|
return 1
|
||
|
fi
|
||
|
incfile="$1"
|
||
|
shift
|
||
|
if [ ! "$1" ]; then
|
||
|
echo "i also need a name!" 2>&1
|
||
|
return 1
|
||
|
fi
|
||
|
name="$1"
|
||
|
shift
|
||
|
if [ ! -e "$incfile" ]; then
|
||
|
echo "include file $incfile does not exist!" 2>&1
|
||
|
return 1
|
||
|
fi
|
||
|
if [ "$*" ]; then
|
||
|
httpds=$*
|
||
|
else
|
||
|
httpds=`wc_httpd_installed $wc_httpd_supported`
|
||
|
fi
|
||
|
for h in $httpds; do
|
||
|
conflink="/etc/$h/conf.d/${name}.conf"
|
||
|
if [ -L "$conflink" ]; then
|
||
|
rm -f "$conflink"
|
||
|
elif [ -e "$conflink" ]; then
|
||
|
echo "warning: $conflink exists but is not a link" >&2
|
||
|
fi
|
||
|
done
|
||
|
}
|