#!/bin/bash # globus-gatekeeper # # chkconfig: - 20 80 # description: Authorize and execute a grid service ### BEGIN INIT INFO # Provides: globus-gatekeeper # Required-Start: $remote_fs $network $time # Required-Stop: $remote_fs $network # Default-Stop: 0 1 2 3 4 5 6 # Short-Description: Globus Gatekeeper # Description: The Globus Gatekeeper service authenticates network # connections using an SSL-based protocol and then # starts service instances on the remote user's behalf. # It is part of the Globus Toolkit(tm) ### END INIT INFO # Copyright 1999-2010 University of Chicago # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. progname=globus-gatekeeper prog=/usr/sbin/${progname} if [ -r /etc/sysconfig/globus-gatekeeper ] ; then . /etc/sysconfig/globus-gatekeeper fi test -f ${prog} || exit 0 lockfile=/var/lock/subsys/${progname} GLOBUS_GATEKEEPER_PIDFILE="${GLOBUS_GATEKEEPER_PIDFILE:-/var/run/${progname}.pid}" GLOBUS_GATEKEEPER_PORT="${GLOBUS_GATEKEEPER_PORT:-2119}" start() { status > /dev/null rc=$? if [ $rc -eq 0 ]; then echo "$progname is already running" return 0 fi cert="${GLOBUS_GATEKEEPER_CERT_FILE:-/etc/grid-security/hostcert.pem}" if [ ! -f $cert ]; then echo "Error: Gatekeeper's certificate file ($cert) is missing." echo "Failed to start globus-gatekeeper" exit 6 fi key="${GLOBUS_GATEKEEPER_KEY_FILE:-/etc/grid-security/hostkey.pem}" if [ ! -f $key ]; then echo "Error: Gatekeeper's private key file is ($key) is missing." echo "Failed to start globus-gatekeeper" exit 6 fi if [ "${GLOBUS_GATEKEEPER_KERBEROS_ENABLED:-false}" = "true" ]; then kflag="-k" else kflag="" fi ${GLOBUS_GATEKEEPER_NICE_LEVEL:+nice -n "${GLOBUS_GATEKEEPER_NICE_LEVEL}"} \ ${prog} \ -pidfile "${GLOBUS_GATEKEEPER_PIDFILE}" \ ${GLOBUS_GATEKEEPER_LOG_FACILITY:+-lf "$GLOBUS_GATEKEEPER_LOG_FACILITY"} \ ${GLOBUS_GATEKEEPER_PORT:+-p "${GLOBUS_GATEKEEPER_PORT}"} \ ${GLOBUS_GATEKEEPER_LOG:+-l "${GLOBUS_GATEKEEPER_LOG}"} \ ${GLOBUS_GATEKEEPER_GRID_SERVICES:+-grid_services "${GLOBUS_GATEKEEPER_GRID_SERVICES}"} \ ${GLOBUS_GATEKEEPER_GRIDMAP:+-gridmap "${GLOBUS_GATEKEEPER_GRIDMAP}"} \ ${GLOBUS_GATEKEEPER_CERT_DIR:+-x509_cert_dir "${GLOBUS_GATEKEEPER_CERT_DIR}"} \ ${GLOBUS_GATEKEEPER_CERT_FILE:+-x509_user_cert "${GLOBUS_GATEKEEPER_CERT_FILE}"} \ ${GLOBUS_GATEKEEPER_KEY_FILE:+-x509_user_key "${GLOBUS_GATEKEEPER_KEY_FILE}"} \ $kflag \ ${GLOBUS_GATEKEEPER_KMAP:+-globuskmap "${GLOBUS_GATEKEEPER_KMAP}"} \ > /dev/null rc=$? if [ "$rc" = 0 ]; then echo "Started globus-gatekeeper" touch "$lockfile" else echo "Failed to start globus-gatekeeper" fi return $rc; } stop() { if test -f "${GLOBUS_GATEKEEPER_PIDFILE}"; then read pid < "${GLOBUS_GATEKEEPER_PIDFILE}" 2> /dev/null if [ "$pid" -gt 0 ] 2> /dev/null; then if kill -0 "${pid}" 2> /dev/null; then kill -TERM "${pid}" if sleep 1 && kill -0 "${pid}" 2> /dev/null && sleep 3 && kill -0 "${pid}" 2> /dev/null;then kill -KILL "${pid}" fi if kill -0 "${pid}" 2> /dev/null; then echo "Failed to stop globus-gatekeeper" return 1 else echo "Stopped globus-gatekeeper" fi fi fi rm -f "${GLOBUS_GATEKEEPER_PIDFILE}" rm -f "$lockfile" else echo "$progname is not running" return 0 fi } restart() { stop start } status() { if test -f "${GLOBUS_GATEKEEPER_PIDFILE}"; then read pid <"${GLOBUS_GATEKEEPER_PIDFILE}" 2>/dev/null if [ "$pid" -gt 0 ] 2> /dev/null; then if ps -p "$pid" > /dev/null; then echo "globus-gatekeeper is running (pid=$pid)" return 0 else echo "Stale PID file for globus-gatekeeper" return 1 fi fi elif test -f "${lockfile}"; then echo "Stale lock file for globus-gatekeeper" return 2 else echo "globus-gatekeeper is not running" return 3 fi } case "$1" in start) start ;; stop) stop ;; restart) restart ;; reload) exit 0 ;; force-reload) restart ;; status) status ;; condrestart|try-restart) status || exit 0 restart ;; *) echo "Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" exit 2 esac