summaryrefslogtreecommitdiff
path: root/chat/silc-server/files/silcd.generic
blob: e790826bee4d5bbaa42e02d43b9ed2dcbeb848f1 (plain)
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
# $NetBSD: silcd.generic,v 1.3 2003/10/16 12:37:44 salo Exp $
#

KILL="/bin/kill"
CAT="/bin/cat"
RM="/bin/rm"

name="silcd"
confdir="@PKG_SYSCONFDIR@"
required_files="$confdir/silcd.conf"
required_dirs="/var/log/silcd"
pidfile="/var/run/${name}.pid"
command="@PREFIX@/sbin/silcd"
start_precmd="silcd_precmd"

silcd_precmd() {       
	if [ ! -f $confdir/silcd.prv ]; then
		umask 7177 && $command -C $confdir
	fi
}

silcd_start() {
	if [ ! -r $required_files ]; then
		echo "$0: WARNING: $required_files is not readable."
		exit 1
	fi
	if [ ! -d $required_dirs ]; then
		echo "$0: WARNING: $required_dirs is not a directory."
		exit 1
	fi

	eval $start_precmd
	return_code=$?
	if [ $return_code != "0" ]; then
		exit 1
	fi

	echo "Starting ${name}."
	eval $command
	return_code=$?
	if [ $return_code != "0" ]; then
		exit 1
	fi
}


silcd_stop() {
	if [ -r $pidfile  -a ! -z $pidfile ]; then
		_pid=`${CAT} ${pidfile}`
	else
		echo "${name} not running?"
	fi
	if [ ${_pid:=0} -gt 1 -a ! "X$_pid" = "X " ]; then
		echo "Stopping ${name}."
		${KILL} ${_pid}
		return_code=$?
		if [ $return_code != "0" ]; then
			exit 1
		fi
	fi
	${RM} -f $pidfile
}

case $1 in

'start')
    silcd_start
    ;;

'stop')
    silcd_stop
    ;;

'restart')
    silcd_stop
    silcd_start
    ;;

*)
    echo "Usage: $0 (start|stop|restart)"
    ;;
esac