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