Jabberd2InitScript

From OpenNMS


#!/bin/bash
#
# Raymond 25DEC2003 support@bigriverinfotech.com
# /etc/rc.d/init.d/jabberd2
# init script for jabberd2 processes
# Tested under jabberd-2.0rc2 and Fedora 1.0 only
#
# processname: jabberd2
# description: jabberd2 is the next generation of the jabberd server
# chkconfig: 2345 85 15
#
if [ -f /etc/init.d/functions ]; then
        . /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ]; then
        . /etc/rc.d/init.d/functions
else
        echo -e "\ajabberd2: unable to locate functions lib. Cannot continue."
        exit -1
fi
#
progs="router resolver sm c2s s2s mu-conference"
progsPath="/usr/local/bin"
confPath="/usr/local/etc/jabberd"
pidPath="/usr/local/var/jabberd/pid"
statusCol="echo -ne \\033[60G"
statusColorOK="echo -ne \\033[1;32m"
statusColorFailed="echo -ne \\033[1;31m"
statusColorNormal="echo -ne \\033[0;39m"
retval=0
#
StatusOK ( ) {
        ${statusCol}
        echo -n "[  "
        ${statusColorOK}
        echo -n "OK"
        ${statusColorNormal}
        echo "  ]"
        return 0
}
#
StatusFailed ( ) {
        echo -ne "\a"
        ${statusCol}
        echo -n "["
        ${statusColorFailed}
        echo -n "FAILED"
        ${statusColorNormal}
        echo "]"
        return 0
}
#
ReqBins ( ) {
        for prog in ${progs}; do
                if [ ! -x ${progsPath}/${prog} ]; then
                        echo -n "jabberd2 binary [${prog}] not found."
                        StatusFailed
                        echo "Cannot continue."
                        return -1
                fi
        done
        return 0
}
#
ReqConfs ( ) {
        for prog in ${progs}; do
                if [ ! -f ${confPath}/${prog}.xml ]; then
                        echo -n "jabberd2 configuration [${prog}.xml] not found."
                        StatusFailed
                        echo "Cannot continue."
                        return -1
                fi
        done
        return 0
}
#
ReqDirs ( ) {
        if [ ! -d ${pidPath} ]; then
                echo -n "jabberd2 PID directory not found. Cannot continue."
                StatusFailed
                return -1
        fi
        return 0
}
#
Start ( ) {
        for req in ReqBins ReqConfs ReqDirs; do
                ${req}
                retval=$?
                [ ${retval} == 0 ] || return ${retval}
        done
        echo "Initializing jabberd2 processes ..."
        for prog in ${progs}; do
                if [ $( pidof -s ${prog} ) ]; then
                        echo -ne "\tprocess [${prog}] already running"
                        StatusFailed
                        sleep 1
                        continue
                fi
                echo -ne "\tStarting ${prog}: "
                if [ ${prog} == "router" ]; then
                        ports="5347"
                elif [ ${prog} == "c2s" ]; then
                        ports="5222 5223"
                elif [ ${prog} == "s2s" ]; then
                        ports="5269"
                else
                        ports=""
                fi
                for port in ${ports}; do
                        if [ $( netstat --numeric-ports --listening --protocol=inet |
                                        gawk '{ print $4 }' |
                                                gawk -F : '{ print $NF }' |
                                                        grep -c ${port}$ ) -ne "0" ]; then
                                StatusFailed
                                echo -e "\tPort ${port} is currently in use. Cannot continue"
                                echo -e "\tIs a Jabber 1.x server running?"
                                Stop
                                let retval=-1
                                break 2
                        fi
                done
                rm -f /var/lock/subsys/${prog}
                rm -f ${pidPath}/${prog}.pid
                args="-c ${confPath}/${prog}.xml"
                su - jabber -c "${progsPath}/${prog} ${args} & 2> /dev/null"
                retval=$?
                if [ ${retval} == 0 ]; then
                        StatusOK
                        touch /var/lock/subsys/${prog}
                else
                        StatusFailed
                        Stop
                        let retval=-1
                        break
                fi
                sleep 1
        done
        return ${retval}
}
#
Stop ( ) {
        echo "Terminating jabberd2 processes ..."
        for prog in ${progs}; do
                echo -ne "\tStopping ${prog}: "
                killproc ${prog}
                retval=$?
                if [ ${retval} == 0 ]; then
                        rm -f /var/lock/subsys/${prog}
                        rm -f ${pidPath}/${prog}.pid
                fi
                echo
                sleep 1
        done
        return ${retval}
}
#
case "$1" in
        start)
                Start
                ;;
        stop)
                Stop
                ;;
        restart)
                Stop
                Start
                ;;
        condrestart)
                if [ -f /var/lock/subsys/${prog} ]; then
                        Stop
                        sleep 3
                        Start
                fi
                ;;
        *)
                echo "Usage: $0 {start|stop|restart|condrestart}"
                let retval=-1
esac
exit ${retval}
#
# eof

Personal tools
DevJam 2008 Sponsors
DevJam 2008 Sponsor: Google
DevJam 2008 Sponsor: Netregistry
DevJam 2008 Sponsor: Papa John's
NewEdge Networks
OpenNMS takes home the gold award!
Join the Free Software Foundation
Support This Project Commercial OpenNMS Support OpenNMS Italia Get OpenNMS at SourceForge.net. Fast, secure and Free Open Source software downloads Our Network Simulator Our Java Profiler