qemu/tests/dbus-vmstate-daemon.sh
<<
>>
Prefs
   1#!/bin/sh
   2
   3# dbus-daemon wrapper script for dbus-vmstate testing
   4#
   5# This script allows to tweak the dbus-daemon policy during the test
   6# to test different configurations.
   7#
   8# This program is free software; you can redistribute it and/or modify
   9# it under the terms of the GNU General Public License as published by
  10# the Free Software Foundation; either version 2 of the License, or
  11# (at your option) any later version.
  12#
  13# This program is distributed in the hope that it will be useful,
  14# but WITHOUT ANY WARRANTY; without even the implied warranty of
  15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16# GNU General Public License for more details.
  17#
  18# You should have received a copy of the GNU General Public License
  19# along with this program; if not, see <http://www.gnu.org/licenses/>.
  20#
  21# Copyright (C) 2019 Red Hat, Inc.
  22
  23write_config()
  24{
  25    CONF="$1"
  26    cat > "$CONF" <<EOF
  27<busconfig>
  28  <type>session</type>
  29  <listen>unix:tmpdir=$DBUS_VMSTATE_TEST_TMPDIR</listen>
  30
  31  <policy context="default">
  32     <!-- Holes must be punched in service configuration files for
  33          name ownership and sending method calls -->
  34     <deny own="*"/>
  35     <deny send_type="method_call"/>
  36
  37     <!-- Signals and reply messages (method returns, errors) are allowed
  38          by default -->
  39     <allow send_type="signal"/>
  40     <allow send_requested_reply="true" send_type="method_return"/>
  41     <allow send_requested_reply="true" send_type="error"/>
  42
  43     <!-- All messages may be received by default -->
  44     <allow receive_type="method_call"/>
  45     <allow receive_type="method_return"/>
  46     <allow receive_type="error"/>
  47     <allow receive_type="signal"/>
  48
  49     <!-- Allow anyone to talk to the message bus -->
  50     <allow send_destination="org.freedesktop.DBus"
  51            send_interface="org.freedesktop.DBus" />
  52     <allow send_destination="org.freedesktop.DBus"
  53            send_interface="org.freedesktop.DBus.Introspectable"/>
  54     <allow send_destination="org.freedesktop.DBus"
  55            send_interface="org.freedesktop.DBus.Properties"/>
  56     <!-- But disallow some specific bus services -->
  57     <deny send_destination="org.freedesktop.DBus"
  58           send_interface="org.freedesktop.DBus"
  59           send_member="UpdateActivationEnvironment"/>
  60     <deny send_destination="org.freedesktop.DBus"
  61           send_interface="org.freedesktop.DBus.Debug.Stats"/>
  62     <deny send_destination="org.freedesktop.DBus"
  63           send_interface="org.freedesktop.systemd1.Activator"/>
  64
  65     <allow own="org.qemu.VMState1"/>
  66     <allow send_destination="org.qemu.VMState1"/>
  67     <allow receive_sender="org.qemu.VMState1"/>
  68
  69  </policy>
  70
  71  <include if_selinux_enabled="yes"
  72   selinux_root_relative="yes">contexts/dbus_contexts</include>
  73
  74</busconfig>
  75EOF
  76}
  77
  78ARGS=
  79for arg in "$@"
  80do
  81    case $arg in
  82        --config-file=*)
  83          CONF="${arg#*=}"
  84          write_config "$CONF"
  85          ARGS="$ARGS $1"
  86          shift
  87        ;;
  88        *)
  89          ARGS="$ARGS $1"
  90          shift
  91        ;;
  92    esac
  93done
  94
  95exec dbus-daemon $ARGS
  96