Page MenuHomeClusterLabs Projects

Pure-FTPd
No OneTemporary

Pure-FTPd

#!/bin/sh
#
# Resource script for Pure-FTPd
#
# Description: Manages Pure-FTPd as an OCF resource in
# an Active-Passive High Availability setup.
#
# Author: Rajat Upadhyaya <urajat@novell.com> : Pure-FTPd script
# Author: Raoul Bhatia <r.bhatia@ipax.at> : Minor Cleanup. Added Debian GNU/Linux Support
# License: GNU General Public License (GPL)
#
#
# usage: $0 {start|stop|status|monitor|validate-all|meta-data}
#
# The "start" arg starts Pure-FTPd.
#
# The "stop" arg stops it.
#
# OCF parameters:
# OCF_RESKEY_script
# OCF_RESKEY_conffile
# OCF_RESKEY_daemon_type
# OCF_RESKEY_pidfile
#
##########################################################################
# Initialization:
: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat}
. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs
: ${OCF_RESKEY_script="/sbin/pure-config.pl"}
script_basename=`basename $OCF_RESKEY_script`
: ${OCF_RESKEY_conffile="/etc/pure-ftpd/pure-ftpd.conf"}
: ${OCF_RESKEY_daemon_type=""}
: ${OCF_RESKEY_pidfile="${HA_RSCTMP}/pure-ftpd-${OCF_RESOURCE_INSTANCE}.pid"}
USAGE="Usage: $0 {start|stop|status|monitor|validate-all|meta-data}";
##########################################################################
usage() {
echo $USAGE >&2
}
meta_data() {
cat <<END
<?xml version="1.0"?>
<!DOCTYPE resource-agent SYSTEM "ra-api-1.dtd">
<resource-agent name="Pure-FTPd">
<version>1.0</version>
<longdesc lang="en">
This script manages Pure-FTPd in an Active-Passive setup
</longdesc>
<shortdesc lang="en">Manages a Pure-FTPd FTP server instance</shortdesc>
<parameters>
<parameter name="script" unique="1" required="0">
<longdesc lang="en">
The full path to the Pure-FTPd startup script.
For example, "/sbin/pure-config.pl"
</longdesc>
<shortdesc lang="en">Script name with full path</shortdesc>
<content type="string" default="/sbin/pure-config.pl" />
</parameter>
<parameter name="conffile" unique="1" required="0">
<longdesc lang="en">
The Pure-FTPd configuration file name with full path.
For example, "/etc/pure-ftpd/pure-ftpd.conf"
</longdesc>
<shortdesc lang="en">Configuration file name with full path</shortdesc>
<content type="string" default="/etc/pure-ftpd/pure-ftpd.conf" />
</parameter>
<parameter name="daemon_type" unique="1" required="0">
<longdesc lang="en">
The Pure-FTPd daemon to be called by pure-ftpd-wrapper.
Valid options are "" for pure-ftpd, "mysql" for pure-ftpd-mysql,
"postgresql" for pure-ftpd-postgresql and "ldap" for pure-ftpd-ldap
</longdesc>
<shortdesc lang="en">Configuration file name with full path</shortdesc>
<content type="string" default="" />
</parameter>
<parameter name="pidfile" unique="0">
<longdesc lang="en">PID file</longdesc>
<shortdesc lang="en">PID file</shortdesc>
<content type="string" default="${HA_RSCTMP}/pure-ftpd-${OCF_RESOURCE_INSTANCE}.pid" />
</parameter>
</parameters>
<actions>
<action name="start" timeout="20s" />
<action name="stop" timeout="20s" />
<action name="monitor" depth="0" timeout="20s" interval="60s" />
<action name="validate-all" timeout="20s" />
<action name="meta-data" timeout="5s" />
</actions>
</resource-agent>
END
exit $OCF_SUCCESS
}
isRunning()
{
kill -s 0 "$1" > /dev/null
}
PureFTPd_status()
{
if [ -f $OCF_RESKEY_pidfile ]
then
# Pure-FTPd is probably running
PID=`head -n 1 $OCF_RESKEY_pidfile`
if [ ! -z $PID ] ; then
isRunning "$PID" && [ `ps -p $PID | grep pure-ftpd | wc -l` -eq 1 ]
return $?
fi
fi
# Pure-FTPd is not running
false
}
PureFTPd_start()
{
local pid_dir
#
# make a few checks and start Pure-FTPd
#
if ocf_is_root ; then : ; else
ocf_log err "You must be root."
exit $OCF_ERR_PERM
fi
# if Pure-FTPd is running return success
if PureFTPd_status ; then
exit $OCF_SUCCESS
fi
# check that the Pure-FTPd script exists and can be executed
if [ ! -x "$OCF_RESKEY_script" ]; then
ocf_log err "Pure-FTPd script '$OCF_RESKEY_script' does not exist or cannot be executed"
exit $OCF_ERR_GENERIC
fi
# make sure that the pid directory exists
pid_dir=`dirname $OCF_RESKEY_pidfile`
if [ ! -d $pid_dir ] ; then
ocf_log info "Creating PID directory '$pid_dir'."
mkdir -p $pid_dir
fi
# test for pure-ftpd-wrapper (e.g. Debian GNU/Linux Systems)
if [ "$script_basename" = "pure-ftpd-wrapper" ]; then
# pure-ftpd-wrapper expects STANDALONE_OR_INETD to be set to standalone
STANDALONE_OR_INETD=standalone $OCF_RESKEY_script $OCF_RESKEY_daemon_type
else
# check that the Pure-FTPd config file exist
if [ ! -f "$OCF_RESKEY_conffile" ]; then
ocf_log err "Pure_FTPd config file '$OCF_RESKEY_conffile' does not exist"
exit $OCF_ERR_GENERIC
fi
$OCF_RESKEY_script $OCF_RESKEY_conffile -g $OCF_RESKEY_pidfile
fi
if [ $? -ne 0 ]; then
ocf_log info "Pure-FTPd returned error" $?
exit $OCF_ERR_GENERIC
fi
exit $OCF_SUCCESS
}
PureFTPd_stop()
{
if PureFTPd_status ; then
PID=`head -n 1 $OCF_RESKEY_pidfile`
if [ ! -z $PID ] ; then
kill $PID
fi
fi
exit $OCF_SUCCESS
}
PureFTPd_monitor()
{
if PureFTPd_status ; then
return $OCF_SUCCESS
fi
return $OCF_NOT_RUNNING
}
PureFTPd_validate_all()
{
return $OCF_SUCCESS
}
#
# Main
#
if [ $# -ne 1 ]
then
usage
exit $OCF_ERR_ARGS
fi
case $1 in
start) PureFTPd_start
;;
stop) PureFTPd_stop
;;
status) if PureFTPd_status
then
ocf_log info "Pure-FTPd is running"
exit $OCF_SUCCESS
else
ocf_log info "Pure-FTPd is stopped"
exit $OCF_NOT_RUNNING
fi
;;
monitor) PureFTPd_monitor
exit $?
;;
validate-all) PureFTPd_validate_all
exit $?
;;
meta-data) meta_data
;;
usage) usage
exit $OCF_SUCCESS
;;
*) usage
exit $OCF_ERR_UNIMPLEMENTED
;;
esac

File Metadata

Mime Type
text/x-shellscript
Expires
Sat, Jan 25, 5:31 AM (13 h, 47 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1318502
Default Alt Text
Pure-FTPd (6 KB)

Event Timeline