diff --git a/pkg/ubuntu/diaspora-wsd b/pkg/ubuntu/diaspora-wsd index db4edf25445e344ac594432ab9ea466de8b6e3a7..0e8d08f2030d2cf992b7e53351005ff9847ef1e4 100755 --- a/pkg/ubuntu/diaspora-wsd +++ b/pkg/ubuntu/diaspora-wsd @@ -1,4 +1,4 @@ -#! /bin/sh +#!/bin/sh ### BEGIN INIT INFO # Provides: diaspora-wsd # Required-Start: $remote_fs $syslog @@ -7,21 +7,22 @@ # Default-Stop: 0 1 6 # Short-Description: diaspora websocket daemon # Description: The diaspora websocket service provider, normally - listening on port 8080 +# listening on port 8080 ### END INIT INFO # Author: Alec leamas <leamas.alec@gmail.com> -PATH=/usr/sbin:/usr/bin +PATH=/bin:/sbin:/usr/sbin:/usr/bin DESC="Websocket server for diaspora clients" NAME='diaspora-wsd' -DAEMON='/usr/share/diaspora/master/script/websocket_server.rb' -DAEMON_ARGS="" +DAEMON='/usr/local/bin/bundle' +DAEMON_ARGS=' exec ruby ./script/websocket_server.rb' PIDFILE=/var/run/diaspora/diaspora-wsd.pid SCRIPTNAME=/etc/init.d/diaspora-wsd +cd /usr/share/diaspora/master + [ -x "$DAEMON" ] || exit 0 -vncvi [ -r /etc/default/$NAME ] && . /etc/default/$NAME # Load the VERBOSE setting and other rcS variables @@ -40,14 +41,15 @@ do_start() # 0 if daemon has been started # 1 if daemon was already running # 2 if daemon could not be started - start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ - || return 1 - start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ - $DAEMON_ARGS \ + [ -f $PIDFILE ] && { + pid=$( cat $PIDFILE) + name=$( ps -p "$pid" -o comm= 2> /dev/null) || : + [ "$name" = "ruby" ] && return 1 + } + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON \ + --chdir $PWD -- $DAEMON_ARGS \ || return 2 - # Add code here, if necessary, that waits for the process to be ready - # to handle requests from services started subsequently which depend - # on this one. As a last resort, sleep for some time. + return 0 } # @@ -60,7 +62,8 @@ do_stop() # 1 if daemon was already stopped # 2 if daemon could not be stopped # other if a failure occurred - start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME + start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE \ + --name $NAME --chdir $PWD RETVAL="$?" [ "$RETVAL" = 2 ] && return 2 # Wait for children to finish too if this is a daemon that forks @@ -69,7 +72,8 @@ do_stop() # that waits for the process to drop all resources that could be # needed by services started subsequently. A last resort is to # sleep for some time. - start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON + start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --chdir $PWD \ + --exec $DAEMON [ "$?" = 2 ] && return 2 # Many daemons don't delete their pidfiles when they exit. rm -f $PIDFILE @@ -85,7 +89,8 @@ do_reload() { # restarting (for example, when it is sent a SIGHUP), # then implement that here. # - start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME + start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --chdir $PWD \ + --name $NAME return 0 } @@ -98,6 +103,7 @@ case "$1" in 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; + stop) [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" do_stop @@ -106,9 +112,11 @@ case "$1" in 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; + status) status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? ;; + #reload|force-reload) # # If do_reload() is not implemented then leave this commented out @@ -118,11 +126,8 @@ case "$1" in #do_reload #log_end_msg $? #;; + restart|force-reload) - # - # If the "reload" option is implemented then remove the - # 'force-reload' alias - # log_daemon_msg "Restarting $DESC" "$NAME" do_stop case "$?" in @@ -140,9 +145,8 @@ case "$1" in ;; esac ;; - *) - #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 - echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 + + *) echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 exit 3 ;; esac