Compare commits

...

20 Commits

Author SHA1 Message Date
Dmitry Maksyoma ba942e102e Easy start script: remove obsolete code 4 years ago
Dmitry Maksyoma c4cc856e56 Revert "vncserver: add magic text to signify that the file can be replaced"
This reverts commit b8fd6a28a4.
4 years ago
Dmitry Maksyoma 7d842fe3d2 Easy start script: warn xstartup will be overwritten 4 years ago
Dmitry Maksyoma 7c4896ac66 Easy start script: refactor 4 years ago
Dmitry Maksyoma 24336b236a Early start script: add -select-de support 4 years ago
Dmitry Maksyoma 8a11d171d5 Easy start script: fail if unsupported option is given 4 years ago
Dmitry Maksyoma 892c285963 Easy start script: refactor and correct option processing 4 years ago
Dmitry Maksyoma 26cc3845b0 Easy start script: sort DEs presented to user 4 years ago
Dmitry Maksyoma f046e3340c Easy start script: remember DE choice 4 years ago
Dmitry Maksyoma bd144b71bf Easy start script: add manual xstartup choice 4 years ago
Dmitry Maksyoma 66d999beaf Refactor easy start script 4 years ago
Dmitry Maksyoma 3584d8c3cb Refactor easy start script 4 years ago
Dmitry Maksyoma f8bcfcc493 Easy start script: add did_user_forbid_replacing_xstartup() 4 years ago
Dmitry Maksyoma 22654f7ab6 Easy start script: handle incorrect DE number selection 4 years ago
Dmitry Maksyoma 33327c1159 Easy start script: can choose DE and run it via xstartup 4 years ago
Dmitry Maksyoma aeec23bd68 test-deb: add temporary volume of . 4 years ago
Dmitry Maksyoma 34a389f714 Add temporary DE installations to Buster dockerfile 4 years ago
Dmitry Maksyoma b8fd6a28a4 vncserver: add magic text to signify that the file can be replaced 4 years ago
Dmitry Maksyoma 240b1342fd Easy start script: DE -> Desktop Environment 4 years ago
Dmitry Maksyoma 640a195e3e Easy start script: choose DE to run spike 4 years ago

@ -34,6 +34,14 @@ RUN apt-get purge -y pm-utils xscreensaver*
RUN apt-get update && apt-get install -y vim less RUN apt-get update && apt-get install -y vim less
RUN apt-get update && apt-get -y install lsb-release RUN apt-get update && apt-get -y install lsb-release
RUN apt-get update && apt-get install -y task-cinnamon-desktop
RUN apt-get update && apt-get install -y task-gnome-desktop
RUN mkdir -p /usr/share/man/man1
RUN apt-get update && apt-get install -y apt-utils openjdk-11-jre
RUN apt-get update && apt-get install -y task-lxde-desktop
RUN apt-get update && apt-get install -y task-mate-desktop
RUN apt-get update && apt-get install -y task-kde-desktop
RUN echo 'source $STARTUPDIR/generate_container_user' >> $HOME/.bashrc RUN echo 'source $STARTUPDIR/generate_container_user' >> $HOME/.bashrc
RUN mkdir -p $STARTUPDIR RUN mkdir -p $STARTUPDIR

@ -5,25 +5,183 @@ set -e
display=:10 display=:10
interface=0.0.0.0 interface=0.0.0.0
cert_group=ssl-cert cert_group=ssl-cert
xstartup_script=~/.vnc/xstartup
de_was_selected_file="$HOME/.vnc/.kasmvncserver-easy-start-de-was-selected"
if [[ "$1" = "--help" ]]; then action=start
manual_xstartup_choice="Manually edit xstartup"
declare -A all_desktop_environments=(
[Cinnamon]=cinnamon-session
[Mate]="XDG_CURRENT_DESKTOP=MATE dbus-launch --exit-with-session mate-session"
[LXDE]=lxsession [Lxqt]=startlxqt
[KDE]=startkde
[Gnome]="XDG_CURRENT_DESKTOP=GNOME dbus-launch --exit-with-session /usr/bin/gnome-session"
[XFCE]=xfce4-session)
readarray -t sorted_desktop_environments < <(for de in "${!all_desktop_environments[@]}"; do echo "$de"; done | sort)
all_desktop_environments[$manual_xstartup_choice]=""
sorted_desktop_environments+=("$manual_xstartup_choice")
detected_desktop_environments=()
declare -A numbered_desktop_environments
debug() {
if [ -z "$debug" ]; then return; fi
echo "$@"
}
print_detected_desktop_environments() {
declare -i i=1
echo "Please choose Desktop Environment to run:"
for detected_de in "${detected_desktop_environments[@]}"; do
echo "[$i] $detected_de"
numbered_desktop_environments[$i]=$detected_de
i+=1
done
}
detect_desktop_environments() {
for de_name in "${sorted_desktop_environments[@]}"; do
if [[ "$de_name" = "$manual_xstartup_choice" ]]; then
detected_desktop_environments+=("$de_name")
continue;
fi
local executable=${all_desktop_environments[$de_name]}
executable=($executable)
executable=${executable[-1]}
if detect_desktop_environment "$de_name" "$executable"; then
detected_desktop_environments+=("$de_name")
fi
done
}
ask_user_to_choose_de() {
while : ; do
print_detected_desktop_environments
read -r de_number_to_run
de_name_from_number "$de_number_to_run"
if [[ -n "$de_name" ]]; then
break;
fi
echo "Incorrect number: $de_number_to_run"
echo
done
}
remember_de_choice() {
touch "$de_was_selected_file"
}
de_was_selected_on_previous_run() {
[[ -f "$de_was_selected_file" ]]
}
detect_desktop_environment() {
local de_name="$1"
local executable="$2"
if command -v "$executable" &>/dev/null; then
return 0
fi
return 1
}
did_user_forbid_replacing_xstartup() {
grep -q -v KasmVNC-safe-to-replace-this-file "$xstartup_script"
}
de_cmd_from_name() {
de_cmd=${all_desktop_environments[$de_name]}
}
de_name_from_number() {
local de_number_to_run="$1"
de_name=${numbered_desktop_environments[$de_number_to_run]}
}
warn_xstartup_will_be_overwriten() {
echo -n "WARNING: $xstartup_script will be overwritten y/N?"
read -r do_overwrite_xstartup
if [[ "$do_overwrite_xstartup" = "y" || "$do_overwrite_xstartup" = "Y" ]]; then
return 0
fi
return 1
}
setup_de_to_run_via_xstartup() {
warn_xstartup_will_be_overwriten
generate_xstartup "$de_name"
}
generate_xstartup() {
local de_name="$1"
de_cmd_from_name
cat <<-SCRIPT > "$xstartup_script"
#!/bin/sh
exec $de_cmd
SCRIPT
chmod +x "$xstartup_script"
}
enable_debug() {
debug=1
log_option="-log *:stderr:100"
}
kill_vnc_server() {
vncserver -kill $display
}
process_cli_options() {
for option in "$@"; do
case "$option" in
--help)
show_help
exit
;;
-d)
enable_debug
;;
-kill)
kill_vnc_server
exit
;;
-select-de)
action=select-de-and-start
;;
*)
echo >&2 "Unsupported argument: $option"
exit 1
esac
done
}
user_asked_to_select_de() {
[[ "$action" = "select-de-and-start" ]]
}
show_help() {
cat >&2 <<-USAGE cat >&2 <<-USAGE
Usage: `basename $0` [options] Usage: `basename $0` [options]
-d Debug output -d Debug output
-kill Kill vncserver -kill Kill vncserver
-select-de Select desktop environent to run
--help show this help --help show this help
USAGE USAGE
exit }
fi
if [[ "$1" = "-d" ]]; then process_cli_options "$@"
log_option="-log *:stderr:100"
fi
action=start
if [[ "$1" = "-kill" ]]; then
action=kill
fi
if groups | grep -qvw ssl-cert; then if groups | grep -qvw ssl-cert; then
cat <<-EOF cat <<-EOF
@ -33,9 +191,14 @@ EOF
exit 1 exit 1
fi fi
if [[ "$action" = "kill" ]]; then if user_asked_to_select_de || ! de_was_selected_on_previous_run; then
vncserver -kill $display detect_desktop_environments
exit ask_user_to_choose_de
debug "You selected $de_name desktop environment"
if [[ "$de_name" != "$manual_xstartup_choice" ]]; then
setup_de_to_run_via_xstartup
fi
remember_de_choice
fi fi
vncserver $display -interface $interface vncserver $display -interface $interface

@ -61,6 +61,8 @@ kasmvncpasswd -d -u "$VNC_USER-to-delete" $HOME/.kasmpasswd
chmod 0600 $HOME/.kasmpasswd chmod 0600 $HOME/.kasmpasswd
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout $HOME/.vnc/self.pem -out $HOME/.vnc/self.pem -subj "/C=US/ST=VA/L=None/O=None/OU=DoFu/CN=kasm/emailAddress=none@none.none" openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout $HOME/.vnc/self.pem -out $HOME/.vnc/self.pem -subj "/C=US/ST=VA/L=None/O=None/OU=DoFu/CN=kasm/emailAddress=none@none.none"
exec /bin/bash
vncserver :1 -interface 0.0.0.0 vncserver :1 -interface 0.0.0.0
vncserver -kill :1 vncserver -kill :1

@ -8,7 +8,7 @@ cd "$(dirname "$0")"
docker build --build-arg KASMVNC_PACKAGE_DIR="build/${os_codename}" \ docker build --build-arg KASMVNC_PACKAGE_DIR="build/${os_codename}" \
-t kasmvnctester_${os}:$os_codename \ -t kasmvnctester_${os}:$os_codename \
-f dockerfile.${os}_${os_codename}.deb.test . -f dockerfile.${os}_${os_codename}.deb.test .
docker run -it -p 443:8443 --rm \ docker run -it -v $(realpath ${PWD}/..):/src -p 8443:8443 --rm \
-e KASMVNC_VERBOSE_LOGGING=$KASMVNC_VERBOSE_LOGGING \ -e KASMVNC_VERBOSE_LOGGING=$KASMVNC_VERBOSE_LOGGING \
-e "VNC_USER=foo" -e "VNC_PW=foobar" \ -e "VNC_USER=foo" -e "VNC_PW=foobar" \
kasmvnctester_${os}:$os_codename kasmvnctester_${os}:$os_codename

Loading…
Cancel
Save