mirror of
https://github.com/kasmtech/workspaces-core-images.git
synced 2025-06-26 06:51:45 +02:00
Merge branch 'develop' into feature/KASM-4509_update_squid_adapter
This commit is contained in:
commit
3199ed0cc8
@ -60,6 +60,10 @@ COPY ./src/ubuntu/install/kasm_vnc $INST_SCRIPTS/kasm_vnc/
|
||||
RUN bash $INST_SCRIPTS/kasm_vnc/install_kasm_vnc.sh && rm -rf $INST_SCRIPTS/kasm_vnc/
|
||||
COPY ./src/common/install/kasm_vnc/kasmvnc.yaml /etc/kasmvnc/
|
||||
|
||||
### Install Kasm Profile Sync
|
||||
COPY ./src/ubuntu/install/profile_sync $INST_SCRIPTS/profile_sync/
|
||||
RUN bash $INST_SCRIPTS/profile_sync/install_profile_sync.sh
|
||||
|
||||
### Install Kasm Upload Server
|
||||
COPY ./src/ubuntu/install/kasm_upload_server $INST_SCRIPTS/kasm_upload_server/
|
||||
RUN bash $INST_SCRIPTS/kasm_upload_server/install_kasm_upload_server.sh && rm -rf $INST_SCRIPTS/kasm_upload_server/
|
||||
@ -76,6 +80,10 @@ RUN bash $INST_SCRIPTS/audio_input/install_audio_input.sh && rm -rf $INST_SCRIPT
|
||||
COPY ./src/ubuntu/install/gamepad $INST_SCRIPTS/gamepad/
|
||||
RUN bash $INST_SCRIPTS/gamepad/install_gamepad.sh && rm -rf $INST_SCRIPTS/gamepad/
|
||||
|
||||
### Install Webcam Service
|
||||
COPY ./src/ubuntu/install/webcam $INST_SCRIPTS/webcam/
|
||||
RUN bash $INST_SCRIPTS/webcam/install_webcam.sh && rm -rf $INST_SCRIPTS/webcam/
|
||||
|
||||
### Install custom cursors
|
||||
COPY ./src/ubuntu/install/cursors $INST_SCRIPTS/cursors/
|
||||
RUN bash $INST_SCRIPTS/cursors/install_cursors.sh && rm -rf $INST_SCRIPTS/cursors/
|
||||
@ -136,6 +144,7 @@ RUN touch $STARTUPDIR/wm.log \
|
||||
&& chmod 755 $STARTUPDIR/upload_server/kasm_upload_server \
|
||||
&& chmod 755 $STARTUPDIR/audio_input/kasm_audio_input_server \
|
||||
&& chmod 755 $STARTUPDIR/gamepad/kasm_gamepad_server \
|
||||
&& chmod 755 $STARTUPDIR/webcam/kasm_webcam_server \
|
||||
&& chmod 755 $STARTUPDIR/generate_container_user \
|
||||
&& chmod +x $STARTUPDIR/jsmpeg/kasm_audio_out-linux \
|
||||
&& rm -rf $STARTUPDIR/install \
|
||||
|
@ -54,6 +54,10 @@ COPY ./src/ubuntu/install/kasm_vnc $INST_SCRIPTS/kasm_vnc/
|
||||
RUN bash $INST_SCRIPTS/kasm_vnc/install_kasm_vnc.sh && rm -rf $INST_SCRIPTS/kasm_vnc/
|
||||
COPY ./src/common/install/kasm_vnc/kasmvnc.yaml /etc/kasmvnc/
|
||||
|
||||
### Install Kasm Profile Sync
|
||||
COPY ./src/ubuntu/install/profile_sync $INST_SCRIPTS/profile_sync/
|
||||
RUN bash $INST_SCRIPTS/profile_sync/install_profile_sync.sh
|
||||
|
||||
### Install Kasm Upload Server
|
||||
COPY ./src/ubuntu/install/kasm_upload_server $INST_SCRIPTS/kasm_upload_server/
|
||||
RUN bash $INST_SCRIPTS/kasm_upload_server/install_kasm_upload_server.sh && rm -rf $INST_SCRIPTS/kasm_upload_server/
|
||||
@ -74,6 +78,10 @@ RUN bash $INST_SCRIPTS/audio_input/install_audio_input.sh && rm -rf $INST_SCRIPT
|
||||
COPY ./src/ubuntu/install/gamepad $INST_SCRIPTS/gamepad/
|
||||
RUN bash $INST_SCRIPTS/gamepad/install_gamepad.sh && rm -rf $INST_SCRIPTS/gamepad/
|
||||
|
||||
### Install Webcam Service
|
||||
COPY ./src/ubuntu/install/webcam $INST_SCRIPTS/webcam/
|
||||
RUN bash $INST_SCRIPTS/webcam/install_webcam.sh && rm -rf $INST_SCRIPTS/webcam/
|
||||
|
||||
### Copy built Squid
|
||||
COPY --from=squid_builder /usr/local/squid /usr/local/squid
|
||||
|
||||
@ -126,6 +134,7 @@ RUN touch $STARTUPDIR/wm.log \
|
||||
&& chmod 755 $STARTUPDIR/upload_server/kasm_upload_server \
|
||||
&& chmod 755 $STARTUPDIR/audio_input/kasm_audio_input_server \
|
||||
&& chmod 755 $STARTUPDIR/gamepad/kasm_gamepad_server \
|
||||
&& chmod 755 $STARTUPDIR/webcam/kasm_webcam_server \
|
||||
&& chmod 755 $STARTUPDIR/generate_container_user \
|
||||
&& chmod +x $STARTUPDIR/jsmpeg/kasm_audio_out-linux \
|
||||
&& rm -rf $STARTUPDIR/install \
|
||||
|
@ -85,6 +85,10 @@ RUN bash $INST_SCRIPTS/audio_input/install_audio_input.sh && rm -rf $INST_SCRIPT
|
||||
COPY ./src/ubuntu/install/gamepad $INST_SCRIPTS/gamepad/
|
||||
RUN bash $INST_SCRIPTS/gamepad/install_gamepad.sh && rm -rf $INST_SCRIPTS/gamepad/
|
||||
|
||||
### Install Webcam Service
|
||||
COPY ./src/ubuntu/install/webcam $INST_SCRIPTS/webcam/
|
||||
RUN bash $INST_SCRIPTS/webcam/install_webcam.sh && rm -rf $INST_SCRIPTS/webcam/
|
||||
|
||||
### Copy built Squid
|
||||
COPY --from=squid_builder /usr/local/squid /usr/local/squid
|
||||
|
||||
@ -137,6 +141,7 @@ RUN touch $STARTUPDIR/wm.log \
|
||||
&& chmod 755 $STARTUPDIR/upload_server/kasm_upload_server \
|
||||
&& chmod 755 $STARTUPDIR/audio_input/kasm_audio_input_server \
|
||||
&& chmod 755 $STARTUPDIR/gamepad/kasm_gamepad_server \
|
||||
&& chmod 755 $STARTUPDIR/webcam/kasm_webcam_server \
|
||||
&& chmod 755 $STARTUPDIR/generate_container_user \
|
||||
&& chmod +x $STARTUPDIR/jsmpeg/kasm_audio_out-linux \
|
||||
&& rm -rf $STARTUPDIR/install \
|
||||
|
@ -69,6 +69,10 @@ COPY ./src/ubuntu/install/kasm_vnc $INST_SCRIPTS/kasm_vnc/
|
||||
RUN bash $INST_SCRIPTS/kasm_vnc/install_kasm_vnc.sh && rm -rf $INST_SCRIPTS/kasm_vnc/
|
||||
COPY ./src/common/install/kasm_vnc/kasmvnc.yaml /etc/kasmvnc/
|
||||
|
||||
### Install Kasm Profile Sync
|
||||
COPY ./src/ubuntu/install/profile_sync $INST_SCRIPTS/profile_sync/
|
||||
RUN bash $INST_SCRIPTS/profile_sync/install_profile_sync.sh
|
||||
|
||||
### Install Kasm Upload Server
|
||||
COPY ./src/ubuntu/install/kasm_upload_server $INST_SCRIPTS/kasm_upload_server/
|
||||
RUN bash $INST_SCRIPTS/kasm_upload_server/install_kasm_upload_server.sh && rm -rf $INST_SCRIPTS/kasm_upload_server/
|
||||
@ -89,6 +93,10 @@ RUN bash $INST_SCRIPTS/audio_input/install_audio_input.sh && rm -rf $INST_SCRIPT
|
||||
COPY ./src/ubuntu/install/gamepad $INST_SCRIPTS/gamepad/
|
||||
RUN bash $INST_SCRIPTS/gamepad/install_gamepad.sh && rm -rf $INST_SCRIPTS/gamepad/
|
||||
|
||||
### Install Webcam Service
|
||||
COPY ./src/ubuntu/install/webcam $INST_SCRIPTS/webcam/
|
||||
RUN bash $INST_SCRIPTS/webcam/install_webcam.sh && rm -rf $INST_SCRIPTS/webcam/
|
||||
|
||||
### Copy built Squid
|
||||
COPY --from=squid_builder /usr/local/squid /usr/local/squid
|
||||
|
||||
@ -141,6 +149,7 @@ RUN touch $STARTUPDIR/wm.log \
|
||||
&& chmod 755 $STARTUPDIR/upload_server/kasm_upload_server \
|
||||
&& chmod 755 $STARTUPDIR/audio_input/kasm_audio_input_server \
|
||||
&& chmod 755 $STARTUPDIR/gamepad/kasm_gamepad_server \
|
||||
&& chmod 755 $STARTUPDIR/webcam/kasm_webcam_server \
|
||||
&& chmod 755 $STARTUPDIR/generate_container_user \
|
||||
&& chmod +x $STARTUPDIR/jsmpeg/kasm_audio_out-linux \
|
||||
&& rm -rf $STARTUPDIR/install \
|
||||
|
@ -84,6 +84,10 @@ COPY ./src/ubuntu/install/kasm_vnc $INST_SCRIPTS/kasm_vnc/
|
||||
RUN bash $INST_SCRIPTS/kasm_vnc/install_kasm_vnc.sh && rm -rf $INST_SCRIPTS/kasm_vnc/
|
||||
COPY ./src/common/install/kasm_vnc/kasmvnc.yaml /etc/kasmvnc/
|
||||
|
||||
### Install Kasm Profile Sync
|
||||
COPY ./src/ubuntu/install/profile_sync $INST_SCRIPTS/profile_sync/
|
||||
RUN bash $INST_SCRIPTS/profile_sync/install_profile_sync.sh
|
||||
|
||||
### Install Kasm Upload Server
|
||||
COPY ./src/ubuntu/install/kasm_upload_server $INST_SCRIPTS/kasm_upload_server/
|
||||
RUN bash $INST_SCRIPTS/kasm_upload_server/install_kasm_upload_server.sh && rm -rf $INST_SCRIPTS/kasm_upload_server/
|
||||
@ -104,6 +108,10 @@ RUN bash $INST_SCRIPTS/audio_input/install_audio_input.sh && rm -rf $INST_SCRIPT
|
||||
COPY ./src/ubuntu/install/gamepad $INST_SCRIPTS/gamepad/
|
||||
RUN bash $INST_SCRIPTS/gamepad/install_gamepad.sh && rm -rf $INST_SCRIPTS/gamepad/
|
||||
|
||||
### Install Webcam Service
|
||||
COPY ./src/ubuntu/install/webcam $INST_SCRIPTS/webcam/
|
||||
RUN bash $INST_SCRIPTS/webcam/install_webcam.sh && rm -rf $INST_SCRIPTS/webcam/
|
||||
|
||||
### Copy built Squid
|
||||
COPY --from=squid_builder /usr/local/squid /usr/local/squid
|
||||
|
||||
@ -160,6 +168,7 @@ RUN touch $STARTUPDIR/wm.log \
|
||||
&& chmod 755 $STARTUPDIR/upload_server/kasm_upload_server \
|
||||
&& chmod 755 $STARTUPDIR/audio_input/kasm_audio_input_server \
|
||||
&& chmod 755 $STARTUPDIR/gamepad/kasm_gamepad_server \
|
||||
&& chmod 755 $STARTUPDIR/webcam/kasm_webcam_server \
|
||||
&& chmod 755 $STARTUPDIR/generate_container_user \
|
||||
&& chmod +x $STARTUPDIR/jsmpeg/kasm_audio_out-linux \
|
||||
&& rm -rf $STARTUPDIR/install \
|
||||
|
@ -59,6 +59,10 @@ COPY ./src/ubuntu/install/kasm_vnc $INST_SCRIPTS/kasm_vnc/
|
||||
RUN bash $INST_SCRIPTS/kasm_vnc/install_kasm_vnc.sh && rm -rf $INST_SCRIPTS/kasm_vnc/
|
||||
COPY ./src/common/install/kasm_vnc/kasmvnc.yaml /etc/kasmvnc/
|
||||
|
||||
### Install Kasm Profile Sync
|
||||
COPY ./src/ubuntu/install/profile_sync $INST_SCRIPTS/profile_sync/
|
||||
RUN bash $INST_SCRIPTS/profile_sync/install_profile_sync.sh
|
||||
|
||||
### Install Kasm Upload Server
|
||||
COPY ./src/ubuntu/install/kasm_upload_server $INST_SCRIPTS/kasm_upload_server/
|
||||
RUN bash $INST_SCRIPTS/kasm_upload_server/install_kasm_upload_server.sh && rm -rf $INST_SCRIPTS/kasm_upload_server/
|
||||
@ -79,6 +83,10 @@ RUN bash $INST_SCRIPTS/audio_input/install_audio_input.sh && rm -rf $INST_SCRIPT
|
||||
COPY ./src/ubuntu/install/gamepad $INST_SCRIPTS/gamepad/
|
||||
RUN bash $INST_SCRIPTS/gamepad/install_gamepad.sh && rm -rf $INST_SCRIPTS/gamepad/
|
||||
|
||||
### Install Webcam Service
|
||||
COPY ./src/ubuntu/install/webcam $INST_SCRIPTS/webcam/
|
||||
RUN bash $INST_SCRIPTS/webcam/install_webcam.sh && rm -rf $INST_SCRIPTS/webcam/
|
||||
|
||||
### Copy built Squid
|
||||
COPY --from=squid_builder /usr/local/squid /usr/local/squid
|
||||
|
||||
@ -135,6 +143,7 @@ RUN touch $STARTUPDIR/wm.log \
|
||||
&& chmod 755 $STARTUPDIR/upload_server/kasm_upload_server \
|
||||
&& chmod 755 $STARTUPDIR/audio_input/kasm_audio_input_server \
|
||||
&& chmod 755 $STARTUPDIR/gamepad/kasm_gamepad_server \
|
||||
&& chmod 755 $STARTUPDIR/webcam/kasm_webcam_server \
|
||||
&& chmod 755 $STARTUPDIR/generate_container_user \
|
||||
&& chmod +x $STARTUPDIR/jsmpeg/kasm_audio_out-linux \
|
||||
&& rm -rf $STARTUPDIR/install \
|
||||
|
@ -1,7 +1,16 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
echo "Executing kasm_pre_shutdown_user.sh"
|
||||
|
||||
PAUSE_ON_EXIT="false"
|
||||
if [ -z ${KASM_PROFILE_CHUNK_SIZE} ]; then
|
||||
KASM_PROFILE_CHUNK_SIZE=100000
|
||||
fi
|
||||
|
||||
if [ -f /usr/bin/kasm-profile-sync ]; then
|
||||
kasm_profile_sync_found=1
|
||||
fi
|
||||
|
||||
for x in {1..10}
|
||||
do
|
||||
|
||||
@ -34,4 +43,28 @@ then
|
||||
sleep 1
|
||||
fi
|
||||
|
||||
if [ ! -z "$KASM_PROFILE_LDR" ]; then
|
||||
CURRENT_SIZE=$(du -s $HOME | grep -Po '^\d+')
|
||||
if [ -z ${KASM_PROFILE_FILTER} ]; then
|
||||
KASM_PROFILE_FILTER=".vnc,.cache,Downloads,Uploads,.config/*/Singleton*"
|
||||
fi
|
||||
|
||||
if [ ! -z "$KASM_PROFILE_SIZE_LIMIT" ]; then
|
||||
SIZE_LIMIT_MB=$(echo "$KASM_PROFILE_SIZE_LIMIT / 1000" | bc)
|
||||
if [[ $CURRENT_SIZE -gt KASM_PROFILE_SIZE_LIMIT ]]; then
|
||||
http_proxy="" https_proxy="" curl -k "https://${KASM_API_HOST}:${KASM_API_PORT}/api/set_kasm_session_status?token=${KASM_API_JWT}" -H 'Content-Type: application/json' -d '{"destroyed": true}'
|
||||
echo 'Profile size limit exceeded.'
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "$kasm_profile_sync_found" ]; then
|
||||
echo >&2 "Profile sync not available"
|
||||
else
|
||||
echo "Packing and uploading user profile to object storage."
|
||||
http_proxy="" https_proxy="" /usr/bin/kasm-profile-sync --upload /home/kasm-user --insecure --filter "${KASM_PROFILE_FILTER}" --remote ${KASM_API_HOST} --port ${KASM_API_PORT} -c ${KASM_PROFILE_CHUNK_SIZE} --token ${KASM_API_JWT} --bigfiles skip
|
||||
echo "Profile upload complete."
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Done"
|
||||
|
@ -4,6 +4,10 @@ set -e
|
||||
|
||||
no_proxy="localhost,127.0.0.1"
|
||||
|
||||
if [ -f /usr/bin/kasm-profile-sync ]; then
|
||||
kasm_profile_sync_found=1
|
||||
fi
|
||||
|
||||
# Set lang values
|
||||
if [ "${LC_ALL}" != "en_US.UTF-8" ]; then
|
||||
export LANG=${LC_ALL}
|
||||
@ -20,7 +24,11 @@ VNC_VIEW_ONLY_PW=$tmpval
|
||||
tmpval=$VNC_PW
|
||||
unset VNC_PW
|
||||
VNC_PW=$tmpval
|
||||
|
||||
BUILD_ARCH=$(uname -p)
|
||||
if [ -z ${KASM_PROFILE_CHUNK_SIZE} ]; then
|
||||
KASM_PROFILE_CHUNK_SIZE=100000
|
||||
fi
|
||||
if [ -z ${DRINODE+x} ]; then
|
||||
DRINODE="/dev/dri/renderD128"
|
||||
fi
|
||||
@ -49,6 +57,70 @@ function help (){
|
||||
"
|
||||
}
|
||||
|
||||
trap cleanup SIGINT SIGTERM SIGQUIT SIGHUP ERR
|
||||
|
||||
function pull_profile (){
|
||||
if [ ! -z "$KASM_PROFILE_LDR" ]; then
|
||||
if [ -z "$kasm_profile_sync_found" ]; then
|
||||
echo >&2 "Profile sync not available"
|
||||
sleep 3
|
||||
http_proxy="" https_proxy="" curl -k "https://${KASM_API_HOST}:${KASM_API_PORT}/api/set_kasm_session_status?token=${KASM_API_JWT}" -H 'Content-Type: application/json' -d '{"status": "running"}'
|
||||
return
|
||||
fi
|
||||
|
||||
echo "Downloading and unpacking user profile from object storage."
|
||||
set +e
|
||||
http_proxy="" https_proxy="" /usr/bin/kasm-profile-sync --download /home/kasm-user --insecure --remote ${KASM_API_HOST} --port ${KASM_API_PORT} -c ${KASM_PROFILE_CHUNK_SIZE} --token ${KASM_API_JWT}
|
||||
PROCESS_SYNC_EXIT_CODE=$?
|
||||
set -e
|
||||
if (( PROCESS_SYNC_EXIT_CODE > 1 )); then
|
||||
echo "Profile-sync failed with a non-recoverable error. See server side logs for more details."
|
||||
exit 1
|
||||
fi
|
||||
echo "Profile load complete."
|
||||
# Update the status of the container to running
|
||||
sleep 3
|
||||
http_proxy="" https_proxy="" curl -k "https://${KASM_API_HOST}:${KASM_API_PORT}/api/set_kasm_session_status?token=${KASM_API_JWT}" -H 'Content-Type: application/json' -d '{"status": "running"}'
|
||||
|
||||
fi
|
||||
}
|
||||
|
||||
function push_profile(){
|
||||
if [ ! -z "$KASM_PROFILE_LDR" ]; then
|
||||
if [ -z "$kasm_profile_sync_found" ]; then
|
||||
echo >&2 "Profile sync not available"
|
||||
return
|
||||
fi
|
||||
|
||||
echo "Packing and uploading user profile to object storage."
|
||||
/usr/bin/kasm-profile-sync --upload /home/kasm-user --insecure --remote ${KASM_API_HOST} --port ${KASM_API_PORT} -c ${KASM_PROFILE_CHUNK_SIZE} --token ${KASM_API_JWT}
|
||||
echo "Profile upload complete."
|
||||
fi
|
||||
}
|
||||
|
||||
function profile_size_check(){
|
||||
if [ ! -z "$KASM_PROFILE_SIZE_LIMIT" ]
|
||||
then
|
||||
SIZE_CHECK_FAILED=false
|
||||
while true
|
||||
do
|
||||
sleep 60
|
||||
CURRENT_SIZE=$(du -s $HOME | grep -Po '^\d+')
|
||||
SIZE_LIMIT_MB=$(echo "$KASM_PROFILE_SIZE_LIMIT / 1000" | bc)
|
||||
if [[ $CURRENT_SIZE -gt KASM_PROFILE_SIZE_LIMIT ]]
|
||||
then
|
||||
notify-send "Profile Size Exceeds Limit" "Your home profile has exceeded the size limit of ${SIZE_LIMIT_MB}MB. Changes on your desktop will not be saved between sessions until you reduce the size of your profile." -i /usr/share/icons/ubuntu-mono-dark/apps/22/dropboxstatus-x.svg -t 57000
|
||||
SIZE_CHECK_FAILED=true
|
||||
else
|
||||
if [ "$SIZE_CHECK_FAILED" = true ] ; then
|
||||
SIZE_CHECK_FAILED=false
|
||||
notify-send "Profile Size" "Your home profile size is now under the limit and will be saved when your session is terminated." -i /usr/share/icons/ubuntu-mono-dark/apps/22/dropboxstatus-logo.svg -t 57000
|
||||
fi
|
||||
fi
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
## correct forwarding of shutdown signal
|
||||
function cleanup () {
|
||||
kill -s SIGTERM $!
|
||||
@ -198,6 +270,24 @@ function start_gamepad (){
|
||||
fi
|
||||
}
|
||||
|
||||
function start_webcam (){
|
||||
if [[ ${KASM_SVC_WEBCAM:-1} == 1 ]] && [[ -e /dev/video0 ]]; then
|
||||
echo 'Starting webcam server'
|
||||
if [[ $DEBUG == true ]]; then
|
||||
$STARTUPDIR/webcam/kasm_webcam_server --debug --port 4905 --ssl --cert ${HOME}/.vnc/self.pem --certkey ${HOME}/.vnc/self.pem &
|
||||
else
|
||||
$STARTUPDIR/webcam/kasm_webcam_server --port 4905 --ssl --cert ${HOME}/.vnc/self.pem --certkey ${HOME}/.vnc/self.pem &
|
||||
fi
|
||||
|
||||
KASM_PROCS['kasm_webcam']=$!
|
||||
|
||||
if [[ $DEBUG == true ]]; then
|
||||
echo -e "\n------------------ Started Webcam Websocket ----------------------------"
|
||||
echo "Kasm Webcam PID: ${KASM_PROCS['kasm_webcam']}";
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function custom_startup (){
|
||||
custom_startup_script=/dockerstartup/custom_startup.sh
|
||||
if [ -f "$custom_startup_script" ]; then
|
||||
@ -218,6 +308,9 @@ if [[ $1 =~ -h|--help ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Syncronize user-space loaded persistent profiles
|
||||
pull_profile
|
||||
|
||||
# should also source $STARTUPDIR/generate_container_user
|
||||
if [ -f $HOME/.bashrc ]; then
|
||||
source $HOME/.bashrc
|
||||
@ -229,8 +322,6 @@ if [[ ${KASM_DEBUG:-0} == 1 ]]; then
|
||||
set -x
|
||||
fi
|
||||
|
||||
trap cleanup SIGINT SIGTERM
|
||||
|
||||
## resolve_vnc_connection
|
||||
VNC_IP=$(hostname -i)
|
||||
if [[ $DEBUG == true ]]; then
|
||||
@ -263,6 +354,8 @@ start_audio_out
|
||||
start_audio_in
|
||||
start_upload
|
||||
start_gamepad
|
||||
profile_size_check &
|
||||
start_webcam
|
||||
|
||||
STARTUP_COMPLETE=1
|
||||
|
||||
@ -328,6 +421,11 @@ do
|
||||
# TODO: Needs work in python project to support auto restart
|
||||
# start_gamepad
|
||||
;;
|
||||
kasm_webcam)
|
||||
echo "Webcam Service Failed"
|
||||
# TODO: Needs work in python project to support auto restart
|
||||
start_webcam
|
||||
;;
|
||||
custom_script)
|
||||
echo "The custom startup script exited."
|
||||
# custom startup scripts track the target process on their own, they should not exit
|
||||
|
84
src/ubuntu/install/profile_sync/install_profile_sync.sh
Executable file
84
src/ubuntu/install/profile_sync/install_profile_sync.sh
Executable file
@ -0,0 +1,84 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -eo pipefail
|
||||
|
||||
check_distro_is_supported() {
|
||||
if [[ "$profile_distro" = oracle_7 ]]; then
|
||||
exit
|
||||
fi
|
||||
}
|
||||
|
||||
delimit_distro_version_with_underscore() {
|
||||
local distro="$1"
|
||||
echo "$distro" | sed 's/^\([a-zA-Z]\+\)\([0-9]\+\)$/\1_\2/'
|
||||
}
|
||||
|
||||
detect_deb_distro() {
|
||||
local distro
|
||||
local codename
|
||||
local full_name
|
||||
|
||||
distro=$(grep -Po -m 1 '(?<=PRETTY_NAME=")[^ ]+' /etc/os-release)
|
||||
codename=$(grep -Po -m 1 "(?<=_CODENAME=)\w+" /etc/os-release)
|
||||
full_name="${distro}_${codename}"
|
||||
echo "${full_name,,}"
|
||||
}
|
||||
|
||||
handle_debian_and_ubuntu_conversion() {
|
||||
if [[ "$DISTRO" = @(debian|ubuntu) ]]; then
|
||||
profile_distro=$(detect_deb_distro)
|
||||
fi
|
||||
}
|
||||
|
||||
handle_other_distros_conversion() {
|
||||
profile_distro=$(delimit_distro_version_with_underscore "$DISTRO")
|
||||
|
||||
case "$DISTRO" in
|
||||
kali) profile_distro="kali_kali-rolling"
|
||||
;;
|
||||
opensuse) profile_distro="opensuse_15"
|
||||
;;
|
||||
alpine)
|
||||
if grep -q 'v3.17' /etc/os-release; then
|
||||
profile_distro="alpine_317"
|
||||
fi
|
||||
if grep -q 'v3.18' /etc/os-release; then
|
||||
profile_distro="alpine_318"
|
||||
fi
|
||||
;;
|
||||
rockylinux*)
|
||||
profile_distro=$(echo "$profile_distro" | sed -e 's/linux//')
|
||||
;;
|
||||
almalinux*)
|
||||
profile_distro=$(echo "$profile_distro" | sed -e 's/linux//')
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
convert_local_distro_to_profile_sync_distro() {
|
||||
handle_debian_and_ubuntu_conversion
|
||||
if [ -n "$profile_distro" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
handle_other_distros_conversion
|
||||
}
|
||||
|
||||
download_and_symlink() {
|
||||
COMMIT_ID_SHORT=$(echo "${COMMIT_ID}" | cut -c1-6)
|
||||
BINARY_NAME="${profile_distro}_${BRANCH}_${COMMIT_ID_SHORT}_${ARCH}-kasm-profile-sync"
|
||||
BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/profile-sync/${COMMIT_ID}/${BINARY_NAME}"
|
||||
|
||||
cd /usr/bin/
|
||||
wget "$BUILD_URL"
|
||||
chmod +x "$BINARY_NAME"
|
||||
ln -s "$BINARY_NAME" kasm-profile-sync
|
||||
}
|
||||
|
||||
ARCH=$(arch)
|
||||
BRANCH="release_1.0.0"
|
||||
COMMIT_ID="2934416796e7bffe7244e80411e51be68c2c198f"
|
||||
|
||||
convert_local_distro_to_profile_sync_distro
|
||||
check_distro_is_supported
|
||||
download_and_symlink
|
@ -3,12 +3,12 @@ set -e
|
||||
|
||||
echo "Install some common tools for further installation"
|
||||
if [[ "${DISTRO}" == @(centos|oracle7) ]] ; then
|
||||
yum install -y vim wget net-tools bzip2 python3 ca-certificates
|
||||
yum install -y vim wget net-tools bzip2 python3 ca-certificates bc
|
||||
elif [[ "${DISTRO}" == @(fedora37|fedora38|oracle8|oracle9|rockylinux9|rockylinux8|almalinux8|almalinux9) ]]; then
|
||||
dnf install -y wget net-tools bzip2 python3 tar vim hostname procps-ng
|
||||
dnf install -y wget net-tools bzip2 python3 tar vim hostname procps-ng bc
|
||||
elif [ "${DISTRO}" == "opensuse" ]; then
|
||||
sed -i 's/download.opensuse.org/mirrorcache-us.opensuse.org/g' /etc/zypp/repos.d/*.repo
|
||||
zypper install -yn wget net-tools bzip2 python3 tar vim gzip iputils
|
||||
zypper install -yn wget net-tools bzip2 python3 tar vim gzip iputils bc
|
||||
elif [ "${DISTRO}" == "alpine" ]; then
|
||||
apk add --no-cache \
|
||||
ca-certificates \
|
||||
@ -23,12 +23,13 @@ elif [ "${DISTRO}" == "alpine" ]; then
|
||||
shadow \
|
||||
sudo \
|
||||
tar \
|
||||
wget
|
||||
wget \
|
||||
bc
|
||||
else
|
||||
apt-get update
|
||||
# Update tzdata noninteractive (otherwise our script is hung on user input later).
|
||||
DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get -y install tzdata
|
||||
apt-get install -y vim wget net-tools locales bzip2 wmctrl software-properties-common mesa-utils
|
||||
apt-get install -y vim wget net-tools locales bzip2 wmctrl software-properties-common mesa-utils bc
|
||||
|
||||
echo "generate locales for en_US.UTF-8"
|
||||
locale-gen en_US.UTF-8
|
||||
|
20
src/ubuntu/install/webcam/install_webcam.sh
Normal file
20
src/ubuntu/install/webcam/install_webcam.sh
Normal file
@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env bash
|
||||
### every exit != 0 fails the script
|
||||
set -e
|
||||
|
||||
if [ "${DISTRO}" == "oracle7" ]; then
|
||||
DISTRO=centos
|
||||
elif [ "${DISTRO}" == "oracle8" ]; then
|
||||
DISTRO=oracle
|
||||
fi
|
||||
|
||||
COMMIT_ID="1631ff2c5f79ff6892c1d357343c47cb6f7c7a29"
|
||||
BRANCH="develop"
|
||||
COMMIT_ID_SHORT=$(echo "${COMMIT_ID}" | cut -c1-6)
|
||||
|
||||
ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g')
|
||||
|
||||
mkdir -p $STARTUPDIR/webcam
|
||||
wget -qO- https://kasmweb-build-artifacts.s3.amazonaws.com/kasm_webcam_server/${COMMIT_ID}/kasm_webcam_server_${ARCH}_${BRANCH}.${COMMIT_ID_SHORT}.tar.gz | tar -xvz -C $STARTUPDIR/webcam/
|
||||
|
||||
echo "${BRANCH}:${COMMIT_ID}" > $STARTUPDIR/webcam/kasm_webcam_server.version
|
@ -63,7 +63,8 @@ if [ "${DISTRO}" == "kali" ]; then
|
||||
xfce4-genmon-plugin \
|
||||
xfce4-screenshooter \
|
||||
xfce4-taskmanager \
|
||||
xfce4-whiskermenu-plugin
|
||||
xfce4-whiskermenu-plugin \
|
||||
xfce4-notifyd
|
||||
elif [[ "$DISTRO" = @(ubuntu|debian) ]]; then
|
||||
apt-get install -y \
|
||||
dbus-x11 \
|
||||
|
Loading…
x
Reference in New Issue
Block a user