1#!/bin/sh
2#
3# messagebus-config, Copyright 2009 Yaakov Selkowitz
4#
5# This file is part of the Cygwin port of dbus.
6
7# ======================================================================
8# Initialization
9# ======================================================================
10PROGNAME=$(basename $0)
11_tdir=$(dirname $0)
12PROGDIR=$(cd $_tdir && pwd)
13
14CSIH_SCRIPT=/usr/share/csih/cygwin-service-installation-helper.sh
15
16# Subdirectory where the new package is being installed
17PREFIX=/usr
18
19# Directory where the config files are stored
20SYSCONFDIR=${prefix}/etc/dbus-1
21DEVDIR=/dev
22LOGDIR=/var/log
23RUNDIR=$(dirname /usr/var/run/messagebus.pid)
24SOCKDIR=$(dirname /var/run/system_bus_socket)
25
26source ${CSIH_SCRIPT}
27
28# ======================================================================
29# Routine: install_service
30#   Install messagebus as a service
31# ======================================================================
32install_service() {
33
34  if csih_is_nt
35  then
36
37    # Check if messagebus is installed and remove on user request.
38    if cygrunsrv -Q messagebus > /dev/null 2>&1
39    then
40      csih_warning "The messagebus service is already installed."
41      echo
42      if csih_request "Do you want to reinstall it with different args?"
43      then
44        cygrunsrv -E messagebus
45        cygrunsrv -R messagebus
46      fi
47    fi
48
49    # Install messagebus service if it is not already installed
50    if ! cygrunsrv -Q messagebus > /dev/null 2>&1
51    then
52      echo
53      csih_warning "The following function requires administrator privileges!"
54      if csih_request "Do you want to install messagebus as service?"
55      then
56        if cygrunsrv -I messagebus -d "CYGWIN D-Bus system service" -p /usr/bin/dbus-daemon -a "--nofork --system"
57        then
58	  echo
59	  csih_inform "The messagebus service has been installed under the LocalSystem"
60	  csih_inform "account (also known as SYSTEM). To start the service now, call"
61          csih_inform "\`net start messagebus' or \`cygrunsrv -S messagebus'. Otherwise, it"
62          csih_inform "will start automatically after the next reboot."
63	  echo
64	  csih_inform "Check ${SYSCONFDIR}/system.conf first, if it suits your needs."
65        fi
66      fi # user allowed us to install messagebus
67    fi # messagebus already installed
68  fi # csih_is_nt
69} # --- End of install_service --- #
70
71
72# ======================================================================
73# Main Entry Point
74# ======================================================================
75
76
77# Check how the script has been started.  If
78#   (1) it has been started by giving the full path and
79#       that path is /etc/postinstall, OR
80#   (2) Otherwise, if the environment variable
81#       CONFIG_AUTO_ANSWER_NO is set
82# then set auto_answer to "no".  This allows automatic
83# creation of the config files in /etc w/o overwriting
84# them if they already exist.  In both cases, color
85# escape sequences are suppressed, so as to prevent
86# cluttering setup's logfiles.
87if [ "$PROGDIR" = "/etc/postinstall" ]
88then
89  csih_auto_answer="no"
90  csih_disable_color
91fi
92if [ -n "${CONFIG_AUTO_ANSWER_NO}" ]
93then
94  csih_auto_answer="no"
95  csih_disable_color
96fi
97
98
99# ======================================================================
100# Parse options
101# ======================================================================
102while :
103do
104  case $# in
105  0)
106    break
107    ;;
108  esac
109
110  option=$1
111  shift
112
113  case "$option" in
114  -d | --debug )
115    set -x
116    csih_trace_on
117    ;;
118
119  -y | --yes )
120    csih_auto_answer=yes
121    ;;
122
123  -n | --no )
124    csih_auto_answer=no
125    ;;
126
127  *)
128    echo "usage: ${PROGNAME} [OPTION]..."
129    echo
130    echo "This script creates a basic messagebus configuration."
131    echo
132    echo "Options:"
133    echo "    --debug  -d     Enable shell's debug output."
134    echo "    --yes    -y     Answer all questions with \"yes\" automatically."
135    echo "    --no     -n     Answer all questions with \"no\" automatically."
136    echo
137    exit 1
138    ;;
139
140  esac
141done
142
143# ======================================================================
144# Action!
145# ======================================================================
146
147# Check for ${SYSCONFDIR} directory
148csih_make_dir "${SYSCONFDIR}" "Cannot create global configuration files."
149chmod 775 "${SYSCONFDIR}"
150setfacl -m u:system:rwx "${SYSCONFDIR}"
151
152# Check for ${DEVDIR} directory
153csih_make_dir "${DEVDIR}" "Syslogging using messagebus will not work."
154chmod 775 "${DEVDIR}"
155setfacl -m u:system:rwx "${DEVDIR}"
156
157# Check for ${LOGDIR} directory
158csih_make_dir "${LOGDIR}" "Syslogging using messagebus will not work."
159chmod 775 "${LOGDIR}"
160setfacl -m u:system:rwx "${LOGDIR}"
161
162# Check for ${RUNDIR} directory
163csih_make_dir "${RUNDIR}" "PID files of running processes will not be created."
164chmod 775 "${RUNDIR}"
165setfacl -m u:system:rwx "${RUNDIR}"
166
167# Check for ${SOCKDIR} directory
168csih_make_dir "${SOCKDIR}" "SOCKET files of running processes will not be created."
169chmod 775 "${SOCKDIR}"
170setfacl -m u:system:rwx "${SOCKDIR}"
171
172# maybe: csih_auto_answer=no will skip,
173# interactive user will get a chance to override
174install_service
175
176
177echo
178echo "Configuration finished. Have fun!"
179