From 07570c4d9dc76057efbd78b05cb38733d5cb11e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Molinero=20Fern=C3=A1ndez?= Date: Wed, 31 Jul 2019 16:05:45 +0200 Subject: [PATCH] Added TurboVNC --- Dockerfile.m4 | 25 ++++++++++++++++++++++++- config/xrdp/sesman.ini | 9 +++++++++ config/xrdp/xrdp.ini | 8 ++++++++ scripts/bin/docker-foreground-cmd | 4 ++-- scripts/bin/export-env | 2 +- 5 files changed, 44 insertions(+), 4 deletions(-) diff --git a/Dockerfile.m4 b/Dockerfile.m4 index 6c09248..8d2cf76 100644 --- a/Dockerfile.m4 +++ b/Dockerfile.m4 @@ -129,6 +129,25 @@ RUN make -j"$(nproc)" && make deb RUN dpkg -i --force-architecture ./virtualgl32_*.deb ]])m4_dnl +# Build TurboVNC +ARG TURBOVNC_TREEISH=2.2.2 +ARG TURBOVNC_REMOTE=https://github.com/TurboVNC/turbovnc.git +WORKDIR /tmp/turbovnc/ +RUN git clone "${TURBOVNC_REMOTE}" ./ +RUN git checkout "${TURBOVNC_TREEISH}" +RUN git submodule update --init --recursive +WORKDIR ./build/ +RUN cmake ./ \ + -G 'Unix Makefiles' \ + -D PKGNAME=turbovnc \ + -D CMAKE_BUILD_TYPE=Release \ + -D CMAKE_INSTALL_PREFIX=/opt/TurboVNC \ + -D CMAKE_POSITION_INDEPENDENT_CODE=1 \ + -D TVNC_BUILDJAVA=0 \ + ../ +RUN make -j"$(nproc)" && make deb +RUN dpkg -i --force-architecture ./turbovnc_*.deb + # Build XRDP ARG XRDP_TREEISH=v0.9.10 ARG XRDP_REMOTE=https://github.com/neutrinolabs/xrdp.git @@ -352,6 +371,10 @@ COPY --from=build --chown=root:root /tmp/virtualgl/build32/virtualgl32_*.deb /tm RUN dpkg -i --force-architecture /tmp/virtualgl32.deb && rm -f /tmp/virtualgl32.deb ]])m4_dnl +# Install TurboVNC from package +COPY --from=build --chown=root:root /tmp/turbovnc/build/turbovnc_*.deb /tmp/turbovnc.deb +RUN dpkg -i --force-architecture /tmp/turbovnc.deb && rm -f /tmp/turbovnc.deb + # Install XRDP from package COPY --from=build --chown=root:root /tmp/xrdp/xrdp_*.deb /tmp/xrdp.deb RUN dpkg -i /tmp/xrdp.deb && rm -f /tmp/xrdp.deb @@ -374,7 +397,7 @@ ENV UNPRIVILEGED_USER_SHELL=/bin/bash ENV DISABLE_GPU=false ENV RDP_TLS_KEY_PATH=/etc/xrdp/key.pem ENV RDP_TLS_CERT_PATH=/etc/xrdp/cert.pem -ENV PATH=/opt/VirtualGL/bin:"${PATH}" +ENV PATH=/opt/VirtualGL/bin:/opt/TurboVNC/bin:"${PATH}" ENV VGL_DISPLAY=:0 ## Workaround for AMDGPU X_GLXCreatePbuffer issue: ## https://github.com/VirtualGL/virtualgl/issues/85#issuecomment-480291529 diff --git a/config/xrdp/sesman.ini b/config/xrdp/sesman.ini index 763a823..82891ba 100644 --- a/config/xrdp/sesman.ini +++ b/config/xrdp/sesman.ini @@ -33,6 +33,15 @@ param=-noreset param=-nolisten param=tcp +[Xvnc] +param=/opt/TurboVNC/bin/Xvnc +param=-bs +param=-nolisten +param=tcp +param=-localhost +param=-dpi +param=96 + [Chansrv] FuseMountName=.thinclient_drives diff --git a/config/xrdp/xrdp.ini b/config/xrdp/xrdp.ini index 712e3fc..f2b1d02 100644 --- a/config/xrdp/xrdp.ini +++ b/config/xrdp/xrdp.ini @@ -66,3 +66,11 @@ password=ask ip=127.0.0.1 port=-1 code=20 + +[Xvnc] +name=Xvnc +lib=libvnc.so +username=ask +password=ask +ip=127.0.0.1 +port=-1 diff --git a/scripts/bin/docker-foreground-cmd b/scripts/bin/docker-foreground-cmd index 6948955..3ddac3c 100755 --- a/scripts/bin/docker-foreground-cmd +++ b/scripts/bin/docker-foreground-cmd @@ -40,8 +40,8 @@ fi # Create RANDFILE if it does not exist RANDFILE=${RANDFILE-${HOME}/.rnd} -if [ ! -f "${RANDFILE}" ]; then - dd if=/dev/urandom of="${RANDFILE}" bs=256 count=1 >/dev/null 2>&1 +if [ ! -f "${RANDFILE:?}" ]; then + dd if=/dev/urandom of="${RANDFILE:?}" bs=256 count=1 >/dev/null 2>&1 fi # Generate SSH keys if they do not exist diff --git a/scripts/bin/export-env b/scripts/bin/export-env index 123083f..c33faec 100755 --- a/scripts/bin/export-env +++ b/scripts/bin/export-env @@ -3,7 +3,7 @@ BEGIN { print("\n") for (v in ENVIRON) { - if (v !~ /^(PWD|HOME|PATH|SHELL|HOSTNAME|UID|USER|GID|GROUP)$/) { + if (v !~ /^(PWD|HOME|SHELL|HOSTNAME|UID|USER|GID|GROUP)$/) { gsub(/[^0-9A-Za-z_]/, "_", v); gsub(/'/, "'\\''", ENVIRON[v]) print("export "v"='"ENVIRON[v]"'")