fix: dom0 qrexec call target qube

This commit is contained in:
Ben Grande 2023-12-21 22:38:32 +01:00
parent b6c5298cb9
commit f161fbf49f
No known key found for this signature in database
GPG key ID: 00C64E14F51F9E56
2 changed files with 10 additions and 22 deletions

View file

@ -26,8 +26,8 @@ is_git_repo(){
helper="${0##*/git-}" helper="${0##*/git-}"
case "${1-}" in case "${1-}" in
-h|--?help) usage;; -h|--?help) usage;;
"") qube="@default";; "") authority="@default";;
*) qube="${1}";; *) authority="${1}";;
esac esac
case "${2-}" in case "${2-}" in
"") is_git_repo; repo="$(basename "$(git rev-parse --show-toplevel)")";; "") is_git_repo; repo="$(basename "$(git rev-parse --show-toplevel)")";;
@ -40,18 +40,12 @@ default_qube="sys-git"
rpc_cmd="${vendor}.${rpc}+${repo}" rpc_cmd="${vendor}.${rpc}+${repo}"
if command -v qrexec-client-vm >/dev/null; then if command -v qrexec-client-vm >/dev/null; then
exec qrexec-client-vm -- "${qube}" "${rpc_cmd}" exec qrexec-client-vm -- "${authority}" "${rpc_cmd}"
elif command -v qrexec-client >/dev/null; then elif command -v qrexec-client >/dev/null; then
qubes_version="$(awk -F '=' '/^VERSION_ID=/{print $2}' /etc/os-release)" if test "${authority}" = "@default"; then
if test "$(echo "${qubes_version}" | tr -d ".")" -le 41; then authority="${default_qube}"
if test "${qube}" = "@default"; then
qube="${default_qube}"
fi fi
else exec qrexec-client -d "${authority}" -- "DEFAULT:QUBESRPC ${rpc_cmd} dom0"
policy="$(qrexec-policy --assume-yes-for-ask dom0 "${qube}" "${rpc_cmd}")"
qube="$(echo "${policy}" | awk -F '=' '/^target=/{print $2}')"
fi fi
exec qrexec-client -d "${qube}" -- "DEFAULT:QUBESRPC ${rpc_cmd} dom0"
else
die "Qrexec programs not found: qrexec-client-vm, qrexec-client" die "Qrexec programs not found: qrexec-client-vm, qrexec-client"
fi

View file

@ -69,15 +69,9 @@ if command -v qrexec-client-vm >/dev/null; then
log "->" qrexec-client-vm -- "${authority}" "${rpc_cmd}" log "->" qrexec-client-vm -- "${authority}" "${rpc_cmd}"
exec qrexec-client-vm -- "${authority}" "${rpc_cmd}" exec qrexec-client-vm -- "${authority}" "${rpc_cmd}"
elif command -v qrexec-client >/dev/null; then elif command -v qrexec-client >/dev/null; then
qubes_version="$(awk -F '=' '/^VERSION_ID=/{print $2}' /etc/os-release)"
if test "$(echo "${qubes_version}" | tr -d ".")" -le 41; then
if test "${authority}" = "@default"; then if test "${authority}" = "@default"; then
authority="${default_qube}" authority="${default_qube}"
fi fi
else
policy="$(qrexec-policy --assume-yes-for-ask dom0 "${authority}" "${rpc_cmd}")"
authority="$(echo "${policy}" | awk -F '=' '/^target=/{print $2}')"
fi
log "->" qrexec-client -d "${authority}" -- "DEFAULT:QUBESRPC ${rpc_cmd} dom0" log "->" qrexec-client -d "${authority}" -- "DEFAULT:QUBESRPC ${rpc_cmd} dom0"
exec qrexec-client -d "${authority}" -- "DEFAULT:QUBESRPC ${rpc_cmd} dom0" exec qrexec-client -d "${authority}" -- "DEFAULT:QUBESRPC ${rpc_cmd} dom0"
fi fi