#!/bin/bash
##############################################################################
# Switch between Apache and LiteSpeed Web Server under control panel environment
#
# @author LiteSpeed Technologies, Inc. (https://www.litespeedtech.com)
# @copyright (c) 2016-2023
##############################################################################
check_errs()
{
if [ "$1" -ne 0 ] ; then
echo "[ERROR] ${2}"
exit "$1"
fi
}
display_usage()
{
cat </dev/null; then
. "/etc/apache2/envvars"
fi
AP_PIDFILE="$APACHE_PID_FILE"
fi
}
cp_stop_lsws()
{
if [ "$CP" = "WHM" ] ; then
pkill wswatch.sh 2>/dev/null
fi
$LSWS_CTLCMD stop
$AP_CTLCMD stop 1>/dev/null 2>&1
RETRY=30
LSPID=1
while [ $RETRY -gt 0 ] && [ $LSPID -ne 0 ]
do
((RETRY--))
sleep 1
cp_detect_lsws_pid
done
if [ $LSPID -eq 0 ] ; then
pkill -9 lshttpd
pkill -9 litespeed
echo "LiteSpeed Stopped."
else
echo "LiteSpeed is still running. Fail to stop within 30 secs."
echo "Will use pkill command to stop"
pkill -9 lshttpd
pkill -9 litespeed
sleep 1
cp_detect_lsws_pid
if [ $LSPID -eq 0 ] ; then
echo "LiteSpeed Stopped."
else
echo "LiteSpeed is still running. Fail to stop using kill command."
fi
fi
}
cp_detect_lsws_pid()
{
LSPID=0
if [ -f "$LSWS_PIDFILE" ] ; then
FPID=$(cat "$LSWS_PIDFILE")
if [ "x$FPID" != "x" ] ; then
PL=$($PS_CMD | grep -w 'lshttpd\|litespeed' | grep -v grep | grep -w "$FPID")
if [ "x$PL" != "x" ] ; then
LSPID=$FPID
fi
fi
fi
}
#
# start LiteSpeed
#
cp_start_fake_apache()
{
$AP_CTLCMD start 2>&1
RETRY=30
LSPID=0
while [ $RETRY -gt 0 ] && [ $LSPID -eq 0 ]
do
((RETRY--))
sleep 1
cp_detect_lsws_pid
done
}
remove_bak_bak()
{
if [ -f "$1$2" ]; then
mv "$1$2" "$1$2_restore_done"
fi
}
cpanel_apache_wrapper_helper()
{
RESTORE=$1
NEED_PROTECT=$(/usr/local/cpanel/3rdparty/bin/perl -MCpanel::Config::Httpd::Perms -e'print Cpanel::Config::Httpd::Perms::webserver_runs_as_user();')
if [ "$RESTORE" -eq 1 ] ; then
# restore Apache binary Files
if [ -f "/usr/local/apache/bin/${AP_PROC}_ls_bak" ] ; then
mv -f "/usr/local/apache/bin/${AP_PROC}_ls_bak" "/usr/local/apache/bin/${AP_PROC}"
elif [ -f "/usr/local/apache/bin/${AP_PROC}_ls_bak_bak" ] ; then
cp -f "/usr/local/apache/bin/${AP_PROC}_ls_bak_bak" "/usr/local/apache/bin/${AP_PROC}"
fi
remove_bak_bak "/usr/local/apache/bin/${AP_PROC}" "_ls_bak_bak"
if [ -f "/usr/sbin/${AP_PROC}_ls_bak" ] ; then
mv -f "/usr/sbin/${AP_PROC}_ls_bak" "/usr/sbin/${AP_PROC}"
elif [ -f "/usr/sbin/${AP_PROC}_ls_bak_bak" ] ; then
cp -f "/usr/sbin/${AP_PROC}_ls_bak_bak" "/usr/sbin/${AP_PROC}"
fi
remove_bak_bak "/usr/sbin/${AP_PROC}" "_ls_bak_bak"
if [ -f "/scripts/restartsrv_httpd_ls_bak" ] ; then
mv -f "/scripts/restartsrv_httpd_ls_bak" "/scripts/restartsrv_httpd"
elif [ -f "/scripts/restartsrv_httpd_ls_bak_bak" ] ; then
cp -f "/scripts/restartsrv_httpd_ls_bak_bak" "/scripts/restartsrv_httpd"
fi
remove_bak_bak "/scripts/restartsrv_httpd" "_ls_bak_bak"
if [ "$NEED_PROTECT" -eq 1 ] ; then
/scripts/enablefileprotect
echo "Added fileprotect for Apache"
fi
if [ ! -f "/etc/cpanel/ea4/paths.conf" ] || ! grep -q '[^[:space:]]' /etc/cpanel/ea4/paths.conf ; then
if [ -f '/etc/cpanel/ea4/paths.conf_ls_bak' ]; then
mv '/etc/cpanel/ea4/paths.conf_ls_bak' '/etc/cpanel/ea4/paths.conf'
fi
fi
if [ -f "/etc/cpanel/ea4/paths.conf" ]; then
sed -i -e 's#/usr/local/lsws/bin/lswsctrl#/usr/sbin/apachectl#' /etc/cpanel/ea4/paths.conf
fi
# restore rc file
if [ "$SYSTEMDDIR" != "" ]; then
if [ -e "${SYSTEMDDIR}/${AP_PROC}.service.ls_bak" ] ; then
mv -f "${SYSTEMDDIR}/${AP_PROC}.service.ls_bak" "${SYSTEMDDIR}/${AP_PROC}.service"
elif [ -e "${SYSTEMDDIR}/${AP_PROC}.service.ls_bak_bak" ] ; then
cp -f "${SYSTEMDDIR}/${AP_PROC}.service.ls_bak_bak" "${SYSTEMDDIR}/${AP_PROC}.service"
fi
remove_bak_bak "${SYSTEMDDIR}/${AP_PROC}.service" ".ls_bak_bak"
systemctl daemon-reload
fi
if [ "$INIT_DIR" != "" ]; then
if [ -e "${INIT_DIR}/${AP_PROC}.ls_bak" ] ; then
mv -f "${INIT_DIR}/${AP_PROC}.ls_bak" "${INIT_DIR}/${AP_PROC}"
elif [ -e "${INIT_DIR}/${AP_PROC}.ls_bak_bak" ] ; then
cp -f "${INIT_DIR}/${AP_PROC}.ls_bak_bak" "${INIT_DIR}/${AP_PROC}"
fi
remove_bak_bak "${INIT_DIR}/${AP_PROC}" ".ls_bak_bak"
fi
if [ -f "$LSWS_SWITCH_FLAG" ] ; then
/bin/rm -f "$LSWS_SWITCH_FLAG"
fi
else
if [ "$NEED_PROTECT" -eq 1 ] ; then
/scripts/disablefileprotect
echo "fileprotect removed, not needed by LiteSpeed"
fi
if [ ! -f "/etc/cpanel/ea4/paths.conf" ] || ! grep -q '[^[:space:]]' /etc/cpanel/ea4/paths.conf ; then
if [ -f '/etc/cpanel/ea4/paths.conf_ls_bak' ]; then
mv '/etc/cpanel/ea4/paths.conf_ls_bak' '/etc/cpanel/ea4/paths.conf'
fi
fi
if [ -f "/etc/cpanel/ea4/paths.conf" ]; then
sed -i -e 's#/usr/sbin/apachectl#/usr/local/lsws/bin/lswsctrl#' /etc/cpanel/ea4/paths.conf
fi
# add rc wrapper
if [ "$SYSTEMDDIR" != "" ] ; then
# copy the correct file again to avoid wrong data
"${LSWSHOME}/admin/misc/rc-inst.sh"
if [ ! -e "${SYSTEMDDIR}/${AP_PROC}.service.ls_bak" ] ; then
mv -f "${SYSTEMDDIR}/${AP_PROC}.service" "${SYSTEMDDIR}/${AP_PROC}.service.ls_bak"
fi
ln -sf "${SYSTEMDDIR}/lshttpd.service" "${SYSTEMDDIR}/${AP_PROC}.service"
systemctl daemon-reload
fi
if [ "$INIT_DIR" != "" ] ; then
if [ ! -e "${INIT_DIR}/${AP_PROC}.ls_bak" ] ; then
mv -f "${INIT_DIR}/${AP_PROC}" "${INIT_DIR}/${AP_PROC}.ls_bak"
fi
ln -sf ./lsws "${INIT_DIR}/${AP_PROC}"
fi
# set flag
touch "$LSWS_SWITCH_FLAG"
fi
}
plesk_apache_wrapper_helper()
{
RESTORE=$1
if [ "$RESTORE" -eq 1 ] ; then
# restore Apache binary Files
if [ -f "/usr/sbin/${AP_PROC}_ls_bak" ] ; then
mv -f "/usr/sbin/${AP_PROC}_ls_bak" "/usr/sbin/${AP_PROC}"
elif [ -f "/usr/sbin/${AP_PROC}_ls_bak_bak" ] ; then
cp -f "/usr/sbin/${AP_PROC}_ls_bak_bak" "/usr/sbin/${AP_PROC}"
fi
remove_bak_bak "/usr/sbin/${AP_PROC}" "_ls_bak_bak"
# restore rc file
if [ "$SYSTEMDDIR" != "" ]; then
if [ -e "${SYSTEMDDIR}/${AP_PROC}.service.ls_bak" ] ; then
mv -f "${SYSTEMDDIR}/${AP_PROC}.service.ls_bak" "${SYSTEMDDIR}/${AP_PROC}.service"
elif [ -e "${SYSTEMDDIR}/${AP_PROC}.service.ls_bak_bak" ] ; then
cp -f "${SYSTEMDDIR}/${AP_PROC}.service.ls_bak_bak" "${SYSTEMDDIR}/${AP_PROC}.service"
fi
remove_bak_bak "${SYSTEMDDIR}/${AP_PROC}.service" ".ls_bak_bak"
if [ -d "${SYSTEMDDIR}/lshttpd.service.d" ]; then
mv -f "${SYSTEMDDIR}/lshttpd.service.d" "${SYSTEMDDIR}/${AP_PROC}.service.d"
fi
if [ -d "${SYSTEMDDIR}/${AP_PROC}.service.d.ls_bak" ]; then
mv -f "${SYSTEMDDIR}/${AP_PROC}.service.d.ls_bak" "${SYSTEMDDIR}/${AP_PROC}.service.d"
fi
if [ -d "/etc/systemd/system/${AP_PROC}.service.d.ls_bak" ]; then
mv -f "/etc/systemd/system/${AP_PROC}.service.d.ls_bak" "/etc/systemd/system/${AP_PROC}.service.d"
fi
systemctl daemon-reload
systemctl disable lshttpd
systemctl enable ${AP_PROC}
fi
if [ "$INIT_DIR" != "" ] ; then
if [ -e "${INIT_DIR}/${AP_PROC}.ls_bak" ] ; then
mv -f "${INIT_DIR}/${AP_PROC}.ls_bak" "${INIT_DIR}/${AP_PROC}"
elif [ -e "${INIT_DIR}/${AP_PROC}.ls_bak_bak" ] ; then
cp -f "${INIT_DIR}/${AP_PROC}.ls_bak_bak" "${INIT_DIR}/${AP_PROC}"
fi
remove_bak_bak "${INIT_DIR}/${AP_PROC}" ".ls_bak_bak"
if [ "$SYSTEMDDIR" != "" ] ; then
systemctl daemon-reload
fi
fi
if [ -f "$LSWS_SWITCH_FLAG" ] ; then
/bin/rm -f "$LSWS_SWITCH_FLAG"
fi
else
# add rc wrapper
if [ "$SYSTEMDDIR" != "" ] ; then
if [ ! -e "${SYSTEMDDIR}/${AP_PROC}.service.ls_bak" ] ; then
systemctl disable ${AP_PROC}
systemctl enable lshttpd
mv -f "${SYSTEMDDIR}/${AP_PROC}.service" "${SYSTEMDDIR}/${AP_PROC}.service.ls_bak"
fi
ln -sf "${SYSTEMDDIR}/lshttpd.service" "${SYSTEMDDIR}/${AP_PROC}.service"
if [ -d "${SYSTEMDDIR}/${AP_PROC}.service.d" ]; then
mv -f "${SYSTEMDDIR}/${AP_PROC}.service.d" "${SYSTEMDDIR}/${AP_PROC}.service.d.ls_bak"
fi
if [ -d "/etc/systemd/system/${AP_PROC}.service.d" ]; then
mv -f "/etc/systemd/system/${AP_PROC}.service.d" "/etc/systemd/system/${AP_PROC}.service.d.ls_bak"
fi
systemctl daemon-reload
fi
if [ "$INIT_DIR" != "" ] ; then
if [ ! -e "${INIT_DIR}/${AP_PROC}.ls_bak" ] ; then
mv -f "${INIT_DIR}/${AP_PROC}" "${INIT_DIR}/${AP_PROC}.ls_bak"
fi
cp "${INIT_DIR}/lsws" "${INIT_DIR}/${AP_PROC}"
#ln -sf ./lsws "${INIT_DIR}/${AP_PROC}"
if [ "$SYSTEMDDIR" != "" ] ; then
systemctl daemon-reload
fi
fi
# set flag
touch "$LSWS_SWITCH_FLAG"
fi
}
cp_apache_wrapper()
{
RESTORE=$1
INIT_DIR=""
for path in "/etc/init.d" "/etc/rc.d/init.d"
do
if [ "$INIT_DIR" = "" ] \
&& { [ -e "${path}/${AP_PROC}" ] || [ -e "${path}/${AP_PROC}.ls_bak" ] ;}
then
INIT_DIR="$path"
fi
done
# use systemd if possible, need to use same method as apache
SYSTEMDDIR=""
for path in "/usr/lib/systemd/system" "/lib/systemd/system" "/etc/systemd/system"
do
if [ "$SYSTEMDDIR" = "" ] \
&& [ -d "$path" ] \
&& [ -e "${path}/${AP_PROC}.service" ] ; then
SYSTEMDDIR="$path"
fi
done
if [ "$CP" = "WHM" ] ; then
cpanel_apache_wrapper_helper "$RESTORE"
elif [ "$CP" = "PSA" ] ; then
plesk_apache_wrapper_helper "$RESTORE"
fi
}
cp_detect_ap_pid()
{
APPID=0
FPID=$($PS_CMD | grep -w "${AP_PROC} \|${AP_PROC}$\|^${AP_PROC}$" \
| grep -v "lscgid\|litespeed\|lshttpd\|grep\|/usr/bin/logger" | grep -w "root" \
| awk '{print $2}')
if [ "x$FPID" != "x" ] ; then
APPID=$FPID
fi
}
cp_stop_apache()
{
$AP_CTLCMD stop
RETRY=30
APPID=1
while [ $RETRY -gt 0 ] && [ $APPID -ne 0 ]
do
((RETRY--))
sleep 1
cp_detect_ap_pid
done
if [ $APPID -eq 0 ] ; then
echo "Apache Stopped."
else
echo "Apache is still running. Fail to stop within 30 secs."
echo "Will use pkill command to stop"
pkill -9 $AP_PROC
sleep 1
cp_detect_ap_pid
if [ $APPID -eq 0 ] ; then
echo "Apache Stopped."
else
echo "Apache is still running. Fail to stop using kill command."
fi
fi
}
cp_change_port_offset()
{
PORT_OFFSET=$1
if [ ! -f "$CONF" ] ; then
check_errs 1 "${0}: invalid conf file directory!"
fi
/bin/cp -f "$CONF" "${CONF}.orig"
sed -e "s/.*<\/apachePortOffset>/${PORT_OFFSET}<\/apachePortOffset>/" "${CONF}.orig" > "$CONF"
check_errs $? "${0}: sed command error, please try to modify apache port offset manually from config file ${CONF}"
/bin/rm -f "${CONF}.orig"
}
cp_SwitchToLiteSpeed()
{
cp_change_port_offset 0
cp_stop_apache
if [ "$CP" = "WHM" ] ; then
#sleep 8
pkill -9 httpd
elif [ "$CP" = "PSA" ] ; then
cp_detect_lsws_pid
fi
cp_apache_wrapper 0
if [ "$CP" = "WHM" ] ; then
/usr/local/cpanel/bin/whmapi1 configureservice service=httpd enabled=1 monitored=1
fi
cp_start_fake_apache
if [ $LSPID -gt 0 ] ; then
if [ "$CP" = "WHM" ] ; then
pkill wswatch.sh 2>/dev/null
cd /usr/local/lsws/logs
nohup ../bin/wswatch.sh /dev/null 2>&1 &
fi
cp_msg_exit 0 "LiteSpeed started successfully."
fi
echo "LiteSpeed is not up within 30 secs, try again by removing /tmp/lshttpd/."
pkill -9 lshttpd
pkill -9 litespeed
/bin/rm -rf "/tmp/lshttpd"
cp_start_fake_apache
# wrapper needs to run after lsws start
if [ $LSPID -gt 0 ] ; then
if [ "$CP" = "WHM" ] ; then
pkill wswatch.sh 2>/dev/null
cd /usr/local/lsws/logs
nohup ../bin/wswatch.sh 2>/dev/null &
fi
cp_msg_exit 0 "LiteSpeed started successfully."
else
cp_apache_wrapper 1
check_errs 1 "LiteSpeed is not up within 60 secs, please check the error log and try again."
fi
}
cp_SwitchToApache()
{
if [ "$CP" = "WHM" ] ; then
pkill wswatch.sh 2>/dev/null
fi
cp_detect_lsws_pid
if [ $LSPID -gt 0 ] ; then
echo "LiteSpeed is running, stop it first."
cp_stop_lsws
if [ $LSPID -gt 0 ] ; then
check_errs 1 "Abort."
fi
fi
cp_detect_ap_pid
if [ $APPID -gt 0 ] ; then
if [ ! -f "$LSWS_SWITCH_FLAG" ] ; then
return
fi
# if running, stop first
cp_stop_apache
fi
# restore Apache Files, wrapper needs to run before Apache start
cp_apache_wrapper 1
# wait 1 sec before start apache
sleep 1
if [ "$CP" = "WHM" ] ; then
/usr/local/cpanel/bin/whmapi1 configureservice service=httpd enabled=1 monitored=1
#
# start Apache
#
# does not change the memory limits, does not work well.
# $AP_CTLCMD start
#
# call a cPanel script
/scripts/restartsrv_httpd
elif [ "$CP" = "PSA" ] ; then
$AP_CTLCMD start 2>&1
fi
RETRY=30
APPID=0
while [ $RETRY -gt 0 ] && [ $APPID -eq 0 ]
do
cp_detect_ap_pid
((RETRY--))
sleep 1
done
if [ $APPID -ne 0 ] ; then
cp_msg_exit 0 "Apache started successfully."
else
check_errs 1 "Apache is not up within 30 secs. Please check the log file."
fi
}
switch_cp()
{
if [ "x$1" = "xapache" ] ; then
cp_SwitchToApache
cp_SetRunOnBoot
elif [ "x$1" = "xlsws" ] ; then
cp_SwitchToLiteSpeed
cp_SetRunOnBoot
fi
}
switch_da()
{
cd ${DA_DIR}
pmod1=$(grep "php1_mode" /usr/local/directadmin/custombuild/options.conf | cut -d = -f 2 | xargs)
pmod2=$(grep "php2_mode" /usr/local/directadmin/custombuild/options.conf | cut -d = -f 2 | xargs)
pmod3=$(grep "php3_mode" /usr/local/directadmin/custombuild/options.conf | cut -d = -f 2 | xargs)
pmod4=$(grep "php4_mode" /usr/local/directadmin/custombuild/options.conf | cut -d = -f 2 | xargs)
if [ "x$1" = "xapache" ] ; then
pkill wswatch.sh
./build set webserver apache
OS_NAME=$(awk '{print $1}' < /etc/redhat-release)
if [ "${OS_NAME}" == 'CloudLinux' ] ; then
./build set php1_mode lsphp
./build set php2_mode lsphp
./build set php3_mode lsphp
./build set php4_mode lsphp
else
./build set php1_mode php-fpm
./build set php2_mode php-fpm
./build set php3_mode php-fpm
./build set php4_mode php-fpm
fi
./build set mod_ruid2 no
./build apache
else
./build set webserver litespeed
if [ "x$pmod1" != "xlsphp" ] ; then
./build set php1_mode lsphp
if [ "x$pmod2" != "xlsphp" ] ; then
./build set php2_mode lsphp
fi
if [ "x$pmod3" != "xlsphp" ] ; then
./build set php3_mode lsphp
fi
if [ "x$pmod4" != "xlsphp" ] ; then
./build set php4_mode lsphp
fi
fi
./build litespeed
fi
}
switch_cwp()
{
if [ "x$1" = "xapache" ] ; then
pkill wswatch.sh
stop_running_ws
echo "Starting Apache..."
if [ -e "/usr/local/apache/bin/httpd_ls_bak" ] ; then
mv /usr/local/apache/bin/httpd_ls_bak /usr/local/apache/bin/httpd
fi
service_manager "start" "httpd"
echo "Apache has been started successfully."
elif [ "x$1" = "xlsws" ] ; then
stop_running_ws
echo "Starting LiteSpeed Enterprise..."
service_manager "start" "lsws"
echo "LiteSpeed Enterprise has been started successfully."
fi
}
service_manager()
{
if [ -d "/etc/systemd" ] ; then
systemctl "$1" "$2" > /dev/null 2>&1
else
service "$2" "$1" > /dev/null 2>&1
fi
}
stop_running_ws()
{
local AP_PIDFILE=/usr/local/apache/logs/httpd.pid
local LSWS_PIDFILE=/tmp/lshttpd/lshttpd.pid
if [ -e "$AP_PIDFILE" ] ; then
local AP_PID
AP_PID=$(cat $AP_PIDFILE)
fi
if [ -e "$LSWS_PIDFILE" ] ; then
local LSWS_PID
LSWS_PID=$(cat $LSWS_PIDFILE)
fi
if [ -e "$LSWS_PIDFILE" ] && [ "$(ps -ef | grep -w 'lshttpd\|litespeed' | grep -v grep | grep -w "$LSWS_PID")" != "" ] || [ "$(ps -ef | grep -w 'lshttpd\|litespeed' | grep -v grep)" != "" ] ; then
echo "Stopping LiteSpeed Enterprise..."
service_manager "stop" "lsws"
sleep 1
RETRY=30
CHECK=$(ps -ef | grep -w 'lshttpd\|litespeed' | grep -v grep)
while [ "$RETRY" -gt 0 ] && [ "$CHECK" != "" ] ; do
RETRY=$((RETRY-1))
sleep 1
CHECK=$(ps -ef | grep -w 'lshttpd\|litespeed' | grep -v grep)
done
pkill -9 lsphp > /dev/null 2>&1
if [ "$CHECK" != "" ] ; then
pkill -9 litespeed > /dev/null 2>&1
pkill -9 lshttpd > /dev/null 2>&1
pkill -9 lscgid > /dev/null 2>&1
sleep 1
fi
if [ "$(ps -ef | grep -w 'lshttpd\|litespeed' | grep -v grep)" != "" ] ; then
echo "LiteSpeed Enterprise could not be stopped."
exit 1
else
echo "LiteSpeed Enterprise has been stopped successfully."
fi
fi
if [ -e "$AP_PIDFILE" ] && [ "$(ps -ef | grep -w "$AP_PID" | grep httpd | grep -v grep | grep -v lscgid)" != "" ] || [ "$(ps -ef | grep httpd | grep -v grep | grep -v lscgid)" != "" ] ; then
echo "Stopping Apache..."
service_manager "stop" "httpd"
sleep 1
RETRY=30
CHECK=$(ps -ef | grep httpd | grep -v grep | grep -v lscgid)
while [ "$RETRY" -gt 0 ] && [ "$CHECK" != "" ] ; do
((RETRY--))
sleep 1
CHECK=$(ps -ef | grep httpd | grep -v grep | grep -v lscgid)
done
if [ "$CHECK" != "" ] ; then
pkill -9 httpd > /dev/null 2>&1
sleep 1
fi
if [ "$(ps -ef | grep httpd | grep -v grep | grep -v lscgid)" != "" ] ; then
echo "Apache could not be stopped."
exit 1
else
echo "Apache killed successfully."
fi
fi
}
INST_USER=$(id)
INST_UID=$(expr "$INST_USER" : 'uid=\(.*\)(.*) gid=.*')
INST_USER=$(expr "$INST_USER" : 'uid=.*(\(.*\)) gid=.*')
if [ "$INST_UID" -ne 0 ]; then
check_errs 1 "Only root user can switch web server!"
fi
if [ $# -ne 1 ] ; then
echo "Illegal parameters = $# !"
display_usage
fi
# set LSWSHOME
cd "$(dirname "$0")"
CURDIR=$(pwd)
LSWSHOME=$(dirname "$(dirname "$CURDIR")")
if [ "x$1" != "xapache" ] && [ "x$1" != "xlsws" ] ; then
display_usage
fi
detect_control_panel
if [ "$CP" = "WHM" ] || [ "$CP" = "PSA" ] ; then
switch_cp "$1"
elif [ "$CP" = "DA" ] ; then
switch_da "$1"
elif [ "$CP" = "CWP" ] ; then
switch_cwp "$1"
fi