| #!/bin/sh | |
| # | |
| # messagebus-config, Copyright 2009 Yaakov Selkowitz | |
| # | |
| # This file is part of the Cygwin port of dbus. | |
| # ====================================================================== | |
| # Initialization | |
| # ====================================================================== | |
| PROGNAME=$(basename $0) | |
| _tdir=$(dirname $0) | |
| PROGDIR=$(cd $_tdir && pwd) | |
| CSIH_SCRIPT=/usr/share/csih/cygwin-service-installation-helper.sh | |
| # Subdirectory where the new package is being installed | |
| PREFIX=@prefix@ | |
| # Directory where the config files are stored | |
| SYSCONFDIR=@sysconfdir@/dbus-1 | |
| DEVDIR=/dev | |
| LOGDIR=/var/log | |
| RUNDIR=$(dirname @DBUS_SYSTEM_PID_FILE@) | |
| SOCKDIR=$(dirname @DBUS_SYSTEM_SOCKET@) | |
| source ${CSIH_SCRIPT} | |
| # ====================================================================== | |
| # Routine: install_service | |
| # Install messagebus as a service | |
| # ====================================================================== | |
| install_service() { | |
| if csih_is_nt | |
| then | |
| # Check if messagebus is installed and remove on user request. | |
| if cygrunsrv -Q messagebus > /dev/null 2>&1 | |
| then | |
| csih_warning "The messagebus service is already installed." | |
| echo | |
| if csih_request "Do you want to reinstall it with different args?" | |
| then | |
| cygrunsrv -E messagebus | |
| cygrunsrv -R messagebus | |
| fi | |
| fi | |
| # Install messagebus service if it is not already installed | |
| if ! cygrunsrv -Q messagebus > /dev/null 2>&1 | |
| then | |
| echo | |
| csih_warning "The following function requires administrator privileges!" | |
| if csih_request "Do you want to install messagebus as service?" | |
| then | |
| if cygrunsrv -I messagebus -d "CYGWIN D-Bus system service" -p @EXPANDED_BINDIR@/dbus-daemon -a "--nofork --system" | |
| then | |
| echo | |
| csih_inform "The messagebus service has been installed under the LocalSystem" | |
| csih_inform "account (also known as SYSTEM). To start the service now, call" | |
| csih_inform "\`net start messagebus' or \`cygrunsrv -S messagebus'. Otherwise, it" | |
| csih_inform "will start automatically after the next reboot." | |
| echo | |
| csih_inform "Check ${SYSCONFDIR}/system.conf first, if it suits your needs." | |
| fi | |
| fi # user allowed us to install messagebus | |
| fi # messagebus already installed | |
| fi # csih_is_nt | |
| } # --- End of install_service --- # | |
| # ====================================================================== | |
| # Main Entry Point | |
| # ====================================================================== | |
| # Check how the script has been started. If | |
| # (1) it has been started by giving the full path and | |
| # that path is /etc/postinstall, OR | |
| # (2) Otherwise, if the environment variable | |
| # CONFIG_AUTO_ANSWER_NO is set | |
| # then set auto_answer to "no". This allows automatic | |
| # creation of the config files in /etc w/o overwriting | |
| # them if they already exist. In both cases, color | |
| # escape sequences are suppressed, so as to prevent | |
| # cluttering setup's logfiles. | |
| if [ "$PROGDIR" = "/etc/postinstall" ] | |
| then | |
| csih_auto_answer="no" | |
| csih_disable_color | |
| fi | |
| if [ -n "${CONFIG_AUTO_ANSWER_NO}" ] | |
| then | |
| csih_auto_answer="no" | |
| csih_disable_color | |
| fi | |
| # ====================================================================== | |
| # Parse options | |
| # ====================================================================== | |
| while : | |
| do | |
| case $# in | |
| 0) | |
| break | |
| ;; | |
| esac | |
| option=$1 | |
| shift | |
| case "$option" in | |
| -d | --debug ) | |
| set -x | |
| csih_trace_on | |
| ;; | |
| -y | --yes ) | |
| csih_auto_answer=yes | |
| ;; | |
| -n | --no ) | |
| csih_auto_answer=no | |
| ;; | |
| *) | |
| echo "usage: ${PROGNAME} [OPTION]..." | |
| echo | |
| echo "This script creates a basic messagebus configuration." | |
| echo | |
| echo "Options:" | |
| echo " --debug -d Enable shell's debug output." | |
| echo " --yes -y Answer all questions with \"yes\" automatically." | |
| echo " --no -n Answer all questions with \"no\" automatically." | |
| echo | |
| exit 1 | |
| ;; | |
| esac | |
| done | |
| # ====================================================================== | |
| # Action! | |
| # ====================================================================== | |
| # Check for ${SYSCONFDIR} directory | |
| csih_make_dir "${SYSCONFDIR}" "Cannot create global configuration files." | |
| chmod 775 "${SYSCONFDIR}" | |
| setfacl -m u:system:rwx "${SYSCONFDIR}" | |
| # Check for ${DEVDIR} directory | |
| csih_make_dir "${DEVDIR}" "Syslogging using messagebus will not work." | |
| chmod 775 "${DEVDIR}" | |
| setfacl -m u:system:rwx "${DEVDIR}" | |
| # Check for ${LOGDIR} directory | |
| csih_make_dir "${LOGDIR}" "Syslogging using messagebus will not work." | |
| chmod 775 "${LOGDIR}" | |
| setfacl -m u:system:rwx "${LOGDIR}" | |
| # Check for ${RUNDIR} directory | |
| csih_make_dir "${RUNDIR}" "PID files of running processes will not be created." | |
| chmod 775 "${RUNDIR}" | |
| setfacl -m u:system:rwx "${RUNDIR}" | |
| # Check for ${SOCKDIR} directory | |
| csih_make_dir "${SOCKDIR}" "SOCKET files of running processes will not be created." | |
| chmod 775 "${SOCKDIR}" | |
| setfacl -m u:system:rwx "${SOCKDIR}" | |
| # maybe: csih_auto_answer=no will skip, | |
| # interactive user will get a chance to override | |
| install_service | |
| echo | |
| echo "Configuration finished. Have fun!" |