~timekpr-maintainers/timekpr/trunk

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