#!/usr/bin/bash # # Copyright 2022 Jan Grulich # # This 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 software 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 software; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, # USA. # USERSFILE="/etc/tigervnc/vncserver.users" if [ $# -ne 1 ]; then echo "Syntax:" >&2 echo " $0 " >&2 exit 1 fi if [ ! -f "${USERSFILE}" ]; then echo "Users file ${USERSFILE} missing" >&2 exit 1 fi DISPLAY="$1" USER=`grep "^ *${DISPLAY}=" "${USERSFILE}" 2>/dev/null | head -1 | cut -d = -f 2- | sed 's/ *$//g'` if [ -z "${USER}" ]; then echo "No user configured for display ${DISPLAY}" >&2 exit 1 fi USER_HOMEDIR=`getent passwd ${USER} | cut -f6 -d:` if [ -z "${USER_HOMEDIR}" ]; then echo "Failed to get home directory for ${USER}" >&2 exit 1 fi if [ ! -d "${USER_HOMEDIR}/.vnc" ]; then exit 0 fi MATCHPATHCON=`which matchpathcon` if [ $? -eq 0 ]; then ${MATCHPATHCON} -V "${USER_HOMEDIR}/.vnc" &>/dev/null if [ $? -eq 0 ]; then exit 0 fi fi RESTORECON=`which restorecon` if [ $? -eq 0 ]; then exec "${RESTORECON}" -R "${USER_HOMEDIR}/.vnc" >&2 return $? fi