1#! /bin/sh
2### BEGIN INIT INFO
3# Provides:          webtry
4# Required-Start:    $remote_fs $syslog
5# Required-Stop:     $remote_fs $syslog
6# Default-Start:     2 3 4 5
7# Default-Stop:      0 1 6
8# Short-Description: Start webtry.
9# Description:       Web server for trying Skia C++ code.
10### END INIT INFO
11
12# Author: Joe Gregorio <jcgregorio@google.com>
13#
14# Copied from /etc/init.d/skeleton and modified only the following
15# environment variables and updated the start-stop-daemon calls
16# in do_start() to add --make-pidfile, --background, and --chuid.
17
18# Do NOT "set -e"
19
20# PATH should only include /usr/* if it runs after the mountnfs.sh script
21PATH=/sbin:/usr/sbin:/bin:/usr/bin
22DESC="The Skia webtry application."
23NAME=webtry
24DAEMON=/home/webtry/skia/experimental/webtry/$NAME
25DAEMON_ARGS="--use_chroot"
26PIDFILE=/var/run/$NAME.pid
27SCRIPTNAME=/etc/init.d/$NAME
28
29# Exit if the package is not installed
30[ -x "$DAEMON" ] || exit 0
31
32# Read configuration variable file if it is present
33[ -r /etc/default/$NAME ] && . /etc/default/$NAME
34
35# Load the VERBOSE setting and other rcS variables
36. /lib/init/vars.sh
37
38# Define LSB log_* functions.
39# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
40# and status_of_proc is working.
41. /lib/lsb/init-functions
42
43#
44# Function that starts the daemon/service
45#
46do_start()
47{
48	# Return
49	#   0 if daemon has been started
50	#   1 if daemon was already running
51	#   2 if daemon could not be started
52	start-stop-daemon --start --pidfile $PIDFILE --exec $DAEMON --make-pidfile --background --chuid webtry --test > /dev/null \
53		|| return 1
54	start-stop-daemon --start --pidfile $PIDFILE --exec $DAEMON --make-pidfile --background --chuid webtry --exec $DAEMON -- \
55		$DAEMON_ARGS \
56		|| return 2
57	# Add code here, if necessary, that waits for the process to be ready
58	# to handle requests from services started subsequently which depend
59	# on this one.  As a last resort, sleep for some time.
60}
61
62#
63# Function that stops the daemon/service
64#
65do_stop()
66{
67	# Return
68	#   0 if daemon has been stopped
69	#   1 if daemon was already stopped
70	#   2 if daemon could not be stopped
71	#   other if a failure occurred
72	start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
73	RETVAL="$?"
74	[ "$RETVAL" = 2 ] && return 2
75	# Wait for children to finish too if this is a daemon that forks
76	# and if the daemon is only ever run from this initscript.
77	# If the above conditions are not satisfied then add some other code
78	# that waits for the process to drop all resources that could be
79	# needed by services started subsequently.  A last resort is to
80	# sleep for some time.
81	start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
82	[ "$?" = 2 ] && return 2
83	# Many daemons don't delete their pidfiles when they exit.
84	rm -f $PIDFILE
85	return "$RETVAL"
86}
87
88#
89# Function that sends a SIGHUP to the daemon/service
90#
91do_reload() {
92	#
93	# If the daemon can reload its configuration without
94	# restarting (for example, when it is sent a SIGHUP),
95	# then implement that here.
96	#
97	start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
98	return 0
99}
100
101case "$1" in
102  start)
103	[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
104	do_start
105	case "$?" in
106		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
107		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
108	esac
109	;;
110  stop)
111	[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
112	do_stop
113	case "$?" in
114		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
115		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
116	esac
117	;;
118  status)
119	status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
120	;;
121  #reload|force-reload)
122	#
123	# If do_reload() is not implemented then leave this commented out
124	# and leave 'force-reload' as an alias for 'restart'.
125	#
126	#log_daemon_msg "Reloading $DESC" "$NAME"
127	#do_reload
128	#log_end_msg $?
129	#;;
130  restart|force-reload)
131	#
132	# If the "reload" option is implemented then remove the
133	# 'force-reload' alias
134	#
135	log_daemon_msg "Restarting $DESC" "$NAME"
136	do_stop
137	case "$?" in
138	  0|1)
139		do_start
140		case "$?" in
141			0) log_end_msg 0 ;;
142			1) log_end_msg 1 ;; # Old process is still running
143			*) log_end_msg 1 ;; # Failed to start
144		esac
145		;;
146	  *)
147		# Failed to stop
148		log_end_msg 1
149		;;
150	esac
151	;;
152  *)
153	#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
154	echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
155	exit 3
156	;;
157esac
158
159:
160