]> git.donarmstrong.com Git - dsa-puppet.git/blob - modules/stunnel4/files/etc-init.d-stunnel4
6456bfb7dca4ec523cbb748f204460319dcab107
[dsa-puppet.git] / modules / stunnel4 / files / etc-init.d-stunnel4
1 #! /bin/sh -e
2
3 ##
4 ## THIS FILE IS UNDER PUPPET CONTROL. DON'T EDIT IT HERE.
5 ## USE: git clone git+ssh://$USER@puppet.debian.org/srv/puppet.debian.org/git/dsa-puppet.git
6 ##
7
8 ### BEGIN INIT INFO
9 # Provides:          stunnel4
10 # Required-Start:    $local_fs $remote_fs
11 # Required-Stop:     $local_fs $remote_fs
12 # Should-Start:      $syslog
13 # Should-Stop:       $syslog
14 # Default-Start:     2 3 4 5
15 # Default-Stop:      0 1 6
16 # Short-Description: Start or stop stunnel 4.x (SSL tunnel for network daemons)
17 ### END INIT INFO
18
19 DEFAULTPIDFILE="/var/run/stunnel4.pid"
20 DAEMON=/usr/bin/stunnel4
21 NAME=stunnel
22 DESC="SSL tunnels"
23 OPTIONS=""
24 ENABLED=0
25
26 ulimit -n 4096
27
28 if [ -n "${2:-}" ]; then
29         if [ -e "/etc/stunnel/$2.conf" ]; then
30                 FILES="/etc/stunnel/$2.conf"
31         else
32                 echo >&2 "/etc/stunnel/$2.conf does not exist."
33                 exit 1
34         fi
35 else
36         FILES="/etc/stunnel/*.conf"
37 fi
38
39 get_pids() {
40    local file=$1
41    if test -f $file; then
42      CHROOT=`grep "^chroot" $file|sed "s;.*= *;;"`
43      PIDFILE=`grep "^pid" $file|sed "s;.*= *;;"`
44      if [ "$PIDFILE" = "" ]; then
45        PIDFILE=$DEFAULTPIDFILE
46      fi
47      if test -f $CHROOT/$PIDFILE; then
48        cat $CHROOT/$PIDFILE
49      fi
50    fi
51 }
52
53 startdaemons() {
54   if ! [ -d /var/run/stunnel4 ]; then
55     rm -rf /var/run/stunnel4
56     install -d -o stunnel4 -g stunnel4 /var/run/stunnel4
57   fi
58   for file in $FILES; do 
59     if test -f $file; then
60       ARGS="$file $OPTIONS"
61       PROCLIST=`get_pids $file`
62       if [ "$PROCLIST" ] && kill -0 $PROCLIST 2>/dev/null; then
63         echo -n "[Already running: $file] "
64       elif $DAEMON $ARGS; then
65         echo -n "[Started: $file] "
66       else
67         echo "[Failed: $file]"
68         echo "You should check that you have specified the pid= in you configuration file"
69         exit 1
70       fi
71     fi
72   done;
73 }
74
75 killdaemons()
76 {
77   for file in $FILES; do
78     PROCLIST=`get_pids $file`
79     if [ "$PROCLIST" ] && kill -0 $PROCLIST 2>/dev/null; then
80        kill $PROCLIST
81        echo -n "[stopped: $file] "
82     fi
83   done
84 }
85
86 if [ "x$OPTIONS" != "x" ]; then
87   OPTIONS="-- $OPTIONS"
88 fi
89
90 test -f /etc/default/stunnel4 && . /etc/default/stunnel4
91 if [ "$ENABLED" = "0" ] ; then
92   echo "$DESC disabled, see /etc/default/stunnel4"
93   exit 0
94 fi
95
96 test -x $DAEMON || exit 0
97
98 set -e
99
100 case "$1" in
101   start)
102         echo -n "Starting $DESC: "
103         startdaemons
104         echo "$NAME."
105         ;;
106   stop)
107         echo -n "Stopping $DESC: "
108         killdaemons
109         echo "$NAME."
110         ;;
111 #force-reload does not send a SIGHUP, since SIGHUP is interpreted as a 
112 #quit signal by stunnel. I reported this problem to upstream authors.
113   force-reload|restart)
114         echo -n "Restarting $DESC: "
115         killdaemons
116         sleep 5
117         startdaemons
118         echo "$NAME."
119         ;;
120   *)
121         N=/etc/init.d/$NAME
122         echo "Usage: $N {start|stop|force-reload|restart} [<stunnel instance>]" >&2
123         exit 1
124         ;;
125 esac
126
127 exit 0