1#! /bin/sh
2### BEGIN INIT INFO
3# Provides:          dbus
4# Required-Start:    $remote_fs $syslog
5# Required-Stop:     $remote_fs $syslog
6# Default-Start:     2 3 4 5
7# Default-Stop:      1
8# Short-Description: D-Bus systemwide message bus
9# Description:       D-Bus is a simple interprocess messaging system, used
10#                    for sending messages between applications.
11### END INIT INFO
12#
13# -*- coding: utf-8 -*-
14# Debian init.d script for D-BUS
15# Copyright © 2003 Colin Walters <walters@debian.org>
16
17# set -e
18
19# Source function library.
20. /etc/init.d/functions
21
22DAEMON=@bindir@/dbus-daemon
23NAME=dbus
24DAEMONUSER=messagebus           # must match /usr/share/dbus-1/system.conf
25PIDFILE=/var/run/dbus/pid # must match /usr/share/dbus-1/system.conf
26UUIDDIR=/var/lib/dbus
27DESC="system message bus"
28EVENTDIR=/etc/dbus-1/event.d
29
30test -x $DAEMON || exit 0
31
32# Source defaults file; edit that file to configure this script.
33ENABLED=1
34PARAMS=""
35if [ -e /etc/default/dbus ]; then
36  . /etc/default/dbus
37fi
38
39test "$ENABLED" != "0" || exit 0
40
41start_it_up()
42{
43  mkdir -p "`dirname $PIDFILE`"
44  if [ -e $PIDFILE ]; then
45    PIDDIR=/proc/$(cat $PIDFILE)
46    if [ -d ${PIDDIR} -a  "$(readlink -f ${PIDDIR}/exe)" = "${DAEMON}" ]; then
47      echo "$DESC already started; not starting."
48    else
49      echo "Removing stale PID file $PIDFILE."
50      rm -f $PIDFILE
51    fi
52  fi
53
54  if [ ! -d $UUIDDIR ]; then
55    mkdir -p $UUIDDIR
56    chown $DAEMONUSER $UUIDDIR
57    chgrp $DAEMONUSER $UUIDDIR
58  fi
59
60  dbus-uuidgen --ensure
61
62  echo -n "Starting $DESC: "
63  start-stop-daemon -o --start --quiet --pidfile $PIDFILE \
64    --user $DAEMONUSER --exec $DAEMON -- --system $PARAMS
65  echo "$NAME."
66  if [ -d $EVENTDIR ]; then
67      run-parts --arg=start $EVENTDIR
68  fi
69}
70
71shut_it_down()
72{
73  if [ -d $EVENTDIR ]; then
74      # TODO: --reverse when busybox supports it
75      run-parts --arg=stop $EVENTDIR
76  fi
77  echo -n "Stopping $DESC: "
78  start-stop-daemon -o --stop  --quiet --pidfile $PIDFILE \
79    --user $DAEMONUSER
80  # We no longer include these arguments so that start-stop-daemon
81  # can do its job even given that we may have been upgraded.
82  # We rely on the pidfile being sanely managed
83  # --exec $DAEMON -- --system $PARAMS
84  echo "$NAME."
85  rm -f $PIDFILE
86}
87
88reload_it()
89{
90  echo -n "Reloading $DESC config: "
91  dbus-send --print-reply --system --type=method_call \
92            --dest=org.freedesktop.DBus \
93            / org.freedesktop.DBus.ReloadConfig > /dev/null
94  # hopefully this is enough time for dbus to reload it's config file.
95  echo "done."
96}
97
98case "$1" in
99  start)
100    start_it_up
101  ;;
102  stop)
103    shut_it_down
104  ;;
105  status)
106    status $DAEMON
107    exit $?
108  ;;
109  reload|force-reload)
110    reload_it
111  ;;
112  restart)
113    shut_it_down
114    sleep 1
115    start_it_up
116  ;;
117  *)
118    echo "Usage: /etc/init.d/$NAME {start|stop|status|restart|reload|force-reload}" >&2
119    exit 1
120  ;;
121esac
122
123exit 0
124