diff --git a/dockerfile-kasm-core b/dockerfile-kasm-core index b3207e0..4092636 100644 --- a/dockerfile-kasm-core +++ b/dockerfile-kasm-core @@ -76,6 +76,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 +140,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 \ diff --git a/dockerfile-kasm-core-alpine b/dockerfile-kasm-core-alpine index 7a4e5e6..c52a9a3 100644 --- a/dockerfile-kasm-core-alpine +++ b/dockerfile-kasm-core-alpine @@ -74,6 +74,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 +130,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 \ diff --git a/dockerfile-kasm-core-centos b/dockerfile-kasm-core-centos index 2001382..cef9ef1 100644 --- a/dockerfile-kasm-core-centos +++ b/dockerfile-kasm-core-centos @@ -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 \ diff --git a/dockerfile-kasm-core-fedora b/dockerfile-kasm-core-fedora index b32cb37..786a185 100644 --- a/dockerfile-kasm-core-fedora +++ b/dockerfile-kasm-core-fedora @@ -89,6 +89,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 +145,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 \ diff --git a/dockerfile-kasm-core-oracle b/dockerfile-kasm-core-oracle index 27f443b..d3a3ace 100644 --- a/dockerfile-kasm-core-oracle +++ b/dockerfile-kasm-core-oracle @@ -104,6 +104,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 +164,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 \ diff --git a/dockerfile-kasm-core-suse b/dockerfile-kasm-core-suse index 41ec318..7418c51 100644 --- a/dockerfile-kasm-core-suse +++ b/dockerfile-kasm-core-suse @@ -79,6 +79,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 +139,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 \ diff --git a/src/common/startup_scripts/vnc_startup.sh b/src/common/startup_scripts/vnc_startup.sh index bdfd5e0..8a4de31 100755 --- a/src/common/startup_scripts/vnc_startup.sh +++ b/src/common/startup_scripts/vnc_startup.sh @@ -198,6 +198,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 @@ -263,6 +281,7 @@ start_audio_out start_audio_in start_upload start_gamepad +start_webcam STARTUP_COMPLETE=1 @@ -323,11 +342,16 @@ do # TODO: This will only work if both processes are killed, requires more work start_upload ;; - kasm_gamepad) + kasm_gamepad) echo "Gamepad Service Failed" # 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 diff --git a/src/ubuntu/install/webcam/install_webcam.sh b/src/ubuntu/install/webcam/install_webcam.sh new file mode 100644 index 0000000..6b37ba0 --- /dev/null +++ b/src/ubuntu/install/webcam/install_webcam.sh @@ -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 \ No newline at end of file