Compare commits
20 Commits
v1.0.0
...
easy-start
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ba942e102e | ||
|
|
c4cc856e56 | ||
|
|
7d842fe3d2 | ||
|
|
7c4896ac66 | ||
|
|
24336b236a | ||
|
|
8a11d171d5 | ||
|
|
892c285963 | ||
|
|
26cc3845b0 | ||
|
|
f046e3340c | ||
|
|
bd144b71bf | ||
|
|
66d999beaf | ||
|
|
3584d8c3cb | ||
|
|
f8bcfcc493 | ||
|
|
22654f7ab6 | ||
|
|
33327c1159 | ||
|
|
aeec23bd68 | ||
|
|
34a389f714 | ||
|
|
b8fd6a28a4 | ||
|
|
240b1342fd | ||
|
|
640a195e3e |
@@ -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
|
||||||
if [[ "$1" = "--help" ]]; then
|
de_was_selected_file="$HOME/.vnc/.kasmvncserver-easy-start-de-was-selected"
|
||||||
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
|
action=start
|
||||||
if [[ "$1" = "-kill" ]]; then
|
|
||||||
action=kill
|
manual_xstartup_choice="Manually edit xstartup"
|
||||||
fi
|
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
|
||||||
|
Usage: `basename $0` [options]
|
||||||
|
-d Debug output
|
||||||
|
-kill Kill vncserver
|
||||||
|
-select-de Select desktop environent to run
|
||||||
|
--help show this help
|
||||||
|
USAGE
|
||||||
|
}
|
||||||
|
|
||||||
|
process_cli_options "$@"
|
||||||
|
|
||||||
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
|
||||||
|
|||||||
Reference in New Issue
Block a user