#!/bin/sh # dbus-daemon wrapper script for dbus-vmstate testing # # This script allows to tweak the dbus-daemon policy during the test # to test different configurations. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see <http://www.gnu.org/licenses/>. # # Copyright (C) 2019 Red Hat, Inc. write_config() { CONF="$1" cat > "$CONF" <<EOF <busconfig> <type>session</type> <listen>unix:tmpdir=$DBUS_VMSTATE_TEST_TMPDIR</listen> <policy context="default"> <!-- Holes must be punched in service configuration files for name ownership and sending method calls --> <deny own="*"/> <deny send_type="method_call"/> <!-- Signals and reply messages (method returns, errors) are allowed by default --> <allow send_type="signal"/> <allow send_requested_reply="true" send_type="method_return"/> <allow send_requested_reply="true" send_type="error"/> <!-- All messages may be received by default --> <allow receive_type="method_call"/> <allow receive_type="method_return"/> <allow receive_type="error"/> <allow receive_type="signal"/> <!-- Allow anyone to talk to the message bus --> <allow send_destination="org.freedesktop.DBus" send_interface="org.freedesktop.DBus" /> <allow send_destination="org.freedesktop.DBus" send_interface="org.freedesktop.DBus.Introspectable"/> <allow send_destination="org.freedesktop.DBus" send_interface="org.freedesktop.DBus.Properties"/> <!-- But disallow some specific bus services --> <deny send_destination="org.freedesktop.DBus" send_interface="org.freedesktop.DBus" send_member="UpdateActivationEnvironment"/> <deny send_destination="org.freedesktop.DBus" send_interface="org.freedesktop.DBus.Debug.Stats"/> <deny send_destination="org.freedesktop.DBus" send_interface="org.freedesktop.systemd1.Activator"/> <allow own="org.qemu.VMState1"/> <allow send_destination="org.qemu.VMState1"/> <allow receive_sender="org.qemu.VMState1"/> </policy> <include if_selinux_enabled="yes" selinux_root_relative="yes">contexts/dbus_contexts</include> </busconfig> EOF } ARGS= for arg in "$@" do case $arg in --config-file=*) CONF="${arg#*=}" write_config "$CONF" ARGS="$ARGS $1" shift ;; *) ARGS="$ARGS $1" shift ;; esac done exec dbus-daemon $ARGS