From 55f9755dbd7d53b17273a9eb82c8c8edb09f88df Mon Sep 17 00:00:00 2001 From: matt Date: Thu, 24 Dec 2020 19:54:58 +0000 Subject: [PATCH 01/36] Added build docker images for debian and others --- builder/README.md | 35 ++++++---- builder/build.sh | 11 +-- builder/dockerfile.centos7.build | 20 ++++++ builder/dockerfile.debian10.build | 31 +++++++++ builder/dockerfile.test | 12 ---- ...6.04.build => dockerfile.ubuntu1604.build} | 0 ...file.build => dockerfile.ubuntu1804.build} | 3 + builder/dockerfile.ubuntu1804.test | 51 ++++++++++++++ builder/dockerfile.ubuntu2004.build | 31 +++++++++ builder/dockerfile.ubuntu2004.test | 51 ++++++++++++++ builder/startup/generate_container_user | 37 ++++++++++ builder/startup/vnc_startup.sh | 68 +++++++++++++++++++ builder/startup/window_manager_startup.sh | 15 ++++ 13 files changed, 336 insertions(+), 29 deletions(-) create mode 100644 builder/dockerfile.centos7.build create mode 100644 builder/dockerfile.debian10.build delete mode 100644 builder/dockerfile.test rename builder/{dockerfile.16.04.build => dockerfile.ubuntu1604.build} (100%) rename builder/{dockerfile.build => dockerfile.ubuntu1804.build} (95%) create mode 100644 builder/dockerfile.ubuntu1804.test create mode 100644 builder/dockerfile.ubuntu2004.build create mode 100644 builder/dockerfile.ubuntu2004.test create mode 100755 builder/startup/generate_container_user create mode 100755 builder/startup/vnc_startup.sh create mode 100755 builder/startup/window_manager_startup.sh diff --git a/builder/README.md b/builder/README.md index 41af2d8..4c80f0e 100644 --- a/builder/README.md +++ b/builder/README.md @@ -1,22 +1,31 @@ -REQIUREMENTS +## REQIUREMENTS Docker CE -# build the docker image +Each supported operating system has two dockerfiles, one for building and one for testing. This example is for building and testing Ubuntu 18.04 LTS + +### Build the docker image +```sh cd /src_code_root - sudo docker build -t kasmvncbuilder:18.04 -f builder/dockerfile.build . + sudo docker build -t kasmvncbuilder:18.04 -f builder/dockerfile.ubuntu1804.build . +``` -# run the builder +### Run the builder +```sh + mkdir -p builder/build sudo docker run -v /tmp:/build --rm kasmvncbuilder:18.04 + cp /tmp/build/kasmvnc.ubuntu_18.04.tar.gz builder/build/ +``` -# tar will be on /tmp of host - cp /tmp/kasmvnc*.tar.gz builder/ - -# build test desktop container with new binary installed +### Build test desktop container +```sh cd builder - sudo docker build -t kasmvnctester:18.04 -f dockerfile.test . + sudo docker build -t kasmvnctester:18.04 -f dockerfile.ubuntu1804.test . +``` -# run an instance of the new destkop - sudo docker run -d -p 80:6901 -p 5901:5901 -e VNCOPTIONS="-detectScrolling -PreferBandwidth -DynamicQualityMin=0" kasmvnctester:latest +### run an instance of the new destkop +```sh +sudo docker run -it -p 443:8443 --rm -e "VNC_USER=username" -e "VNC_PW=password123" kasmvnctester:18.04 +``` -open browser and point to http://IPAddress/vnc_lite.html -default password is "vncpassword" or use a VNC client +open browser and point to https:///vnc.html +The username and password were set in the docker run command diff --git a/builder/build.sh b/builder/build.sh index 87e8a02..63be78d 100755 --- a/builder/build.sh +++ b/builder/build.sh @@ -7,7 +7,10 @@ # Ubuntu applies a million patches, but here we use upstream to simplify matters cd /tmp -wget https://www.x.org/archive/individual/xserver/xorg-server-1.19.6.tar.bz2 +# default to the version of x in Ubuntu 18.04, otherwise caller will need to specify +XORG_VER=${XORG_VER:-"1.19.6"} +XORG_PATCH=$(echo "$XORG_VER" | grep -Po '^\d.\d+' | sed 's#\.##') +wget https://www.x.org/archive/individual/xserver/xorg-server-${XORG_VER}.tar.bz2 #git clone https://kasmweb@bitbucket.org/kasmtech/kasmvnc.git #cd kasmvnc @@ -23,10 +26,10 @@ sed -i -e '/find_package(FLTK/s@^@#@' \ cmake . make -j5 -tar -C unix/xserver -xvf /tmp/xorg-server-1.19.6.tar.bz2 --strip-components=1 +tar -C unix/xserver -xvf /tmp/xorg-server-${XORG_VER}.tar.bz2 --strip-components=1 cd unix/xserver -patch -Np1 -i ../xserver119.patch +patch -Np1 -i ../xserver${XORG_PATCH}.patch autoreconf -i # Configuring Xorg is long and has many distro-specific paths. # The distro paths start after prefix and end with the font path, @@ -64,4 +67,4 @@ mv release/maketarball3 release/maketarball make servertarball -cp kasmvnc*.tar.gz /build/ +cp kasmvnc*.tar.gz /build/kasmvnc.${KASMVNC_BUILD_OS}_${KASMVNC_BUILD_OS_VER}.tar.gz diff --git a/builder/dockerfile.centos7.build b/builder/dockerfile.centos7.build new file mode 100644 index 0000000..288db42 --- /dev/null +++ b/builder/dockerfile.centos7.build @@ -0,0 +1,20 @@ +FROM centos:centos7 + +RUN yum install -y build-dep xorg-server libxfont-dev sudo +RUN yum install -y cmake git libjpeg-dev libgnutls28-dev vim wget tightvncserver +RUN yum install -y libjpeg-dev libpng-dev libtiff-dev libgif-dev libavcodec-dev libssl-dev + +# Additions for webp +RUN cd /tmp && wget https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.0.2.tar.gz +RUN cd /tmp && tar -xzvf /tmp/libwebp-* +RUN cd /tmp/libwebp-1.0.2 && \ + ./configure --enable-static --disable-shared && \ + make && make install + +RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo + +COPY . /src +RUN chown -R docker:docker /src + +USER docker +ENTRYPOINT ["/src/builder/build.sh"] diff --git a/builder/dockerfile.debian10.build b/builder/dockerfile.debian10.build new file mode 100644 index 0000000..99cfd10 --- /dev/null +++ b/builder/dockerfile.debian10.build @@ -0,0 +1,31 @@ +FROM debian:buster + +ENV KASMVNC_BUILD_OS debian +ENV KASMVNC_BUILD_OS_VER 10 +ENV XORG_VER 1.20.10 +ENV DEBIAN_FRONTEND noninteractive + +RUN grep '^deb' /etc/apt/sources.list | sed 's#^deb#deb-src#' >> /etc/apt/sources.list + +RUN apt-get update && \ + apt-get -y install sudo + +RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata +RUN apt-get update && apt-get -y build-dep xorg-server libxfont-dev +RUN apt-get update && apt-get -y install cmake git libjpeg-dev libgnutls28-dev vim wget tightvncserver +RUN apt-get update && apt-get -y install libjpeg-dev libpng-dev libtiff-dev libgif-dev libavcodec-dev libssl-dev + +# Additions for webp +RUN cd /tmp && wget https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.0.2.tar.gz +RUN cd /tmp && tar -xzvf /tmp/libwebp-* +RUN cd /tmp/libwebp-1.0.2 && \ + ./configure --enable-static --disable-shared && \ + make && make install + +RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo + +COPY . /src +RUN chown -R docker:docker /src + +USER docker +ENTRYPOINT ["/src/builder/build.sh"] diff --git a/builder/dockerfile.test b/builder/dockerfile.test deleted file mode 100644 index 742cc0a..0000000 --- a/builder/dockerfile.test +++ /dev/null @@ -1,12 +0,0 @@ -FROM kasmweb/desktop-deluxe:develop - -ENV VNCOPTIONS "-PreferBandwidth -DynamicQualityMin=3 -DynamicQualityMax=7 -detectScrolling" - -USER root - -COPY kasmvnc-Linux-x86_64-*.tar.gz /tmp/ -RUN tar -xzvf /tmp/kasmvnc-Linux-x86_64-*.tar.gz --strip 1 -C / - -USER 1000 - -CMD ["--tail-log"] diff --git a/builder/dockerfile.16.04.build b/builder/dockerfile.ubuntu1604.build similarity index 100% rename from builder/dockerfile.16.04.build rename to builder/dockerfile.ubuntu1604.build diff --git a/builder/dockerfile.build b/builder/dockerfile.ubuntu1804.build similarity index 95% rename from builder/dockerfile.build rename to builder/dockerfile.ubuntu1804.build index 7ee1a42..6c48eed 100644 --- a/builder/dockerfile.build +++ b/builder/dockerfile.ubuntu1804.build @@ -1,5 +1,8 @@ FROM ubuntu:18.04 +ENV KASMVNC_BUILD_OS ubuntu +ENV KASMVNC_BUILD_OS_VER 18.04 + RUN sed -i 's$# deb-src$deb-src$' /etc/apt/sources.list RUN apt-get update && \ diff --git a/builder/dockerfile.ubuntu1804.test b/builder/dockerfile.ubuntu1804.test new file mode 100644 index 0000000..a734c58 --- /dev/null +++ b/builder/dockerfile.ubuntu1804.test @@ -0,0 +1,51 @@ +FROM ubuntu:18.04 + +ENV DISPLAY=:1 \ + VNC_PORT=8443 \ + VNC_RESOLUTION=1280x720 \ + MAX_FRAME_RATE=24 \ + VNCOPTIONS="-PreferBandwidth -DynamicQualityMin=4 -DynamicQualityMax=7" \ + HOME=/home/user \ + TERM=xterm \ + STARTUPDIR=/dockerstartup \ + INST_SCRIPTS=/dockerstartup/install \ + KASM_RX_HOME=/dockerstartup/kasmrx \ + DEBIAN_FRONTEND=noninteractive \ + VNC_COL_DEPTH=24 \ + VNC_RESOLUTION=1280x1024 \ + VNC_PW=vncpassword \ + VNC_USER=user \ + VNC_VIEW_ONLY_PW=vncviewonlypassword \ + LD_LIBRARY_PATH=/usr/local/lib/ \ + OMP_WAIT_POLICY=PASSIVE \ + SHELL=/bin/bash \ + SINGLE_APPLICATION=0 \ + KASMVNC_BUILD_OS=ubuntu \ + KASMVNC_BUILD_OS_VER=18.04 + +EXPOSE $VNC_PORT + +WORKDIR $HOME + +### REQUIRED STUFF ### + +RUN apt-get update && apt-get install -y supervisor xfce4 xfce4-terminal xterm libnss-wrapper gettext libjpeg-dev wget +RUN apt-get purge -y pm-utils xscreensaver* + +RUN echo 'source $STARTUPDIR/generate_container_user' >> $HOME/.bashrc + +RUN mkdir -p $STARTUPDIR +COPY startup/ $STARTUPDIR + +### START CUSTOM STUFF #### + +COPY build/kasmvnc.${KASMVNC_BUILD_OS}_${KASMVNC_BUILD_OS_VER}.tar.gz /tmp/ +RUN tar -xzvf /tmp/kasmvnc.${KASMVNC_BUILD_OS}_${KASMVNC_BUILD_OS_VER}.tar.gz --strip 1 -C / + +### END CUSTOM STUFF ### + +RUN chown -R 1000:0 $HOME +USER 1000 +WORKDIR $HOME + +ENTRYPOINT [ "/dockerstartup/vnc_startup.sh" ] diff --git a/builder/dockerfile.ubuntu2004.build b/builder/dockerfile.ubuntu2004.build new file mode 100644 index 0000000..5540232 --- /dev/null +++ b/builder/dockerfile.ubuntu2004.build @@ -0,0 +1,31 @@ +FROM ubuntu:20.04 + +ENV KASMVNC_BUILD_OS ubuntu +ENV KASMVNC_BUILD_OS_VER 20.04 +ENV XORG_VER 1.20.8 +ENV DEBIAN_FRONTEND noninteractive + +RUN sed -i 's$# deb-src$deb-src$' /etc/apt/sources.list + +RUN apt-get update && \ + apt-get -y install sudo + +RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata +RUN apt-get update && apt-get -y build-dep xorg-server libxfont-dev +RUN apt-get update && apt-get -y install cmake git libjpeg-dev libgnutls28-dev vim wget tightvncserver +RUN apt-get update && apt-get -y install libjpeg-dev libpng-dev libtiff-dev libgif-dev libavcodec-dev libssl-dev + +# Additions for webp +RUN cd /tmp && wget https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.0.2.tar.gz +RUN cd /tmp && tar -xzvf /tmp/libwebp-* +RUN cd /tmp/libwebp-1.0.2 && \ + ./configure --enable-static --disable-shared && \ + make && make install + +RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo + +COPY . /src +RUN chown -R docker:docker /src + +USER docker +ENTRYPOINT ["/src/builder/build.sh"] diff --git a/builder/dockerfile.ubuntu2004.test b/builder/dockerfile.ubuntu2004.test new file mode 100644 index 0000000..37da8e8 --- /dev/null +++ b/builder/dockerfile.ubuntu2004.test @@ -0,0 +1,51 @@ +FROM ubuntu:20.04 + +ENV DISPLAY=:1 \ + VNC_PORT=8443 \ + VNC_RESOLUTION=1280x720 \ + MAX_FRAME_RATE=24 \ + VNCOPTIONS="-PreferBandwidth -DynamicQualityMin=4 -DynamicQualityMax=7" \ + HOME=/home/user \ + TERM=xterm \ + STARTUPDIR=/dockerstartup \ + INST_SCRIPTS=/dockerstartup/install \ + KASM_RX_HOME=/dockerstartup/kasmrx \ + DEBIAN_FRONTEND=noninteractive \ + VNC_COL_DEPTH=24 \ + VNC_RESOLUTION=1280x1024 \ + VNC_PW=vncpassword \ + VNC_USER=user \ + VNC_VIEW_ONLY_PW=vncviewonlypassword \ + LD_LIBRARY_PATH=/usr/local/lib/ \ + OMP_WAIT_POLICY=PASSIVE \ + SHELL=/bin/bash \ + SINGLE_APPLICATION=0 \ + KASMVNC_BUILD_OS=ubuntu \ + KASMVNC_BUILD_OS_VER=20.04 + +EXPOSE $VNC_PORT + +WORKDIR $HOME + +### REQUIRED STUFF ### + +RUN apt-get update && apt-get install -y supervisor xfce4 xfce4-terminal xterm libnss-wrapper gettext libjpeg-dev wget +RUN apt-get purge -y pm-utils xscreensaver* + +RUN echo 'source $STARTUPDIR/generate_container_user' >> $HOME/.bashrc + +RUN mkdir -p $STARTUPDIR +COPY startup/ $STARTUPDIR + +### START CUSTOM STUFF #### + +COPY build/kasmvnc.${KASMVNC_BUILD_OS}_${KASMVNC_BUILD_OS_VER}.tar.gz /tmp/ +RUN tar -xzvf /tmp/kasmvnc.${KASMVNC_BUILD_OS}_${KASMVNC_BUILD_OS_VER}.tar.gz --strip 1 -C / + +### END CUSTOM STUFF ### + +RUN chown -R 1000:0 $HOME +USER 1000 +WORKDIR $HOME + +ENTRYPOINT [ "/dockerstartup/vnc_startup.sh" ] diff --git a/builder/startup/generate_container_user b/builder/startup/generate_container_user new file mode 100755 index 0000000..b259e7c --- /dev/null +++ b/builder/startup/generate_container_user @@ -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 diff --git a/builder/startup/vnc_startup.sh b/builder/startup/vnc_startup.sh new file mode 100755 index 0000000..42ff912 --- /dev/null +++ b/builder/startup/vnc_startup.sh @@ -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" diff --git a/builder/startup/window_manager_startup.sh b/builder/startup/window_manager_startup.sh new file mode 100755 index 0000000..d5e1774 --- /dev/null +++ b/builder/startup/window_manager_startup.sh @@ -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 From 86c6ae566cf2205765b99b8ae4a9c7ef41b074cd Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sat, 26 Dec 2020 00:33:19 +1300 Subject: [PATCH 02/36] Debian package spike. Using ../release as bin/ source. --- debian/README.source | 10 ++++++++++ debian/changelog | 5 +++++ debian/compat | 1 + debian/control | 15 ++++++++++++++ debian/copyright | 43 ++++++++++++++++++++++++++++++++++++++++ debian/kasmvnc-docs.docs | 1 + debian/menu.ex | 2 ++ debian/postinst.ex | 39 ++++++++++++++++++++++++++++++++++++ debian/postrm.ex | 37 ++++++++++++++++++++++++++++++++++ debian/preinst.ex | 35 ++++++++++++++++++++++++++++++++ debian/prerm.ex | 38 +++++++++++++++++++++++++++++++++++ debian/rules | 29 +++++++++++++++++++++++++++ debian/source/format | 1 + debian/watch.ex | 38 +++++++++++++++++++++++++++++++++++ 14 files changed, 294 insertions(+) create mode 100644 debian/README.source create mode 100644 debian/changelog create mode 100644 debian/compat create mode 100644 debian/control create mode 100644 debian/copyright create mode 100644 debian/kasmvnc-docs.docs create mode 100644 debian/menu.ex create mode 100644 debian/postinst.ex create mode 100644 debian/postrm.ex create mode 100644 debian/preinst.ex create mode 100644 debian/prerm.ex create mode 100755 debian/rules create mode 100644 debian/source/format create mode 100644 debian/watch.ex diff --git a/debian/README.source b/debian/README.source new file mode 100644 index 0000000..d61214d --- /dev/null +++ b/debian/README.source @@ -0,0 +1,10 @@ +kasmvnc for Debian +----------------- + + + + + + -- Dmitry Maksyoma Fri, 25 Dec 2020 21:29:24 +1300 + diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..9ee2d41 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,5 @@ +kasmvnc (0.9.1-beta-1) unstable; urgency=medium + + * Initial release of the Debian package. + + -- Dmitry Maksyoma Fri, 25 Dec 2020 21:29:24 +1300 diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..b4de394 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +11 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..74d8471 --- /dev/null +++ b/debian/control @@ -0,0 +1,15 @@ +Source: kasmvnc +Section: x11 +Priority: optional +Maintainer: Kasm Technologies LLC +Build-Depends: debhelper (>= 11) +Standards-Version: 4.1.3 +Homepage: https://github.com/kasmtech/KasmVNC +#Vcs-Browser: https://salsa.debian.org/debian/kasmvnc +#Vcs-Git: https://salsa.debian.org/debian/kasmvnc.git + +Package: kasmvncserver +Architecture: amd64 +Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends} +Description: virtual network computing server with web interface + Lorem ipsum diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..7391a3b --- /dev/null +++ b/debian/copyright @@ -0,0 +1,43 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: kasmvnc +Source: https://github.com/kasmtech/KasmVNC + +Files: * +Copyright: Copyright (C) 2020 Kasm Technologies LLC + Copyright (C) 1999 AT&T Laboratories Cambridge + Copyright (C) 2002-2005 RealVNC Ltd. + Copyright (C) 2000-2006 TightVNC Group + Copyright (C) 2005-2006 Martin Koegler + Copyright (C) 2005-2006 Sun Microsystems, Inc. + Copyright (C) 2006 OCCAM Financial Technology + Copyright (C) 2000-2008 Constantin Kaplinsky + Copyright (C) 2004-2017 Peter Astrand for Cendio AB + Copyright (C) 2010 Antoine Martin + Copyright (C) 2010 m-privacy GmbH + Copyright (C) 2009-2011 D. R. Commander + Copyright (C) 2009-2011 Pierre Ossman for Cendio AB + Copyright (C) 2004, 2009-2011 Red Hat, Inc. + Copyright (C) 2009-2018 TigerVNC Team + All Rights Reserved. + +License: GPL-2+ + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see + . + On Debian systems, the complete text of the GNU General + Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". + +# Please also look if there are files or directories which have a +# different copyright/license attached and list them here. +# Please avoid picking licenses with terms that are more restrictive than the +# packaged work, as it may make Debian's contributions unacceptable upstream. diff --git a/debian/kasmvnc-docs.docs b/debian/kasmvnc-docs.docs new file mode 100644 index 0000000..7fa9570 --- /dev/null +++ b/debian/kasmvnc-docs.docs @@ -0,0 +1 @@ +README.source diff --git a/debian/menu.ex b/debian/menu.ex new file mode 100644 index 0000000..aa72f35 --- /dev/null +++ b/debian/menu.ex @@ -0,0 +1,2 @@ +?package(kasmvnc):needs="X11|text|vc|wm" section="Applications/see-menu-manual"\ + title="kasmvnc" command="/usr/bin/kasmvnc" diff --git a/debian/postinst.ex b/debian/postinst.ex new file mode 100644 index 0000000..6e80819 --- /dev/null +++ b/debian/postinst.ex @@ -0,0 +1,39 @@ +#!/bin/sh +# postinst script for kasmvnc +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `configure' +# * `abort-upgrade' +# * `abort-remove' `in-favour' +# +# * `abort-remove' +# * `abort-deconfigure' `in-favour' +# `removing' +# +# for details, see https://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + configure) + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/debian/postrm.ex b/debian/postrm.ex new file mode 100644 index 0000000..9f9ec2c --- /dev/null +++ b/debian/postrm.ex @@ -0,0 +1,37 @@ +#!/bin/sh +# postrm script for kasmvnc +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `purge' +# * `upgrade' +# * `failed-upgrade' +# * `abort-install' +# * `abort-install' +# * `abort-upgrade' +# * `disappear' +# +# for details, see https://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) + ;; + + *) + echo "postrm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/debian/preinst.ex b/debian/preinst.ex new file mode 100644 index 0000000..71dc514 --- /dev/null +++ b/debian/preinst.ex @@ -0,0 +1,35 @@ +#!/bin/sh +# preinst script for kasmvnc +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `install' +# * `install' +# * `upgrade' +# * `abort-upgrade' +# for details, see https://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + install|upgrade) + ;; + + abort-upgrade) + ;; + + *) + echo "preinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/debian/prerm.ex b/debian/prerm.ex new file mode 100644 index 0000000..ebde234 --- /dev/null +++ b/debian/prerm.ex @@ -0,0 +1,38 @@ +#!/bin/sh +# prerm script for kasmvnc +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `upgrade' +# * `failed-upgrade' +# * `remove' `in-favour' +# * `deconfigure' `in-favour' +# `removing' +# +# for details, see https://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + remove|upgrade|deconfigure) + ;; + + failed-upgrade) + ;; + + *) + echo "prerm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..7421270 --- /dev/null +++ b/debian/rules @@ -0,0 +1,29 @@ +#!/usr/bin/make -f +# See debhelper(7) (uncomment to enable) +# output every command that modifies files on the build system. +export DH_VERBOSE = 1 +export DH_OPTIONS=-v + + +# see FEATURE AREAS in dpkg-buildflags(1) +#export DEB_BUILD_MAINT_OPTIONS = hardening=+all + +# see ENVIRONMENT in dpkg-buildflags(1) +# package maintainers to append CFLAGS +#export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic +# package maintainers to append LDFLAGS +#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed + +build: + cp debian/Makefile . + +%: + @echo "target: $@" + dh $@ + +# .PHONY: build + +# dh_make generated override targets +# This is example for Cmake (See https://bugs.debian.org/641051 ) +#override_dh_auto_configure: +# dh_auto_configure -- # -DCMAKE_LIBRARY_PATH=$(DEB_HOST_MULTIARCH) diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/debian/watch.ex b/debian/watch.ex new file mode 100644 index 0000000..fedb2c4 --- /dev/null +++ b/debian/watch.ex @@ -0,0 +1,38 @@ +# Example watch control file for uscan +# Rename this file to "watch" and then you can run the "uscan" command +# to check for upstream updates and more. +# See uscan(1) for format + +# Compulsory line, this is a version 4 file +version=4 + +# PGP signature mangle, so foo.tar.gz has foo.tar.gz.sig +#opts="pgpsigurlmangle=s%$%.sig%" + +# HTTP site (basic) +#http://example.com/downloads.html \ +# files/kasmvnc-([\d\.]+)\.tar\.gz debian uupdate + +# Uncomment to examine an FTP server +#ftp://ftp.example.com/pub/kasmvnc-(.*)\.tar\.gz debian uupdate + +# SourceForge hosted projects +# http://sf.net/kasmvnc/ kasmvnc-(.*)\.tar\.gz debian uupdate + +# GitHub hosted projects +#opts="filenamemangle=s%(?:.*?)?v?(\d[\d.]*)\.tar\.gz%-$1.tar.gz%" \ +# https://github.com//kasmvnc/tags \ +# (?:.*?/)?v?(\d[\d.]*)\.tar\.gz debian uupdate + +# PyPI +# https://pypi.debian.net/kasmvnc/kasmvnc-(.+)\.(?:zip|tgz|tbz|txz|(?:tar\.(?:gz|bz2|xz))) + +# Direct Git +# opts="mode=git" http://git.example.com/kasmvnc.git \ +# refs/tags/v([\d\.]+) debian uupdate + + + + +# Uncomment to find new files on GooglePages +# http://example.googlepages.com/foo.html kasmvnc-(.*)\.tar\.gz From dabf7d4d5e1046bbb576a8fd2c8c074adf200b09 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sun, 27 Dec 2020 00:10:30 +1300 Subject: [PATCH 03/36] Clean up Makefile I use to fake-build source --- debian/rules | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/debian/rules b/debian/rules index 7421270..0b50292 100755 --- a/debian/rules +++ b/debian/rules @@ -17,6 +17,10 @@ export DH_OPTIONS=-v build: cp debian/Makefile . +clean: + rm -f Makefile + dh $@ + %: @echo "target: $@" dh $@ From f1291cb5201173fde7e34b6078c91f8cd7cd3a34 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Tue, 29 Dec 2020 20:47:16 +1300 Subject: [PATCH 04/36] Draft .deb build system ready --- debian/Makefile.to_fakebuild_tar_package | 5 +++++ debian/rules | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 debian/Makefile.to_fakebuild_tar_package diff --git a/debian/Makefile.to_fakebuild_tar_package b/debian/Makefile.to_fakebuild_tar_package new file mode 100644 index 0000000..3ff8cf8 --- /dev/null +++ b/debian/Makefile.to_fakebuild_tar_package @@ -0,0 +1,5 @@ +install: + echo "installing files" + mkdir -p $(DESTDIR)/usr/bin $(DESTDIR)/usr/share + cp -r ../release/usr/local/bin $(DESTDIR)/usr + cp -r ../release/usr/local/share $(DESTDIR)/usr diff --git a/debian/rules b/debian/rules index 0b50292..dc985d2 100755 --- a/debian/rules +++ b/debian/rules @@ -14,8 +14,10 @@ export DH_OPTIONS=-v # package maintainers to append LDFLAGS #export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed +MAKEFILE_TO_FAKEBUILD_TAR_PACKAGE := debian/Makefile.to_fakebuild_tar_package + build: - cp debian/Makefile . + cp $(MAKEFILE_TO_FAKEBUILD_TAR_PACKAGE) Makefile clean: rm -f Makefile From 0b4804a3a9549024646276bd6dd8973a46ce01d1 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Tue, 29 Dec 2020 21:12:58 +1300 Subject: [PATCH 05/36] Properly name binaries in .deb --- debian/Makefile.to_fakebuild_tar_package | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/debian/Makefile.to_fakebuild_tar_package b/debian/Makefile.to_fakebuild_tar_package index 3ff8cf8..cb82e00 100644 --- a/debian/Makefile.to_fakebuild_tar_package +++ b/debian/Makefile.to_fakebuild_tar_package @@ -1,5 +1,10 @@ +SRC_BIN := ../release/usr/local/bin + install: echo "installing files" mkdir -p $(DESTDIR)/usr/bin $(DESTDIR)/usr/share - cp -r ../release/usr/local/bin $(DESTDIR)/usr + cp $(SRC_BIN)/Xvnc $(DESTDIR)/usr/bin/XkasmVnc + cp $(SRC_BIN)/vncserver $(DESTDIR)/usr/bin/kasmvncserver + cp $(SRC_BIN)/vncconfig $(DESTDIR)/usr/bin/kasmvncconfig + cp $(SRC_BIN)/kasmvncpasswd $(DESTDIR)/usr/bin/ cp -r ../release/usr/local/share $(DESTDIR)/usr From bab0412bc5520a5b85bb00476a69d14925b74fe9 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Tue, 29 Dec 2020 21:32:31 +1300 Subject: [PATCH 06/36] Add man pages and improve file locations in .deb --- debian/Makefile.to_fakebuild_tar_package | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/debian/Makefile.to_fakebuild_tar_package b/debian/Makefile.to_fakebuild_tar_package index cb82e00..91bbc54 100644 --- a/debian/Makefile.to_fakebuild_tar_package +++ b/debian/Makefile.to_fakebuild_tar_package @@ -1,10 +1,19 @@ -SRC_BIN := ../release/usr/local/bin +SRC := ../release/usr/local +SRC_BIN := $(SRC)/bin +DST_MAN := $(DESTDIR)/usr/share/man/man1 install: echo "installing files" - mkdir -p $(DESTDIR)/usr/bin $(DESTDIR)/usr/share + mkdir -p $(DESTDIR)/usr/bin $(DESTDIR)/usr/share/man/man1 \ + $(DESTDIR)/usr/share/doc/kasmvncserver cp $(SRC_BIN)/Xvnc $(DESTDIR)/usr/bin/XkasmVnc cp $(SRC_BIN)/vncserver $(DESTDIR)/usr/bin/kasmvncserver cp $(SRC_BIN)/vncconfig $(DESTDIR)/usr/bin/kasmvncconfig cp $(SRC_BIN)/kasmvncpasswd $(DESTDIR)/usr/bin/ - cp -r ../release/usr/local/share $(DESTDIR)/usr + cp $(SRC_BIN)/kasmvncpasswd $(DESTDIR)/usr/bin/ + cp -r $(SRC)/share/doc/kasmvnc*/* $(DESTDIR)/usr/share/doc/kasmvncserver/ + cp -r $(SRC)/share/kasmvnc $(DESTDIR)/usr/share + cp $(SRC)/man/man1/Xvnc.1 $(DESTDIR)/usr/share/man/man1/Xkasmvnc.1 + cp $(SRC)/share/man/man1/vncserver.1 $(DST_MAN)/kasmvncserver.1 + cp $(SRC)/share/man/man1/vncpasswd.1 $(DST_MAN)/kasmvncpasswd.1 + cp $(SRC)/share/man/man1/vncconfig.1 $(DST_MAN)/kasmvncconfig.1 From fccd9d29cdbb009d29d9cd745b430753e689a492 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Tue, 29 Dec 2020 21:52:49 +1300 Subject: [PATCH 07/36] Update debian/copyright to include libwebp license --- debian/copyright | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/debian/copyright b/debian/copyright index 7391a3b..20777c6 100644 --- a/debian/copyright +++ b/debian/copyright @@ -37,7 +37,34 @@ License: GPL-2+ On Debian systems, the complete text of the GNU General Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". -# Please also look if there are files or directories which have a -# different copyright/license attached and list them here. -# Please avoid picking licenses with terms that are more restrictive than the -# packaged work, as it may make Debian's contributions unacceptable upstream. +libwebp statically linked: +Copyright: Copyright (c) 2010, Google Inc. All rights reserved. + +License: + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of Google nor the names of its contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. From 251b8a6388af68757cbb6402c16f369c77aeeb51 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Tue, 29 Dec 2020 22:01:27 +1300 Subject: [PATCH 08/36] -beta -> ~beta for .deb --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 9ee2d41..53ad071 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -kasmvnc (0.9.1-beta-1) unstable; urgency=medium +kasmvnc (0.9.1~beta-1) unstable; urgency=medium * Initial release of the Debian package. From 54f163a44cafab9cf3168e24f10209788a3bc948 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Tue, 29 Dec 2020 23:27:32 +1300 Subject: [PATCH 09/36] Exclude .git* files from .deb --- debian/Makefile.to_fakebuild_tar_package | 2 +- debian/control | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/Makefile.to_fakebuild_tar_package b/debian/Makefile.to_fakebuild_tar_package index 91bbc54..094f35c 100644 --- a/debian/Makefile.to_fakebuild_tar_package +++ b/debian/Makefile.to_fakebuild_tar_package @@ -12,7 +12,7 @@ install: cp $(SRC_BIN)/kasmvncpasswd $(DESTDIR)/usr/bin/ cp $(SRC_BIN)/kasmvncpasswd $(DESTDIR)/usr/bin/ cp -r $(SRC)/share/doc/kasmvnc*/* $(DESTDIR)/usr/share/doc/kasmvncserver/ - cp -r $(SRC)/share/kasmvnc $(DESTDIR)/usr/share + rsync -r --exclude '.git*' $(SRC)/share/kasmvnc $(DESTDIR)/usr/share cp $(SRC)/man/man1/Xvnc.1 $(DESTDIR)/usr/share/man/man1/Xkasmvnc.1 cp $(SRC)/share/man/man1/vncserver.1 $(DST_MAN)/kasmvncserver.1 cp $(SRC)/share/man/man1/vncpasswd.1 $(DST_MAN)/kasmvncpasswd.1 diff --git a/debian/control b/debian/control index 74d8471..ad5bf46 100644 --- a/debian/control +++ b/debian/control @@ -2,7 +2,7 @@ Source: kasmvnc Section: x11 Priority: optional Maintainer: Kasm Technologies LLC -Build-Depends: debhelper (>= 11) +Build-Depends: debhelper (>= 11), rsync Standards-Version: 4.1.3 Homepage: https://github.com/kasmtech/KasmVNC #Vcs-Browser: https://salsa.debian.org/debian/kasmvnc From 1f266ad2064bd4f31cca68cea5f6bea6d7ff1736 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Tue, 29 Dec 2020 23:28:03 +1300 Subject: [PATCH 10/36] Add dependencies on python and xorg to .deb --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control b/debian/control index ad5bf46..c5153ed 100644 --- a/debian/control +++ b/debian/control @@ -10,6 +10,6 @@ Homepage: https://github.com/kasmtech/KasmVNC Package: kasmvncserver Architecture: amd64 -Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends} +Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends}, python, xserver-xorg Description: virtual network computing server with web interface Lorem ipsum From a1089dd3564ca24251e4a1e5b34753359bb90d49 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 31 Dec 2020 01:08:31 +1300 Subject: [PATCH 11/36] Deb: XkasmVnc -> Xkasmvnc --- debian/Makefile.to_fakebuild_tar_package | 2 +- debian/{postinst.ex => postinst} | 0 debian/{prerm.ex => prerm} | 0 3 files changed, 1 insertion(+), 1 deletion(-) rename debian/{postinst.ex => postinst} (100%) rename debian/{prerm.ex => prerm} (100%) diff --git a/debian/Makefile.to_fakebuild_tar_package b/debian/Makefile.to_fakebuild_tar_package index 094f35c..d095c98 100644 --- a/debian/Makefile.to_fakebuild_tar_package +++ b/debian/Makefile.to_fakebuild_tar_package @@ -6,7 +6,7 @@ install: echo "installing files" mkdir -p $(DESTDIR)/usr/bin $(DESTDIR)/usr/share/man/man1 \ $(DESTDIR)/usr/share/doc/kasmvncserver - cp $(SRC_BIN)/Xvnc $(DESTDIR)/usr/bin/XkasmVnc + cp $(SRC_BIN)/Xvnc $(DESTDIR)/usr/bin/Xkasmvnc cp $(SRC_BIN)/vncserver $(DESTDIR)/usr/bin/kasmvncserver cp $(SRC_BIN)/vncconfig $(DESTDIR)/usr/bin/kasmvncconfig cp $(SRC_BIN)/kasmvncpasswd $(DESTDIR)/usr/bin/ diff --git a/debian/postinst.ex b/debian/postinst similarity index 100% rename from debian/postinst.ex rename to debian/postinst diff --git a/debian/prerm.ex b/debian/prerm similarity index 100% rename from debian/prerm.ex rename to debian/prerm From f8c3d981bf7ff02e017b6b611f3f3e892a767d6b Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 31 Dec 2020 01:09:11 +1300 Subject: [PATCH 12/36] Deb: update dependencies, add Provides: vnc-server --- debian/control | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/control b/debian/control index c5153ed..e4580b7 100644 --- a/debian/control +++ b/debian/control @@ -10,6 +10,7 @@ Homepage: https://github.com/kasmtech/KasmVNC Package: kasmvncserver Architecture: amd64 -Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends}, python, xserver-xorg +Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends}, python, xauth +Provides: vnc-server Description: virtual network computing server with web interface Lorem ipsum From a7e7deaf99f9284741bc3f0bece4499615643dbb Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 31 Dec 2020 01:09:51 +1300 Subject: [PATCH 13/36] Deb: add as vncserver, etc alternative --- debian/postinst | 11 +++++++++++ debian/prerm | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/debian/postinst b/debian/postinst index 6e80819..258c216 100644 --- a/debian/postinst +++ b/debian/postinst @@ -20,6 +20,17 @@ set -e case "$1" in configure) + bindir=/usr/bin + mandir=/usr/share/man + commands="kasmvncserver kasmvncpasswd kasmvncconfig Xkasmvnc" + + for kasm_command in $commands; do + generic_command=`echo "$kasm_command" | sed -e 's/kasm//'`; + update-alternatives --install "$bindir/$generic_command" \ + "$generic_command" "$bindir/$kasm_command" 90 \ + --slave "$mandir/man1/$generic_command.1.gz" "$generic_command.1.gz" \ + "$mandir/man1/$kasm_command.1.gz" + done ;; abort-upgrade|abort-remove|abort-deconfigure) diff --git a/debian/prerm b/debian/prerm index ebde234..8c0802f 100644 --- a/debian/prerm +++ b/debian/prerm @@ -18,6 +18,17 @@ set -e case "$1" in + remove) + bindir=/usr/bin + mandir=/usr/share/man + commands="kasmvncserver kasmvncpasswd kasmvncconfig Xkasmvnc" + + for kasm_command in $commands; do + generic_command=`echo "$kasm_command" | sed -e 's/kasm//'`; + update-alternatives --remove "$generic_command" "$bindir/$kasm_command" + done + ;; + remove|upgrade|deconfigure) ;; From eaa5c244393cf8814b830d132f7458b0185cf117 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sun, 3 Jan 2021 23:12:21 +1300 Subject: [PATCH 14/36] Generate self-signed cert in /etc/ssl/private/kasmvnc.pem I piggyback on ssl-cert package that's got ssl-cert group and the directory /etc/ssl/private, the group can read files from (but not list files there). Thus, by adding a user to ssl-cert group, they can read both ssl-cert certificates and the KasmVNC certificate.o Note: currently, KasmVNC only supports one file that must contain both private and public keys. For this reason, I didn't use the snakeoil certificate from ssl-cert, as it's split into two files. --- debian/control | 2 +- debian/postinst | 12 ++++++++++++ debian/{postrm.ex => postrm} | 3 +++ 3 files changed, 16 insertions(+), 1 deletion(-) rename debian/{postrm.ex => postrm} (94%) diff --git a/debian/control b/debian/control index e4580b7..e58a869 100644 --- a/debian/control +++ b/debian/control @@ -10,7 +10,7 @@ Homepage: https://github.com/kasmtech/KasmVNC Package: kasmvncserver Architecture: amd64 -Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends}, python, xauth +Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends}, ssl-cert, python, xauth Provides: vnc-server Description: virtual network computing server with web interface Lorem ipsum diff --git a/debian/postinst b/debian/postinst index 258c216..0c099e2 100644 --- a/debian/postinst +++ b/debian/postinst @@ -17,6 +17,16 @@ set -e # for details, see https://www.debian.org/doc/debian-policy/ or # the debian-policy package +make_self_signed_certificate() { + local cert_file=/etc/ssl/private/kasmvnc.pem + [ -f "$cert_file" ] && return 0 + + openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout "$cert_file" \ + -out "$cert_file" -subj \ + "/C=US/ST=VA/L=None/O=None/OU=DoFu/CN=kasm/emailAddress=none@none.none" + chgrp ssl-cert "$cert_file" + chmod g+r "$cert_file" +} case "$1" in configure) @@ -31,6 +41,8 @@ case "$1" in --slave "$mandir/man1/$generic_command.1.gz" "$generic_command.1.gz" \ "$mandir/man1/$kasm_command.1.gz" done + + make_self_signed_certificate ;; abort-upgrade|abort-remove|abort-deconfigure) diff --git a/debian/postrm.ex b/debian/postrm similarity index 94% rename from debian/postrm.ex rename to debian/postrm index 9f9ec2c..7868e7a 100644 --- a/debian/postrm.ex +++ b/debian/postrm @@ -20,6 +20,9 @@ set -e case "$1" in + purge) + rm -r /etc/ssl/private/kasmvnc.pem + ;; purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) ;; From c6d3c5271cee05dcbf247c2d6c94b344cf3218d7 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sun, 3 Jan 2021 23:29:04 +1300 Subject: [PATCH 15/36] Deb: exclude Node scripts from the package --- debian/Makefile.to_fakebuild_tar_package | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/Makefile.to_fakebuild_tar_package b/debian/Makefile.to_fakebuild_tar_package index d095c98..df2ccc4 100644 --- a/debian/Makefile.to_fakebuild_tar_package +++ b/debian/Makefile.to_fakebuild_tar_package @@ -12,7 +12,9 @@ install: cp $(SRC_BIN)/kasmvncpasswd $(DESTDIR)/usr/bin/ cp $(SRC_BIN)/kasmvncpasswd $(DESTDIR)/usr/bin/ cp -r $(SRC)/share/doc/kasmvnc*/* $(DESTDIR)/usr/share/doc/kasmvncserver/ - rsync -r --exclude '.git*' $(SRC)/share/kasmvnc $(DESTDIR)/usr/share + rsync -r --exclude '.git*' --exclude po2js --exclude xgettext-html \ + --exclude genkeysymdef.js --exclude use_require.js \ + $(SRC)/share/kasmvnc $(DESTDIR)/usr/share cp $(SRC)/man/man1/Xvnc.1 $(DESTDIR)/usr/share/man/man1/Xkasmvnc.1 cp $(SRC)/share/man/man1/vncserver.1 $(DST_MAN)/kasmvncserver.1 cp $(SRC)/share/man/man1/vncpasswd.1 $(DST_MAN)/kasmvncpasswd.1 From f1b3e0f6de8998b22754aae5c04a8001921fb88d Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sun, 3 Jan 2021 23:35:23 +1300 Subject: [PATCH 16/36] Deb: remove redundant code --- debian/Makefile.to_fakebuild_tar_package | 1 - 1 file changed, 1 deletion(-) diff --git a/debian/Makefile.to_fakebuild_tar_package b/debian/Makefile.to_fakebuild_tar_package index df2ccc4..d94e774 100644 --- a/debian/Makefile.to_fakebuild_tar_package +++ b/debian/Makefile.to_fakebuild_tar_package @@ -10,7 +10,6 @@ install: cp $(SRC_BIN)/vncserver $(DESTDIR)/usr/bin/kasmvncserver cp $(SRC_BIN)/vncconfig $(DESTDIR)/usr/bin/kasmvncconfig cp $(SRC_BIN)/kasmvncpasswd $(DESTDIR)/usr/bin/ - cp $(SRC_BIN)/kasmvncpasswd $(DESTDIR)/usr/bin/ cp -r $(SRC)/share/doc/kasmvnc*/* $(DESTDIR)/usr/share/doc/kasmvncserver/ rsync -r --exclude '.git*' --exclude po2js --exclude xgettext-html \ --exclude genkeysymdef.js --exclude use_require.js \ From 5154f86b604d1ade481e555465964b38f3f24928 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 7 Jan 2021 00:32:30 +1300 Subject: [PATCH 17/36] Deb: add lots of libraries as build dependencies This way, no need to copy that over multiple dockerfiles, and is a best practice. --- debian/control | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/control b/debian/control index e58a869..6f6f82a 100644 --- a/debian/control +++ b/debian/control @@ -2,7 +2,8 @@ Source: kasmvnc Section: x11 Priority: optional Maintainer: Kasm Technologies LLC -Build-Depends: debhelper (>= 11), rsync +Build-Depends: debhelper (>= 11), rsync, libjpeg-dev, libjpeg-dev, libpng-dev, + libtiff-dev, libgif-dev, libavcodec-dev, libssl-dev, libgl1, libxfont2 Standards-Version: 4.1.3 Homepage: https://github.com/kasmtech/KasmVNC #Vcs-Browser: https://salsa.debian.org/debian/kasmvnc From 702f817845cafb70c1de804678235905381932d7 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 7 Jan 2021 00:36:52 +1300 Subject: [PATCH 18/36] Deb: add build-tarball and build-deb commands WIP --- builder/build-deb | 6 ++++++ builder/build-tarball | 10 ++++++++++ builder/dockerfile.ubuntu1804.deb.build | 8 ++++++++ debian/Makefile.to_fakebuild_tar_package | 13 +++++++++++-- 4 files changed, 35 insertions(+), 2 deletions(-) create mode 100755 builder/build-deb create mode 100755 builder/build-tarball create mode 100644 builder/dockerfile.ubuntu1804.deb.build diff --git a/builder/build-deb b/builder/build-deb new file mode 100755 index 0000000..f54d318 --- /dev/null +++ b/builder/build-deb @@ -0,0 +1,6 @@ +#!/bin/bash + +set -e + +dpkg-buildpackage -us -uc -b +lintian ../*.deb diff --git a/builder/build-tarball b/builder/build-tarball new file mode 100755 index 0000000..e4a9293 --- /dev/null +++ b/builder/build-tarball @@ -0,0 +1,10 @@ +#!/bin/bash + +set -e + +cd "$(dirname "$0")/.." + +docker pull ubuntu:18.04 +docker build -t kasmvncbuilder:18.04 -f builder/dockerfile.ubuntu1804.build . +mkdir -p builder/build +docker run -v ${PWD}/builder/build:/build --rm kasmvncbuilder:18.04 diff --git a/builder/dockerfile.ubuntu1804.deb.build b/builder/dockerfile.ubuntu1804.deb.build new file mode 100644 index 0000000..76a5ea6 --- /dev/null +++ b/builder/dockerfile.ubuntu1804.deb.build @@ -0,0 +1,8 @@ +FROM ubuntu:18.04 + +RUN apt-get update && \ + apt-get -y install vim build-essential devscripts equivs + +COPY ./debian/control /tmp + +RUN echo YYY | mk-build-deps --install /tmp/control diff --git a/debian/Makefile.to_fakebuild_tar_package b/debian/Makefile.to_fakebuild_tar_package index d94e774..741a04a 100644 --- a/debian/Makefile.to_fakebuild_tar_package +++ b/debian/Makefile.to_fakebuild_tar_package @@ -1,8 +1,11 @@ -SRC := ../release/usr/local +TARBALL := builder/build/kasmvnc.ubuntu_18.04.tar.gz +TAR_DATA := $(shell mktemp -d) +SRC := $(TAR_DATA)/usr/local SRC_BIN := $(SRC)/bin DST_MAN := $(DESTDIR)/usr/share/man/man1 -install: +install: unpack_tarball + echo "TAR_DATA: $(TAR_DATA)" echo "installing files" mkdir -p $(DESTDIR)/usr/bin $(DESTDIR)/usr/share/man/man1 \ $(DESTDIR)/usr/share/doc/kasmvncserver @@ -18,3 +21,9 @@ install: cp $(SRC)/share/man/man1/vncserver.1 $(DST_MAN)/kasmvncserver.1 cp $(SRC)/share/man/man1/vncpasswd.1 $(DST_MAN)/kasmvncpasswd.1 cp $(SRC)/share/man/man1/vncconfig.1 $(DST_MAN)/kasmvncconfig.1 + +unpack_tarball: + tar -xzf "$(TARBALL)" -C "$(TAR_DATA)" + +clean: + rm -rf $(TAR_DATA) From 59382451dc627bc6ab5a42aa25b6909402d996a0 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 7 Jan 2021 21:57:53 +1300 Subject: [PATCH 19/36] Deb: build-deb now builds a .deb for Ubuntu 18 It builds the builder image first, then proceeeds to building .deb inside it, and the result is put into the parent (../) directory. --- builder/build-deb | 9 +++++++-- builder/build-deb-inside-docker | 11 +++++++++++ builder/dockerfile.ubuntu1804.deb.build | 4 +++- 3 files changed, 21 insertions(+), 3 deletions(-) create mode 100755 builder/build-deb-inside-docker diff --git a/builder/build-deb b/builder/build-deb index f54d318..4ee7c40 100755 --- a/builder/build-deb +++ b/builder/build-deb @@ -2,5 +2,10 @@ set -e -dpkg-buildpackage -us -uc -b -lintian ../*.deb +cd "$(dirname "$0")/.." + +docker build -t debbuilder_ubuntu:18.04 -f \ + builder/dockerfile.ubuntu1804.deb.build . + +deb_output_dir=$(cd .. && echo $PWD) +docker run --rm -v "$deb_output_dir":/src debbuilder_ubuntu:18.04 /bin/bash -c '/src/*/builder/build-deb-inside-docker' diff --git a/builder/build-deb-inside-docker b/builder/build-deb-inside-docker new file mode 100755 index 0000000..7556e4f --- /dev/null +++ b/builder/build-deb-inside-docker @@ -0,0 +1,11 @@ +#!/bin/bash + +set -e + +cd "$(dirname "$0")/.." + +# Auto-install build-deps again +# echo YYY | mk-build-deps --install debian/control + +dpkg-buildpackage -us -uc -b +lintian ../*.deb diff --git a/builder/dockerfile.ubuntu1804.deb.build b/builder/dockerfile.ubuntu1804.deb.build index 76a5ea6..3125fec 100644 --- a/builder/dockerfile.ubuntu1804.deb.build +++ b/builder/dockerfile.ubuntu1804.deb.build @@ -3,6 +3,8 @@ FROM ubuntu:18.04 RUN apt-get update && \ apt-get -y install vim build-essential devscripts equivs +# Install build-deps for the package. COPY ./debian/control /tmp +RUN echo YYY | mk-build-deps --install --remove /tmp/control -RUN echo YYY | mk-build-deps --install /tmp/control +USER 1000 From be854aef6833d5028f392f062afbe944e17eb93e Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 7 Jan 2021 23:10:04 +1300 Subject: [PATCH 20/36] Add www dir detection to vnc_startup.sh --- builder/startup/vnc_startup.sh | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/builder/startup/vnc_startup.sh b/builder/startup/vnc_startup.sh index 42ff912..eaf0445 100755 --- a/builder/startup/vnc_startup.sh +++ b/builder/startup/vnc_startup.sh @@ -12,6 +12,13 @@ cleanup () { } trap cleanup SIGINT SIGTERM +detect_www_dir() { + local package_www_dir="/usr/share/kasmvnc/www" + if [[ -d "$package_www_dir" ]]; then + package_www_dir_option="-httpd $package_www_dir" + fi +} + ## resolve_vnc_connection VNC_IP=$(hostname -i) @@ -44,8 +51,11 @@ 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" + +detect_www_dir + 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 +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 $package_www_dir_option #&> $STARTUPDIR/no_vnc_startup.log PID_SUN=$! From 4558750348fb24e814902c231829801cce15f677 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 7 Jan 2021 23:27:39 +1300 Subject: [PATCH 21/36] Deb: remove a TODO comment --- builder/build-deb-inside-docker | 3 --- 1 file changed, 3 deletions(-) diff --git a/builder/build-deb-inside-docker b/builder/build-deb-inside-docker index 7556e4f..6c1636a 100755 --- a/builder/build-deb-inside-docker +++ b/builder/build-deb-inside-docker @@ -4,8 +4,5 @@ set -e cd "$(dirname "$0")/.." -# Auto-install build-deps again -# echo YYY | mk-build-deps --install debian/control - dpkg-buildpackage -us -uc -b lintian ../*.deb From 543796d6a49f6d8b31a5b6fe97923e8840e02750 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 7 Jan 2021 23:28:58 +1300 Subject: [PATCH 22/36] Deb: automated build chain draft ready --- builder/build-deb-inside-docker | 1 + builder/dockerfile.ubuntu1804.deb.test | 54 ++++++++++++++++++++++++++ builder/test-deb | 8 ++++ 3 files changed, 63 insertions(+) create mode 100644 builder/dockerfile.ubuntu1804.deb.test create mode 100755 builder/test-deb diff --git a/builder/build-deb-inside-docker b/builder/build-deb-inside-docker index 6c1636a..4dd7095 100755 --- a/builder/build-deb-inside-docker +++ b/builder/build-deb-inside-docker @@ -5,4 +5,5 @@ set -e cd "$(dirname "$0")/.." dpkg-buildpackage -us -uc -b +cp ../*.deb builder/build lintian ../*.deb diff --git a/builder/dockerfile.ubuntu1804.deb.test b/builder/dockerfile.ubuntu1804.deb.test new file mode 100644 index 0000000..9a86aae --- /dev/null +++ b/builder/dockerfile.ubuntu1804.deb.test @@ -0,0 +1,54 @@ +FROM ubuntu:18.04 + +ENV DISPLAY=:1 \ + VNC_PORT=8443 \ + VNC_RESOLUTION=1280x720 \ + MAX_FRAME_RATE=24 \ + VNCOPTIONS="-PreferBandwidth -DynamicQualityMin=4 -DynamicQualityMax=7" \ + HOME=/home/user \ + TERM=xterm \ + STARTUPDIR=/dockerstartup \ + INST_SCRIPTS=/dockerstartup/install \ + KASM_RX_HOME=/dockerstartup/kasmrx \ + DEBIAN_FRONTEND=noninteractive \ + VNC_COL_DEPTH=24 \ + VNC_RESOLUTION=1280x1024 \ + VNC_PW=vncpassword \ + VNC_USER=user \ + VNC_VIEW_ONLY_PW=vncviewonlypassword \ + LD_LIBRARY_PATH=/usr/local/lib/ \ + OMP_WAIT_POLICY=PASSIVE \ + SHELL=/bin/bash \ + SINGLE_APPLICATION=0 \ + KASMVNC_BUILD_OS=ubuntu \ + KASMVNC_BUILD_OS_VER=18.04 + +EXPOSE $VNC_PORT + +WORKDIR $HOME + +### REQUIRED STUFF ### + +RUN apt-get update && apt-get install -y supervisor xfce4 xfce4-terminal xterm libnss-wrapper gettext libjpeg-dev wget +RUN apt-get purge -y pm-utils xscreensaver* + +RUN echo 'source $STARTUPDIR/generate_container_user' >> $HOME/.bashrc + +RUN mkdir -p $STARTUPDIR +COPY startup/ $STARTUPDIR + +### START CUSTOM STUFF #### + +# COPY build/kasmvnc.${KASMVNC_BUILD_OS}_${KASMVNC_BUILD_OS_VER}.tar.gz /tmp/ +# RUN tar -xzvf /tmp/kasmvnc.${KASMVNC_BUILD_OS}_${KASMVNC_BUILD_OS_VER}.tar.gz --strip 1 -C / + +COPY build/*.deb /tmp +RUN dpkg -i /tmp/*.deb; apt -yf install + +### END CUSTOM STUFF ### + +RUN chown -R 1000:0 $HOME +USER 1000 +WORKDIR $HOME + +ENTRYPOINT [ "/dockerstartup/vnc_startup.sh" ] diff --git a/builder/test-deb b/builder/test-deb new file mode 100755 index 0000000..33ea333 --- /dev/null +++ b/builder/test-deb @@ -0,0 +1,8 @@ +#!/bin/bash + +set -e + +cd "$(dirname "$0")" + +docker build -t kasmvnctester-deb:18.04 -f dockerfile.ubuntu1804.deb.test . +docker run -it -p 443:8443 --rm -e "VNC_USER=username" -e "VNC_PW=password123" kasmvnctester-deb:18.04 From 2b801e339789560e09ecc1bba8ca88dc77a4cedb Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 8 Jan 2021 00:42:37 +1300 Subject: [PATCH 23/36] Deb: remove obsolete code --- builder/dockerfile.ubuntu1804.deb.test | 3 --- 1 file changed, 3 deletions(-) diff --git a/builder/dockerfile.ubuntu1804.deb.test b/builder/dockerfile.ubuntu1804.deb.test index 9a86aae..5177c87 100644 --- a/builder/dockerfile.ubuntu1804.deb.test +++ b/builder/dockerfile.ubuntu1804.deb.test @@ -39,9 +39,6 @@ COPY startup/ $STARTUPDIR ### START CUSTOM STUFF #### -# COPY build/kasmvnc.${KASMVNC_BUILD_OS}_${KASMVNC_BUILD_OS_VER}.tar.gz /tmp/ -# RUN tar -xzvf /tmp/kasmvnc.${KASMVNC_BUILD_OS}_${KASMVNC_BUILD_OS_VER}.tar.gz --strip 1 -C / - COPY build/*.deb /tmp RUN dpkg -i /tmp/*.deb; apt -yf install From d71734a2063a168b20ef47b56defaa18c82bd91b Mon Sep 17 00:00:00 2001 From: matt Date: Fri, 8 Jan 2021 12:48:07 +0000 Subject: [PATCH 24/36] initial commit of webpack --- builder/dockerfile.www.build | 7 + kasmweb/app/ui.js | 10 + kasmweb/load.html | 370 +++++++++++++++++++++++++++++++++++ kasmweb/package.json | 24 ++- kasmweb/webpack.config.js | 138 +++++++++++++ 5 files changed, 547 insertions(+), 2 deletions(-) create mode 100644 builder/dockerfile.www.build create mode 100644 kasmweb/load.html create mode 100644 kasmweb/webpack.config.js diff --git a/builder/dockerfile.www.build b/builder/dockerfile.www.build new file mode 100644 index 0000000..ec2c984 --- /dev/null +++ b/builder/dockerfile.www.build @@ -0,0 +1,7 @@ +FROM node:15-buster + +COPY kasmweb/ /src/ + +WORKDIR /src + +RUN npm install diff --git a/kasmweb/app/ui.js b/kasmweb/app/ui.js index 3f42a24..42e1f28 100644 --- a/kasmweb/app/ui.js +++ b/kasmweb/app/ui.js @@ -5,6 +5,16 @@ * * See README.md for usage and integration instructions. */ +window._noVNC_has_module_support = true; +window.addEventListener("load", function() { + if (window._noVNC_has_module_support) return; + var loader = document.createElement("script"); + loader.src = "vendor/browser-es-module-loader/dist/browser-es-module-loader.js"; + document.head.appendChild(loader); +}); +window.addEventListener("load", function() { + document.getElementById("noVNC_connect_button").click(); +}); import * as Log from '../core/util/logging.js'; import _, { l10n } from './localization.js'; diff --git a/kasmweb/load.html b/kasmweb/load.html new file mode 100644 index 0000000..c294eea --- /dev/null +++ b/kasmweb/load.html @@ -0,0 +1,370 @@ + + + + + + KasmVNC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
Kasm encountered an error:
+
+
+
+
+ +
+ Loading statistics... +
+ + +
+ +
+
+ +
+ +

+ + + viewport drag + + +
+ No mousebutton + Left mousebutton + Middle mousebutton + Right mousebutton + Keyboard +
+ + +
+ Extra keys +
+
+ Ctrl + Alt + Windows + Tab + Esc + Ctrl+Alt+Del +
+
+
+ + + Shutdown/Reboot +
+
+
+ Power +
+ + + +
+
+ + + Clipboard +
+
+
+ Clipboard +
+ +
+ +
+
+ + + Fullscreen + + + Settings +
+
+
    +
  • + Settings +
  • +
  • + +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • + + +
  • +
  • + + +
  • +

  • +
  • + +
  • +
  • + + +
  • +

  • +
  • +
    Advanced
    +
      +
    • + + +
    • +
    • +
      WebSocket
      +
        +
      • + +
      • +
      • + + +
      • +
      • + + +
      • +
      • + + +
      • +
      +
    • +

    • +
    • + +
    • +
    • + + +
    • +

    • +
    • + +
    • +

    • + +
    • + +
    • +
    +
  • +
+
+
+ + + Disconnect + +
+
+ +
+ +
+ + + + + +
+
+ +
+ Connect +
+
+
+ + +
+
+
    +
  • + + +
  • +
  • + +
  • +
+
+
+ + +
+
+
+ +
+
+
+ + +
+ + +
+ + + + diff --git a/kasmweb/package.json b/kasmweb/package.json index 0acf78b..266a5a0 100644 --- a/kasmweb/package.json +++ b/kasmweb/package.json @@ -21,7 +21,9 @@ "scripts": { "lint": "eslint app core po tests utils", "test": "karma start karma.conf.js", - "prepublish": "node ./utils/use_require.js --as commonjs --clean" + "prepublish": "node ./utils/use_require.js --as commonjs --clean", + "build": "webpack --config webpack.config.js", + "build-production": "cross-env NODE_ENV=production webpack --config webpack.config.js" }, "repository": { "type": "git", @@ -40,7 +42,10 @@ }, "homepage": "https://github.com/novnc/noVNC", "devDependencies": { + "@babel/core": "^7.12.10", + "@babel/preset-env": "^7.12.11", "babel-core": "^6.22.1", + "babel-loader": "^8.2.2", "babel-plugin-add-module-exports": "^0.2.1", "babel-plugin-import-redirect": "*", "babel-plugin-syntax-dynamic-import": "^6.18.0", @@ -52,24 +57,39 @@ "babelify": "^7.3.0", "browserify": "^13.1.0", "chai": "^3.5.0", + "clean-webpack-plugin": "^3.0.0", "commander": "^2.9.0", + "css-loader": "^5.0.1", + "css-minimizer-webpack-plugin": "^1.1.5", "es-module-loader": "^2.1.0", "eslint": "^4.16.0", + "file-loader": "^6.2.0", "fs-extra": "^1.0.0", + "html-loader": "^1.3.2", + "html-webpack-inline-svg-plugin": "^2.3.0", + "html-webpack-plugin": "^4.5.0", "jsdom": "*", "karma": "^1.3.0", "karma-mocha": "^1.3.0", "karma-mocha-reporter": "^2.2.0", "karma-sauce-launcher": "^1.0.0", "karma-sinon-chai": "^2.0.0", + "mini-css-extract-plugin": "^1.3.3", "mocha": "^3.1.2", "node-getopt": "*", "po2json": "*", + "postcss-loader": "^4.1.0", + "preload-webpack-plugin": "^3.0.0-beta.4", "requirejs": "^2.3.2", "rollup": "^0.41.4", "rollup-plugin-node-resolve": "^2.0.0", + "sass": "^1.30.0", + "sass-loader": "^10.1.0", "sinon": "^4.0.0", - "sinon-chai": "^2.8.0" + "sinon-chai": "^2.8.0", + "svg-sprite-html-webpack": "^2.3.0", + "webpack": "^4.29.6", + "webpack-cli": "^3.2.3" }, "dependencies": {}, "keywords": [ diff --git a/kasmweb/webpack.config.js b/kasmweb/webpack.config.js new file mode 100644 index 0000000..e4f0749 --- /dev/null +++ b/kasmweb/webpack.config.js @@ -0,0 +1,138 @@ +const path = require('path'); +const { CleanWebpackPlugin } = require('clean-webpack-plugin'); +const HtmlWebpackPlugin = require('html-webpack-plugin'); + +const HtmlWebpackInlineSVGPlugin = require('html-webpack-inline-svg-plugin'); +const MiniCssExtractPlugin = require("mini-css-extract-plugin"); +// const SvgSpriteHtmlWebpackPlugin = require('svg-sprite-html-webpack'); +const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); + +module.exports = { + mode: "production", + entry: { + main: './app/ui.js', + error_handler: './app/error-handler.js', + promise: './vendor/promise.js', + style: './app/styles/base.css' + }, + output: { + path: path.resolve(__dirname, 'dist'), + filename: '[name].bundle.js' + }, + module: { + rules: [ + { + test: /\.js$/, + exclude: /(node_modules)/, + use: { + loader: 'babel-loader', + options: { + presets: ['@babel/preset-env'] + } + } + }, + { + test: /\.(sa|sc|c)ss$/, + use: [ + { + loader: MiniCssExtractPlugin.loader + }, + { + loader: "css-loader", + }, + // { + // loader: "postcss-loader" + // }, + { + loader: "sass-loader", + options: { + implementation: require("sass") + } + } + ] + }, + { + // Now we apply rule for images + test: /\.(png|jpe?g|gif|svg)$/, + use: [ + { + // Using file-loader for these files + loader: "file-loader", + + // In options we can set different things like format + // and directory to save + options: { + outputPath: 'images' + } + } + ] + }, + { + // Apply rule for fonts files + test: /\.(woff|woff2|ttf|otf|eot)$/, + use: [ + { + // Using file-loader too + loader: "file-loader", + options: { + outputPath: 'fonts' + } + } + ] + }, + // { + // test: /\.svg$/, + // exclude: /node_modules/, + // use: SvgSpriteHtmlWebpackPlugin.getLoader(), + // } + ] + }, + optimization: { + minimize: true, + minimizer: [ + new CssMinimizerPlugin(), + ], + runtimeChunk: 'single', + splitChunks: { + chunks: 'all', + }, + }, + plugins: [ + new CleanWebpackPlugin(), + new HtmlWebpackPlugin({ + filename: '../index.html', + template: 'load.html', + minify: { + html5: true, + collapseWhitespace: true, + minifyCSS: true, + minifyJS: true, + minifyURLs: false, + removeAttributeQuotes: true, + removeComments: true, // false for Vue SSR to find app placeholder + removeEmptyAttributes: true, + removeOptionalTags: true, + removeRedundantAttributes: true, + removeScriptTypeAttributes: true, + removeStyleLinkTypeAttributese: true, + useShortDoctype: true + } + }), + // new SvgSpriteHtmlWebpackPlugin({ + // append: true, + // includeFiles: [ + // 'app/images/*.svg', + // ], + // generateSymbolId: function(svgFilePath, svgHash, svgContent) { + // return svgHash.toString(); + // }, + // }), + new HtmlWebpackInlineSVGPlugin({ + inlineAll: true, + runPreEmit: true, + }), + new MiniCssExtractPlugin({ + filename: "[name].bundle.css" + }), + ], +}; \ No newline at end of file From b9cdecc34cfd13bc156d8c7c72add4e3465f701f Mon Sep 17 00:00:00 2001 From: arsenmanukyan94 Date: Sat, 9 Jan 2021 13:38:10 +0000 Subject: [PATCH 25/36] update gitignore --- kasmweb/.gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/kasmweb/.gitignore b/kasmweb/.gitignore index c178dba..fe13e54 100644 --- a/kasmweb/.gitignore +++ b/kasmweb/.gitignore @@ -10,3 +10,5 @@ recordings *.swp *~ noVNC-*.tgz +/dist +index.html \ No newline at end of file From de4ddcb154f277b1c92eaf5fb7b19faed5da904a Mon Sep 17 00:00:00 2001 From: matt Date: Sun, 10 Jan 2021 16:24:09 +0000 Subject: [PATCH 26/36] Fix auth error and build permissions --- builder/build-deb | 6 ++++-- builder/build-tarball | 11 ++++++++--- builder/test-deb | 2 +- unix/vncserver | 2 +- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/builder/build-deb b/builder/build-deb index 4ee7c40..b63f0b5 100755 --- a/builder/build-deb +++ b/builder/build-deb @@ -4,8 +4,10 @@ set -e cd "$(dirname "$0")/.." -docker build -t debbuilder_ubuntu:18.04 -f \ +sudo docker build -t debbuilder_ubuntu:18.04 -f \ builder/dockerfile.ubuntu1804.deb.build . deb_output_dir=$(cd .. && echo $PWD) -docker run --rm -v "$deb_output_dir":/src debbuilder_ubuntu:18.04 /bin/bash -c '/src/*/builder/build-deb-inside-docker' +L_UID=$(id -u) #Ubuntu already has UID env var, but this should work on all Linix systems +L_GID=$(id -g) +sudo docker run --rm -v "$deb_output_dir":/src --user $L_UID:$L_GID debbuilder_ubuntu:18.04 /bin/bash -c '/src/*/builder/build-deb-inside-docker' diff --git a/builder/build-tarball b/builder/build-tarball index e4a9293..d0ee4e5 100755 --- a/builder/build-tarball +++ b/builder/build-tarball @@ -4,7 +4,12 @@ set -e cd "$(dirname "$0")/.." -docker pull ubuntu:18.04 -docker build -t kasmvncbuilder:18.04 -f builder/dockerfile.ubuntu1804.build . +sudo docker pull ubuntu:18.04 +sudo docker build -t kasmvncbuilder:18.04 -f builder/dockerfile.ubuntu1804.build . mkdir -p builder/build -docker run -v ${PWD}/builder/build:/build --rm kasmvncbuilder:18.04 +sudo docker run -v /tmp:/build --rm kasmvncbuilder:18.04 + +L_GID=$(id -g) +L_UID=$(id -u) +sudo chown $L_UID:$L_GID /tmp/kasmvnc.ubuntu_18.04.tar.gz +mv /tmp/kasmvnc.ubuntu_18.04.tar.gz $PWD/builder/build/ diff --git a/builder/test-deb b/builder/test-deb index 33ea333..231b9ee 100755 --- a/builder/test-deb +++ b/builder/test-deb @@ -5,4 +5,4 @@ set -e cd "$(dirname "$0")" docker build -t kasmvnctester-deb:18.04 -f dockerfile.ubuntu1804.deb.test . -docker run -it -p 443:8443 --rm -e "VNC_USER=username" -e "VNC_PW=password123" kasmvnctester-deb:18.04 +#docker run -it -p 443:8443 --rm -e "VNC_USER=username" -e "VNC_PW=password123" kasmvnctester-deb:18.04 diff --git a/unix/vncserver b/unix/vncserver index c56ea7e..c19fd3e 100644 --- a/unix/vncserver +++ b/unix/vncserver @@ -276,7 +276,7 @@ $passwordArgSpecified = 0; #} # Disable vnc auth, kasmvnc uses https basic auth -system("echo '' | ".$exedir."vncpasswd -f > $vncUserDir/passwd"); +system("echo 'WrLNwLrcrxM=' | base64 -d > $vncUserDir/passwd"); $kasmAuthEnabled = 1; From 76f8d905f0433bcbacb315782347aaa5fca7f662 Mon Sep 17 00:00:00 2001 From: matt Date: Sun, 10 Jan 2021 19:03:13 +0000 Subject: [PATCH 27/36] added dockerfile build process for www --- builder/README.md | 7 +++++++ builder/build_www.sh | 19 +++++++++++++++++++ builder/dockerfile.www.build | 9 ++++++--- 3 files changed, 32 insertions(+), 3 deletions(-) create mode 100755 builder/build_www.sh diff --git a/builder/README.md b/builder/README.md index 41af2d8..2f63367 100644 --- a/builder/README.md +++ b/builder/README.md @@ -1,6 +1,13 @@ REQIUREMENTS Docker CE +# Build the www webpack +``` +sudo docker build -t kasmweb/www -f builder/dockerfile.www.build . +sudo docker run -it --rm -v $PWD/builder/www:/build kasmweb/www:latest +``` + + # build the docker image cd /src_code_root sudo docker build -t kasmvncbuilder:18.04 -f builder/dockerfile.build . diff --git a/builder/build_www.sh b/builder/build_www.sh new file mode 100755 index 0000000..a0cd8a1 --- /dev/null +++ b/builder/build_www.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# clear previous build +rm -rf /build/* + +# build webpack +npm run build +# remove node stuff from directory +rm -rf node_modules/ +# copy all to build dir +cp -R ./* /build/ + +# remove unneccesary files +cd /build +rm *.md +rm AUTHORS +rm *.yml +rm vnc.html +rm vnc_lite.html diff --git a/builder/dockerfile.www.build b/builder/dockerfile.www.build index ec2c984..be30b4b 100644 --- a/builder/dockerfile.www.build +++ b/builder/dockerfile.www.build @@ -1,7 +1,10 @@ -FROM node:15-buster +FROM node:12-buster -COPY kasmweb/ /src/ +COPY kasmweb/ /src/www/ +COPY builder/build_www.sh /src/ -WORKDIR /src +WORKDIR /src/www RUN npm install + +ENTRYPOINT [ "/src/build_www.sh" ] From 945f9a07a3a1249215728526261115d2e6948d6c Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sat, 9 Jan 2021 18:57:08 +1300 Subject: [PATCH 28/36] Deb: exclude .eslintrc --- debian/Makefile.to_fakebuild_tar_package | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/Makefile.to_fakebuild_tar_package b/debian/Makefile.to_fakebuild_tar_package index 741a04a..966afcf 100644 --- a/debian/Makefile.to_fakebuild_tar_package +++ b/debian/Makefile.to_fakebuild_tar_package @@ -16,6 +16,7 @@ install: unpack_tarball cp -r $(SRC)/share/doc/kasmvnc*/* $(DESTDIR)/usr/share/doc/kasmvncserver/ rsync -r --exclude '.git*' --exclude po2js --exclude xgettext-html \ --exclude genkeysymdef.js --exclude use_require.js \ + --exclude .eslintrc \ $(SRC)/share/kasmvnc $(DESTDIR)/usr/share cp $(SRC)/man/man1/Xvnc.1 $(DESTDIR)/usr/share/man/man1/Xkasmvnc.1 cp $(SRC)/share/man/man1/vncserver.1 $(DST_MAN)/kasmvncserver.1 From 955183dcf06c2b070511175f4e1e8b1c98ec7faa Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 14 Jan 2021 19:04:43 +1300 Subject: [PATCH 29/36] Use/build ./builder/www when building tarball --- builder/build-tarball | 7 +++++++ release/maketarball.in | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/builder/build-tarball b/builder/build-tarball index d0ee4e5..baa3188 100755 --- a/builder/build-tarball +++ b/builder/build-tarball @@ -2,8 +2,15 @@ set -e +build_www_dir() { + sudo docker build -t kasmweb/www -f builder/dockerfile.www.build . + sudo docker run -it --rm -v $PWD/builder/www:/build kasmweb/www:latest +} + cd "$(dirname "$0")/.." +build_www_dir + sudo docker pull ubuntu:18.04 sudo docker build -t kasmvncbuilder:18.04 -f builder/dockerfile.ubuntu1804.build . mkdir -p builder/build diff --git a/release/maketarball.in b/release/maketarball.in index 145ce84..02888f7 100644 --- a/release/maketarball.in +++ b/release/maketarball.in @@ -51,7 +51,7 @@ if [ $SERVER = 1 ]; then mkdir -p $OUTDIR/lib/dri/ install -m 755 ./xorg.build/lib/dri/swrast_dri.so $OUTDIR/lib/dri/ mkdir -p $OUTDIR/share/kasmvnc - cp -r $SRCDIR/kasmweb $OUTDIR/share/kasmvnc/www + cp -r $SRCDIR/builder/www $OUTDIR/share/kasmvnc/www fi #pushd $TMPDIR/inst From 2a64e062c4908a8f9e0d41199ee6b5e5bb39d4ef Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 14 Jan 2021 19:07:04 +1300 Subject: [PATCH 30/36] Gitignore builder/www, builder/build --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index a114d8c..63463c4 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,6 @@ CMakeCache.txt Makefile Makefile.in config.h + +builder/build/ +builder/www/ From fc91e4d622bd5223ed795df6ec81ac483a4ed17e Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 14 Jan 2021 21:25:41 +1300 Subject: [PATCH 31/36] Don't use "sodu docker", just "docker" --- builder/README.md | 12 ++++++------ builder/build-deb | 4 ++-- builder/build-tarball | 12 ++++++------ 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/builder/README.md b/builder/README.md index 9af5342..01a5bec 100644 --- a/builder/README.md +++ b/builder/README.md @@ -3,32 +3,32 @@ Docker CE # Build the www webpack ``` -sudo docker build -t kasmweb/www -f builder/dockerfile.www.build . -sudo docker run -it --rm -v $PWD/builder/www:/build kasmweb/www:latest +docker build -t kasmweb/www -f builder/dockerfile.www.build . +docker run -it --rm -v $PWD/builder/www:/build kasmweb/www:latest ``` # build the docker image ``` cd /src_code_root - sudo docker build -t kasmvncbuilder:18.04 -f builder/dockerfile.ubuntu1804.build . + docker build -t kasmvncbuilder:18.04 -f builder/dockerfile.ubuntu1804.build . ``` ### Run the builder ```sh mkdir -p builder/build - sudo docker run -v /tmp:/build --rm kasmvncbuilder:18.04 + docker run -v /tmp:/build --rm kasmvncbuilder:18.04 cp /tmp/build/kasmvnc.ubuntu_18.04.tar.gz builder/build/ ``` ### Build test desktop container ```sh cd builder - sudo docker build -t kasmvnctester:18.04 -f dockerfile.ubuntu1804.test . + docker build -t kasmvnctester:18.04 -f dockerfile.ubuntu1804.test . ``` ### run an instance of the new destkop ```sh -sudo docker run -it -p 443:8443 --rm -e "VNC_USER=username" -e "VNC_PW=password123" kasmvnctester:18.04 +docker run -it -p 443:8443 --rm -e "VNC_USER=username" -e "VNC_PW=password123" kasmvnctester:18.04 ``` open browser and point to https:///vnc.html diff --git a/builder/build-deb b/builder/build-deb index b63f0b5..d068f8e 100755 --- a/builder/build-deb +++ b/builder/build-deb @@ -4,10 +4,10 @@ set -e cd "$(dirname "$0")/.." -sudo docker build -t debbuilder_ubuntu:18.04 -f \ +docker build -t debbuilder_ubuntu:18.04 -f \ builder/dockerfile.ubuntu1804.deb.build . deb_output_dir=$(cd .. && echo $PWD) L_UID=$(id -u) #Ubuntu already has UID env var, but this should work on all Linix systems L_GID=$(id -g) -sudo docker run --rm -v "$deb_output_dir":/src --user $L_UID:$L_GID debbuilder_ubuntu:18.04 /bin/bash -c '/src/*/builder/build-deb-inside-docker' +docker run --rm -v "$deb_output_dir":/src --user $L_UID:$L_GID debbuilder_ubuntu:18.04 /bin/bash -c '/src/*/builder/build-deb-inside-docker' diff --git a/builder/build-tarball b/builder/build-tarball index baa3188..2c96ace 100755 --- a/builder/build-tarball +++ b/builder/build-tarball @@ -3,20 +3,20 @@ set -e build_www_dir() { - sudo docker build -t kasmweb/www -f builder/dockerfile.www.build . - sudo docker run -it --rm -v $PWD/builder/www:/build kasmweb/www:latest + docker build -t kasmweb/www -f builder/dockerfile.www.build . + docker run -it --rm -v $PWD/builder/www:/build kasmweb/www:latest } cd "$(dirname "$0")/.." build_www_dir -sudo docker pull ubuntu:18.04 -sudo docker build -t kasmvncbuilder:18.04 -f builder/dockerfile.ubuntu1804.build . +docker pull ubuntu:18.04 +docker build -t kasmvncbuilder:18.04 -f builder/dockerfile.ubuntu1804.build . mkdir -p builder/build -sudo docker run -v /tmp:/build --rm kasmvncbuilder:18.04 +docker run -v /tmp:/build --rm kasmvncbuilder:18.04 L_GID=$(id -g) L_UID=$(id -u) -sudo chown $L_UID:$L_GID /tmp/kasmvnc.ubuntu_18.04.tar.gz +chown $L_UID:$L_GID /tmp/kasmvnc.ubuntu_18.04.tar.gz mv /tmp/kasmvnc.ubuntu_18.04.tar.gz $PWD/builder/build/ From b8c380d17f8bbe3c86d9d6cc3f5d714677d20ef2 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 14 Jan 2021 22:13:46 +1300 Subject: [PATCH 32/36] Deb: move self-signed cert to /etc/kasmvnc --- debian/dirs | 1 + debian/postinst | 14 ++++++++++++-- debian/postrm | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 debian/dirs diff --git a/debian/dirs b/debian/dirs new file mode 100644 index 0000000..ae5bbdc --- /dev/null +++ b/debian/dirs @@ -0,0 +1 @@ +etc/kasmvnc diff --git a/debian/postinst b/debian/postinst index 0c099e2..c92f80a 100644 --- a/debian/postinst +++ b/debian/postinst @@ -17,17 +17,27 @@ set -e # for details, see https://www.debian.org/doc/debian-policy/ or # the debian-policy package +kasmvnc_group="kasmvnc" + +create_kasmvnc_group() { + if ! getent group "$kasmvnc_group" >/dev/null; then + addgroup --quiet --system "$kasmvnc_group" + fi +} + make_self_signed_certificate() { - local cert_file=/etc/ssl/private/kasmvnc.pem + local cert_file=/etc/kasmvnc/server.pem [ -f "$cert_file" ] && return 0 openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout "$cert_file" \ -out "$cert_file" -subj \ "/C=US/ST=VA/L=None/O=None/OU=DoFu/CN=kasm/emailAddress=none@none.none" - chgrp ssl-cert "$cert_file" + chgrp "$kasmvnc_group" "$cert_file" chmod g+r "$cert_file" } +create_kasmvnc_group + case "$1" in configure) bindir=/usr/bin diff --git a/debian/postrm b/debian/postrm index 7868e7a..2d34fa5 100644 --- a/debian/postrm +++ b/debian/postrm @@ -21,7 +21,7 @@ set -e case "$1" in purge) - rm -r /etc/ssl/private/kasmvnc.pem + rm -r /etc/kasmvnc ;; purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) ;; From 1486f3f4c2aa4b75ac13933f6f60bfc14067d405 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 14 Jan 2021 23:15:17 +1300 Subject: [PATCH 33/36] Deb: use /etc/kasmvnc/server.pem cert in builder/test-deb --- builder/dockerfile.ubuntu1804.deb.test | 3 ++- builder/startup/vnc_startup.sh | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/builder/dockerfile.ubuntu1804.deb.test b/builder/dockerfile.ubuntu1804.deb.test index 5177c87..24ba0ff 100644 --- a/builder/dockerfile.ubuntu1804.deb.test +++ b/builder/dockerfile.ubuntu1804.deb.test @@ -31,6 +31,7 @@ WORKDIR $HOME RUN apt-get update && apt-get install -y supervisor xfce4 xfce4-terminal xterm libnss-wrapper gettext libjpeg-dev wget RUN apt-get purge -y pm-utils xscreensaver* +RUN apt-get update && apt-get install -y vim less RUN echo 'source $STARTUPDIR/generate_container_user' >> $HOME/.bashrc @@ -45,7 +46,7 @@ RUN dpkg -i /tmp/*.deb; apt -yf install ### END CUSTOM STUFF ### RUN chown -R 1000:0 $HOME -USER 1000 +USER 1000:kasmvnc WORKDIR $HOME ENTRYPOINT [ "/dockerstartup/vnc_startup.sh" ] diff --git a/builder/startup/vnc_startup.sh b/builder/startup/vnc_startup.sh index eaf0445..27e8f66 100755 --- a/builder/startup/vnc_startup.sh +++ b/builder/startup/vnc_startup.sh @@ -19,6 +19,20 @@ detect_www_dir() { fi } +detect_cert_location() { + local tarball_cert="$HOME/.vnc/self.pem" + local package_cert="/etc/kasmvnc/server.pem" + local use_cert= + + if [[ -f "$package_cert" ]]; then + use_cert="$package_cert" + else + use_cert="$tarball_cert" + fi + + cert_option="-cert $use_cert" +} + ## resolve_vnc_connection VNC_IP=$(hostname -i) @@ -53,9 +67,10 @@ vncserver -kill $DISPLAY &> $HOME/.vnc/vnc_startup.log \ detect_www_dir +detect_cert_location 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 $package_www_dir_option #&> $STARTUPDIR/no_vnc_startup.log +vncserver $DISPLAY -depth $VNC_COL_DEPTH -geometry $VNC_RESOLUTION -FrameRate=$MAX_FRAME_RATE -websocketPort $VNC_PORT $cert_option -sslOnly -interface 0.0.0.0 $VNCOPTIONS $package_www_dir_option #&> $STARTUPDIR/no_vnc_startup.log PID_SUN=$! From 5ffe76f08d436040e32c3b1bb1c844592025a22d Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 15 Jan 2021 22:48:32 +1300 Subject: [PATCH 34/36] Deb: don't install libjpeg-dev on deb test image Dependencies should be pulled by the package. --- builder/dockerfile.ubuntu1804.deb.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builder/dockerfile.ubuntu1804.deb.test b/builder/dockerfile.ubuntu1804.deb.test index 24ba0ff..86ce668 100644 --- a/builder/dockerfile.ubuntu1804.deb.test +++ b/builder/dockerfile.ubuntu1804.deb.test @@ -29,7 +29,7 @@ WORKDIR $HOME ### REQUIRED STUFF ### -RUN apt-get update && apt-get install -y supervisor xfce4 xfce4-terminal xterm libnss-wrapper gettext libjpeg-dev wget +RUN apt-get update && apt-get install -y supervisor xfce4 xfce4-terminal xterm libnss-wrapper gettext wget RUN apt-get purge -y pm-utils xscreensaver* RUN apt-get update && apt-get install -y vim less From a4369e88972c87c41e8059fb3a3e9e54abd7a127 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 15 Jan 2021 22:49:28 +1300 Subject: [PATCH 35/36] Deb: apt -> apt-get, cause apt doesn't have a stable interface --- builder/dockerfile.ubuntu1804.deb.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builder/dockerfile.ubuntu1804.deb.test b/builder/dockerfile.ubuntu1804.deb.test index 86ce668..4172490 100644 --- a/builder/dockerfile.ubuntu1804.deb.test +++ b/builder/dockerfile.ubuntu1804.deb.test @@ -41,7 +41,7 @@ COPY startup/ $STARTUPDIR ### START CUSTOM STUFF #### COPY build/*.deb /tmp -RUN dpkg -i /tmp/*.deb; apt -yf install +RUN dpkg -i /tmp/*.deb; apt-get -yf install ### END CUSTOM STUFF ### From 2813e7fe09ce670d1bd96bc5c55accd1503bcc44 Mon Sep 17 00:00:00 2001 From: matt Date: Mon, 18 Jan 2021 18:58:31 +0000 Subject: [PATCH 36/36] Fixes to webcode for Kasm CDI --- kasmweb/app/ui.js | 6 +++++- kasmweb/core/rfb.js | 4 +--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/kasmweb/app/ui.js b/kasmweb/app/ui.js index 42e1f28..952f109 100644 --- a/kasmweb/app/ui.js +++ b/kasmweb/app/ui.js @@ -13,7 +13,11 @@ window.addEventListener("load", function() { document.head.appendChild(loader); }); window.addEventListener("load", function() { - document.getElementById("noVNC_connect_button").click(); + var connect_btn_el = document.getElementById("noVNC_connect_button"); + if (typeof(connect_btn_el) != 'undefined' && connect_btn_el != null) + { + connect_btn_el.click(); + } }); import * as Log from '../core/util/logging.js'; diff --git a/kasmweb/core/rfb.js b/kasmweb/core/rfb.js index 74c13ae..407d451 100644 --- a/kasmweb/core/rfb.js +++ b/kasmweb/core/rfb.js @@ -1076,9 +1076,7 @@ export default class RFB extends EventTargetMixin { return false; } */ - if (!this._rfb_credentials.password) { - this._rfb_credentials.password = ""; - } + this._rfb_credentials.password = ""; // TODO(directxman12): make genDES not require an Array const challenge = Array.prototype.slice.call(this._sock.rQshiftBytes(16));