diff options
Diffstat (limited to 'community-staging/prosody/prosody.rcd')
-rw-r--r-- | community-staging/prosody/prosody.rcd | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/community-staging/prosody/prosody.rcd b/community-staging/prosody/prosody.rcd new file mode 100644 index 000000000..afaf77903 --- /dev/null +++ b/community-staging/prosody/prosody.rcd @@ -0,0 +1,93 @@ +#!/bin/bash + +daemon_name=prosody +pid_file=/var/run/$daemon_name/$daemon_name.pid + +source /etc/rc.conf +source /etc/rc.d/functions + +get_pid() { + if [ -f $pid_file ]; then + /bin/kill -0 $(cat $pid_file) + if [ $? == 0 ]; then + cat $pid_file + fi + fi +} + +case "$1" in + start) + stat_busy "Starting $daemon_name daemon" + + [ -d /var/run/$daemon_name ] || { mkdir -p /var/run/$daemon_name ; chown prosody:prosody /var/run/prosody; } + PID=$(get_pid) + if [ -z "$PID" ]; then + [ -f $pid_file ] && rm -f $pid_file + mkdir -p `dirname $pid_file` + prosodyctl start 1>/dev/null 2>/dev/null + if [ $? -gt 0 ]; then + stat_fail + exit 1 + else + add_daemon $daemon_name + stat_done + fi + else + stat_fail + printhl "$daemon_name is already running" + exit 1 + fi + ;; + + stop) + stat_busy "Stopping $daemon_name daemon" + PID=$(get_pid) + if [ ! -z "$PID" ]; then + prosodyctl stop 1>/dev/null 2>/dev/null + if [ $? -gt 0 ]; then + stat_fail + exit 1 + else + rm -f $pid_file &> /dev/null + rm_daemon $daemon_name + stat_done + fi + else + stat_fail + printhl "$daemon_name is not running" + exit 1 + fi + ;; + + restart) + $0 stop + $0 start + ;; + + reload) + stat_busy "Reloading $daemon_name" + PID=$(get_pid) + if [ ! -z "$PID" ]; then + /bin/kill -HUP $PID 2> /dev/null + if [ $? -gt 0 ]; then + stat_fail + exit 1 + else + stat_done + fi + else + stat_fail + printhl "$daemon_name is not running" + fi + ;; + + status) + stat_busy "Checking $daemon_name status"; + ck_status $daemon_name + ;; + + *) + echo "usage: $0 {start|stop|restart|reload|status}" + esac + +exit 0 |