Added build docker images for debian and others
This commit is contained in:
37
builder/startup/generate_container_user
Executable file
37
builder/startup/generate_container_user
Executable file
@@ -0,0 +1,37 @@
|
||||
# Set current user in nss_wrapper
|
||||
USER_ID=$(id -u)
|
||||
GROUP_ID=$(id -g)
|
||||
echo "USER_ID: $USER_ID, GROUP_ID: $GROUP_ID"
|
||||
|
||||
# Attempt to set the username to the kasm username
|
||||
USERNAME=${VNC_USER:-default}
|
||||
# Make the username posix compliant
|
||||
USERNAME=$(echo "$USERNAME" | sed -r 's#[^a-zA-Z0-9\._\-]#_#g')
|
||||
if ! echo "$USERNAME" | grep -qP "^[a-zA-Z0-9_\.][a-zA-Z0-9_\-\.]*"; then
|
||||
USERNAME="default"
|
||||
fi
|
||||
export PS1="$USERNAME:\w\$ "
|
||||
|
||||
if [ x"$USER_ID" != x"0" ]; then
|
||||
|
||||
NSS_WRAPPER_PASSWD=/tmp/passwd
|
||||
NSS_WRAPPER_GROUP=/etc/group
|
||||
|
||||
cat /etc/passwd > $NSS_WRAPPER_PASSWD
|
||||
|
||||
echo "${USERNAME}:x:${USER_ID}:${GROUP_ID}:Default Application User:${HOME}:/bin/bash" >> $NSS_WRAPPER_PASSWD
|
||||
|
||||
export NSS_WRAPPER_PASSWD
|
||||
export NSS_WRAPPER_GROUP
|
||||
|
||||
if [ -r /usr/lib/libnss_wrapper.so ]; then
|
||||
LD_PRELOAD=/usr/lib/libnss_wrapper.so
|
||||
elif [ -r /usr/lib64/libnss_wrapper.so ]; then
|
||||
LD_PRELOAD=/usr/lib64/libnss_wrapper.so
|
||||
else
|
||||
echo "no libnss_wrapper.so installed!"
|
||||
exit 1
|
||||
fi
|
||||
echo "nss_wrapper location: $LD_PRELOAD"
|
||||
export LD_PRELOAD
|
||||
fi
|
||||
68
builder/startup/vnc_startup.sh
Executable file
68
builder/startup/vnc_startup.sh
Executable file
@@ -0,0 +1,68 @@
|
||||
#!/bin/bash
|
||||
### every exit != 0 fails the script
|
||||
set -e
|
||||
|
||||
# should also source $STARTUPDIR/generate_container_user
|
||||
source $HOME/.bashrc
|
||||
|
||||
## correct forwarding of shutdown signal
|
||||
cleanup () {
|
||||
kill -s SIGTERM $!
|
||||
exit 0
|
||||
}
|
||||
trap cleanup SIGINT SIGTERM
|
||||
|
||||
## resolve_vnc_connection
|
||||
VNC_IP=$(hostname -i)
|
||||
|
||||
# first entry is control, second is view (if only one is valid for both)
|
||||
mkdir -p "$HOME/.vnc"
|
||||
PASSWD_PATH="$HOME/.vnc/passwd"
|
||||
echo "$VNC_PW" | kasmvncpasswd -f > $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"
|
||||
|
||||
vncserver :1 -interface 0.0.0.0
|
||||
vncserver -kill :1
|
||||
|
||||
if [[ -f $PASSWD_PATH ]]; then
|
||||
rm -f $PASSWD_PATH
|
||||
fi
|
||||
|
||||
#echo "$VNC_PW" | vncpasswd -f > $PASSWD_PATH
|
||||
#echo "$VNC_VIEW_ONLY_PW" | vncpasswd -f >> $PASSWD_PATH
|
||||
#chmod 600 $PASSWD_PATH
|
||||
|
||||
unset VNC_VIEW_ONLY_PW
|
||||
unset VNC_PW
|
||||
|
||||
if [[ $DEBUG == true ]]; then
|
||||
echo -e "\n------------------ start VNC server ------------------------"
|
||||
echo "remove old vnc locks to be a reattachable container"
|
||||
fi
|
||||
vncserver -kill $DISPLAY &> $HOME/.vnc/vnc_startup.log \
|
||||
|| rm -rfv /tmp/.X*-lock /tmp/.X11-unix &> $HOME/.vnc/vnc_startup.log \
|
||||
|| echo "no locks present"
|
||||
|
||||
echo -e "start vncserver with param: VNC_COL_DEPTH=$VNC_COL_DEPTH, VNC_RESOLUTION=$VNC_RESOLUTION\n..."
|
||||
vncserver $DISPLAY -depth $VNC_COL_DEPTH -geometry $VNC_RESOLUTION -FrameRate=$MAX_FRAME_RATE -websocketPort $VNC_PORT -cert $HOME/.vnc/self.pem -sslOnly -interface 0.0.0.0 $VNCOPTIONS #&> $STARTUPDIR/no_vnc_startup.log
|
||||
|
||||
PID_SUN=$!
|
||||
|
||||
echo -e "start window manager\n..."
|
||||
$STARTUPDIR/window_manager_startup.sh #&> $STARTUPDIR/window_manager_startup.log
|
||||
|
||||
## log connect options
|
||||
echo -e "\n\n------------------ VNC environment started ------------------"
|
||||
echo -e "\nVNCSERVER started on DISPLAY= $DISPLAY \n\t=> connect via VNC viewer with $VNC_IP:$VNC_PORT"
|
||||
echo -e "\nnoVNC HTML client started:\n\t=> connect via http://$VNC_IP:$NO_VNC_PORT/?password=...\n"
|
||||
echo "WEB PID: $PID_SUB"
|
||||
|
||||
# tail vncserver logs
|
||||
tail -f $HOME/.vnc/*$DISPLAY.log &
|
||||
|
||||
eval "$@"
|
||||
|
||||
wait $PID_SUB
|
||||
|
||||
echo "Exiting Kasm container"
|
||||
15
builder/startup/window_manager_startup.sh
Executable file
15
builder/startup/window_manager_startup.sh
Executable file
@@ -0,0 +1,15 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
echo -e "\n------------------ Xfce4 window manager startup------------------"
|
||||
|
||||
### disable screen saver and power management
|
||||
xset -dpms &
|
||||
xset s noblank &
|
||||
xset s off &
|
||||
|
||||
if [ "$SINGLE_APPLICATION" -eq "1" ]; then
|
||||
echo "Configured of Single Application Mode"
|
||||
sed -i "s/O|SHMC/|/g" $HOME/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml
|
||||
#xfwm4 --daemon
|
||||
fi
|
||||
Reference in New Issue
Block a user