#!/bin/sh mkfifo /tmp/qrexec-rpc-stderr.$$ logger -t "$1-$2" -f /tmp/qrexec-rpc-stderr.$$ >/dev/null 2>&1 /tmp/qrexec-rpc-stderr.$$ rm -f /tmp/qrexec-rpc-stderr.$$ QUBES_RPC=/etc/qubes-rpc LOCAL_QUBES_RPC=/usr/local/etc/qubes-rpc if ! [ $# = 2 -o $# = 4 ] ; then echo "$0: bad argument count, usage: $0 SERVICE-NAME REMOTE-DOMAIN-NAME [REQUESTED_TARGET_TYPE REQUESTED_TARGET]" >&2 exit 1 fi export QREXEC_REQUESTED_TARGET_TYPE="$3" if [ "$QREXEC_REQUESTED_TARGET_TYPE" = "name" ]; then export QREXEC_REQUESTED_TARGET="$4" elif [ "$QREXEC_REQUESTED_TARGET_TYPE" = "keyword" ]; then export QREXEC_REQUESTED_TARGET_KEYWORD="$4" fi # else: requested target type unknown or not given, ignore export QREXEC_REMOTE_DOMAIN="$2" export QREXEC_SERVICE_FULL_NAME="$1" SERVICE_WITHOUT_ARGUMENT="${1%%+*}" if [ "${QREXEC_SERVICE_FULL_NAME}" != "${SERVICE_WITHOUT_ARGUMENT}" ]; then export QREXEC_SERVICE_ARGUMENT="${QREXEC_SERVICE_FULL_NAME#*+}" fi for CFG_FILE in $LOCAL_QUBES_RPC/"$1" $QUBES_RPC/"$1" \ $LOCAL_QUBES_RPC/"${SERVICE_WITHOUT_ARGUMENT}" \ $QUBES_RPC/"${SERVICE_WITHOUT_ARGUMENT}"; do if [ -s "$CFG_FILE" ]; then break fi done if [ -x "$CFG_FILE" ] ; then exec "$CFG_FILE" ${QREXEC_SERVICE_ARGUMENT} echo "$0: failed to execute handler for" "$1" >&2 exit 1 else exec /bin/sh -- "$CFG_FILE" ${QREXEC_SERVICE_ARGUMENT} echo "$0: failed to execute handler for" "$1" >&2 exit 1 fi