Do not expose any file sharing if ${PUBLIC} is not set.

This commit is contained in:
Martin Wimpress 2021-10-09 14:32:06 +01:00
parent ec89223b22
commit fd52be1dfb
No known key found for this signature in database
GPG Key ID: 61DF940515E06DA3
1 changed files with 11 additions and 8 deletions

View File

@ -587,7 +587,7 @@ function vm_boot() {
echo " - SPICE: Enabled"
else
echo -n " - SPICE: On host: spicy --title \"${VMNAME}\" --port ${SPICE_PORT}"
if [ "${guest_os}" != "macos" ]; then
if [ "${guest_os}" != "macos" ] && [ -n "${PUBLIC}"]; then
echo -n " --spice-shared-dir ${PUBLIC}"
fi
echo "${FULLSPICY}"
@ -595,11 +595,11 @@ function vm_boot() {
fi
# Reference: https://gitlab.gnome.org/GNOME/phodav/-/issues/5
if [ "${guest_os}" != "macos" ]; then
if [ "${guest_os}" != "macos" ] && [ -n "${PUBLIC}"]; then
echo " - WebDAV: On guest: dav://localhost:9843/"
fi
if [ "${guest_os}" != "windows" ]; then
if [ "${guest_os}" != "windows" ] && [ -n "${PUBLIC}"]; then
echo -n " - 9P: On guest: "
if [ "${guest_os}" == "linux" ]; then
echo "sudo mount -t 9p -o trans=virtio,version=9p2000.L,msize=104857600 ${PUBLIC_TAG} ~/Public"
@ -607,7 +607,7 @@ function vm_boot() {
# PUBLICSHARE needs to be world writeable for seamless integration with
# macOS. Test if it is world writeable, and prompt what to do if not.
echo "sudo mount_9p ${PUBLIC_TAG}"
if [ -n "${PUBLIC}" ] && [ "${PUBLIC_PERMS}" != "drwxrwxrwx" ]; then
if [ "${PUBLIC_PERMS}" != "drwxrwxrwx" ]; then
echo " - 9P: On host: chmod 777 ${PUBLIC}"
echo " Required for macOS integration 👆"
fi
@ -714,7 +714,7 @@ function vm_boot() {
# https://wiki.qemu.org/Documentation/9psetup
# https://askubuntu.com/questions/772784/9p-libvirt-qemu-share-modes
if [ "${guest_os}" != "windows" ]; then
if [ "${guest_os}" != "windows" ] && [ -n "${PUBLIC}"]; then
# shellcheck disable=SC2054
args+=(-fsdev local,id=fsdev0,path="${PUBLIC}",security_model=mapped-xattr
-device virtio-9p-pci,fsdev=fsdev0,mount_tag="${PUBLIC_TAG}")
@ -748,7 +748,11 @@ function vm_boot() {
# If output is 'none' then SPICE was requested.
if [ ${OUTPUT} == "none" ]; then
spicy --title "${VMNAME}" --port "${SPICE_PORT}" --spice-shared-dir "${PUBLIC}" "${FULLSPICY}" >/dev/null 2>&1 &
if [ -n "${PUBLIC}"]; then
spicy --title "${VMNAME}" --port "${SPICE_PORT}" --spice-shared-dir "${PUBLIC}" "${FULLSPICY}" >/dev/null 2>&1 &
else
spicy --title "${VMNAME}" --port "${SPICE_PORT}" "${FULLSPICY}" >/dev/null 2>&1 &
fi
fi
}
@ -830,8 +834,7 @@ readonly DISK_MIN_SIZE=$((197632 * 8))
readonly VERSION="2.2.3"
# PUBLICSHARE is the only directory exposed to guest VMs for file
# sharing via 9P and spice-webdavd. This path is not configurable.
PUBLIC=""
# sharing via 9P, spice-webdavd and Samba. This path is not configurable.
if command -v xdg-user-dir &>/dev/null; then
PUBLIC=$(xdg-user-dir PUBLICSHARE)
if [ "${PUBLIC%/}" != ${HOME} ]; then