Merge branch 'feature/KASM-2437-opensuse-15-images' into 'develop'

Resolve KASM-2437 "Feature/ opensuse 15 images"

Closes KASM-2437

See merge request kasm-technologies/internal/workspaces-core-images!49
This commit is contained in:
Matthew McClaskey 2022-04-06 13:29:07 +00:00
commit cb9983a1f5
35 changed files with 1092 additions and 44 deletions

View File

@ -168,6 +168,61 @@ build_centos:
except:
- schedules
build_oracle_7:
stage: build
script:
- docker build -t ${ORG_NAME}/core-oracle-7-private:$SANITIZED_BRANCH -t ${ORG_NAME}/core-oracle-7-private:$SANITIZED_ROLLING_BRANCH -t ${ORG_NAME}/core-oracle-7:$SANITIZED_BRANCH -t ${ORG_NAME}/core-oracle-7:$SANITIZED_ROLLING_BRANCH --build-arg BASE_IMAGE="oraclelinux:7" --build-arg START_PULSEAUDIO="1" --build-arg START_XFCE4="1" --build-arg DISTRO="oracle7" --build-arg LANG="" --build-arg LANGUAGE="" --build-arg LC_ALL="" -f dockerfile-kasm-core-oracle .
- docker push ${ORG_NAME}/core-oracle-7-private:$SANITIZED_BRANCH
- docker push ${ORG_NAME}/core-oracle-7-private:$SANITIZED_ROLLING_BRANCH
- docker push ${ORG_NAME}/core-oracle-7:$SANITIZED_BRANCH
- docker push ${ORG_NAME}/core-oracle-7:$SANITIZED_ROLLING_BRANCH
only:
- develop
- /^release\/.*$/
except:
- schedules
tags:
- aws-autoscale
build_oracle_8:
stage: build
image: ${ORG_NAME}/docker-buildx-private:develop
variables:
BUILD_PLATFORMS: "linux/amd64,linux/arm64"
script:
# get qemu ready
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
# prep the buildx env
- docker buildx create --use
# build for multiple architectures
- docker buildx build --push --platform $BUILD_PLATFORMS -t ${ORG_NAME}/core-oracle-8-private:$SANITIZED_BRANCH -t ${ORG_NAME}/core-oracle-8-private:$SANITIZED_ROLLING_BRANCH -t ${ORG_NAME}/core-oracle-8:$SANITIZED_BRANCH -t ${ORG_NAME}/core-oracle-8:$SANITIZED_ROLLING_BRANCH --build-arg START_PULSEAUDIO=1 --build-arg START_XFCE4=1 --build-arg BASE_IMAGE="oraclelinux:8" --build-arg DISTRO="oracle8" -f dockerfile-kasm-core-oracle .
only:
- develop
- /^release\/.*$/
except:
- schedules
tags:
- aws-autoscale
build_opensuse_15:
stage: build
image: ${ORG_NAME}/docker-buildx-private:develop
variables:
BUILD_PLATFORMS: "linux/amd64,linux/arm64"
script:
# get qemu ready
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
# prep the buildx env
- docker buildx create --use
# build for multiple architectures
- docker buildx build --push --platform $BUILD_PLATFORMS -t ${ORG_NAME}/core-opensuse-15-private:$SANITIZED_BRANCH -t ${ORG_NAME}/core-opensuse-15-private:$SANITIZED_ROLLING_BRANCH -t ${ORG_NAME}/core-opensuse-15:$SANITIZED_BRANCH -t ${ORG_NAME}/core-opensuse-15:$SANITIZED_ROLLING_BRANCH --build-arg START_PULSEAUDIO=1 --build-arg START_XFCE4=1 --build-arg BASE_IMAGE="opensuse/leap:15" --build-arg DISTRO="opensuse" -f dockerfile-kasm-core-suse .
only:
- develop
- /^release\/.*$/
except:
- schedules
tags:
- aws-autoscale
# These jobs should run on the feature/bugfix branches - anything that is not the develop or release branches. It should only push images to the private repos
build_ubuntu_bionic_dev:
@ -289,6 +344,53 @@ build_centos_dev:
- develop
- /^release\/.*$/
build_oracle_7_dev:
stage: build
script:
- docker build -t ${ORG_NAME}/core-oracle-7-private:$SANITIZED_BRANCH --build-arg BASE_IMAGE="oraclelinux:7" --build-arg START_PULSEAUDIO="1" --build-arg START_XFCE4="1" --build-arg DISTRO="oracle7" --build-arg LANG="" --build-arg LANGUAGE="" --build-arg LC_ALL="" -f dockerfile-kasm-core-oracle .
- docker push ${ORG_NAME}/core-oracle-7-private:$SANITIZED_BRANCH
except:
- develop
- /^release\/.*$/
tags:
- aws-autoscale
build_oracle_8_dev:
image: ${ORG_NAME}/docker-buildx-private:develop
stage: build
variables:
BUILD_PLATFORMS: "linux/amd64,linux/arm64"
script:
# get qemu ready
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
# prep the buildx env
- docker buildx create --use
# build for multiple architectures
- docker buildx build --push --platform $BUILD_PLATFORMS -t ${ORG_NAME}/core-oracle-8-private:$SANITIZED_BRANCH --build-arg START_PULSEAUDIO=1 --build-arg START_XFCE4=1 --build-arg BASE_IMAGE="oraclelinux:8" --build-arg DISTRO="oracle8" -f dockerfile-kasm-core-oracle .
except:
- develop
- /^release\/.*$/
tags:
- aws-autoscale
build_opensuse_15_dev:
image: ${ORG_NAME}/docker-buildx-private:develop
stage: build
variables:
BUILD_PLATFORMS: "linux/amd64,linux/arm64"
script:
# get qemu ready
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
# prep the buildx env
- docker buildx create --use
# build for multiple architectures
- docker buildx build --push --platform $BUILD_PLATFORMS -t ${ORG_NAME}/core-opensuse-15-private:$SANITIZED_BRANCH --build-arg START_PULSEAUDIO=1 --build-arg START_XFCE4=1 --build-arg BASE_IMAGE="opensuse/leap:15" --build-arg DISTRO="opensuse" -f dockerfile-kasm-core-suse .
except:
- develop
- /^release\/.*$/
tags:
- aws-autoscale
# These jobs are for the "rolling" release of the images. They should only run for scheduled jobs and should only push the rolling tags
build_ubuntu_bionic_scheduled:
stage: build
@ -405,6 +507,50 @@ build_centos_schedules:
only:
- schedules
build_oracle_7_schedules:
stage: build
script:
- docker build -t ${ORG_NAME}/core-oracle-7-private:$SANITIZED_ROLLING_BRANCH -t ${ORG_NAME}/core-oracle-7:$SANITIZED_ROLLING_BRANCH --build-arg BASE_IMAGE="oraclelinux:7" --build-arg START_PULSEAUDIO="1" --build-arg START_XFCE4="1" --build-arg DISTRO="oracle7" --build-arg LANG="" --build-arg LANGUAGE="" --build-arg LC_ALL="" -f dockerfile-kasm-core-oracle .
- docker push ${ORG_NAME}/core-oracle-7-private:$SANITIZED_ROLLING_BRANCH
- docker push ${ORG_NAME}/core-oracle-7:$SANITIZED_ROLLING_BRANCH
only:
- schedules
tags:
- aws-autoscale
build_oracle_8_scheduled:
stage: build
image: ${ORG_NAME}/docker-buildx-private:develop
variables:
BUILD_PLATFORMS: "linux/amd64,linux/arm64"
script:
# get qemu ready
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
# prep the buildx env
- docker buildx create --use
# build for multiple architectures
- docker buildx build --push --platform $BUILD_PLATFORMS -t ${ORG_NAME}/core-oracle-8-private:$SANITIZED_ROLLING_BRANCH -t ${ORG_NAME}/core-oracle-8:$SANITIZED_ROLLING_BRANCH --build-arg START_PULSEAUDIO=1 --build-arg START_XFCE4=1 --build-arg BASE_IMAGE="oraclelinux:8" --build-arg DISTRO="oracle8" -f dockerfile-kasm-core-oracle .
only:
- schedules
tags:
- aws-autoscale
build_opensuse_15_scheduled:
stage: build
image: ${ORG_NAME}/docker-buildx-private:develop
variables:
BUILD_PLATFORMS: "linux/amd64,linux/arm64"
script:
# get qemu ready
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
# prep the buildx env
- docker buildx create --use
# build for multiple architectures
- docker buildx build --push --platform $BUILD_PLATFORMS -t ${ORG_NAME}/core-opensuse-15-private:$SANITIZED_ROLLING_BRANCH -t ${ORG_NAME}/core-opensuse-15:$SANITIZED_ROLLING_BRANCH --build-arg START_PULSEAUDIO=1 --build-arg START_XFCE4=1 --build-arg BASE_IMAGE="opensuse/leap:15" --build-arg DISTRO="opensuse" -f dockerfile-kasm-core-suse .
only:
- schedules
tags:
- aws-autoscale
update_readmes:
stage: readme
@ -422,4 +568,4 @@ update_readmes:
- $README_PASSWORD
parallel:
matrix:
- KASM_IMAGE: [core-centos-7, core-kali-rolling, core-remnux-bionic, core-remnux-focal, core-cuda-bionic, core-cuda-focal, core-ubuntu-bionic, core-ubuntu-focal, core-nvidia-focal]
- KASM_IMAGE: [core-centos-7, core-oracle-7, core-oracle-8, core-opensuse-15, core-kali-rolling, core-remnux-bionic, core-remnux-focal, core-cuda-bionic, core-cuda-focal, core-ubuntu-bionic, core-ubuntu-focal, core-nvidia-focal]

View File

@ -11,8 +11,8 @@ ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
FROM install_tools AS squid_builder
RUN wget --progress=dot:giga 'https://kasmweb-build-artifacts.s3.amazonaws.com/kasm-squid-builder/a590f319f328a8a576cb966c2db5ec4a5b3b7b9b/output/kasm-squid-builder_centos.tar.gz'
RUN tar -xzf kasm-squid-builder_centos.tar.gz -C /
RUN wget --progress=dot:giga 'https://kasmweb-build-artifacts.s3.amazonaws.com/kasm-squid-builder/96a014eae9161b234fc4eafb07d3b6dd555b8417/output/kasm-squid-builder_centos_amd64.tar.gz'
RUN tar -xzf kasm-squid-builder_centos_amd64.tar.gz -C /
FROM install_tools

180
dockerfile-kasm-core-oracle Normal file
View File

@ -0,0 +1,180 @@
ARG BASE_IMAGE="oraclelinux:8"
FROM $BASE_IMAGE AS install_tools
ARG DISTRO=oracle8
### Install common tools
COPY ./src/ubuntu/install/tools $INST_SCRIPTS/tools/
RUN bash "$INST_SCRIPTS/tools/install_tools.sh" && rm -rf "$INST_SCRIPTS/tools/"
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
FROM install_tools AS squid_builder
ARG DISTRO=oracle8
RUN if [ "${DISTRO}" == "oracle8" ]; then \
ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g') && \
wget --progress=dot:giga "https://kasmweb-build-artifacts.s3.amazonaws.com/kasm-squid-builder/96a014eae9161b234fc4eafb07d3b6dd555b8417/output/kasm-squid-builder_oracle_${ARCH}.tar.gz"; \
else \
ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g') && \
wget --progress=dot:giga "https://kasmweb-build-artifacts.s3.amazonaws.com/kasm-squid-builder/96a014eae9161b234fc4eafb07d3b6dd555b8417/output/kasm-squid-builder_centos_${ARCH}.tar.gz"; \
fi
RUN tar -xzf kasm-squid-builder_*.tar.gz -C /
FROM install_tools
MAINTAINER Kasm Tech "info@kasmweb.com"
LABEL "com.kasmweb.image"="true"
### Environment config
ARG START_XFCE4=0
ARG START_PULSEAUDIO=0
ARG BG_IMG=bg_oracle.png
ARG EXTRA_SH=noop.sh
ARG DISTRO=oracle8
ARG LANG='en_US.UTF-8'
ARG LANGUAGE='en_US:en'
ARG LC_ALL='en_US.UTF-8'
ENV DISPLAY=:1 \
VNC_PORT=5901 \
NO_VNC_PORT=6901 \
VNC_PORT=5901 \
AUDIO_PORT=4901 \
VNC_RESOLUTION=1280x720 \
MAX_FRAME_RATE=24 \
VNCOPTIONS="-PreferBandwidth -DynamicQualityMin=4 -DynamicQualityMax=7 -DLP_ClipDelay=0" \
HOME=/home/kasm-default-profile \
TERM=xterm \
STARTUPDIR=/dockerstartup \
INST_SCRIPTS=/dockerstartup/install \
KASM_VNC_PATH=/usr/share/kasmvnc \
DEBIAN_FRONTEND=noninteractive \
VNC_COL_DEPTH=24 \
VNC_RESOLUTION=1280x1024 \
VNC_PW=vncpassword \
VNC_VIEW_ONLY_PW=vncviewonlypassword \
LD_LIBRARY_PATH=/usr/local/lib/ \
OMP_WAIT_POLICY=PASSIVE \
SHELL=/bin/bash \
START_XFCE4=$START_XFCE4 \
START_PULSEAUDIO=$START_PULSEAUDIO \
LANG=$LANG \
LANGUAGE=$LANGUAGE \
LC_ALL=$LC_ALL \
SINGLE_APPLICATION=0 \
KASMVNC_AUTO_RECOVER=true
EXPOSE $VNC_PORT \
$NO_VNC_PORT \
$UPLOAD_PORT \
$AUDIO_PORT
WORKDIR $HOME
RUN mkdir -p $HOME/Desktop
### Ensure all needed packages are installed.
### Consider "yum install -y gettext nss_wraper". There's a typo in nss_wraper
### (should be nss_wrapper), and yum would just ignore it. Thus, a necessary
### package would be missing. With skip_missing_names_on_install, yum will exit
### with 1 exit code and that will stop image building.
RUN if [ "${DISTRO}" == "oracle8" ]; then \
dnf config-manager --setopt=skip_missing_names_on_install=False --save; \
else \
yum-config-manager --setopt=skip_missing_names_on_install=False --save; \
fi
### Install custom fonts
COPY ./src/ubuntu/install/fonts $INST_SCRIPTS/fonts/
RUN bash $INST_SCRIPTS/fonts/install_custom_fonts.sh && rm -rf $INST_SCRIPTS/fonts/
### Install xfce UI
COPY ./src/ubuntu/install/xfce $INST_SCRIPTS/xfce/
RUN bash $INST_SCRIPTS/xfce/install_xfce_ui.sh && rm -rf $INST_SCRIPTS/xfce/
COPY ./src/$DISTRO/xfce/.config/ $HOME/.config/
COPY /src/common/resources/images/bg_kasm.png /usr/share/backgrounds/bg_kasm.png
COPY /src/common/resources/images/$BG_IMG /usr/share/backgrounds/bg_default.png
### Install kasm_vnc dependencies and binaries
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/
### 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/
### Install custom cursors
COPY ./src/ubuntu/install/cursors $INST_SCRIPTS/cursors/
RUN bash $INST_SCRIPTS/cursors/install_cursors.sh && rm -rf $INST_SCRIPTS/cursors/
### Install Audio
COPY ./src/ubuntu/install/audio $INST_SCRIPTS/audio/
RUN bash $INST_SCRIPTS/audio/install_audio.sh && rm -rf $INST_SCRIPTS/audio/
### Install Audio Input
COPY ./src/ubuntu/install/audio_input $INST_SCRIPTS/audio_input/
RUN bash $INST_SCRIPTS/audio_input/install_audio_input.sh && rm -rf $INST_SCRIPTS/audio_input/
### Copy built Squid
COPY --from=squid_builder /usr/local/squid /usr/local/squid
### Install Squid
COPY ./src/ubuntu/install/squid/install/ $INST_SCRIPTS/squid_install/
RUN bash $INST_SCRIPTS/squid_install/install_squid.sh && rm -rf $INST_SCRIPTS/squid_install/
COPY ./src/ubuntu/install/squid/resources/*.conf /etc/squid/
COPY ./src/ubuntu/install/squid/resources/start_squid.sh /etc/squid/start_squid.sh
COPY ./src/ubuntu/install/squid/resources/SN.png /usr/local/squid/share/icons/SN.png
RUN chown proxy:proxy /usr/local/squid/share/icons/SN.png
COPY ./src/ubuntu/install/squid/resources/error_message/access_denied.html /usr/local/squid/share/errors/en/ERR_ACCESS_DENIED
RUN chown proxy:proxy /usr/local/squid/share/errors/en/ERR_ACCESS_DENIED
RUN rm -rf "$INST_SCRIPTS/resources/"
RUN chmod +x /etc/squid/kasm_squid_adapter
RUN chmod +x /etc/squid/start_squid.sh && chmod 4755 /etc/squid/start_squid.sh
### Setup Container User - Libnss Wrapper
COPY ./src/ubuntu/install/libnss $INST_SCRIPTS/libnss/
RUN bash $INST_SCRIPTS/libnss/libnss_wrapper.sh && rm -rf $INST_SCRIPTS/libnss/
### configure startup
COPY ./src/common/scripts/kasm_hook_scripts $STARTUPDIR
COPY ./src/common/startup_scripts $STARTUPDIR
RUN bash $STARTUPDIR/set_user_permission.sh $STARTUPDIR $HOME
### extra configurations needed per distro variant
COPY ./src/ubuntu/install/extra $INST_SCRIPTS/extra/
RUN bash $INST_SCRIPTS/extra/$EXTRA_SH && rm -rf $INST_SCRIPTS/extra/
ENV HOME /home/kasm-user
WORKDIR $HOME
RUN mkdir -p $HOME && chown -R 1000:0 $HOME
### FIX PERMISSIONS ## Objective is to change the owner of non-home paths to root, remove write permissions, and set execute where required
# these files are created on container first exec, by the default user, so we have to create them since default will not have write perm
RUN touch $STARTUPDIR/wm.log \
&& touch $STARTUPDIR/window_manager_startup.log \
&& touch $STARTUPDIR/vnc_startup.log \
&& touch $STARTUPDIR/no_vnc_startup.log \
&& chown -R root:root $STARTUPDIR \
&& find $STARTUPDIR -type d -exec chmod 755 {} \; \
&& find $STARTUPDIR -type f -exec chmod 644 {} \; \
&& find $STARTUPDIR -type f -iname "*.sh" -exec chmod 755 {} \; \
&& find $STARTUPDIR -type f -iname "*.py" -exec chmod 755 {} \; \
&& find $STARTUPDIR -type f -iname "*.rb" -exec chmod 755 {} \; \
&& find $STARTUPDIR -type f -iname "*.pl" -exec chmod 755 {} \; \
&& find $STARTUPDIR -type f -iname "*.log" -exec chmod 666 {} \; \
&& chmod 755 $STARTUPDIR/upload_server/kasm_upload_server \
&& chmod 755 $STARTUPDIR/audio_input/kasm_audio_input_server \
&& chmod 755 $STARTUPDIR/generate_container_user \
&& chmod +x $STARTUPDIR/jsmpeg/kasm_audio_out-linux \
&& rm -rf $STARTUPDIR/install \
&& mkdir -p $STARTUPDIR/kasmrx/Downloads \
&& chown 1000:1000 $STARTUPDIR/kasmrx/Downloads \
&& chown -R root:root /usr/local/bin
USER 1000
ENTRYPOINT ["/dockerstartup/kasm_default_profile.sh", "/dockerstartup/vnc_startup.sh", "/dockerstartup/kasm_startup.sh"]
CMD ["--wait"]

164
dockerfile-kasm-core-suse Normal file
View File

@ -0,0 +1,164 @@
ARG BASE_IMAGE="opensuse/leap:15"
FROM $BASE_IMAGE AS install_tools
ARG DISTRO=opensuse
### Install common tools
COPY ./src/ubuntu/install/tools $INST_SCRIPTS/tools/
RUN bash "$INST_SCRIPTS/tools/install_tools.sh" && rm -rf "$INST_SCRIPTS/tools/"
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
FROM install_tools AS squid_builder
ARG DISTRO=opensuse
RUN ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g') && \
wget --progress=dot:giga "https://kasmweb-build-artifacts.s3.amazonaws.com/kasm-squid-builder/919fdaaa1cb5184deb5f849e28ad6324615129cd/output/kasm-squid-builder_opensuse_${ARCH}.tar.gz"
RUN tar -xzf kasm-squid-builder_*.tar.gz -C /
FROM install_tools
MAINTAINER Kasm Tech "info@kasmweb.com"
LABEL "com.kasmweb.image"="true"
### Environment config
ARG START_XFCE4=0
ARG START_PULSEAUDIO=0
ARG BG_IMG=bg_opensuse.png
ARG EXTRA_SH=noop.sh
ARG DISTRO=opensuse
ARG LANG='en_US.UTF-8'
ARG LANGUAGE='en_US:en'
ARG LC_ALL='en_US.UTF-8'
ENV DISPLAY=:1 \
VNC_PORT=5901 \
NO_VNC_PORT=6901 \
VNC_PORT=5901 \
AUDIO_PORT=4901 \
VNC_RESOLUTION=1280x720 \
MAX_FRAME_RATE=24 \
VNCOPTIONS="-PreferBandwidth -DynamicQualityMin=4 -DynamicQualityMax=7 -DLP_ClipDelay=0" \
HOME=/home/kasm-default-profile \
TERM=xterm \
STARTUPDIR=/dockerstartup \
INST_SCRIPTS=/dockerstartup/install \
KASM_VNC_PATH=/usr/share/kasmvnc \
DEBIAN_FRONTEND=noninteractive \
VNC_COL_DEPTH=24 \
VNC_RESOLUTION=1280x1024 \
VNC_PW=vncpassword \
VNC_VIEW_ONLY_PW=vncviewonlypassword \
LD_LIBRARY_PATH=/usr/local/lib/ \
OMP_WAIT_POLICY=PASSIVE \
SHELL=/bin/bash \
START_XFCE4=$START_XFCE4 \
START_PULSEAUDIO=$START_PULSEAUDIO \
LANG=$LANG \
LANGUAGE=$LANGUAGE \
LC_ALL=$LC_ALL \
SINGLE_APPLICATION=0 \
KASMVNC_AUTO_RECOVER=true
EXPOSE $VNC_PORT \
$NO_VNC_PORT \
$UPLOAD_PORT \
$AUDIO_PORT
WORKDIR $HOME
RUN mkdir -p $HOME/Desktop
### Install custom fonts
COPY ./src/ubuntu/install/fonts $INST_SCRIPTS/fonts/
RUN bash $INST_SCRIPTS/fonts/install_custom_fonts.sh && rm -rf $INST_SCRIPTS/fonts/
### Install xfce UI
COPY ./src/ubuntu/install/xfce $INST_SCRIPTS/xfce/
RUN bash $INST_SCRIPTS/xfce/install_xfce_ui.sh && rm -rf $INST_SCRIPTS/xfce/
COPY ./src/$DISTRO/xfce/.config/ $HOME/.config/
COPY /src/common/resources/images/bg_kasm.png /usr/share/backgrounds/bg_kasm.png
COPY /src/common/resources/images/$BG_IMG /usr/share/backgrounds/bg_default.png
### Install kasm_vnc dependencies and binaries
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/
### 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/
### Install custom cursors
COPY ./src/ubuntu/install/cursors $INST_SCRIPTS/cursors/
RUN bash $INST_SCRIPTS/cursors/install_cursors.sh && rm -rf $INST_SCRIPTS/cursors/
### Install Audio
COPY ./src/ubuntu/install/audio $INST_SCRIPTS/audio/
RUN bash $INST_SCRIPTS/audio/install_audio.sh && rm -rf $INST_SCRIPTS/audio/
### Install Audio Input
COPY ./src/ubuntu/install/audio_input $INST_SCRIPTS/audio_input/
RUN bash $INST_SCRIPTS/audio_input/install_audio_input.sh && rm -rf $INST_SCRIPTS/audio_input/
### Copy built Squid
COPY --from=squid_builder /usr/local/squid /usr/local/squid
### Install Squid
COPY ./src/ubuntu/install/squid/install/ $INST_SCRIPTS/squid_install/
RUN bash $INST_SCRIPTS/squid_install/install_squid.sh && rm -rf $INST_SCRIPTS/squid_install/
COPY ./src/ubuntu/install/squid/resources/*.conf /etc/squid/
COPY ./src/ubuntu/install/squid/resources/start_squid.sh /etc/squid/start_squid.sh
COPY ./src/ubuntu/install/squid/resources/SN.png /usr/local/squid/share/icons/SN.png
RUN chown proxy:proxy /usr/local/squid/share/icons/SN.png
COPY ./src/ubuntu/install/squid/resources/error_message/access_denied.html /usr/local/squid/share/errors/en/ERR_ACCESS_DENIED
RUN chown proxy:proxy /usr/local/squid/share/errors/en/ERR_ACCESS_DENIED
RUN rm -rf "$INST_SCRIPTS/resources/"
RUN chmod +x /etc/squid/kasm_squid_adapter
RUN chmod +x /etc/squid/start_squid.sh && chmod 4755 /etc/squid/start_squid.sh
### Setup Container User - Libnss Wrapper
COPY ./src/ubuntu/install/libnss $INST_SCRIPTS/libnss/
RUN bash $INST_SCRIPTS/libnss/libnss_wrapper.sh && rm -rf $INST_SCRIPTS/libnss/
### configure startup
COPY ./src/common/scripts/kasm_hook_scripts $STARTUPDIR
COPY ./src/common/startup_scripts $STARTUPDIR
RUN bash $STARTUPDIR/set_user_permission.sh $STARTUPDIR $HOME
### extra configurations needed per distro variant
COPY ./src/ubuntu/install/extra $INST_SCRIPTS/extra/
RUN bash $INST_SCRIPTS/extra/$EXTRA_SH && rm -rf $INST_SCRIPTS/extra/
ENV HOME /home/kasm-user
WORKDIR $HOME
RUN mkdir -p $HOME && chown -R 1000:0 $HOME
### FIX PERMISSIONS ## Objective is to change the owner of non-home paths to root, remove write permissions, and set execute where required
# these files are created on container first exec, by the default user, so we have to create them since default will not have write perm
RUN touch $STARTUPDIR/wm.log \
&& touch $STARTUPDIR/window_manager_startup.log \
&& touch $STARTUPDIR/vnc_startup.log \
&& touch $STARTUPDIR/no_vnc_startup.log \
&& chown -R root:root $STARTUPDIR \
&& find $STARTUPDIR -type d -exec chmod 755 {} \; \
&& find $STARTUPDIR -type f -exec chmod 644 {} \; \
&& find $STARTUPDIR -type f -iname "*.sh" -exec chmod 755 {} \; \
&& find $STARTUPDIR -type f -iname "*.py" -exec chmod 755 {} \; \
&& find $STARTUPDIR -type f -iname "*.rb" -exec chmod 755 {} \; \
&& find $STARTUPDIR -type f -iname "*.pl" -exec chmod 755 {} \; \
&& find $STARTUPDIR -type f -iname "*.log" -exec chmod 666 {} \; \
&& chmod 755 $STARTUPDIR/upload_server/kasm_upload_server \
&& chmod 755 $STARTUPDIR/audio_input/kasm_audio_input_server \
&& chmod 755 $STARTUPDIR/generate_container_user \
&& chmod +x $STARTUPDIR/jsmpeg/kasm_audio_out-linux \
&& rm -rf $STARTUPDIR/install \
&& mkdir -p $STARTUPDIR/kasmrx/Downloads \
&& chown 1000:1000 $STARTUPDIR/kasmrx/Downloads \
&& chown -R root:root /usr/local/bin
USER 1000
ENTRYPOINT ["/dockerstartup/kasm_default_profile.sh", "/dockerstartup/vnc_startup.sh", "/dockerstartup/kasm_startup.sh"]
CMD ["--wait"]

View File

@ -0,0 +1,7 @@
# About This Image
This Image contains a browser-accessible openSUSE Leap 15 with XFCE desktop environment.
![Screenshot][Image_Screenshot]
[Image_Screenshot]: https://5856039.fs1.hubspotusercontent-na1.net/hubfs/5856039/dockerhub/core-opensuse-15.png "Image Screenshot"

View File

@ -0,0 +1 @@
openSUSE Leap 15 base image for Kasm Workspaces

View File

@ -0,0 +1,7 @@
# About This Image
This Image contains a browser-accessible Oracle Linux 7 with XFCE desktop environment.
![Screenshot][Image_Screenshot]
[Image_Screenshot]: https://5856039.fs1.hubspotusercontent-na1.net/hubfs/5856039/dockerhub/image-screenshots/core-oracle-7.png "Image Screenshot"

View File

@ -0,0 +1 @@
Oracle Linux 7 base image for Kasm Workspaces

View File

@ -0,0 +1,7 @@
# About This Image
This Image contains a browser-accessible Oracle Linux 8 with XFCE desktop environment.
![Screenshot][Image_Screenshot]
[Image_Screenshot]: https://5856039.fs1.hubspotusercontent-na1.net/hubfs/5856039/dockerhub/image-screenshots/core-oracle-8.png "Image Screenshot"

View File

@ -0,0 +1 @@
Oracle Linux 8 base image for Kasm Workspaces

Binary file not shown.

After

Width:  |  Height:  |  Size: 804 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

View File

View File

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<channel name="xfce4-desktop" version="1.0">
<property name="desktop-menu" type="empty">
<property name="show" type="empty"/>
</property>
<property name="windowlist-menu" type="empty">
<property name="show" type="empty"/>
</property>
<property name="backdrop" type="empty">
<property name="screen0" type="empty">
<property name="monitorVNC-0" type="empty">
<property name="workspace0" type="empty">
<property name="color-style" type="int" value="0"/>
<property name="image-style" type="int" value="5"/>
<property name="last-image" type="string" value="/usr/share/backgrounds/bg_default.png"/>
</property>
<property name="workspace1" type="empty">
<property name="color-style" type="int" value="0"/>
<property name="image-style" type="int" value="5"/>
<property name="last-image" type="string" value="/usr/share/backgrounds/bg_default.png"/>
</property>
<property name="workspace2" type="empty">
<property name="color-style" type="int" value="0"/>
<property name="image-style" type="int" value="5"/>
<property name="last-image" type="string" value="/usr/share/backgrounds/bg_default.png"/>
</property>
<property name="workspace3" type="empty">
<property name="color-style" type="int" value="0"/>
<property name="image-style" type="int" value="5"/>
<property name="last-image" type="string" value="/usr/share/backgrounds/bg_default.png"/>
</property>
</property>
</property>
</property>
<property name="last" type="empty">
<property name="window-width" type="int" value="643"/>
<property name="window-height" type="int" value="556"/>
</property>
<property name="desktop-icons" type="empty">
<property name="file-icons" type="empty">
<property name="show-home" type="bool" value="false"/>
<property name="show-filesystem" type="bool" value="false"/>
<property name="show-trash" type="bool" value="false"/>
<property name="show-removable" type="bool" value="false"/>
</property>
</property>
</channel>

View File

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8"?>
<channel name="xfce4-panel" version="1.0">
<property name="configver" type="empty"/>
<property name="panels" type="empty">
<property name="panel-1" type="empty">
<property name="position" type="empty"/>
<property name="length" type="empty"/>
<property name="position-locked" type="empty"/>
<property name="size" type="uint" value="35"/>
<property name="length-adjust" type="empty"/>
<property name="plugin-ids" type="array">
<value type="int" value="1"/>
<value type="int" value="2"/>
<value type="int" value="3"/>
<value type="int" value="4"/>
<value type="int" value="5"/>
<value type="int" value="8"/>
<value type="int" value="7"/>
<value type="int" value="9"/>
<value type="int" value="10"/>
<value type="int" value="11"/>
<value type="int" value="14"/>
</property>
</property>
</property>
<property name="plugins" type="empty">
<property name="plugin-1" type="empty"/>
<property name="plugin-2" type="empty">
<property name="style" type="empty"/>
</property>
<property name="plugin-3" type="empty"/>
<property name="plugin-4" type="empty">
<property name="flat-buttons" type="empty"/>
<property name="show-handle" type="empty"/>
<property name="grouping" type="empty"/>
</property>
<property name="plugin-5" type="empty">
<property name="expand" type="empty"/>
<property name="style" type="empty"/>
</property>
<property name="plugin-6" type="empty"/>
<property name="plugin-14" type="empty"/>
<property name="plugin-13" type="empty"/>
<property name="plugin-7" type="empty">
<property name="show-frame" type="empty"/>
<property name="square-icons" type="empty"/>
<property name="icon-size" type="empty"/>
<property name="symbolic-icons" type="empty"/>
</property>
<property name="plugin-15" type="empty">
<property name="menu-is-primary" type="empty"/>
<property name="square-icons" type="empty"/>
<property name="icon-size" type="empty"/>
<property name="symbolic-icons" type="empty"/>
</property>
<property name="plugin-8" type="empty"/>
<property name="plugin-9" type="empty">
<property name="style" type="empty"/>
</property>
<property name="plugin-10" type="empty">
<property name="show-frame" type="empty"/>
<property name="digital-format" type="empty"/>
</property>
<property name="plugin-11" type="empty">
<property name="style" type="empty"/>
</property>
</property>
</channel>

View File

View File

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<channel name="xfce4-desktop" version="1.0">
<property name="backdrop" type="empty">
<property name="screen0" type="empty">
<property name="monitor0" type="empty">
<property name="workspace0" type="empty">
<property name="color-style" type="int" value="0"/>
<property name="image-style" type="int" value="3"/>
<property name="last-image" type="string" value="/usr/share/backgrounds/bg_default.png"/>
</property>
<property name="workspace1" type="empty">
<property name="color-style" type="int" value="0"/>
<property name="image-style" type="int" value="5"/>
<property name="last-image" type="string" value="/usr/share/backgrounds/images/default.png"/>
</property>
<property name="workspace2" type="empty">
<property name="color-style" type="int" value="0"/>
<property name="image-style" type="int" value="5"/>
<property name="last-image" type="string" value="/usr/share/backgrounds/images/default.png"/>
</property>
<property name="workspace3" type="empty">
<property name="color-style" type="int" value="0"/>
<property name="image-style" type="int" value="5"/>
<property name="last-image" type="string" value="/usr/share/backgrounds/images/default.png"/>
</property>
</property>
<property name="monitorVNC-0" type="empty">
<property name="workspace0" type="empty">
<property name="color-style" type="int" value="2"/>
<property name="image-style" type="int" value="3"/>
<property name="last-image" type="string" value="/usr/share/backgrounds/bg_default.png"/>
</property>
</property>
</property>
</property>
<property name="last" type="empty">
<property name="window-width" type="int" value="1280"/>
<property name="window-height" type="int" value="915"/>
</property>
<property name="desktop-icons" type="empty">
<property name="file-icons" type="empty">
<property name="show-filesystem" type="bool" value="false"/>
<property name="show-home" type="bool" value="false"/>
<property name="show-trash" type="bool" value="false"/>
</property>
</property>
</channel>

View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<channel name="xfce4-panel" version="1.0">
<property name="configver" type="int" value="2"/>
<property name="panels" type="array">
<value type="int" value="1"/>
<property name="panel-1" type="empty">
<property name="position" type="string" value="p=6;x=0;y=0"/>
<property name="length" type="uint" value="100"/>
<property name="position-locked" type="bool" value="true"/>
<property name="size" type="uint" value="30"/>
<property name="plugin-ids" type="array">
<value type="int" value="1"/>
<value type="int" value="3"/>
<value type="int" value="15"/>
<value type="int" value="2"/>
<value type="int" value="4"/>
</property>
</property>
</property>
<property name="plugins" type="empty">
<property name="plugin-1" type="string" value="applicationsmenu">
<property name="button-icon" type="string" value="/usr/share/icons/hicolor/256x256/apps/fedora-logo-icon.png"/>
</property>
<property name="plugin-3" type="string" value="tasklist"/>
<property name="plugin-15" type="string" value="separator">
<property name="expand" type="bool" value="true"/>
<property name="style" type="uint" value="0"/>
</property>
<property name="plugin-4" type="string" value="pager"/>
<property name="plugin-6" type="string" value="systray"/>
<property name="plugin-7" type="string" value="showdesktop"/>
<property name="plugin-8" type="string" value="separator"/>
<property name="plugin-9" type="string" value="launcher">
<property name="items" type="array">
<value type="string" value="14413071971.desktop"/>
</property>
</property>
<property name="plugin-10" type="string" value="launcher">
<property name="items" type="array">
<value type="string" value="14413071972.desktop"/>
</property>
</property>
<property name="plugin-11" type="string" value="launcher">
<property name="items" type="array">
<value type="string" value="14413071973.desktop"/>
</property>
</property>
<property name="plugin-12" type="string" value="launcher">
<property name="items" type="array">
<value type="string" value="14413071974.desktop"/>
</property>
</property>
<property name="plugin-13" type="string" value="separator"/>
<property name="plugin-14" type="string" value="directorymenu">
<property name="base-directory" type="string" value="/root"/>
</property>
<property name="plugin-2" type="string" value="systray"/>
</property>
</channel>

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<channel name="xsettings" version="1.0">
<property name="Net" type="empty">
<property name="ThemeName" type="empty"/>
<property name="IconThemeName" type="empty"/>
<property name="DoubleClickTime" type="empty"/>
<property name="DoubleClickDistance" type="empty"/>
<property name="DndDragThreshold" type="empty"/>
<property name="CursorBlink" type="empty"/>
<property name="CursorBlinkTime" type="empty"/>
<property name="SoundThemeName" type="empty"/>
<property name="EnableEventSounds" type="empty"/>
<property name="EnableInputFeedbackSounds" type="empty"/>
</property>
<property name="Xft" type="empty">
<property name="DPI" type="empty"/>
<property name="Antialias" type="empty"/>
<property name="Hinting" type="empty"/>
<property name="HintStyle" type="empty"/>
<property name="RGBA" type="empty"/>
</property>
<property name="Gtk" type="empty">
<property name="CanChangeAccels" type="empty"/>
<property name="ColorPalette" type="empty"/>
<property name="FontName" type="empty"/>
<property name="IconSizes" type="empty"/>
<property name="KeyThemeName" type="empty"/>
<property name="ToolbarStyle" type="empty"/>
<property name="ToolbarIconSize" type="empty"/>
<property name="MenuImages" type="empty"/>
<property name="ButtonImages" type="empty"/>
<property name="MenuBarAccel" type="empty"/>
<property name="CursorThemeName" type="string" value="bridge"/>
<property name="CursorThemeSize" type="empty"/>
<property name="DecorationLayout" type="empty"/>
</property>
</channel>

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<channel name="xfce4-desktop" version="1.0">
<property name="backdrop" type="empty">
<property name="screen0" type="empty">
<property name="monitor0" type="empty">
<property name="workspace0" type="empty">
<property name="color-style" type="int" value="0"/>
<property name="image-style" type="int" value="5"/>
<property name="last-image" type="string" value="/usr/share/backgrounds/bg_default.png"/>
</property>
</property>
<property name="monitorVNC-0" type="empty">
<property name="workspace0" type="empty">
<property name="color-style" type="int" value="2"/>
<property name="image-style" type="int" value="3"/>
<property name="last-image" type="string" value="/usr/share/backgrounds/bg_default.png"/>
</property>
</property>
</property>
</property>
<property name="last" type="empty">
<property name="window-width" type="int" value="1280"/>
<property name="window-height" type="int" value="1024"/>
</property>
<property name="desktop-icons" type="empty">
<property name="file-icons" type="empty">
<property name="show-filesystem" type="bool" value="false"/>
<property name="show-home" type="bool" value="false"/>
<property name="show-trash" type="bool" value="false"/>
</property>
</property>
</channel>

View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<channel name="xfce4-panel" version="1.0">
<property name="configver" type="int" value="2"/>
<property name="panels" type="array">
<value type="int" value="1"/>
<property name="panel-1" type="empty">
<property name="position" type="string" value="p=6;x=0;y=0"/>
<property name="length" type="uint" value="100"/>
<property name="position-locked" type="bool" value="true"/>
<property name="size" type="uint" value="30"/>
<property name="plugin-ids" type="array">
<value type="int" value="1"/>
<value type="int" value="3"/>
<value type="int" value="15"/>
<value type="int" value="2"/>
<value type="int" value="4"/>
</property>
</property>
</property>
<property name="plugins" type="empty">
<property name="plugin-1" type="string" value="applicationsmenu">
<property name="button-icon" type="string" value="/home/kasm-user/.config/xfce4/fedora-logo-icon.png"/>
</property>
<property name="plugin-3" type="string" value="tasklist"/>
<property name="plugin-15" type="string" value="separator">
<property name="expand" type="bool" value="true"/>
<property name="style" type="uint" value="0"/>
</property>
<property name="plugin-4" type="string" value="pager"/>
<property name="plugin-6" type="string" value="systray"/>
<property name="plugin-7" type="string" value="showdesktop"/>
<property name="plugin-8" type="string" value="separator"/>
<property name="plugin-9" type="string" value="launcher">
<property name="items" type="array">
<value type="string" value="14413071971.desktop"/>
</property>
</property>
<property name="plugin-10" type="string" value="launcher">
<property name="items" type="array">
<value type="string" value="14413071972.desktop"/>
</property>
</property>
<property name="plugin-11" type="string" value="launcher">
<property name="items" type="array">
<value type="string" value="14413071973.desktop"/>
</property>
</property>
<property name="plugin-12" type="string" value="launcher">
<property name="items" type="array">
<value type="string" value="14413071974.desktop"/>
</property>
</property>
<property name="plugin-13" type="string" value="separator"/>
<property name="plugin-14" type="string" value="directorymenu">
<property name="base-directory" type="string" value="/root"/>
</property>
<property name="plugin-2" type="string" value="systray"/>
</property>
</channel>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<channel name="xfce4-screensaver" version="1.0">
<property name="saver" type="empty">
<property name="mode" type="int" value="0"/>
<property name="enabled" type="bool" value="false"/>
</property>
</channel>

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<channel name="xsettings" version="1.0">
<property name="Net" type="empty">
<property name="ThemeName" type="empty"/>
<property name="IconThemeName" type="empty"/>
<property name="DoubleClickTime" type="empty"/>
<property name="DoubleClickDistance" type="empty"/>
<property name="DndDragThreshold" type="empty"/>
<property name="CursorBlink" type="empty"/>
<property name="CursorBlinkTime" type="empty"/>
<property name="SoundThemeName" type="empty"/>
<property name="EnableEventSounds" type="empty"/>
<property name="EnableInputFeedbackSounds" type="empty"/>
</property>
<property name="Xft" type="empty">
<property name="DPI" type="empty"/>
<property name="Antialias" type="empty"/>
<property name="Hinting" type="empty"/>
<property name="HintStyle" type="empty"/>
<property name="RGBA" type="empty"/>
</property>
<property name="Gtk" type="empty">
<property name="CanChangeAccels" type="empty"/>
<property name="ColorPalette" type="empty"/>
<property name="FontName" type="empty"/>
<property name="IconSizes" type="empty"/>
<property name="KeyThemeName" type="empty"/>
<property name="ToolbarStyle" type="empty"/>
<property name="ToolbarIconSize" type="empty"/>
<property name="MenuImages" type="empty"/>
<property name="ButtonImages" type="empty"/>
<property name="MenuBarAccel" type="empty"/>
<property name="CursorThemeName" type="string" value="bridge"/>
<property name="CursorThemeSize" type="empty"/>
<property name="DecorationLayout" type="empty"/>
</property>
</channel>

View File

@ -4,12 +4,25 @@ set -ex
ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g')
echo "Install Audio Requirements"
if [ "${DISTRO}" == "centos" ] ; then
if [[ "${DISTRO}" == @(centos|oracle7) ]] ; then
yum install -y curl git
yum install -y epel-release
yum localinstall -y --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm
yum install -y ffmpeg pulseaudio-utils
yum remove -y pulseaudio-module-bluetooth
DISTRO=centos
elif [ "${DISTRO}" == "oracle8" ]; then
dnf install -y curl git
dnf config-manager --set-enabled ol8_codeready_builder
dnf localinstall -y --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm
dnf install -y ffmpeg pulseaudio-utils
dnf remove -y pulseaudio-module-bluetooth
dnf clean all
DISTRO=oracle
elif [ "${DISTRO}" == "opensuse" ]; then
zypper install -ny curl git
zypper install -yn ffmpeg pulseaudio-utils
zypper clean --all
else
apt-get update
apt-get install -y curl git ffmpeg
@ -17,5 +30,5 @@ fi
cd $STARTUPDIR
mkdir jsmpeg
wget -qO- https://kasmweb-build-artifacts.s3.amazonaws.com/kasm_websocket_relay/68ee0a0311d2ba8a9f2c206ec89e3abce6451f92/kasm_websocket_relay_${DISTRO/kali/ubuntu}_${ARCH}_develop.68ee0a.tar.gz | tar xz --strip 1 -C $STARTUPDIR/jsmpeg
wget -qO- https://kasmweb-build-artifacts.s3.amazonaws.com/kasm_websocket_relay/f173f72a9faa6239e43f2efcb48aabe8a984d443/kasm_websocket_relay_${DISTRO/kali/ubuntu}_${ARCH}_develop.f173f7.tar.gz | tar xz --strip 1 -C $STARTUPDIR/jsmpeg
chmod +x $STARTUPDIR/jsmpeg/kasm_audio_out-linux

View File

@ -1,6 +1,13 @@
#!/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
ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g')
mkdir -p $STARTUPDIR/audio_input
wget -qO- https://kasmweb-build-artifacts.s3.amazonaws.com/kasm_audio_input_server/3b599f999efdb349969cf607b6ed636c4501108d/kasm_audio_input_server_${DISTRO/kali/ubuntu}_${ARCH}_develop.3b599f.tar.gz | tar -xvz -C $STARTUPDIR/audio_input/
wget -qO- https://kasmweb-build-artifacts.s3.amazonaws.com/kasm_audio_input_server/2c031a71a9ed0bace8ea2ad11238535820c45180/kasm_audio_input_server_${DISTRO/kali/ubuntu}_${ARCH}_develop.2c031a.tar.gz | tar -xvz -C $STARTUPDIR/audio_input/

View File

@ -3,8 +3,14 @@
set -e
echo "Installing ttf-wqy-zenhei"
if [ "$DISTRO" = centos ]; then
if [[ "${DISTRO}" == @(centos|oracle7) ]]; then
yum install -y wqy-zenhei-fonts
elif [ "${DISTRO}" == "oracle8" ]; then
dnf install -y google-noto-sans-fonts
dnf clean all
elif [ "${DISTRO}" == "opensuse" ]; then
zypper install -ny wqy-zenhei-fonts
zypper clean --all
else
apt-get install -y ttf-wqy-zenhei
fi

View File

@ -1,8 +1,14 @@
#!/usr/bin/env bash
set -ex
if [ "${DISTRO}" == "oracle7" ]; then
DISTRO=centos
elif [ "${DISTRO}" == "oracle8" ]; then
DISTRO=oracle
fi
ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g')
mkdir $STARTUPDIR/upload_server
wget --quiet https://kasmweb-build-artifacts.s3.amazonaws.com/kasm_upload_service/839a3b9ce63569aaee4f7d62bd31ffb20184a393/kasm_upload_service_${DISTRO/kali/ubuntu}_${ARCH}_develop.839a3b.tar.gz -O /tmp/kasm_upload_server.tar.gz
wget --quiet https://kasmweb-build-artifacts.s3.amazonaws.com/kasm_upload_service/594ff9c24baa89477ef4fc937933e11529924cce/kasm_upload_service_${DISTRO/kali/ubuntu}_${ARCH}_develop.594ff9.tar.gz -O /tmp/kasm_upload_server.tar.gz
tar -xvf /tmp/kasm_upload_server.tar.gz -C $STARTUPDIR/upload_server
rm /tmp/kasm_upload_server.tar.gz

View File

@ -3,7 +3,6 @@ set -e
install_libjpeg_turbo() {
local libjpeg_deb=libjpeg-turbo.deb
wget "https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/output/${UBUNTU_CODENAME}/libjpeg-turbo_2.1.4_amd64.deb" -O "$libjpeg_deb"
apt-get install -y "./$libjpeg_deb"
rm "$libjpeg_deb"
@ -14,7 +13,7 @@ cd /tmp
BUILD_ARCH=$(uname -p)
UBUNTU_CODENAME=""
COMMIT_ID="ce78879132e679df898b05de491e3c14a52d8ad8"
COMMIT_ID="6e84e103175fd6923eafb5e185ac271650720b40"
BRANCH="master"
COMMIT_ID_SHORT=$(echo "${COMMIT_ID}" | cut -c1-6)
@ -25,8 +24,20 @@ then
else
BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_kali-rolling_0.9.3_${BRANCH}_${COMMIT_ID_SHORT}_arm64.deb"
fi
elif [ "${DISTRO}" == "centos" ] ; then
elif [[ "${DISTRO}" == @(centos|oracle7) ]] ; then
BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/output/centos_core/kasmvncserver-0.9.3~beta-1.el7.x86_64.rpm"
elif [[ "${DISTRO}" == "oracle8" ]] ; then
if [[ "$(arch)" =~ ^x86_64$ ]] ; then
BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/output/oracle_8/kasmvncserver-0.9.3~beta-1.el8.x86_64.rpm"
else
BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/output/oracle_8/kasmvncserver-0.9.3~beta-1.el8.aarch64.rpm"
fi
elif [[ "${DISTRO}" == "opensuse" ]] ; then
if [[ "$(arch)" =~ ^x86_64$ ]] ; then
BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/output/opensuse_15/kasmvncserver-0.9.3~beta-leap15.x86_64.rpm"
else
BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/output/opensuse_15/kasmvncserver-0.9.3~beta-leap15.aarch64.rpm"
fi
else
UBUNTU_CODENAME=$(grep -Po -m 1 "(?<=_CODENAME=)\w+" /etc/os-release)
if [[ "${BUILD_ARCH}" =~ ^aarch64$ ]] ; then
@ -39,11 +50,38 @@ else
fi
if [ "${DISTRO}" == "centos" ] ; then
if [[ "${DISTRO}" == @(centos|oracle7) ]] ; then
wget "${BUILD_URL}" -O kasmvncserver.rpm
yum localinstall -y kasmvncserver.rpm
rm kasmvncserver.rpm
elif [[ "${DISTRO}" == "oracle8" ]] ; then
wget "${BUILD_URL}" -O kasmvncserver.rpm
dnf localinstall -y kasmvncserver.rpm
rm kasmvncserver.rpm
dnf clean all
elif [[ "${DISTRO}" == "opensuse" ]] ; then
zypper -n install -y \
libglvnd \
libgnutls30 \
libgomp1 \
libjpeg8 \
libnettle6 \
libpixman-1-0 \
libXdmcp6 \
libXfont2-2 \
libxkbcommon-x11-0 \
openssl \
perl \
x11-tools \
xauth \
xkbcomp \
xkeyboard-config \
xrdb
mkdir -p /etc/pki/tls/private
wget "${BUILD_URL}" -O kasmvncserver.rpm
rpm -i kasmvncserver.rpm
rm kasmvncserver.rpm
zypper clean --all
else
if [[ "${UBUNTU_CODENAME}" = "bionic" ]] && [[ ! "$BUILD_ARCH" =~ ^aarch64$ ]] ; then
# We need to install libjpeg-turbo because the version that comes with bionic is quite old and has performance issues.

View File

@ -2,10 +2,23 @@
set -e
echo "Install nss-wrapper to be able to execute image as non-root user"
if [ "${DISTRO}" == "centos" ] ; then
yum install -y centos-release-scl-rh && yum install -y nss_wrapper
yum install -y gettext
yum clean all
if [[ "${DISTRO}" == @(centos|oracle7|oracle8) ]] ; then
if [ "${DISTRO}" == "centos" ]; then
yum install -y centos-release-scl-rh && yum install -y nss_wrapper
elif [ "${DISTRO}" == "oracle8" ]; then
dnf install -y nss_wrapper gettext hostname
dnf clean all
else
yum install -y http://mirror.centos.org/centos/7/extras/x86_64/Packages/centos-release-scl-rh-2-3.el7.centos.noarch.rpm && yum install -y nss_wrapper
fi
if [[ "${DISTRO}" == @(centos|oracle7) ]] ; then
yum install -y gettext
yum clean all
fi
elif [[ "${DISTRO}" == "opensuse" ]] ; then
zypper install -ny nss_wrapper gettext-runtime
zypper clean --all
sed -i 's/mirrorcache-us.opensuse.org/download.opensuse.org/g' /etc/zypp/repos.d/*.repo
else
apt-get update
apt-get install -y libnss-wrapper gettext

View File

@ -6,15 +6,31 @@ ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g')
# intall squid
SQUID_COMMIT='6392f7dfb1040c67c0a5d5518abf508282523cc0'
SQUID_DISTRO=${DISTRO}
# currently all distros use the ubuntu build of squid except centos
if [ ! "${SQUID_DISTRO}" == "centos" ] ; then
# currently all distros use the ubuntu build of squid except centos/oracle
if [[ "${SQUID_DISTRO}" != @(centos|oracle7) ]] ; then
SQUID_DISTRO="ubuntu"
fi
wget -qO- "https://kasmweb-build-artifacts.s3.amazonaws.com/kasm-squid-builder/${SQUID_COMMIT}/output/kasm-squid-builder_${SQUID_DISTRO}_${ARCH}.tar.gz" | tar -xzf - -C /
if [ "${DISTRO}" == "oracle7" ]; then
SQUID_DISTRO=centos
DISTRO=centos
elif [ "${DISTRO}" == "oracle8" ]; then
SQUID_DISTRO=oracle8
DISTRO=oracle
elif [ "${DISTRO}" == "opensuse" ]; then
SQUID_DISTRO=opensuse
fi
if [[ "${SQUID_DISTRO}" != @(centos|oracle7|oracle8|opensuse) ]] ; then
wget -qO- "https://kasmweb-build-artifacts.s3.amazonaws.com/kasm-squid-builder/${SQUID_COMMIT}/output/kasm-squid-builder_${SQUID_DISTRO}_${ARCH}.tar.gz" | tar -xzf - -C /
fi
# update squid conf with user info
if [ "$DISTRO" = centos ]; then
if [[ "${DISTRO}" == @(centos|oracle) ]]; then
useradd --system --shell /usr/sbin/nologin --home-dir /bin proxy
elif [ "${DISTRO}" == "opensuse" ]; then
useradd --system --shell /usr/sbin/nologin --home-dir /bin proxy
groupadd proxy
usermod -a -G proxy proxy
fi
mkdir /usr/local/squid/etc/ssl_cert -p
@ -36,8 +52,12 @@ EOL
chown -R proxy:proxy /etc/squid/blocked.acl
if [ "$DISTRO" = centos ]; then
if [[ "${DISTRO}" == "centos" ]]; then
yum install -y memcached cyrus-sasl iproute
elif [ "${DISTRO}" == "oracle" ]; then
dnf install -y memcached cyrus-sasl iproute
elif [ "${DISTRO}" == "opensuse" ]; then
zypper install -yn memcached cyrus-sasl iproute2 libatomic1
else
apt-get install -y memcached sasl2-bin iproute2
fi
@ -52,7 +72,7 @@ log_level: 5
sasldb_path: /etc/sasl2/memcached-sasldb2
EOL
KASM_SQUID_ADAPTER=https://kasmweb-build-artifacts.s3.amazonaws.com/kasm_squid_adapter/faec132e9797ebf09cfa58bd59b60c77b0b1a64b/kasm_squid_adapter_${DISTRO/kali/ubuntu}_${ARCH}_develop.faec13.tar.gz
KASM_SQUID_ADAPTER=https://kasmweb-build-artifacts.s3.amazonaws.com/kasm_squid_adapter/d3ec909b9ca2f4c234bd561d015737f44343830c/kasm_squid_adapter_${DISTRO/kali/ubuntu}_${ARCH}_develop.d3ec90.tar.gz
wget -qO- ${KASM_SQUID_ADAPTER} | tar xz -C /etc/squid/
ls -la /etc/squid
@ -60,8 +80,12 @@ chmod +x /etc/squid/kasm_squid_adapter
# FIXME - This likely should be moved somewhere else to be more explicit
# Install Cert utilities
if [ "$DISTRO" = centos ]; then
if [[ "${DISTRO}" == "centos" ]]; then
yum install -y nss-tools
elif [ "${DISTRO}" == "oracle" ]; then
dnf install -y nss-tools
elif [ "${DISTRO}" == "opensuse" ]; then
zypper install -yn mozilla-nss-tools
else
apt-get install -y libnss3-tools
fi

View File

@ -7,10 +7,16 @@ cd /tmp/working_certs
if [ -f /etc/centos-release ]; then
DISTRO=centos
elif [ -f /etc/oracle-release ]; then
DISTRO=oracle7
elif [ -f /usr/bin/zypper ]; then
DISTRO=opensuse
fi
if [ "$DISTRO" = centos ]; then
if [[ "${DISTRO}" == @(centos|oracle7) ]]; then
CERT_FILE=/etc/pki/ca-trust/source/anchors/squid.crt
elif [ "${DISTRO}" == "opensuse" ]; then
CERT_FILE=/usr/share/pki/trust/anchors/squid.crt
else
CERT_FILE=/usr/local/share/ca-certificates/squid.crt
fi
@ -20,7 +26,7 @@ openssl x509 -in myCA.pem -outform DER -out myCA.der
openssl x509 -in myCA.pem -outform DER -out myCA.der
cp myCA.pem ${CERT_FILE}
cp myCA.pem /usr/local/squid/etc/ssl_cert/squid.pem
if [ "$DISTRO" = centos ]; then
if [[ "${DISTRO}" == @(centos|oracle7) ]]; then
update-ca-trust
else
update-ca-certificates
@ -38,7 +44,7 @@ done
export MEMCACHE_PASSWORD="$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 13 )"
echo $MEMCACHE_PASSWORD | saslpasswd2 -a memcached -c -f /etc/sasl2/memcached-sasldb2 kasm
if [ "$DISTRO" = centos ]; then
if [[ "${DISTRO}" == @(centos|oracle7|opensuse) ]]; then
MEMCACHE_USER=memcached
else
MEMCACHE_USER=memcache
@ -46,8 +52,10 @@ fi
chown $MEMCACHE_USER:$MEMCACHE_USER /etc/sasl2/memcached-sasldb2
if [ "$DISTRO" = centos ]; then
if [[ "${DISTRO}" == @(centos|oracle7) ]]; then
/usr/bin/memcached -u $MEMCACHE_USER &
elif [ "${DISTRO}" == "opensuse" ]; then
/usr/sbin/memcached -u $MEMCACHE_USER &
else
/etc/init.d/memcached start
fi

View File

@ -2,11 +2,15 @@
set -e
echo "Install some common tools for further installation"
if [ "${DISTRO}" == "centos" ] ; then
if [[ "${DISTRO}" == @(centos|oracle7) ]] ; then
yum install -y vim wget net-tools bzip2 python3
wget http://mirror.ghettoforge.org/distributions/gf/el/7/gf/x86_64/wmctrl-1.07-17.gf.el7.x86_64.rpm
yum localinstall -y wmctrl*.rpm
rm wmctrl*.rpm
elif [ "${DISTRO}" == "oracle8" ]; then
dnf install -y wget net-tools bzip2 python3 tar vim
dnf clean all
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 clean --all
else
apt-get update
# Update tzdata noninteractive (otherwise our script is hung on user input later).

View File

@ -3,17 +3,13 @@
set -e
get_rid_of_policykit_error() {
rm /etc/xdg/autostart/xfce-polkit.desktop
rm -f /etc/xdg/autostart/xfce-polkit.desktop
}
disable_epel_nss_wrapper_that_breaks_firefox() {
yum-config-manager --setopt=epel.exclude=nss_wrapper --save
}
get_rid_of_xfce_battery_widget() {
yum remove -y xfce4-power-manager
}
config_xinit_disable_screensaver() {
mkdir -p /etc/X11/xinit/xinitrc.d/
cat >/etc/X11/xinit/xinitrc.d/disable_screensaver.sh <<EOL
@ -50,7 +46,7 @@ EOL
}
echo "Install Xfce4 UI components"
if [ "$DISTRO" != "centos" ]; then
if [[ "${DISTRO}" != @(centos|oracle7|oracle8|opensuse) ]]; then
apt-get update
fi
@ -62,24 +58,44 @@ then
sed -i "s@<value type=\"int\" value=\"${PLUGIN_ID}\"/>@@g" /etc/xdg/xfce4/panel/default.xml
elif [ "$DISTRO" = "ubuntu" ]; then
apt-get install -y supervisor xfce4 xfce4-terminal xterm
elif [ "$DISTRO" = "centos" ]; then
yum install -y epel-release
elif [[ "${DISTRO}" == @(centos|oracle7) ]]; then
if [ "${DISTRO}" == centos ]; then
yum install -y epel-release
else
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
fi
disable_epel_nss_wrapper_that_breaks_firefox
yum groupinstall xfce xterm -y
yum groupinstall xfce -y
yum install -y wmctrl
get_rid_of_policykit_error
yum remove -y xfce4-power-manager
elif [ "$DISTRO" = "oracle8" ]; then
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf group install xfce -y
dnf install -y wmctrl
get_rid_of_policykit_error
dnf remove -y xfce4-power-manager xfce4-screensaver
elif [ "$DISTRO" = "opensuse" ]; then
zypper install -yn -t pattern xfce
zypper install -yn xset xfce4-terminal
zypper remove -yn xfce4-power-manager
get_rid_of_policykit_error
get_rid_of_xfce_battery_widget
fi
if [ "$DISTRO" = "centos" ]; then
if [[ "${DISTRO}" == @(centos|oracle7) ]]; then
yum clean all
elif [ "${DISTRO}" == "oracle8" ]; then
dnf clean all
elif [ "${DISTRO}" == "opensuse" ]; then
zypper clean --all
else
apt-get purge -y pm-utils xscreensaver*
apt-get clean -y
fi
if [ "$DISTRO" = "centos" ]; then
if [[ "${DISTRO}" == @(centos|oracle7|oracle8) ]]; then
config_xinit_disable_screensaver
else
replace_default_xinit