summaryrefslogtreecommitdiff
path: root/contrib/initscript
blob: d460843d02a22dd9013451c2ff56815791302e04 (plain) (blame)
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
#! /bin/sh
### BEGIN INIT INFO
# Provides:          dropnroll
# Required-Start:    $syslog
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start dropnroll daemon at boot time
# Description:       Waits for files in folders and calls script for new files
### END INIT INFO
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/dropnroll
CONFIG_DIR=/etc/dropnroll
NAME=dropnroll
DESC=dropnroll
VARRUN_DIR=/var/run/$NAME

test -x $DAEMON || exit 0

# Include dropnroll defaults if available
if [ -f /etc/default/dropnroll ] ; then
  . /etc/default/dropnroll
fi

. /lib/lsb/init-functions

start_dnr () {
  STATUS="OK"
  if [ -f $CONFIG_DIR/$DNRNAME/config ] ; then
    NEWFILE=''
    test -f  $CONFIG_DIR/$DNRNAME/newfile.sh && NEWFILE="-x $CONFIG_DIR/$DNRNAME/newfile.sh"
    CHROOTDIR=`grep '^chroot' < $CONFIG_DIR/$DNRNAME/config | sed 's/chroot\s*//'`
    if [ -n "$CHROOTDIR" ] ; then
      test -d $CHROOTDIR || mkdir -p $CHROOTDIR
    fi
    test -d $VARRUN_DIR || mkdir -p $VARRUN_DIR
    chmod 777 $VARRUN_DIR
    DAEMONARG=`sed 's/#.*//' < $CONFIG_DIR/$DNRNAME/config | grep -e '\w' | sed  's/^/--/' | tr '\n' ' '`
    $DAEMON --write-pid $VARRUN_DIR/$DNRNAME.pid $NEWFILE $DAEMONOPTS $DAEMONARG || STATUS="FAILED"
  else
    STATUS="no config found"
  fi
  echo -n "($STATUS)"
}

stop_dnr () {
  kill `cat $PIDFILE` || true
  rm $PIDFILE
}

set -e
case "$1" in
  start)
  echo -n "Starting $DESC:"
  if test -z "$2" ; then
    if [ -f $CONFIG_DIR/autostart ] ; then
      for DNRNAME in `sed 's/#.*//'  <  $CONFIG_DIR/autostart | grep -e '\w'`; do
        echo -n " $DNRNAME"
        start_dnr
      done
    else
      echo " no config found"
      exit 0;
    fi
  else
    while shift ; do
      [ -z "$1" ] && break
      DNRNAME=$1
      echo -n " $DNRNAME"
      start_dnr
    done
  fi
  echo "."
  ;;
  stop)
  echo -n "Stoping $DESC:"
  if test -z "$2" ; then
    for PIDFILE in `ls $VARRUN_DIR/*.pid 2> /dev/null`; do
      DNRNAME=`echo $PIDFILE | cut -c20-`
      DNRNAME=${DNRNAME%%.pid}
      echo -n " $DNRNAME"
      stop_dnr
    done
  else
    while shift ; do
      [ -z "$1" ] && break
      if test -e $VARRUN_DIR/$1.pid ; then
        PIDFILE=`ls $VARRUN_DIR/$1.pid 2> /dev/null`
        DNRNAME=`echo $PIDFILE | cut -c20-`
        DNRNAME=${DNRNAME%%.pid}
        echo -n " $DNRNAME"
        stop_dnr
      else
        echo -n " (failure: No such tunnel is running: $1)"
      fi
    done
  fi
  echo "."
  ;;
  reload)
  echo -n "Reloading $DESC:"
  if test -z "$2" ; then
    for PIDFILE in `ls $VARRUN_DIR/*.pid 2> /dev/null`; do
      DNRNAME=`echo $PIDFILE | cut -c20-`
      DNRNAME=${DNRNAME%%.pid}
      echo -n " $DNRNAME"
      stop_dnr
      start_dnr
    done
  else
    while shift ; do
      [ -z "$1" ] && break
      if test -e $VARRUN_DIR/$1.pid ; then
        PIDFILE=`ls $VARRUN_DIR/$1.pid 2> /dev/null`
        DNRNAME=`echo $PIDFILE | cut -c20-`
        DNRNAME=${DNRNAME%%.pid}
        echo -n " $DNRNAME"
        stop_dnr
        start_dnr
      else
        echo -n " (failure: No such tunnel is running: $1)"
      fi
    done
  fi
  echo "."
  ;;
  restart)
    SCRIPT=$0
    shift
    $SCRIPT stop $*
    sleep 1
    $SCRIPT start $*
  ;;
  *)
  N=/etc/init.d/$NAME
  echo "Usage: $N {start|stop|restart|reload}" >&2
  exit 1
  ;;
esac

exit 0