diff -up pegasus/rpm/tog-pegasus.rc_old pegasus/rpm/tog-pegasus.rc --- pegasus/rpm/tog-pegasus.rc_old 2008-12-02 10:00:03.000000000 +0100 +++ pegasus/rpm/tog-pegasus.rc 2009-09-23 14:52:10.000000000 +0200 @@ -1,98 +1,153 @@ -#//%LICENSE//////////////////////////////////////////////////////////////// -#// -#// Licensed to The Open Group (TOG) under one or more contributor license -#// agreements. Refer to the OpenPegasusNOTICE.txt file distributed with -#// this work for additional information regarding copyright ownership. -#// Each contributor licenses this file to you under the OpenPegasus Open -#// Source License; you may not use this file except in compliance with the -#// License. -#// -#// Permission is hereby granted, free of charge, to any person obtaining a -#// copy of this software and associated documentation files (the "Software"), -#// to deal in the Software without restriction, including without limitation -#// the rights to use, copy, modify, merge, publish, distribute, sublicense, -#// and/or sell copies of the Software, and to permit persons to whom the -#// Software is furnished to do so, subject to the following conditions: -#// -#// The above copyright notice and this permission notice shall be included -#// in all copies or substantial portions of the Software. -#// -#// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -#// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -#// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -#// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -#// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -#// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -#// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -#// -#////////////////////////////////////////////////////////////////////////// -#! /bin/sh -#// -#//%///////////////////////////////////////////////////////////////////////////// +#!/bin/bash +# +# chkconfig: - 98 1 +# description: The Open Group Pegasus cimserver initscript +# processname: cimserver +# pidfile: /var/run/tog-pegasus/cimserver.pid +# ### BEGIN INIT INFO -# Provides: tog-pegasus +# Provides: lsb-pegasus # Required-Start: $syslog $network # Should-Start: $time # Required-Stop: $syslog # Default-Start: 3 5 # Default-Stop: 0 1 2 6 -# Description: init script for Pegasus CIM server +# Description: init script for Pegasus CIMServer ### END INIT INFO -CIMSERVER_BIN=/opt/tog-pegasus/sbin/cimserver +CIMSERVER_BIN=/usr/sbin/cimserver prog=cimserver +LOCKFILE=/var/lock/subsys/tog-pegasus +. /etc/rc.d/init.d/functions -test -x $CIMSERVER_BIN || exit 5 +[ -e /etc/sysconfig/tog-pegasus ] && . /etc/sysconfig/tog-pegasus; + +PEGASUS_SSL_CONF_FILE=${PEGASUS_SSL_CONF_FILE:=/etc/Pegasus/ssl.cnf} +PEGASUS_SSL_CERT_FILE=${PEGASUS_SSL_CERT_FILE:=/etc/Pegasus/server.pem} +PEGASUS_SSL_KEY_FILE=${PEGASUS_SSL_KEY_FILE:=/etc/Pegasus/file.pem} +PEGASUS_SSL_TRUSTSTORE=${PEGASUS_SSL_TRUSTSTORE:=/etc/Pegasus/client.pem} -. /lib/lsb/init-functions RETVAL=0 case "$1" in start) - echo -n $"Starting up CIM server: " - $CIMSERVER_BIN - RETVAL=$? - [ "$RETVAL" -eq 0 ] && log_success_msg $"$prog start" || log_failure_msg $"$prog start" - echo - ;; + if [[ $EUID -ne 0 ]]; then + echo "tog-pegasus $1: $CIMSERVER_BIN executed under nonprivileged user" + exit 4 + fi + pid=`pidofproc $CIMSERVER_BIN` + RETVAL=$? + if [ "$RETVAL" -eq 0 ]; then + echo "tog-pegasus $1: $CIMSERVER_BIN is already running" + exit 0 + fi + + if [ ! -e $CIMSERVER_BIN ]; then + echo "tog-pegasus $1: $CIMSERVER_BIN not found" + failure + exit 5 + fi + + if [ ! -x $CIMSERVER_BIN ]; then + echo "tog-pegasus $1: $CIMSERVER_BIN not executable" + failure + exit 4 + fi + + if [ ! -e ${PEGASUS_SSL_CONF_FILE} ] || [ ! -e ${PEGASUS_SSL_CERT_FILE} ] || + [ ! -e ${PEGASUS_SSL_KEY_FILE} ] || [ ! -e ${PEGASUS_SSL_TRUSTSTORE} ]; then + if [ -x /usr/share/Pegasus/scripts/genOpenPegasusSSLCerts ]; then + echo -n "tog-pegasus: Generating cimserver SSL certificates..." + /usr/share/Pegasus/scripts/genOpenPegasusSSLCerts + if [ $? -eq 0 ]; then + success + else + failure + fi + echo + fi + fi + echo -n $"Starting up CIM server: " + $CIMSERVER_BIN ${CIMSERVER_OPTIONS} + RETVAL=$? + if [ "$RETVAL" -eq 0 ]; then + rm -f /var/run/tog-pegasus.pid; + ln -s /var/run/tog-pegasus/"$prog".pid /var/run/tog-pegasus.pid; + touch $LOCKFILE + success + else + failure + fi + echo + ;; stop) - echo -n $"Shutting down CIM server: " - killproc cimserver - RETVAL=$? - [ "$RETVAL" -eq 0 ] && log_success_msg $"$prog stop" || log_failure_msg $"$prog stop" - echo - ;; + if [[ $EUID -ne 0 ]]; then + echo "tog-pegasus $1: $CIMSERVER_BIN executed under nonprivileged user" + exit 4 + fi + echo -n $"Shutting down CIM server: " + killproc cimserver + RETVAL=$? + if [ "$RETVAL" -eq 0 ]; then + rm -f $LOCKFILE + rm -f /var/run/tog-pegasus/* + rm -f /var/run/tog-pegasus.pid + success + else + failure + fi + echo + ;; + status) - pid=`pidofproc $CIMSERVER_BIN` - RETVAL=$? - if [ "$RETVAL" -eq 0 ]; then - echo "CIM server is running" - else - echo "CIM server is not running" - fi - ;; + pid=`pidofproc $CIMSERVER_BIN` + RETVAL=$? + if [ "$RETVAL" -eq 0 ]; then + echo -n $"CIM server ($pid) is running" + exit 0 + else + if [ -e /var/run/tog-pegasus.pid ]; then + echo $"CIM server is not running, but pid file exists" + exit 1 + elif [ -e $LOCKFILE ]; then + echo $"CIM server is not running, but lock file exists" + exit 2 + else + echo $"CIM server is not running" + exit 3 + fi + fi + echo + ;; + condrestart) - pid=`pidofproc $CIMSERVER_BIN` - RETVAL=$? - if [ "$RETVAL" -eq 0 ]; then - $0 stop && $0 start; - RETVAL=$?; - fi; + pid=`pidofproc $CIMSERVER_BIN` + RETVAL=$? + if [ "$RETVAL" -eq 0 ]; then + $0 stop && $0 start + RETVAL=$? + fi; ;; + try-restart) - $0 stop && $0 start - ;; + $0 stop && $0 start + RETVAL=$? + ;; + restart|force-reload) - $0 stop - $0 start - ;; + $0 stop + $0 start + RETVAL=$? + ;; + reload) - ;; + ;; *) - echo "Usage: $0 {start|stop|status|restart|reload|force-reload|try-restart}" - exit 1 + echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|try-restart}" + [ "$1" = "usage" ] && exit 0 + exit 2 esac exit $RETVAL