| #!/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=$(dirname "$CONF")</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"/> | |
| <allow send_destination="org.qemu"/> | |
| <allow receive_sender="org.qemu"/> | |
| <allow own="org.qemu.VMState1"/> | |
| <allow send_destination="org.qemu.VMState1"/> | |
| <allow receive_sender="org.qemu.VMState1"/> | |
| <allow own="org.qemu.vnc"/> | |
| <allow send_destination="org.qemu.vnc"/> | |
| <allow receive_sender="org.qemu.vnc"/> | |
| </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 |