#!/bin/sh
## +----------------------------------------------------------------------+
## | NEXCESS.NET InterWorx                                                |
## +----------------------------------------------------------------------+
## | Copyright (c) 2000-2003 NEXCESS.NET L.L.C., All Rights Reserved.     |
## +----------------------------------------------------------------------+
## | Redistribution and use in source form, with or without modification  |
## | is NOT permitted without consent from the copyright holder.          |
## |                                                                      |
## | THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND |
## | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,    |
## | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A          |
## | PARTICULAR PURPOSE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,    |
## | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,  |
## | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR   |
## | PROFITS; OF BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY  |
## | OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT         |
## | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE    |
## | USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH     |
## | DAMAGE.                                                              |
## +----------------------------------------------------------------------+
## | Authors: Chris Wells <clwells@nexcess.net>                           |
## |          Paul Oehler <poehler@nexcess.net>                           |
## +----------------------------------------------------------------------+
##
## $Id: iworx,v 1.7 2004/03/04 06:59:28 poehler Exp $

#
# Startup script for the InterWorx Server Management Suite
#
# chkconfig: 345 85 15
# description: InterWorx
# processname: iworx

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

start_apache() {
        /home/interworx/bin/iworx-web -f /home/interworx/etc/httpd/httpd.conf -DSSL
        ret=$?
        if [ $ret -eq 0 ]; then
            action "Starting InterWorx-web: " /bin/true
        else
            action "Starting InterWorx-web: " /bin/false
        fi
        touch /home/interworx/var/lock/subsys/httpd
}

stop_apache() {
	if [ -f /home/interworx/var/run/httpd.pid ] ; then
	    httpd_pid=`cat /home/interworx/var/run/httpd.pid`
	    kill $httpd_pid
        fi
        ret=$?
        if [ $ret -eq 0 ]; then
            action "Stopping InterWorx-web: " /bin/true
        else
            action "Stopping InterWorx-web: " /bin/false
        fi
        [ $ret -eq 0 ] && rm -f /home/interworx/var/lock/subsys/httpd
        return $ret
}

restart_apache_graceful() {
        /usr/bin/killall -USR1 iworx-web
        ret=$?
        if [ $ret -eq 0 ]; then
            action "Gracefully restarting iworx-web: " /bin/true
        else
            action "Gracefully restarting iworx-web: " /bin/false;
            echo "Starting iworx-web manually ";
            start_apache;
        fi
}

start_mysql() {
        if [ ! -d /home/interworx/var/lib/mysql ] ; then
            action "Initializing InterWorx database" mysql_install_db --defaults-file=/home/interworx/etc/my.cnf --force
            ret=$?
            chown -R iworx.iworx /home/interworx/var/lib/mysql
            if [ $ret -ne 0 ] ; then
                return $ret
            fi
        fi
        safe_mysqld --defaults-file=/home/interworx/etc/my.cnf > /dev/null 2>&1 &
        ret=$?
        if [ $ret -eq 0 ]; then
            action "Starting InterWorx-db: " /bin/true
        else
            action "Starting InterWorx-db: " /bin/false
        fi
        [ $ret -eq 0 ] && touch /home/interworx/var/lock/subsys/mysqld
        return $ret
}

stop_mysql() {
	if [ -f /home/interworx/var/run/mysqld.pid ] ; then
	    mysqld_pid=`cat /home/interworx/var/run/mysqld.pid`
	    kill $mysqld_pid
        fi
        ret=$?
        if [ $ret -eq 0 ]; then
            action "Stopping InterWorx-db: " /bin/true
        else
            action "Stopping InterWorx-db: " /bin/false
        fi
        [ $ret -eq 0 ] && rm -f /home/interworx/var/lock/subsys/mysqld
        [ $ret -eq 0 ] && rm -f /home/interworx/var/run/mysql.sock
        return $ret
}

case "$1" in
  start)
	start_mysql
	start_apache
        ;;
  stop)
	stop_apache
	stop_mysql
        ;;
  restart)
        $0 stop
        sleep 3
        $0 start
        ;;
  graceful)
    restart_apache_graceful
        ;;
esac

exit 0
