You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
1.7 KiB
Bash
82 lines
1.7 KiB
Bash
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
display=:10
|
|
interface=0.0.0.0
|
|
cert_group=ssl-cert
|
|
|
|
declare -A all_desktop_environments=([Cinnamon]=cinnamon-session)
|
|
detected_desktop_environments=()
|
|
|
|
print_detected_desktop_environments() {
|
|
declare -i i=1
|
|
|
|
echo "Detected Desktop Environments:"
|
|
for detected_de in "${detected_desktop_environments[@]}"; do
|
|
echo "[$i] $detected_de"
|
|
i+=1
|
|
done
|
|
}
|
|
|
|
detect_desktop_environments() {
|
|
for de_name in "${!all_desktop_environments[@]}"; do
|
|
local executable=${all_desktop_environments[$de_name]}
|
|
|
|
detected_desktop_environments+=("$de_name")
|
|
detect_desktop_environment "$de_name" "$executable"
|
|
done
|
|
}
|
|
|
|
detect_desktop_environment() {
|
|
local de_name="$1"
|
|
local executable="$2"
|
|
|
|
if command -v "$executable" &>/dev/null; then
|
|
echo "Detected $de_name"
|
|
fi
|
|
}
|
|
|
|
if [[ "$1" = "--help" ]]; then
|
|
cat >&2 <<-USAGE
|
|
Usage: `basename $0` [options]
|
|
-d Debug output
|
|
-kill Kill vncserver
|
|
--help show this help
|
|
USAGE
|
|
exit
|
|
fi
|
|
|
|
if [[ "$1" = "-d" ]]; then
|
|
log_option="-log *:stderr:100"
|
|
fi
|
|
|
|
action=start
|
|
if [[ "$1" = "-kill" ]]; then
|
|
action=kill
|
|
fi
|
|
|
|
if groups | grep -qvw ssl-cert; then
|
|
cat <<-EOF
|
|
Can't access TLS certificate.
|
|
Please add your user to $cert_group via 'addgroup <user> ssl-cert'
|
|
EOF
|
|
exit 1
|
|
fi
|
|
|
|
if [[ "$action" = "kill" ]]; then
|
|
vncserver -kill $display
|
|
exit
|
|
fi
|
|
|
|
detect_desktop_environments
|
|
print_detected_desktop_environments
|
|
echo "Please choose Desktop Environment to run"
|
|
|
|
vncserver $display -interface $interface
|
|
vncserver -kill $display
|
|
vncserver $display -depth 24 -geometry 1280x1050 -websocketPort 8443 \
|
|
-cert /etc/ssl/certs/ssl-cert-snakeoil.pem \
|
|
-key /etc/ssl/private/ssl-cert-snakeoil.key -sslOnly -FrameRate=24 \
|
|
-interface $interface -httpd /usr/share/kasmvnc/www $log_option
|