File: init.d

package info (click to toggle)
pdnsd 1.1.11par-1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 1,416 kB
  • ctags: 1,102
  • sloc: ansic: 10,567; sh: 707; perl: 185; makefile: 158
file content (150 lines) | stat: -rw-r--r-- 2,801 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#!/bin/sh
#
# pdnsd

set +e   # Don't exit on error status

NAME="pdnsd"
DESC="proxy DNS server"
DAEMON="/usr/sbin/pdnsd"
PIDFILE="/var/run/pdnsd.pid"
CACHE="/var/cache/pdnsd/pdnsd.cache"

[ -x "$DAEMON" ] || exit 0

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

[ -r "/etc/default/$NAME" ] || exit 0
. "/etc/default/$NAME"

gen_cache () {
	set -e
	if [ -f "$CACHE" ]; then
		CACHE_SIZE=$(LANG=C ls -l "$CACHE" | awk '{ print $5; }')
		if expr $CACHE_SIZE '<' 4 > /dev/null; then
			echo -n " (regenerating cache..."
			dd if=/dev/zero of="$CACHE" bs=1 count=4 2> /dev/null
			chown pdnsd.proxy "$CACHE"
			echo -n "done)"
		fi
	else
		echo -n " (generating cache..."
		mkdir -p /var/cache/pdnsd
		dd if=/dev/zero of="$CACHE" bs=1 count=4 2> /dev/null
		chown -R pdnsd.proxy /var/cache/pdnsd
		echo -n "done)"
	fi	
	set +e
	return 0
}

start()
{
	# Return
	#   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 -p "$PIDFILE" $START_OPTIONS \
		|| return 2
}

start_resolvconf()
{
	if [ -x /sbin/resolvconf ] ; then
		echo "nameserver 127.0.0.1" | /sbin/resolvconf -a "lo.$NAME"
	fi
	return 0
}

stop()
{
	# Return
	#   0 if daemon has been stopped
	#   1 if daemon was already stopped
	#   2 if daemon could not be stopped
	start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile "$PIDFILE" --name "$NAME"
	RETVAL="$?"
	[ "$RETVAL" = 2 ] && return 2
	# Wait for children to finish too
	start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec "$DAEMON" > /dev/null
	[ "$?" = 2 ] && return 2
	rm -f "$PIDFILE"
	return "$RETVAL"
}

stop_resolvconf()
{
	if [ -x /sbin/resolvconf ] ; then
		/sbin/resolvconf -d "lo.$NAME"
	fi
	return 0
}

case "$1" in
start)
	echo -n "Starting $DESC: $NAME"
	gen_cache
	start
	case "$?" in
	0)
		echo "."
		start_resolvconf
		exit 0
		;;
	1)
		echo " (already running)."
		exit 0
		;;
	*)
		echo " (failed)."
		exit 1
		;;
	esac
	;;
stop)
	stop_resolvconf
	echo -n "Stopping $DESC: $NAME"
	stop
	case "$?" in
		0) echo "." ; exit 0 ;;
		1) echo " (not running)." ; exit 0 ;;
		*) echo " (failed)." ; exit 1 ;;
	esac
	;;
restart|force-reload)
	stop_resolvconf
	echo -n "Restarting $DESC: $NAME"
	stop
	case "$?" in
	0|1)
		start
		case "$?" in
		0)
			echo "."
			start_resolvconf
			exit 0
			;;
		1)
			echo " (failed -- old process is still running)."
			exit 1
			;;
		*)
			echo " (failed to start)."
			exit 1
			;;
		esac
		;;
	*)
		echo " (failed to stop)."
		exit 1
		;;
	esac
	;;
*)
	echo "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload}" >&2
	exit 3
	;;
esac