From 0eba021bde01240edefde0d42150f43e19147c74 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 31 Jan 2025 18:22:01 +1300 Subject: [PATCH] KASM-6518 Remove CentOS support --- BUILDING.txt | 14 +- README.md | 18 +- builder/README.md | 3 +- builder/build.sh | 12 -- builder/bump-package-version-rpm | 2 +- .../dockerfile.centos_core.barebones.rpm.test | 20 --- builder/dockerfile.centos_core.build | 35 ---- builder/dockerfile.centos_core.rpm.build | 12 -- builder/dockerfile.centos_core.rpm.test | 64 ------- builder/scripts/common.sh | 5 +- builder/test-rpm-barebones | 4 +- centos/kasmvncserver.spec | 158 ------------------ 12 files changed, 13 insertions(+), 334 deletions(-) delete mode 100644 builder/dockerfile.centos_core.barebones.rpm.test delete mode 100644 builder/dockerfile.centos_core.build delete mode 100644 builder/dockerfile.centos_core.rpm.build delete mode 100644 builder/dockerfile.centos_core.rpm.test delete mode 100644 centos/kasmvncserver.spec diff --git a/BUILDING.txt b/BUILDING.txt index b0f3782..b792555 100644 --- a/BUILDING.txt +++ b/BUILDING.txt @@ -48,7 +48,7 @@ Build Requirements (Windows) You also need the Inno Setup Preprocessor, which is available in the Inno Setup QuickStart Pack. - Add the directory containing iscc.exe (for instance, + Add the directory containing iscc.exe (for instance, C:\Program Files\Inno Setup 5) to the system or user PATH environment variable prior to building KasmVNC. @@ -90,7 +90,7 @@ but the general outline is as follows. > cp -R {xorg_source}/* unix/xserver/ (NOTE: {xorg_source} is the directory containing the Xorg source for the machine on which you are building KasmVNC. The most recent versions of - Red Hat/CentOS/Fedora, for instance, provide an RPM called + Red Hat/Fedora, for instance, provide an RPM called "xorg-x11-server-source", which installs the Xorg source under /usr/share/xorg-x11-server-source.) @@ -113,8 +113,8 @@ but the general outline is as follows. --with-serverconfig-path=/usr/lib[64]/xorg \ --with-dri-driver-path=/usr/lib[64]/dri \ {additional configure options} - (NOTE: This is merely an example that works with Red Hat Enterprise/CentOS - 6 and recent Fedora releases. You should customize it for your particular + (NOTE: This is merely an example that works with Red Hat Enterprise + and recent Fedora releases. You should customize it for your particular system. In particular, it will be necessary to customize the font, XKB, and DRI directories.) @@ -187,7 +187,7 @@ Building TLS Support ====================================== TLS requires GnuTLS, which is supplied with most Linux distributions and -with MinGW for Windows and can be built from source on OS X and other +with MinGW for Windows and can be built from source on OS X and other Unix variants. However, GnuTLS versions > 2.12.x && < 3.3.x should be avoided because of potential incompatibilities during initial handshaking. @@ -314,7 +314,7 @@ X server source (for instance, --host=i686-pc-linux-gnu). Add -DCMAKE_OSX_SYSROOT=/Developer/SDKs/MacOSX10.5.sdk \ - -DCMAKE_OSX_DEPLOYMENT_TARGET=10.5 + -DCMAKE_OSX_DEPLOYMENT_TARGET=10.5 to the CMake command line. The OS X 10.5 SDK must be installed. @@ -406,7 +406,7 @@ Distribution-Specific Packaging =============================== -RPM Packages for RHEL / CentOS +RPM Packages for RHEL ------------------------------ The RPM spec files and patches used to create the nightly builds diff --git a/README.md b/README.md index 5efc230..ccc0f50 100644 --- a/README.md +++ b/README.md @@ -46,22 +46,6 @@ sudo dnf localinstall ./kasmvncserver_*.rpm sudo usermod -a -G kasmvnc-cert $USER ``` -### CentOS 7 - -```sh -# Please choose the package for your distro here (under Assets): -# https://github.com/kasmtech/KasmVNC/releases -wget - -# Ensure KasmVNC dependencies are available -sudo yum install epel-release - -sudo yum install ./kasmvncserver_*.rpm - -# Add your user to the kasmvnc-cert group -sudo usermod -a -G kasmvnc-cert $USER -``` - ## Getting Started The following examples provide basic usage of KasmVNC with the tools provided. For full documentation on all the utilities and the runtime environment, see our [KasmVNC Documentation](https://www.kasmweb.com/kasmvnc/docs/latest/index.html) @@ -250,7 +234,7 @@ command_line: - Keyboard input rate limit - Screen region selection - Deb packages for Debian, Ubuntu, and Kali Linux included in release. - - RPM packages for CentOS, Oracle, OpenSUSE, Fedora. RPM packages are currently not updatable and not released, though you can build and install them. See build documentation. + - RPM packages for Oracle, OpenSUSE, Fedora. RPM packages are currently not updatable and not released, though you can build and install them. See build documentation. - Web [API](https://github.com/kasmtech/KasmVNC/wiki/API) added for remotely controlling and getting information from KasmVNC - Multi-User support with permissions that can be changed via the API - Web UI uses a webpack for faster load times. diff --git a/builder/README.md b/builder/README.md index b5f5276..64b8513 100644 --- a/builder/README.md +++ b/builder/README.md @@ -20,14 +20,13 @@ builder/build-package ubuntu focal builder/build-package debian buster builder/build-package debian bullseye builder/build-package kali kali-rolling -builder/build-package centos core # CentOS 7 builder/build-package fedora thirtythree ``` # Build and test a package ``` builder/build-and-test-deb ubuntu focal -builder/build-and-test-rpm centos core +builder/build-and-test-rpm oracle 8 ``` Open browser and point to https://localhost:443/ or https://\:443/ diff --git a/builder/build.sh b/builder/build.sh index cb0541b..be9d899 100755 --- a/builder/build.sh +++ b/builder/build.sh @@ -9,13 +9,6 @@ detect_quilt() { fi } -ensure_crashpad_can_fetch_line_number_by_address() { - if [ ! -f /etc/centos-release ]; then - export LDFLAGS="$LDFLAGS -no-pie" - fi -} - - fail_on_gcc_12() { if [[ -n "$CC" && -n "$CXX" ]]; then return; @@ -89,11 +82,6 @@ autoreconf -i # The distro paths start after prefix and end with the font path, # everything after that is based on BUILDING.txt to remove unneeded # components. -ensure_crashpad_can_fetch_line_number_by_address -# Centos7 is too old for dri3 -if [ ! "${KASMVNC_BUILD_OS}" == "centos" ]; then - CONFIG_OPTIONS="--enable-dri3" -fi # remove gl check for opensuse if [ "${KASMVNC_BUILD_OS}" == "opensuse" ] || ([ "${KASMVNC_BUILD_OS}" == "oracle" ] && [ "${KASMVNC_BUILD_OS_CODENAME}" == 9 ]); then sed -i 's/LIBGL="gl >= 7.1.0"/LIBGL="gl >= 1.1"/g' configure diff --git a/builder/bump-package-version-rpm b/builder/bump-package-version-rpm index fe3fc4d..2ef427d 100755 --- a/builder/bump-package-version-rpm +++ b/builder/bump-package-version-rpm @@ -3,7 +3,7 @@ set -eo pipefail new_version="$1" -spec_dirs=(centos oracle opensuse fedora) +spec_dirs=(oracle opensuse fedora) spec_files() { for d in "${spec_dirs[@]}"; do diff --git a/builder/dockerfile.centos_core.barebones.rpm.test b/builder/dockerfile.centos_core.barebones.rpm.test deleted file mode 100644 index 84dcd08..0000000 --- a/builder/dockerfile.centos_core.barebones.rpm.test +++ /dev/null @@ -1,20 +0,0 @@ -FROM centos:centos7 - -ENV STARTUPDIR=/dockerstartup - -RUN yum install -y xterm -RUN yum install -y vim less -RUN yum install -y redhat-lsb-core -RUN yum install -y epel-release - -ARG KASMVNC_PACKAGE_DIR -COPY $KASMVNC_PACKAGE_DIR/*.rpm /tmp/ -RUN yum localinstall -y /tmp/*.rpm - -RUN mkdir -p $STARTUPDIR -COPY startup/vnc_startup_barebones.sh $STARTUPDIR - -RUN useradd -m foo -USER foo:kasmvnc-cert - -ENTRYPOINT "/$STARTUPDIR/vnc_startup_barebones.sh" diff --git a/builder/dockerfile.centos_core.build b/builder/dockerfile.centos_core.build deleted file mode 100644 index cb6d4fa..0000000 --- a/builder/dockerfile.centos_core.build +++ /dev/null @@ -1,35 +0,0 @@ -FROM centos:centos7 - -ENV KASMVNC_BUILD_OS centos -ENV KASMVNC_BUILD_OS_CODENAME core - -RUN yum install -y ca-certificates -RUN yum install -y build-dep xorg-server libxfont-dev sudo -RUN yum install -y gcc cmake git libgnutls28-dev vim wget tightvncserver -RUN yum install -y libpng-dev libtiff-dev libgif-dev libavcodec-dev openssl-devel -RUN yum install -y make -RUN yum group install -y "Development Tools" -RUN yum install -y xorg-x11-server-devel zlib-devel -RUN yum install -y libxkbfile-devel libXfont2-devel xorg-x11-font-utils \ - xorg-x11-xtrans-devel xorg-x11-xkb-utils-devel libXrandr-devel pam-devel \ - gnutls-devel libX11-devel libXtst-devel libXcursor-devel -RUN yum install -y mesa-dri-drivers -RUN yum install -y ca-certificates - -# 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 -xzf /tmp/libwebp-* -RUN cd /tmp/libwebp-1.0.2 && \ - ./configure --enable-static --disable-shared && \ - make && make install - -ENV SCRIPTS_DIR=/tmp/scripts -COPY builder/scripts $SCRIPTS_DIR -RUN $SCRIPTS_DIR/build-libjpeg-turbo - -RUN useradd -m docker && echo "docker:docker" | chpasswd - -COPY --chown=docker:docker . /src/ - -USER docker -ENTRYPOINT ["/src/builder/build.sh"] diff --git a/builder/dockerfile.centos_core.rpm.build b/builder/dockerfile.centos_core.rpm.build deleted file mode 100644 index 7a4e208..0000000 --- a/builder/dockerfile.centos_core.rpm.build +++ /dev/null @@ -1,12 +0,0 @@ -FROM centos:centos7 - -RUN yum install -y rpm* gpg* rng-tools rpmlint -RUN yum install -y tree vim less -RUN yum install -y redhat-lsb-core - -COPY centos/*.spec /tmp -RUN yum-builddep -y /tmp/*.spec - -RUN useradd -m docker && echo "docker:docker" | chpasswd - -USER docker diff --git a/builder/dockerfile.centos_core.rpm.test b/builder/dockerfile.centos_core.rpm.test deleted file mode 100644 index 4ae4377..0000000 --- a/builder/dockerfile.centos_core.rpm.test +++ /dev/null @@ -1,64 +0,0 @@ -FROM centos:centos7 - -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=centos \ - KASMVNC_BUILD_OS_CODENAME=core - -EXPOSE $VNC_PORT - -WORKDIR $HOME - -### REQUIRED STUFF ### - -RUN yum install -y openssl xterm gettext wget -RUN yum install -y centos-release-scl-rh && yum install -y nss_wrapper -RUN yum install -y xorg-x11-server xorg-x11-xauth xorg-x11-xkb-utils \ - xkeyboard-config xorg-x11-server-utils -RUN yum install -y epel-release && yum groupinstall xfce -y -RUN yum erase -y pm-utils xscreensaver* -RUN yum install -y redhat-lsb-core -RUN yum install -y vim less - -RUN echo 'source $STARTUPDIR/generate_container_user' >> $HOME/.bashrc - -RUN mkdir -p $STARTUPDIR -COPY builder/startup/ $STARTUPDIR - -### START CUSTOM STUFF #### - -COPY ./builder/scripts/ /tmp/scripts/ -COPY ./centos/kasmvncserver.spec /tmp - -ARG KASMVNC_PACKAGE_DIR -COPY $KASMVNC_PACKAGE_DIR/*.rpm /tmp/ -RUN /tmp/scripts/install_kasmvncserver_package - -### END CUSTOM STUFF ### - -RUN chown -R 1000:0 $HOME -USER 1000:kasmvnc-cert -WORKDIR $HOME - -RUN mkdir ~/.vnc && echo '/usr/bin/xfce4-session &' >> ~/.vnc/xstartup && \ - chmod +x ~/.vnc/xstartup - -ENTRYPOINT [ "/dockerstartup/vnc_startup.sh" ] diff --git a/builder/scripts/common.sh b/builder/scripts/common.sh index 4440b66..e22deef 100644 --- a/builder/scripts/common.sh +++ b/builder/scripts/common.sh @@ -1,9 +1,7 @@ #!/bin/bash detect_distro() { - if [ -f /etc/centos-release ]; then - DISTRO=centos - elif [ -f /etc/oracle-release ]; then + if [ -f /etc/oracle-release ]; then DISTRO=oracle elif [ -f /etc/fedora-release ]; then DISTRO=fedora @@ -20,7 +18,6 @@ install_packages() { local install_cmd=no-command-defined case "$DISTRO" in - centos) install_cmd="yum install -y" ;; oracle) install_cmd="dnf install -y" ;; fedora) install_cmd="dnf install -y" ;; opensuse) install_cmd="zypper install -y" ;; diff --git a/builder/test-rpm-barebones b/builder/test-rpm-barebones index 6318bda..ea4cae6 100755 --- a/builder/test-rpm-barebones +++ b/builder/test-rpm-barebones @@ -5,8 +5,8 @@ set -e cd "$(dirname "$0")" . ./process_test_options.sh . ./common.sh -os="${1:-centos}" -os_codename="${2:-core}" +os="${1:-oracle}" +os_codename="${2:-8}" docker build --build-arg KASMVNC_PACKAGE_DIR="build/${os}_${os_codename}" \ -t kasmvnctester_barebones_${os}:$os_codename \ diff --git a/centos/kasmvncserver.spec b/centos/kasmvncserver.spec deleted file mode 100644 index b860978..0000000 --- a/centos/kasmvncserver.spec +++ /dev/null @@ -1,158 +0,0 @@ -Name: kasmvncserver -Version: 1.3.3 -Release: 1%{?dist} -Summary: VNC server accessible from a web browser - -License: GPLv2+ -URL: https://github.com/kasmtech/KasmVNC - -BuildRequires: rsync -Requires: xorg-x11-xauth, xorg-x11-xkb-utils, xkeyboard-config, xorg-x11-server-utils, openssl, perl, perl-Switch, perl-YAML-Tiny, perl-Hash-Merge-Simple, perl-Scalar-List-Utils, perl-List-MoreUtils, perl-Try-Tiny, perl-DateTime-TimeZone -Conflicts: tigervnc-server, tigervnc-server-minimal - -%description -KasmVNC provides remote web-based access to a Desktop or application. -While VNC is in the name, KasmVNC differs from other VNC variants such -as TigerVNC, RealVNC, and TurboVNC. KasmVNC has broken from the RFB -specification which defines VNC, in order to support modern technologies -and increase security. KasmVNC is accessed by users from any modern -browser and does not support legacy VNC viewer applications. KasmVNC -uses a modern YAML based configuration at the server and user level, -allowing for ease of management. KasmVNC is maintained by Kasm -Technologies Corp, www.kasmweb.com. - -WARNING: this package requires EPEL. - -%prep - -%install -rm -rf $RPM_BUILD_ROOT - -TARGET_OS=$(lsb_release -is | tr '[:upper:]' '[:lower:]') -TARGET_OS_CODENAME=$(lsb_release -cs | tr '[:upper:]' '[:lower:]') -TARBALL=$RPM_SOURCE_DIR/kasmvnc.${TARGET_OS}_${TARGET_OS_CODENAME}.tar.gz -TAR_DATA=$(mktemp -d) -tar -xzf "$TARBALL" -C "$TAR_DATA" - -SRC=$TAR_DATA/usr/local -SRC_BIN=$SRC/bin -DESTDIR=$RPM_BUILD_ROOT -DST_MAN=$DESTDIR/usr/share/man/man1 - -mkdir -p $DESTDIR/usr/bin $DESTDIR/usr/share/man/man1 \ - $DESTDIR/usr/share/doc/kasmvncserver $DESTDIR/usr/lib \ - $DESTDIR/usr/share/perl5 $DESTDIR/etc/kasmvnc - -cp $SRC_BIN/Xvnc $DESTDIR/usr/bin; -cp $SRC_BIN/vncserver $DESTDIR/usr/bin; -cp -a $SRC_BIN/KasmVNC $DESTDIR/usr/share/perl5/ -cp $SRC_BIN/vncconfig $DESTDIR/usr/bin; -cp $SRC_BIN/kasmvncpasswd $DESTDIR/usr/bin; -cp $SRC_BIN/kasmxproxy $DESTDIR/usr/bin; -cp -r $SRC/lib/kasmvnc/ $DESTDIR/usr/lib/kasmvncserver -cd $DESTDIR/usr/bin && ln -s kasmvncpasswd vncpasswd; -cp -r $SRC/share/doc/kasmvnc*/* $DESTDIR/usr/share/doc/kasmvncserver/ -rsync -r --links --safe-links --exclude '.git*' --exclude po2js --exclude xgettext-html \ - --exclude www/utils/ --exclude .eslintrc --exclude configure \ - $SRC/share/kasmvnc $DESTDIR/usr/share - -sed -i -e 's!pem_certificate: .\+$!pem_certificate: /etc/pki/tls/private/kasmvnc.pem!' \ - $DESTDIR/usr/share/kasmvnc/kasmvnc_defaults.yaml -sed -i -e 's!pem_key: .\+$!pem_key: /etc/pki/tls/private/kasmvnc.pem!' \ - $DESTDIR/usr/share/kasmvnc/kasmvnc_defaults.yaml -sed -e 's/^\([^#]\)/# \1/' $DESTDIR/usr/share/kasmvnc/kasmvnc_defaults.yaml > \ - $DESTDIR/etc/kasmvnc/kasmvnc.yaml -cp $SRC/man/man1/Xvnc.1 $DESTDIR/usr/share/man/man1/; -cp $SRC/share/man/man1/vncserver.1 $DST_MAN; -cp $SRC/share/man/man1/vncconfig.1 $DST_MAN; -cp $SRC/share/man/man1/vncpasswd.1 $DST_MAN; -cp $SRC/share/man/man1/kasmxproxy.1 $DST_MAN; -cd $DST_MAN && ln -s vncpasswd.1 kasmvncpasswd.1; - - -%files -%config(noreplace) /etc/kasmvnc - -/usr/bin/* -/usr/lib/kasmvncserver -/usr/share/man/man1/* -/usr/share/perl5/KasmVNC -/usr/share/kasmvnc - -%license /usr/share/doc/kasmvncserver/LICENSE.TXT -%doc /usr/share/doc/kasmvncserver/README.md - -%changelog -* Fri Oct 25 2024 KasmTech - 1.3.3-1 -- Allow disabling IP blacklist -- Downloads API for detailed file downloads information -* Tue Sep 24 2024 KasmTech - 1.3.2-1 -- Disable seamless clipboard on Firefox by default, due to the Firefox overlaying a Paste menu over the canvas. -- Fixed CVE-2024-38449, directory traversal bug in built-in web server. -- Allow for larger header sizes, up to 16k. Provide better logging and handling for requests that contain HTTP headers that are larger than the 16k limit. -- Fixed memory leak in kasmproxy. -- Fixed mime types of downloads to ensure the browser interprets them as downloads. -* Tue Mar 12 2024 KasmTech - 1.3.1-1 -- Fix exception thrown on Firefox 124 and higher -- Fix artifacts on high resolution secondary screens -- Fixes for touch support on primary and secondary screens -- Fix for Oculus keyboard input -* Mon Feb 05 2024 KasmTech - 1.3.0-1 -- Multi-monitor support. -- Increased performance with watermark enabled. -- Added support for Fedora 39 and Alpine 319. -- Allow special characters in usernames. -- Better logging of client settings when client connects or changes settings. -- Add support for rotation of text-based watermark. -* Fri Aug 25 2023 KasmTech - 1.2.0-1 -- Add support for Unix relays for bidirectional communication between noVNC - and containerized applications. -- Text based watermark overlays with date and time support. -- New builds for Bookworm, Alpine 3.18, and Fedora 38. -- Multi-language support. -- Add support for rendering pixmaps via DRI3 GPU acceleration allowing - compositing and other 3d accelerated workloads in a KasmVNC session. -- Fix crash that can occur. -- Fixed tearing when compositing is enabled with DRI3 hardware acceleration. -- Fix stuck command key on MacOS clients. -* Wed Apr 05 2023 KasmTech - 1.1.0-1 -- Upstream release -* Tue Nov 29 2022 KasmTech - 1.0.0-1 -- WebRTC UDP transit support with support of STUN servers -- Lossless compression using multi-threaded WASM QOI decoder client side -- New yaml based configuration -- Significantly improved FPS through both client-side and server-side improvements. -- Support for the admin to define arbitrary http response headers for the built in web server -- Support for additional mouse buttons -- Refinement of vncserver checks and user prompts -- Added send_full_frame to developer API, forces full frame to be sent to all connected users that have at least read permission. -* Tue Mar 22 2022 KasmTech - 0.9.3~beta-1 -* Fri Feb 12 2021 KasmTech - 0.9.1~beta-1 -- Initial release of the rpm package. - -%post - kasmvnc_group="kasmvnc-cert" - - create_kasmvnc_group() { - if ! getent group "$kasmvnc_group" >/dev/null; then - groupadd --system "$kasmvnc_group" - fi - } - - make_self_signed_certificate() { - local cert_file=/etc/pki/tls/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 "$kasmvnc_group" "$cert_file" - chmod 640 "$cert_file" - } - - create_kasmvnc_group - make_self_signed_certificate - -%postun - rm -f /etc/pki/tls/private/kasmvnc.pem