Statistics
| Branch: | Tag: | Revision:

root / daemons / daemon-util.in @ c0eb47b9

History | View | Annotate | Download (7.8 kB)

1 f154a7a3 Michael Hanselmann
#!/bin/bash
2 f154a7a3 Michael Hanselmann
#
3 f154a7a3 Michael Hanselmann
4 5ad68a23 Michael Hanselmann
# Copyright (C) 2009, 2011, 2012 Google Inc.
5 f154a7a3 Michael Hanselmann
#
6 f154a7a3 Michael Hanselmann
# This program is free software; you can redistribute it and/or modify
7 f154a7a3 Michael Hanselmann
# it under the terms of the GNU General Public License as published by
8 f154a7a3 Michael Hanselmann
# the Free Software Foundation; either version 2 of the License, or
9 f154a7a3 Michael Hanselmann
# (at your option) any later version.
10 f154a7a3 Michael Hanselmann
#
11 f154a7a3 Michael Hanselmann
# This program is distributed in the hope that it will be useful, but
12 f154a7a3 Michael Hanselmann
# WITHOUT ANY WARRANTY; without even the implied warranty of
13 f154a7a3 Michael Hanselmann
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 f154a7a3 Michael Hanselmann
# General Public License for more details.
15 f154a7a3 Michael Hanselmann
#
16 f154a7a3 Michael Hanselmann
# You should have received a copy of the GNU General Public License
17 f154a7a3 Michael Hanselmann
# along with this program; if not, write to the Free Software
18 f154a7a3 Michael Hanselmann
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 f154a7a3 Michael Hanselmann
# 02110-1301, USA.
20 f154a7a3 Michael Hanselmann
21 f154a7a3 Michael Hanselmann
set -e
22 f154a7a3 Michael Hanselmann
23 6e3bf290 Michael Hanselmann
@SHELL_ENV_INIT@
24 6e3bf290 Michael Hanselmann
25 6e3bf290 Michael Hanselmann
readonly defaults_file="$SYSCONFDIR/default/ganeti"
26 f154a7a3 Michael Hanselmann
27 5d8acbdd Michael Hanselmann
# This is a list of all daemons and the order in which they're started. The
28 5d8acbdd Michael Hanselmann
# order is important as there are dependencies between them. On shutdown,
29 5d8acbdd Michael Hanselmann
# they're stopped in reverse order.
30 5d8acbdd Michael Hanselmann
DAEMONS=(
31 59881a0b Petr Pudlak
  ganeti-wconfd
32 5d8acbdd Michael Hanselmann
  ganeti-noded
33 5d8acbdd Michael Hanselmann
  ganeti-masterd
34 5d8acbdd Michael Hanselmann
  ganeti-rapi
35 6b06efa7 Petr Pudlak
  ganeti-luxid
36 5d8acbdd Michael Hanselmann
  )
37 5d8acbdd Michael Hanselmann
38 bb514a22 Michael Hanselmann
_confd_enabled() {
39 bb514a22 Michael Hanselmann
  [[ "@CUSTOM_ENABLE_CONFD@" == True ]]
40 bb514a22 Michael Hanselmann
}
41 bb514a22 Michael Hanselmann
42 bb514a22 Michael Hanselmann
if _confd_enabled; then
43 c4e5d11e Iustin Pop
  DAEMONS+=( ganeti-confd )
44 c4e5d11e Iustin Pop
fi
45 c4e5d11e Iustin Pop
46 13cc7b84 Michele Tartara
_mond_enabled() {
47 13cc7b84 Michele Tartara
  [[ "@CUSTOM_ENABLE_MOND@" == True ]]
48 13cc7b84 Michele Tartara
}
49 13cc7b84 Michele Tartara
50 13cc7b84 Michele Tartara
if _mond_enabled; then
51 13cc7b84 Michele Tartara
  DAEMONS+=( ganeti-mond )
52 13cc7b84 Michele Tartara
fi
53 13cc7b84 Michele Tartara
54 f154a7a3 Michael Hanselmann
NODED_ARGS=
55 f154a7a3 Michael Hanselmann
MASTERD_ARGS=
56 f154a7a3 Michael Hanselmann
CONFD_ARGS=
57 59881a0b Petr Pudlak
WCONFD_ARGS=
58 3695a4e0 Thomas Thrainer
LUXID_ARGS=
59 f154a7a3 Michael Hanselmann
RAPI_ARGS=
60 13cc7b84 Michele Tartara
MOND_ARGS=
61 f154a7a3 Michael Hanselmann
62 f154a7a3 Michael Hanselmann
# Read defaults file if it exists
63 f154a7a3 Michael Hanselmann
if [[ -s $defaults_file ]]; then
64 f154a7a3 Michael Hanselmann
  . $defaults_file
65 f154a7a3 Michael Hanselmann
fi
66 f154a7a3 Michael Hanselmann
67 07c7c94a Jun Futagawa
# Meant to facilitate use utilities in /etc/rc.d/init.d/functions in case
68 07c7c94a Jun Futagawa
# start-stop-daemon is not available.
69 07c7c94a Jun Futagawa
_ignore_error() {
70 07c7c94a Jun Futagawa
  eval "$@" || :
71 07c7c94a Jun Futagawa
}
72 07c7c94a Jun Futagawa
73 f154a7a3 Michael Hanselmann
_daemon_pidfile() {
74 6e3bf290 Michael Hanselmann
  echo "$RUN_DIR/$1.pid"
75 f154a7a3 Michael Hanselmann
}
76 f154a7a3 Michael Hanselmann
77 a34d8cc0 Michael Hanselmann
_daemon_executable() {
78 a34d8cc0 Michael Hanselmann
  echo "@PREFIX@/sbin/$1"
79 a34d8cc0 Michael Hanselmann
}
80 a34d8cc0 Michael Hanselmann
81 cbccd9ca René Nussbaumer
_daemon_usergroup() {
82 cbccd9ca René Nussbaumer
  case "$1" in
83 cbccd9ca René Nussbaumer
    masterd)
84 cbccd9ca René Nussbaumer
      echo "@GNTMASTERUSER@:@GNTMASTERDGROUP@"
85 cbccd9ca René Nussbaumer
      ;;
86 cbccd9ca René Nussbaumer
    confd)
87 e455a3e8 Michele Tartara
      echo "@GNTCONFDUSER@:@GNTCONFDGROUP@"
88 cbccd9ca René Nussbaumer
      ;;
89 59881a0b Petr Pudlak
    wconfd)
90 59881a0b Petr Pudlak
      echo "@GNTWCONFDUSER@:@GNTWCONFDGROUP@"
91 59881a0b Petr Pudlak
      ;;
92 3695a4e0 Thomas Thrainer
    luxid)
93 3695a4e0 Thomas Thrainer
      echo "@GNTLUXIDUSER@:@GNTLUXIDGROUP@"
94 670e954a Thomas Thrainer
      ;;
95 cbccd9ca René Nussbaumer
    rapi)
96 cbccd9ca René Nussbaumer
      echo "@GNTRAPIUSER@:@GNTRAPIGROUP@"
97 cbccd9ca René Nussbaumer
      ;;
98 cbccd9ca René Nussbaumer
    noded)
99 97b7831a Michele Tartara
      echo "@GNTNODEDUSER@:@GNTNODEDGROUP@"
100 cbccd9ca René Nussbaumer
      ;;
101 13cc7b84 Michele Tartara
    mond)
102 13cc7b84 Michele Tartara
      echo "@GNTMONDUSER@:@GNTMONDGROUP@"
103 13cc7b84 Michele Tartara
      ;;
104 cbccd9ca René Nussbaumer
    *)
105 cbccd9ca René Nussbaumer
      echo "root:@GNTDAEMONSGROUP@"
106 cbccd9ca René Nussbaumer
      ;;
107 cbccd9ca René Nussbaumer
  esac
108 cbccd9ca René Nussbaumer
}
109 cbccd9ca René Nussbaumer
110 d2baa21d Michael Hanselmann
# Checks whether the local machine is part of a cluster
111 d2baa21d Michael Hanselmann
check_config() {
112 6e3bf290 Michael Hanselmann
  local server_pem=$DATA_DIR/server.pem
113 d2baa21d Michael Hanselmann
  local fname
114 d2baa21d Michael Hanselmann
115 d2baa21d Michael Hanselmann
  for fname in $server_pem; do
116 d2baa21d Michael Hanselmann
    if [[ ! -f $fname ]]; then
117 d2baa21d Michael Hanselmann
      echo "Missing configuration file $fname" >&2
118 d2baa21d Michael Hanselmann
      return 1
119 d2baa21d Michael Hanselmann
    fi
120 d2baa21d Michael Hanselmann
  done
121 d2baa21d Michael Hanselmann
122 d2baa21d Michael Hanselmann
  return 0
123 d2baa21d Michael Hanselmann
}
124 d2baa21d Michael Hanselmann
125 10c5c1c3 Michael Hanselmann
# Checks the exit code of a daemon
126 10c5c1c3 Michael Hanselmann
check_exitcode() {
127 10c5c1c3 Michael Hanselmann
  if [[ "$#" -lt 1 ]]; then
128 10c5c1c3 Michael Hanselmann
    echo 'Missing exit code.' >&2
129 10c5c1c3 Michael Hanselmann
    return 1
130 10c5c1c3 Michael Hanselmann
  fi
131 10c5c1c3 Michael Hanselmann
132 10c5c1c3 Michael Hanselmann
  local rc="$1"; shift
133 10c5c1c3 Michael Hanselmann
134 10c5c1c3 Michael Hanselmann
  case "$rc" in
135 10c5c1c3 Michael Hanselmann
    0) ;;
136 10c5c1c3 Michael Hanselmann
    11)
137 10c5c1c3 Michael Hanselmann
      echo "not master"
138 10c5c1c3 Michael Hanselmann
    ;;
139 10c5c1c3 Michael Hanselmann
    *)
140 10c5c1c3 Michael Hanselmann
      echo "exit code $rc"
141 10c5c1c3 Michael Hanselmann
      return 1
142 10c5c1c3 Michael Hanselmann
    ;;
143 10c5c1c3 Michael Hanselmann
  esac
144 10c5c1c3 Michael Hanselmann
145 10c5c1c3 Michael Hanselmann
  return 0
146 10c5c1c3 Michael Hanselmann
}
147 10c5c1c3 Michael Hanselmann
148 8e2ed2e8 Michael Hanselmann
# Prints path to PID file for a daemon.
149 8e2ed2e8 Michael Hanselmann
daemon_pidfile() {
150 8e2ed2e8 Michael Hanselmann
  if [[ "$#" -lt 1 ]]; then
151 8e2ed2e8 Michael Hanselmann
    echo 'Missing daemon name.' >&2
152 8e2ed2e8 Michael Hanselmann
    return 1
153 8e2ed2e8 Michael Hanselmann
  fi
154 8e2ed2e8 Michael Hanselmann
155 8e2ed2e8 Michael Hanselmann
  local name="$1"; shift
156 8e2ed2e8 Michael Hanselmann
157 8e2ed2e8 Michael Hanselmann
  _daemon_pidfile $name
158 8e2ed2e8 Michael Hanselmann
}
159 8e2ed2e8 Michael Hanselmann
160 8e2ed2e8 Michael Hanselmann
# Prints path to daemon executable.
161 8e2ed2e8 Michael Hanselmann
daemon_executable() {
162 8e2ed2e8 Michael Hanselmann
  if [[ "$#" -lt 1 ]]; then
163 8e2ed2e8 Michael Hanselmann
    echo 'Missing daemon name.' >&2
164 8e2ed2e8 Michael Hanselmann
    return 1
165 8e2ed2e8 Michael Hanselmann
  fi
166 8e2ed2e8 Michael Hanselmann
167 8e2ed2e8 Michael Hanselmann
  local name="$1"; shift
168 8e2ed2e8 Michael Hanselmann
169 8e2ed2e8 Michael Hanselmann
  _daemon_executable $name
170 8e2ed2e8 Michael Hanselmann
}
171 8e2ed2e8 Michael Hanselmann
172 5d8acbdd Michael Hanselmann
# Prints a list of all daemons in the order in which they should be started
173 5d8acbdd Michael Hanselmann
list_start_daemons() {
174 5d8acbdd Michael Hanselmann
  local name
175 5d8acbdd Michael Hanselmann
176 5d8acbdd Michael Hanselmann
  for name in "${DAEMONS[@]}"; do
177 5d8acbdd Michael Hanselmann
    echo "$name"
178 5d8acbdd Michael Hanselmann
  done
179 5d8acbdd Michael Hanselmann
}
180 5d8acbdd Michael Hanselmann
181 5d8acbdd Michael Hanselmann
# Prints a list of all daemons in the order in which they should be stopped
182 5d8acbdd Michael Hanselmann
list_stop_daemons() {
183 5d8acbdd Michael Hanselmann
  list_start_daemons | tac
184 5d8acbdd Michael Hanselmann
}
185 5d8acbdd Michael Hanselmann
186 5d8acbdd Michael Hanselmann
# Checks whether a daemon name is known
187 5d8acbdd Michael Hanselmann
is_daemon_name() {
188 5d8acbdd Michael Hanselmann
  if [[ "$#" -lt 1 ]]; then
189 5d8acbdd Michael Hanselmann
    echo 'Missing daemon name.' >&2
190 5d8acbdd Michael Hanselmann
    return 1
191 5d8acbdd Michael Hanselmann
  fi
192 5d8acbdd Michael Hanselmann
193 5d8acbdd Michael Hanselmann
  local name="$1"; shift
194 5d8acbdd Michael Hanselmann
195 5d8acbdd Michael Hanselmann
  for i in "${DAEMONS[@]}"; do
196 5d8acbdd Michael Hanselmann
    if [[ "$i" == "$name" ]]; then
197 5d8acbdd Michael Hanselmann
      return 0
198 5d8acbdd Michael Hanselmann
    fi
199 5d8acbdd Michael Hanselmann
  done
200 5d8acbdd Michael Hanselmann
201 5d8acbdd Michael Hanselmann
  echo "Unknown daemon name '$name'" >&2
202 5d8acbdd Michael Hanselmann
  return 1
203 5d8acbdd Michael Hanselmann
}
204 5d8acbdd Michael Hanselmann
205 f154a7a3 Michael Hanselmann
# Checks whether daemon is running
206 f154a7a3 Michael Hanselmann
check() {
207 f154a7a3 Michael Hanselmann
  if [[ "$#" -lt 1 ]]; then
208 f154a7a3 Michael Hanselmann
    echo 'Missing daemon name.' >&2
209 49d43244 Michael Hanselmann
    return 1
210 f154a7a3 Michael Hanselmann
  fi
211 f154a7a3 Michael Hanselmann
212 f154a7a3 Michael Hanselmann
  local name="$1"; shift
213 07c7c94a Jun Futagawa
  local pidfile=$(_daemon_pidfile $name)
214 07c7c94a Jun Futagawa
  local daemonexec=$(_daemon_executable $name)
215 07c7c94a Jun Futagawa
216 07c7c94a Jun Futagawa
  if type -p start-stop-daemon >/dev/null; then
217 07c7c94a Jun Futagawa
    start-stop-daemon --stop --signal 0 --quiet \
218 07c7c94a Jun Futagawa
      --pidfile $pidfile
219 07c7c94a Jun Futagawa
  else
220 07c7c94a Jun Futagawa
    _ignore_error status \
221 07c7c94a Jun Futagawa
      -p $pidfile \
222 07c7c94a Jun Futagawa
      $daemonexec
223 07c7c94a Jun Futagawa
  fi
224 f154a7a3 Michael Hanselmann
}
225 f154a7a3 Michael Hanselmann
226 f154a7a3 Michael Hanselmann
# Starts a daemon
227 f154a7a3 Michael Hanselmann
start() {
228 f154a7a3 Michael Hanselmann
  if [[ "$#" -lt 1 ]]; then
229 f154a7a3 Michael Hanselmann
    echo 'Missing daemon name.' >&2
230 49d43244 Michael Hanselmann
    return 1
231 f154a7a3 Michael Hanselmann
  fi
232 f154a7a3 Michael Hanselmann
233 f154a7a3 Michael Hanselmann
  local name="$1"; shift
234 3c29e49d Iustin Pop
  # Convert daemon name to uppercase after removing "ganeti-" prefix
235 3c29e49d Iustin Pop
  local plain_name=${name#ganeti-}
236 3c29e49d Iustin Pop
  local ucname=$(tr a-z A-Z <<<$plain_name)
237 07c7c94a Jun Futagawa
  local pidfile=$(_daemon_pidfile $name)
238 07c7c94a Jun Futagawa
  local usergroup=$(_daemon_usergroup $plain_name)
239 07c7c94a Jun Futagawa
  local daemonexec=$(_daemon_executable $name)
240 f154a7a3 Michael Hanselmann
241 6b06efa7 Petr Pudlak
  if [[ "$name" == ganeti-confd ]] \
242 670e954a Thomas Thrainer
      && ! _confd_enabled; then
243 c4e5d11e Iustin Pop
    echo 'ganeti-confd disabled at build time' >&2
244 c4e5d11e Iustin Pop
    return 1
245 c4e5d11e Iustin Pop
  fi
246 c4e5d11e Iustin Pop
247 f154a7a3 Michael Hanselmann
  # Read $<daemon>_ARGS and $EXTRA_<daemon>_ARGS
248 03956d39 Michael Hanselmann
  eval local args="\"\$${ucname}_ARGS \$EXTRA_${ucname}_ARGS\""
249 f154a7a3 Michael Hanselmann
250 46a8da3b René Nussbaumer
  @PKGLIBDIR@/ensure-dirs
251 46a8da3b René Nussbaumer
252 07c7c94a Jun Futagawa
  if type -p start-stop-daemon >/dev/null; then
253 07c7c94a Jun Futagawa
    start-stop-daemon --start --quiet --oknodo \
254 07c7c94a Jun Futagawa
      --pidfile $pidfile \
255 07c7c94a Jun Futagawa
      --startas $daemonexec \
256 07c7c94a Jun Futagawa
      --chuid $usergroup \
257 07c7c94a Jun Futagawa
      -- $args "$@"
258 07c7c94a Jun Futagawa
  else
259 07c7c94a Jun Futagawa
    # TODO: Find a way to start daemon with a group, until then the group must
260 07c7c94a Jun Futagawa
    # be removed
261 07c7c94a Jun Futagawa
    _ignore_error daemon \
262 07c7c94a Jun Futagawa
      --pidfile $pidfile \
263 07c7c94a Jun Futagawa
      --user ${usergroup%:*} \
264 07c7c94a Jun Futagawa
      $daemonexec $args "$@"
265 07c7c94a Jun Futagawa
  fi
266 c93daaa9 Helga Velroyen
267 f154a7a3 Michael Hanselmann
}
268 f154a7a3 Michael Hanselmann
269 f154a7a3 Michael Hanselmann
# Stops a daemon
270 f154a7a3 Michael Hanselmann
stop() {
271 f154a7a3 Michael Hanselmann
  if [[ "$#" -lt 1 ]]; then
272 f154a7a3 Michael Hanselmann
    echo 'Missing daemon name.' >&2
273 49d43244 Michael Hanselmann
    return 1
274 f154a7a3 Michael Hanselmann
  fi
275 f154a7a3 Michael Hanselmann
276 f154a7a3 Michael Hanselmann
  local name="$1"; shift
277 07c7c94a Jun Futagawa
  local pidfile=$(_daemon_pidfile $name)
278 f154a7a3 Michael Hanselmann
279 07c7c94a Jun Futagawa
  if type -p start-stop-daemon >/dev/null; then
280 07c7c94a Jun Futagawa
    start-stop-daemon --stop --quiet --oknodo --retry 30 \
281 07c7c94a Jun Futagawa
      --pidfile $pidfile
282 07c7c94a Jun Futagawa
  else
283 07c7c94a Jun Futagawa
    _ignore_error killproc -p $pidfile $name
284 07c7c94a Jun Futagawa
  fi
285 f154a7a3 Michael Hanselmann
}
286 f154a7a3 Michael Hanselmann
287 f154a7a3 Michael Hanselmann
# Starts a daemon if it's not yet running
288 f154a7a3 Michael Hanselmann
check_and_start() {
289 f154a7a3 Michael Hanselmann
  local name="$1"
290 f154a7a3 Michael Hanselmann
291 f154a7a3 Michael Hanselmann
  if ! check $name; then
292 f154a7a3 Michael Hanselmann
    start $name
293 f154a7a3 Michael Hanselmann
  fi
294 f154a7a3 Michael Hanselmann
}
295 f154a7a3 Michael Hanselmann
296 f154a7a3 Michael Hanselmann
# Starts the master role
297 f154a7a3 Michael Hanselmann
start_master() {
298 c0eb47b9 Petr Pudlak
  start ganeti-wconfd
299 f154a7a3 Michael Hanselmann
  start ganeti-masterd
300 f154a7a3 Michael Hanselmann
  start ganeti-rapi
301 6b06efa7 Petr Pudlak
  start ganeti-luxid
302 f154a7a3 Michael Hanselmann
}
303 f154a7a3 Michael Hanselmann
304 f154a7a3 Michael Hanselmann
# Stops the master role
305 f154a7a3 Michael Hanselmann
stop_master() {
306 6b06efa7 Petr Pudlak
  stop ganeti-luxid
307 f154a7a3 Michael Hanselmann
  stop ganeti-rapi
308 f154a7a3 Michael Hanselmann
  stop ganeti-masterd
309 c0eb47b9 Petr Pudlak
  stop ganeti-wconfd
310 f154a7a3 Michael Hanselmann
}
311 f154a7a3 Michael Hanselmann
312 2250afb3 Michael Hanselmann
# Start all daemons
313 2250afb3 Michael Hanselmann
start_all() {
314 2250afb3 Michael Hanselmann
  for i in $(list_start_daemons); do
315 2250afb3 Michael Hanselmann
    local rc=0
316 2250afb3 Michael Hanselmann
317 2250afb3 Michael Hanselmann
    # Try to start daemon
318 2250afb3 Michael Hanselmann
    start $i || rc=$?
319 2250afb3 Michael Hanselmann
320 2250afb3 Michael Hanselmann
    if ! errmsg=$(check_exitcode $rc); then
321 2250afb3 Michael Hanselmann
      echo "$errmsg" >&2
322 2250afb3 Michael Hanselmann
      return 1
323 2250afb3 Michael Hanselmann
    fi
324 2250afb3 Michael Hanselmann
  done
325 2250afb3 Michael Hanselmann
326 2250afb3 Michael Hanselmann
  return 0
327 2250afb3 Michael Hanselmann
}
328 2250afb3 Michael Hanselmann
329 2250afb3 Michael Hanselmann
# Stop all daemons
330 2250afb3 Michael Hanselmann
stop_all() {
331 2250afb3 Michael Hanselmann
  for i in $(list_stop_daemons); do
332 2250afb3 Michael Hanselmann
    stop $i
333 2250afb3 Michael Hanselmann
  done
334 2250afb3 Michael Hanselmann
}
335 2250afb3 Michael Hanselmann
336 f99cbfbd Apollon Oikonomopoulos
# SIGHUP a process to force re-opening its logfiles
337 f99cbfbd Apollon Oikonomopoulos
rotate_logs() {
338 f99cbfbd Apollon Oikonomopoulos
  if [[ "$#" -lt 1 ]]; then
339 f99cbfbd Apollon Oikonomopoulos
    echo 'Missing daemon name.' >&2
340 f99cbfbd Apollon Oikonomopoulos
    return 1
341 f99cbfbd Apollon Oikonomopoulos
  fi
342 f99cbfbd Apollon Oikonomopoulos
343 f99cbfbd Apollon Oikonomopoulos
  local name="$1"; shift
344 f99cbfbd Apollon Oikonomopoulos
  local pidfile=$(_daemon_pidfile $name)
345 f99cbfbd Apollon Oikonomopoulos
  local daemonexec=$(_daemon_executable $name)
346 f99cbfbd Apollon Oikonomopoulos
347 f99cbfbd Apollon Oikonomopoulos
  if type -p start-stop-daemon >/dev/null; then
348 f99cbfbd Apollon Oikonomopoulos
    start-stop-daemon --stop --signal HUP --quiet \
349 9a8e4b73 Apollon Oikonomopoulos
      --oknodo --pidfile $pidfile
350 f99cbfbd Apollon Oikonomopoulos
  else
351 f99cbfbd Apollon Oikonomopoulos
    _ignore_error killproc \
352 f99cbfbd Apollon Oikonomopoulos
      -p $pidfile \
353 f99cbfbd Apollon Oikonomopoulos
      $daemonexec -HUP
354 f99cbfbd Apollon Oikonomopoulos
  fi
355 f99cbfbd Apollon Oikonomopoulos
}
356 f99cbfbd Apollon Oikonomopoulos
357 f99cbfbd Apollon Oikonomopoulos
# SIGHUP all processes
358 f99cbfbd Apollon Oikonomopoulos
rotate_all_logs() {
359 f99cbfbd Apollon Oikonomopoulos
  for i in $(list_stop_daemons); do
360 f99cbfbd Apollon Oikonomopoulos
    rotate_logs $i
361 f99cbfbd Apollon Oikonomopoulos
  done
362 f99cbfbd Apollon Oikonomopoulos
}
363 f99cbfbd Apollon Oikonomopoulos
364 7e1fac25 Michael Hanselmann
# Reloads the SSH keys
365 7e1fac25 Michael Hanselmann
reload_ssh_keys() {
366 7e1fac25 Michael Hanselmann
  @RPL_SSH_INITD_SCRIPT@ restart
367 7e1fac25 Michael Hanselmann
}
368 7e1fac25 Michael Hanselmann
369 07c7c94a Jun Futagawa
# Read @SYSCONFDIR@/rc.d/init.d/functions if start-stop-daemon not available
370 07c7c94a Jun Futagawa
if ! type -p start-stop-daemon >/dev/null && \
371 07c7c94a Jun Futagawa
   [[ -f @SYSCONFDIR@/rc.d/init.d/functions ]]; then
372 07c7c94a Jun Futagawa
  _ignore_error . @SYSCONFDIR@/rc.d/init.d/functions
373 07c7c94a Jun Futagawa
fi
374 07c7c94a Jun Futagawa
375 f154a7a3 Michael Hanselmann
if [[ "$#" -lt 1 ]]; then
376 f154a7a3 Michael Hanselmann
  echo "Usage: $0 <action>" >&2
377 f154a7a3 Michael Hanselmann
  exit 1
378 f154a7a3 Michael Hanselmann
fi
379 f154a7a3 Michael Hanselmann
380 f154a7a3 Michael Hanselmann
orig_action=$1; shift
381 f154a7a3 Michael Hanselmann
382 7289c16e Michael Hanselmann
if [[ "$orig_action" == *_* ]]; then
383 7289c16e Michael Hanselmann
  echo "Command must not contain underscores" >&2
384 7289c16e Michael Hanselmann
  exit 1
385 7289c16e Michael Hanselmann
fi
386 7289c16e Michael Hanselmann
387 f154a7a3 Michael Hanselmann
# Replace all dashes (-) with underlines (_)
388 f154a7a3 Michael Hanselmann
action=${orig_action//-/_}
389 f154a7a3 Michael Hanselmann
390 f154a7a3 Michael Hanselmann
# Is it a known function?
391 f154a7a3 Michael Hanselmann
if ! declare -F "$action" >/dev/null 2>&1; then
392 f154a7a3 Michael Hanselmann
  echo "Unknown command: $orig_action" >&2
393 f154a7a3 Michael Hanselmann
  exit 1
394 f154a7a3 Michael Hanselmann
fi
395 f154a7a3 Michael Hanselmann
396 f154a7a3 Michael Hanselmann
# Call handler function
397 f154a7a3 Michael Hanselmann
$action "$@"