Compare commits
1 Commits
KASM-1810_
...
bugfix/KAS
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
43c61db1ae |
2
.gitmodules
vendored
2
.gitmodules
vendored
@@ -1,4 +1,4 @@
|
|||||||
[submodule "kasmweb"]
|
[submodule "kasmweb"]
|
||||||
path = kasmweb
|
path = kasmweb
|
||||||
url = https://github.com/kasmtech/noVNC.git
|
url = https://github.com/kasmtech/noVNC.git
|
||||||
branch = master
|
branch = bugfix/KASM-2034_mobile_audio
|
||||||
|
|||||||
15
Pipfile
15
Pipfile
@@ -1,15 +0,0 @@
|
|||||||
[[source]]
|
|
||||||
url = "https://pypi.python.org/simple"
|
|
||||||
verify_ssl = true
|
|
||||||
name = "pypi"
|
|
||||||
|
|
||||||
[packages]
|
|
||||||
mamba = "*"
|
|
||||||
expects = "*"
|
|
||||||
"path.py" = "*"
|
|
||||||
pexpect = "*"
|
|
||||||
|
|
||||||
[dev-packages]
|
|
||||||
|
|
||||||
[requires]
|
|
||||||
python_version = "3.8"
|
|
||||||
136
Pipfile.lock
generated
136
Pipfile.lock
generated
@@ -1,136 +0,0 @@
|
|||||||
{
|
|
||||||
"_meta": {
|
|
||||||
"hash": {
|
|
||||||
"sha256": "6745d5e5d90e44a18d73a0e23bc3d3e68acb950af0b87df50b45272d25b9e615"
|
|
||||||
},
|
|
||||||
"pipfile-spec": 6,
|
|
||||||
"requires": {
|
|
||||||
"python_version": "3.8"
|
|
||||||
},
|
|
||||||
"sources": [
|
|
||||||
{
|
|
||||||
"name": "pypi",
|
|
||||||
"url": "https://pypi.python.org/simple",
|
|
||||||
"verify_ssl": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"default": {
|
|
||||||
"args": {
|
|
||||||
"hashes": [
|
|
||||||
"sha256:a785b8d837625e9b61c39108532d95b85274acd679693b71ebb5156848fcf814"
|
|
||||||
],
|
|
||||||
"version": "==0.1.0"
|
|
||||||
},
|
|
||||||
"clint": {
|
|
||||||
"hashes": [
|
|
||||||
"sha256:05224c32b1075563d0b16d0015faaf9da43aa214e4a2140e51f08789e7a4c5aa"
|
|
||||||
],
|
|
||||||
"version": "==0.5.1"
|
|
||||||
},
|
|
||||||
"coverage": {
|
|
||||||
"hashes": [
|
|
||||||
"sha256:004d1880bed2d97151facef49f08e255a20ceb6f9432df75f4eef018fdd5a78c",
|
|
||||||
"sha256:01d84219b5cdbfc8122223b39a954820929497a1cb1422824bb86b07b74594b6",
|
|
||||||
"sha256:040af6c32813fa3eae5305d53f18875bedd079960822ef8ec067a66dd8afcd45",
|
|
||||||
"sha256:06191eb60f8d8a5bc046f3799f8a07a2d7aefb9504b0209aff0b47298333302a",
|
|
||||||
"sha256:13034c4409db851670bc9acd836243aeee299949bd5673e11844befcb0149f03",
|
|
||||||
"sha256:13c4ee887eca0f4c5a247b75398d4114c37882658300e153113dafb1d76de529",
|
|
||||||
"sha256:184a47bbe0aa6400ed2d41d8e9ed868b8205046518c52464fde713ea06e3a74a",
|
|
||||||
"sha256:18ba8bbede96a2c3dde7b868de9dcbd55670690af0988713f0603f037848418a",
|
|
||||||
"sha256:1aa846f56c3d49205c952d8318e76ccc2ae23303351d9270ab220004c580cfe2",
|
|
||||||
"sha256:217658ec7187497e3f3ebd901afdca1af062b42cfe3e0dafea4cced3983739f6",
|
|
||||||
"sha256:24d4a7de75446be83244eabbff746d66b9240ae020ced65d060815fac3423759",
|
|
||||||
"sha256:2910f4d36a6a9b4214bb7038d537f015346f413a975d57ca6b43bf23d6563b53",
|
|
||||||
"sha256:2949cad1c5208b8298d5686d5a85b66aae46d73eec2c3e08c817dd3513e5848a",
|
|
||||||
"sha256:2a3859cb82dcbda1cfd3e6f71c27081d18aa251d20a17d87d26d4cd216fb0af4",
|
|
||||||
"sha256:2cafbbb3af0733db200c9b5f798d18953b1a304d3f86a938367de1567f4b5bff",
|
|
||||||
"sha256:2e0d881ad471768bf6e6c2bf905d183543f10098e3b3640fc029509530091502",
|
|
||||||
"sha256:30c77c1dc9f253283e34c27935fded5015f7d1abe83bc7821680ac444eaf7793",
|
|
||||||
"sha256:3487286bc29a5aa4b93a072e9592f22254291ce96a9fbc5251f566b6b7343cdb",
|
|
||||||
"sha256:372da284cfd642d8e08ef606917846fa2ee350f64994bebfbd3afb0040436905",
|
|
||||||
"sha256:41179b8a845742d1eb60449bdb2992196e211341818565abded11cfa90efb821",
|
|
||||||
"sha256:44d654437b8ddd9eee7d1eaee28b7219bec228520ff809af170488fd2fed3e2b",
|
|
||||||
"sha256:4a7697d8cb0f27399b0e393c0b90f0f1e40c82023ea4d45d22bce7032a5d7b81",
|
|
||||||
"sha256:51cb9476a3987c8967ebab3f0fe144819781fca264f57f89760037a2ea191cb0",
|
|
||||||
"sha256:52596d3d0e8bdf3af43db3e9ba8dcdaac724ba7b5ca3f6358529d56f7a166f8b",
|
|
||||||
"sha256:53194af30d5bad77fcba80e23a1441c71abfb3e01192034f8246e0d8f99528f3",
|
|
||||||
"sha256:5fec2d43a2cc6965edc0bb9e83e1e4b557f76f843a77a2496cbe719583ce8184",
|
|
||||||
"sha256:6c90e11318f0d3c436a42409f2749ee1a115cd8b067d7f14c148f1ce5574d701",
|
|
||||||
"sha256:74d881fc777ebb11c63736622b60cb9e4aee5cace591ce274fb69e582a12a61a",
|
|
||||||
"sha256:7501140f755b725495941b43347ba8a2777407fc7f250d4f5a7d2a1050ba8e82",
|
|
||||||
"sha256:796c9c3c79747146ebd278dbe1e5c5c05dd6b10cc3bcb8389dfdf844f3ead638",
|
|
||||||
"sha256:869a64f53488f40fa5b5b9dcb9e9b2962a66a87dab37790f3fcfb5144b996ef5",
|
|
||||||
"sha256:8963a499849a1fc54b35b1c9f162f4108017b2e6db2c46c1bed93a72262ed083",
|
|
||||||
"sha256:8d0a0725ad7c1a0bcd8d1b437e191107d457e2ec1084b9f190630a4fb1af78e6",
|
|
||||||
"sha256:900fbf7759501bc7807fd6638c947d7a831fc9fdf742dc10f02956ff7220fa90",
|
|
||||||
"sha256:92b017ce34b68a7d67bd6d117e6d443a9bf63a2ecf8567bb3d8c6c7bc5014465",
|
|
||||||
"sha256:970284a88b99673ccb2e4e334cfb38a10aab7cd44f7457564d11898a74b62d0a",
|
|
||||||
"sha256:972c85d205b51e30e59525694670de6a8a89691186012535f9d7dbaa230e42c3",
|
|
||||||
"sha256:9a1ef3b66e38ef8618ce5fdc7bea3d9f45f3624e2a66295eea5e57966c85909e",
|
|
||||||
"sha256:af0e781009aaf59e25c5a678122391cb0f345ac0ec272c7961dc5455e1c40066",
|
|
||||||
"sha256:b6d534e4b2ab35c9f93f46229363e17f63c53ad01330df9f2d6bd1187e5eaacf",
|
|
||||||
"sha256:b7895207b4c843c76a25ab8c1e866261bcfe27bfaa20c192de5190121770672b",
|
|
||||||
"sha256:c0891a6a97b09c1f3e073a890514d5012eb256845c451bd48f7968ef939bf4ae",
|
|
||||||
"sha256:c2723d347ab06e7ddad1a58b2a821218239249a9e4365eaff6649d31180c1669",
|
|
||||||
"sha256:d1f8bf7b90ba55699b3a5e44930e93ff0189aa27186e96071fac7dd0d06a1873",
|
|
||||||
"sha256:d1f9ce122f83b2305592c11d64f181b87153fc2c2bbd3bb4a3dde8303cfb1a6b",
|
|
||||||
"sha256:d314ed732c25d29775e84a960c3c60808b682c08d86602ec2c3008e1202e3bb6",
|
|
||||||
"sha256:d636598c8305e1f90b439dbf4f66437de4a5e3c31fdf47ad29542478c8508bbb",
|
|
||||||
"sha256:deee1077aae10d8fa88cb02c845cfba9b62c55e1183f52f6ae6a2df6a2187160",
|
|
||||||
"sha256:ebe78fe9a0e874362175b02371bdfbee64d8edc42a044253ddf4ee7d3c15212c",
|
|
||||||
"sha256:f030f8873312a16414c0d8e1a1ddff2d3235655a2174e3648b4fa66b3f2f1079",
|
|
||||||
"sha256:f0b278ce10936db1a37e6954e15a3730bea96a0997c26d7fee88e6c396c2086d",
|
|
||||||
"sha256:f11642dddbb0253cc8853254301b51390ba0081750a8ac03f20ea8103f0c56b6"
|
|
||||||
],
|
|
||||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'",
|
|
||||||
"version": "==5.5"
|
|
||||||
},
|
|
||||||
"expects": {
|
|
||||||
"hashes": [
|
|
||||||
"sha256:419902ccafe81b7e9559eeb6b7a07ef9d5c5604eddb93000f0642b3b2d594f4c"
|
|
||||||
],
|
|
||||||
"index": "pypi",
|
|
||||||
"version": "==0.9.0"
|
|
||||||
},
|
|
||||||
"mamba": {
|
|
||||||
"hashes": [
|
|
||||||
"sha256:75cfc6dfd287dcccaf86dd753cf48e0a7337487c7c3fafda05a6a67ded6da496"
|
|
||||||
],
|
|
||||||
"index": "pypi",
|
|
||||||
"version": "==0.11.2"
|
|
||||||
},
|
|
||||||
"path": {
|
|
||||||
"hashes": [
|
|
||||||
"sha256:2de925e8d421f93bcea80d511b81accfb6a7e6b249afa4a5559557b0cf817097",
|
|
||||||
"sha256:340054c5bb459fc9fd40e7eb6768c5989f3e599d18224238465b5333bc8faa7d"
|
|
||||||
],
|
|
||||||
"markers": "python_version >= '3.6'",
|
|
||||||
"version": "==16.2.0"
|
|
||||||
},
|
|
||||||
"path.py": {
|
|
||||||
"hashes": [
|
|
||||||
"sha256:8d885e8b2497aed005703d94e0fd97943401f035e42a136810308bff034529a8",
|
|
||||||
"sha256:a43e82eb2c344c3fd0b9d6352f6b856f40b8b7d3d65cc05978b42c3715668496"
|
|
||||||
],
|
|
||||||
"index": "pypi",
|
|
||||||
"version": "==12.5.0"
|
|
||||||
},
|
|
||||||
"pexpect": {
|
|
||||||
"hashes": [
|
|
||||||
"sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937",
|
|
||||||
"sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"
|
|
||||||
],
|
|
||||||
"index": "pypi",
|
|
||||||
"version": "==4.8.0"
|
|
||||||
},
|
|
||||||
"ptyprocess": {
|
|
||||||
"hashes": [
|
|
||||||
"sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35",
|
|
||||||
"sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"
|
|
||||||
],
|
|
||||||
"version": "==0.7.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"develop": {}
|
|
||||||
}
|
|
||||||
34
README.md
34
README.md
@@ -44,28 +44,28 @@ Future Goals:
|
|||||||
```sh
|
```sh
|
||||||
wget https://github.com/kasmtech/KasmVNC/releases/download/v0.9.2-beta/kasmvncserver_ubuntu_bionic_0.9.2_amd64.deb
|
wget https://github.com/kasmtech/KasmVNC/releases/download/v0.9.2-beta/kasmvncserver_ubuntu_bionic_0.9.2_amd64.deb
|
||||||
|
|
||||||
sudo apt-get install ./kasmvncserver_0.9.1~beta-1_amd64.deb
|
sudo dpkg -i kasmvncserver_*.deb
|
||||||
|
sudo apt-get -f install
|
||||||
|
|
||||||
|
# We provide an example script to run KasmVNC at #
|
||||||
|
# /usr/share/doc/kasmvncserver/examples/kasmvncserver-easy-start. It runs a VNC
|
||||||
|
# server on display :10 and on interface 0.0.0.0. If you're happy with those
|
||||||
|
# defaults you can just use it as is:
|
||||||
|
sudo ln -s /usr/share/doc/kasmvncserver/examples/kasmvncserver-easy-start /usr/bin/
|
||||||
|
|
||||||
# Add your user to the ssl-cert group
|
# Add your user to the ssl-cert group
|
||||||
sudo addgroup $USER ssl-cert
|
sudo addgroup $USER ssl-cert
|
||||||
# You will need to re-connect in order to pick up the group change
|
# You will need to re-connect in order to pick up the group change
|
||||||
|
|
||||||
# Run KasmVNC on display :10 and on interface 0.0.0.0:
|
# Create ~/.vnc directory and corresponding files.
|
||||||
KASMVNC_OPTIONS=':10 -depth 24 -geometry 1280x1050
|
kasmvncserver-easy-start -d && kasmvncserver-easy-start -kill
|
||||||
-cert /etc/ssl/certs/ssl-cert-snakeoil.pem
|
|
||||||
-key /etc/ssl/private/ssl-cert-snakeoil.key -sslOnly -FrameRate=24
|
|
||||||
-interface 0.0.0.0 -httpd /usr/share/kasmvnc/www'
|
|
||||||
vncserver $KASMVNC_OPTIONS
|
|
||||||
|
|
||||||
# On the first run, vncserver will ask you to create a KasmVNC user and choose a desktop
|
# Modify vncstartup to launch your environment of choice, in this example LXDE
|
||||||
# environment you want to run. It can detect Cinnamon, Mate, LXDE, KDE, Gnome,
|
# This may be optional depending on your system configuration
|
||||||
# XFCE. You can also choose to manually edit xstartup.
|
echo '/usr/bin/lxsession -s LXDE &' >> ~/.vnc/xstartup
|
||||||
# After you chose a desktop environment or to manually edit xstartup,
|
|
||||||
# vncserver won't ask you again, unless you run it as:
|
|
||||||
vncserver $KASMVNC_OPTIONS -select-de
|
|
||||||
|
|
||||||
# You can select a specific Desktop Environment like this:
|
# Start KasmVNC with debug logging:
|
||||||
vncserver $KASMVNC_OPTIONS -select-de mate
|
kasmvncserver-easy-start -d
|
||||||
|
|
||||||
# Tail the logs
|
# Tail the logs
|
||||||
tail -f ~/.vnc/`hostname`:10.log
|
tail -f ~/.vnc/`hostname`:10.log
|
||||||
@@ -73,10 +73,10 @@ tail -f ~/.vnc/`hostname`:10.log
|
|||||||
|
|
||||||
Now navigate to your system at https://[ip-address]:8443/
|
Now navigate to your system at https://[ip-address]:8443/
|
||||||
|
|
||||||
To stop the KasmVNC you started earlier on display 10:
|
To stop a running KasmVNC:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
vncserver -kill :10
|
kasmvncserver-easy-start -kill
|
||||||
```
|
```
|
||||||
|
|
||||||
The options for vncserver:
|
The options for vncserver:
|
||||||
|
|||||||
@@ -79,25 +79,6 @@ packages installed with XFCE.
|
|||||||
```
|
```
|
||||||
builder/test-deb-barebones ubuntu focal
|
builder/test-deb-barebones ubuntu focal
|
||||||
```
|
```
|
||||||
|
|
||||||
# Preparing a release
|
|
||||||
|
|
||||||
Deb and rpm packages need their versions bumped to the new release version. It
|
|
||||||
can be done with:
|
|
||||||
|
|
||||||
```
|
|
||||||
builder/bump-package-version 0.9.4-beta
|
|
||||||
```
|
|
||||||
|
|
||||||
This will update corresponding package files, use `git diff` to see changes.
|
|
||||||
|
|
||||||
If you've ran the command and curious about Debian version specifics, here's an
|
|
||||||
explanation:
|
|
||||||
Deb version will be `0.9.4~beta-1`. `~` (and not `-`) is required by packaging
|
|
||||||
guidelines, and `-1` is Debian package revision for `0.9.4` upstream release. If
|
|
||||||
a Debian-specific patch was later added on top of `0.9.4`, it'd be `-2` for the
|
|
||||||
next Debian version. Rpm has a corresponding revision in its .spec file.
|
|
||||||
|
|
||||||
# CI development
|
# CI development
|
||||||
|
|
||||||
S3 upload code is extracted to various files in `.ci`. It's possible to iterate
|
S3 upload code is extracted to various files in `.ci`. It's possible to iterate
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ cd /tmp
|
|||||||
# default to the version of x in Ubuntu 18.04, otherwise caller will need to specify
|
# default to the version of x in Ubuntu 18.04, otherwise caller will need to specify
|
||||||
XORG_VER=${XORG_VER:-"1.19.6"}
|
XORG_VER=${XORG_VER:-"1.19.6"}
|
||||||
XORG_PATCH=$(echo "$XORG_VER" | grep -Po '^\d.\d+' | sed 's#\.##')
|
XORG_PATCH=$(echo "$XORG_VER" | grep -Po '^\d.\d+' | sed 's#\.##')
|
||||||
wget --no-check-certificate https://www.x.org/archive/individual/xserver/xorg-server-${XORG_VER}.tar.bz2
|
wget https://www.x.org/archive/individual/xserver/xorg-server-${XORG_VER}.tar.bz2
|
||||||
|
|
||||||
#git clone https://kasmweb@bitbucket.org/kasmtech/kasmvnc.git
|
#git clone https://kasmweb@bitbucket.org/kasmtech/kasmvnc.git
|
||||||
#cd kasmvnc
|
#cd kasmvnc
|
||||||
|
|||||||
@@ -1,41 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -eo pipefail
|
|
||||||
|
|
||||||
update_version_to_meet_packaging_standards() {
|
|
||||||
new_version=$(echo "$new_version" |
|
|
||||||
sed -e 's/\([0-9]\)-\([a-zA-Z]\)/\1~\2/')
|
|
||||||
}
|
|
||||||
|
|
||||||
add_debian_revision_to_new_version() {
|
|
||||||
echo "$new_version-1"
|
|
||||||
}
|
|
||||||
|
|
||||||
bump_rpm() {
|
|
||||||
sed -i "s/^Version:.\+/Version: $new_version/" centos/kasmvncserver.spec
|
|
||||||
}
|
|
||||||
|
|
||||||
bump_deb() {
|
|
||||||
local image="debbump_package_version:dev"
|
|
||||||
local L_UID=$(id -u)
|
|
||||||
local L_GID=$(id -g)
|
|
||||||
local debian_version=$(add_debian_revision_to_new_version)
|
|
||||||
|
|
||||||
docker build -t "$image" -f builder/dockerfile.bump-package-version .
|
|
||||||
docker run --rm -v "$PWD":/src --user "$L_UID:$L_GID" \
|
|
||||||
"$image" /bin/bash -c \
|
|
||||||
"cd /src && builder/bump-package-version-inside-docker-deb $debian_version"
|
|
||||||
}
|
|
||||||
|
|
||||||
new_version="$1"
|
|
||||||
|
|
||||||
if [[ -z "$new_version" ]]; then
|
|
||||||
echo >&2 "Usage: $(basename "$0") <new_version>"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
cd "$(dirname "$0")/.."
|
|
||||||
|
|
||||||
update_version_to_meet_packaging_standards
|
|
||||||
bump_rpm
|
|
||||||
bump_deb
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
new_version="$1"
|
|
||||||
|
|
||||||
update_version() {
|
|
||||||
dch --newversion $new_version 'New upstream release.'
|
|
||||||
}
|
|
||||||
|
|
||||||
mark_as_released() {
|
|
||||||
dch --release ""
|
|
||||||
}
|
|
||||||
|
|
||||||
update_version
|
|
||||||
mark_as_released
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
FROM debian:buster
|
|
||||||
|
|
||||||
ENV DEBEMAIL="Kasm Technologies LLC <info@kasmweb.com>"
|
|
||||||
|
|
||||||
RUN apt-get update && \
|
|
||||||
apt-get -y install vim devscripts
|
|
||||||
@@ -37,7 +37,6 @@ RUN yum install -y epel-release && yum groupinstall xfce -y
|
|||||||
RUN yum erase -y pm-utils xscreensaver*
|
RUN yum erase -y pm-utils xscreensaver*
|
||||||
RUN yum install -y redhat-lsb-core
|
RUN yum install -y redhat-lsb-core
|
||||||
RUN yum install -y vim less
|
RUN yum install -y vim less
|
||||||
RUN yum localinstall -y --nogpgcheck https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm https://mirrors.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-7.noarch.rpm
|
|
||||||
|
|
||||||
RUN echo 'source $STARTUPDIR/generate_container_user' >> $HOME/.bashrc
|
RUN echo 'source $STARTUPDIR/generate_container_user' >> $HOME/.bashrc
|
||||||
|
|
||||||
|
|||||||
@@ -34,14 +34,6 @@ RUN apt-get purge -y pm-utils xscreensaver*
|
|||||||
RUN apt-get update && apt-get install -y vim less
|
RUN apt-get update && apt-get install -y vim less
|
||||||
RUN apt-get update && apt-get -y install lsb-release
|
RUN apt-get update && apt-get -y install lsb-release
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y task-cinnamon-desktop
|
|
||||||
RUN apt-get update && apt-get install -y task-gnome-desktop
|
|
||||||
RUN mkdir -p /usr/share/man/man1
|
|
||||||
RUN apt-get update && apt-get install -y apt-utils openjdk-11-jre
|
|
||||||
RUN apt-get update && apt-get install -y task-lxde-desktop
|
|
||||||
RUN apt-get update && apt-get install -y task-mate-desktop
|
|
||||||
RUN apt-get update && apt-get install -y task-kde-desktop
|
|
||||||
|
|
||||||
RUN echo 'source $STARTUPDIR/generate_container_user' >> $HOME/.bashrc
|
RUN echo 'source $STARTUPDIR/generate_container_user' >> $HOME/.bashrc
|
||||||
|
|
||||||
RUN mkdir -p $STARTUPDIR
|
RUN mkdir -p $STARTUPDIR
|
||||||
|
|||||||
@@ -1,54 +0,0 @@
|
|||||||
FROM ubuntu:focal
|
|
||||||
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
|
||||||
ENV VNC_PORT 8443
|
|
||||||
ENV VNC_PORT2 8444
|
|
||||||
ENV VNC_PORT3 8445
|
|
||||||
EXPOSE $VNC_PORT
|
|
||||||
EXPOSE $VNC_PORT2
|
|
||||||
EXPOSE $VNC_PORT3
|
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y supervisor xfce4 xfce4-terminal xterm libnss-wrapper gettext wget
|
|
||||||
RUN apt-get update && apt-get install -y vim less
|
|
||||||
RUN apt-get update && apt-get -y install lsb-release
|
|
||||||
RUN apt-get update && apt-get -y install net-tools
|
|
||||||
|
|
||||||
# RUN mkdir -p /usr/share/man/man1
|
|
||||||
# RUN apt-get update && apt-get install -y apt-utils openjdk-11-jre
|
|
||||||
RUN apt-get update && apt-get install -y ubuntu-mate-desktop
|
|
||||||
RUN apt-get update && apt-get install -y lxde
|
|
||||||
RUN apt-get update && apt-get install -y lxqt
|
|
||||||
RUN apt-get update && apt-get install -y kde-full
|
|
||||||
RUN apt-get update && apt-get install -y cinnamon
|
|
||||||
RUN apt-get update && apt-get install -y ubuntu-gnome-desktop
|
|
||||||
RUN apt-get purge -y pm-utils xscreensaver*
|
|
||||||
RUN apt-get purge -y clipit magnus kgpg
|
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y python3-pip
|
|
||||||
RUN apt-get update && apt-get install -y strace
|
|
||||||
|
|
||||||
RUN useradd -m docker
|
|
||||||
ENV USER docker
|
|
||||||
|
|
||||||
ARG KASMVNC_PACKAGE_DIR
|
|
||||||
COPY $KASMVNC_PACKAGE_DIR/kasmvncserver_*.deb /tmp
|
|
||||||
RUN dpkg -i /tmp/*.deb; apt-get -yf install
|
|
||||||
|
|
||||||
ENV HOME /home/docker
|
|
||||||
RUN chown -R 1000:0 $HOME
|
|
||||||
USER 1000:ssl-cert
|
|
||||||
WORKDIR $HOME
|
|
||||||
|
|
||||||
RUN pip3 install --user pipenv
|
|
||||||
RUN echo 'PATH="/src/unix:~/.local/bin/:$PATH"' >> ~/.bashrc
|
|
||||||
RUN echo 'alias s="sh /src/s"' >> ~/.bashrc
|
|
||||||
RUN echo 'alias k="vncserver -kill :1; pkill baloo_file; pkill gpg-agent; pkill ssh-agent; pkill xiccd"' >> ~/.bashrc
|
|
||||||
RUN echo 'alias r="k; s"' >> ~/.bashrc
|
|
||||||
RUN echo 'alias go="sh /src/s; vncserver -kill :1"' >> ~/.bashrc
|
|
||||||
RUN echo 'alias ns="netstat -nltp"' >> ~/.bashrc
|
|
||||||
RUN echo 'alias mamba="pipenv run mamba spec/"' >> ~/.bashrc
|
|
||||||
|
|
||||||
ENV LC_ALL=C.UTF-8
|
|
||||||
ENV LANG=C.UTF-8
|
|
||||||
|
|
||||||
ENTRYPOINT ["bash", "-ic", "cd /src && pipenv install; exec bash"]
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
debug() {
|
|
||||||
if [ -z "$debug" ]; then return; fi
|
|
||||||
|
|
||||||
echo "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
enable_debug() {
|
|
||||||
debug=1
|
|
||||||
log_option="-log *:stderr:100"
|
|
||||||
}
|
|
||||||
|
|
||||||
kill_vnc_server() {
|
|
||||||
vncserver -kill $display
|
|
||||||
}
|
|
||||||
|
|
||||||
process_cli_options() {
|
|
||||||
for option in "$@"; do
|
|
||||||
case "$option" in
|
|
||||||
--help)
|
|
||||||
show_help
|
|
||||||
exit
|
|
||||||
;;
|
|
||||||
-d|--debug)
|
|
||||||
enable_debug
|
|
||||||
;;
|
|
||||||
-k|--kill)
|
|
||||||
kill_vnc_server
|
|
||||||
exit
|
|
||||||
;;
|
|
||||||
-s|--select-de)
|
|
||||||
action=select-de-and-start
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo >&2 "Unsupported argument: $option"
|
|
||||||
exit 1
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
show_help() {
|
|
||||||
cat >&2 <<-USAGE
|
|
||||||
Usage: $(basename "$0") [options]
|
|
||||||
-d, --debug Debug output
|
|
||||||
-k, --kill Kill vncserver
|
|
||||||
-s, --select-de Select desktop environent to run
|
|
||||||
--help Show this help
|
|
||||||
USAGE
|
|
||||||
}
|
|
||||||
@@ -4,8 +4,43 @@ set -e
|
|||||||
|
|
||||||
display=:10
|
display=:10
|
||||||
interface=0.0.0.0
|
interface=0.0.0.0
|
||||||
|
cert_group=ssl-cert
|
||||||
|
|
||||||
|
if [[ "$1" = "--help" ]]; then
|
||||||
|
cat >&2 <<-USAGE
|
||||||
|
Usage: `basename $0` [options]
|
||||||
|
-d Debug output
|
||||||
|
-kill Kill vncserver
|
||||||
|
--help show this help
|
||||||
|
USAGE
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$1" = "-d" ]]; then
|
||||||
|
log_option="-log *:stderr:100"
|
||||||
|
fi
|
||||||
|
|
||||||
|
action=start
|
||||||
|
if [[ "$1" = "-kill" ]]; then
|
||||||
|
action=kill
|
||||||
|
fi
|
||||||
|
|
||||||
|
if groups | grep -qvw ssl-cert; then
|
||||||
|
cat <<-EOF
|
||||||
|
Can't access TLS certificate.
|
||||||
|
Please add your user to $cert_group via 'addgroup <user> ssl-cert'
|
||||||
|
EOF
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$action" = "kill" ]]; then
|
||||||
|
vncserver -kill $display
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
vncserver $display -interface $interface
|
||||||
|
vncserver -kill $display
|
||||||
vncserver $display -depth 24 -geometry 1280x1050 -websocketPort 8443 \
|
vncserver $display -depth 24 -geometry 1280x1050 -websocketPort 8443 \
|
||||||
-cert /etc/ssl/certs/ssl-cert-snakeoil.pem \
|
-cert /etc/ssl/certs/ssl-cert-snakeoil.pem \
|
||||||
-key /etc/ssl/private/ssl-cert-snakeoil.key -sslOnly -FrameRate=24 \
|
-key /etc/ssl/private/ssl-cert-snakeoil.key -sslOnly -FrameRate=24 \
|
||||||
-interface $interface -httpd /usr/share/kasmvnc/www
|
-interface $interface -httpd /usr/share/kasmvnc/www $log_option
|
||||||
|
|||||||
@@ -1,258 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
xstartup_script=~/.vnc/xstartup
|
|
||||||
de_was_selected_file="$HOME/.vnc/.de-was-selected"
|
|
||||||
|
|
||||||
debug() {
|
|
||||||
if [ -z "$debug" ]; then return; fi
|
|
||||||
|
|
||||||
echo "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
enable_debug() {
|
|
||||||
debug=1
|
|
||||||
}
|
|
||||||
|
|
||||||
process_cli_options() {
|
|
||||||
while [ $# -gt 0 ]; do
|
|
||||||
local option="$1"
|
|
||||||
shift
|
|
||||||
|
|
||||||
case "$option" in
|
|
||||||
--help|-h)
|
|
||||||
show_help
|
|
||||||
exit
|
|
||||||
;;
|
|
||||||
-d|--debug)
|
|
||||||
enable_debug
|
|
||||||
;;
|
|
||||||
-y|--assume-yes)
|
|
||||||
assume_yes=1
|
|
||||||
;;
|
|
||||||
-s|--select-de)
|
|
||||||
action=select-de
|
|
||||||
if [[ -n "$1" && "${1:0:1}" != "-" ]]; then
|
|
||||||
selected_de="$1"
|
|
||||||
assume_yes_for_xstartup_overwrite=1
|
|
||||||
if [ "$selected_de" = "manual" ]; then
|
|
||||||
selected_de="$manual_xstartup_choice"
|
|
||||||
fi
|
|
||||||
shift
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo >&2 "Unsupported argument: $option"
|
|
||||||
exit 1
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
show_help() {
|
|
||||||
cat >&2 <<-USAGE
|
|
||||||
Usage: $(basename "$0") [options]
|
|
||||||
-d, --debug Debug output
|
|
||||||
-y, --assume-yes Automatic "yes" to prompts
|
|
||||||
-s, --select-de Select desktop environent to run
|
|
||||||
--help Show this help
|
|
||||||
USAGE
|
|
||||||
}
|
|
||||||
|
|
||||||
add_uppercase_desktop_environment_keys() {
|
|
||||||
local de_cmd
|
|
||||||
|
|
||||||
for de in "${!all_desktop_environments[@]}"; do
|
|
||||||
de_cmd=${all_desktop_environments[$de]};
|
|
||||||
all_desktop_environments[${de^^}]="$de_cmd"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
process_cli_options "$@"
|
|
||||||
|
|
||||||
manual_xstartup_choice="Manually edit xstartup"
|
|
||||||
declare -A all_desktop_environments=(
|
|
||||||
[Cinnamon]="exec cinnamon-session"
|
|
||||||
[Mate]="XDG_CURRENT_DESKTOP=MATE exec dbus-launch --exit-with-session mate-session"
|
|
||||||
[LXDE]="exec lxsession"
|
|
||||||
[Lxqt]="exec startlxqt"
|
|
||||||
[KDE]="exec startkde"
|
|
||||||
[Gnome]="XDG_CURRENT_DESKTOP=GNOME exec dbus-launch --exit-with-session /usr/bin/gnome-session"
|
|
||||||
[XFCE]="exec xfce4-session")
|
|
||||||
|
|
||||||
readarray -t sorted_desktop_environments < <(for de in "${!all_desktop_environments[@]}"; do echo "$de"; done | sort)
|
|
||||||
|
|
||||||
all_desktop_environments[$manual_xstartup_choice]=""
|
|
||||||
sorted_desktop_environments+=("$manual_xstartup_choice")
|
|
||||||
add_uppercase_desktop_environment_keys
|
|
||||||
|
|
||||||
detected_desktop_environments=()
|
|
||||||
declare -A numbered_desktop_environments
|
|
||||||
|
|
||||||
print_detected_desktop_environments() {
|
|
||||||
declare -i i=1
|
|
||||||
|
|
||||||
echo "Please choose Desktop Environment to run:"
|
|
||||||
for detected_de in "${detected_desktop_environments[@]}"; do
|
|
||||||
echo "[$i] $detected_de"
|
|
||||||
numbered_desktop_environments[$i]=$detected_de
|
|
||||||
i+=1
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
detect_desktop_environments() {
|
|
||||||
for de_name in "${sorted_desktop_environments[@]}"; do
|
|
||||||
if [[ "$de_name" = "$manual_xstartup_choice" ]]; then
|
|
||||||
detected_desktop_environments+=("$de_name")
|
|
||||||
continue;
|
|
||||||
fi
|
|
||||||
|
|
||||||
local executable=${all_desktop_environments[$de_name]}
|
|
||||||
executable=($executable)
|
|
||||||
executable=${executable[-1]}
|
|
||||||
|
|
||||||
if detect_desktop_environment "$de_name" "$executable"; then
|
|
||||||
detected_desktop_environments+=("$de_name")
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
ask_user_to_choose_de() {
|
|
||||||
while : ; do
|
|
||||||
print_detected_desktop_environments
|
|
||||||
read -r de_number_to_run
|
|
||||||
de_name_from_number "$de_number_to_run"
|
|
||||||
if [[ -n "$de_name" ]]; then
|
|
||||||
break;
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Incorrect number: $de_number_to_run"
|
|
||||||
echo
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
remember_de_choice() {
|
|
||||||
touch "$de_was_selected_file"
|
|
||||||
}
|
|
||||||
|
|
||||||
de_was_selected_on_previous_run() {
|
|
||||||
[[ -f "$de_was_selected_file" ]]
|
|
||||||
}
|
|
||||||
|
|
||||||
detect_desktop_environment() {
|
|
||||||
local de_name="$1"
|
|
||||||
local executable="$2"
|
|
||||||
|
|
||||||
if command -v "$executable" &>/dev/null; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
did_user_forbid_replacing_xstartup() {
|
|
||||||
grep -q -v KasmVNC-safe-to-replace-this-file "$xstartup_script"
|
|
||||||
}
|
|
||||||
|
|
||||||
de_cmd_from_name() {
|
|
||||||
de_cmd=${all_desktop_environments[${de_name^^}]}
|
|
||||||
}
|
|
||||||
|
|
||||||
de_name_from_number() {
|
|
||||||
local de_number_to_run="$1"
|
|
||||||
|
|
||||||
de_name=${numbered_desktop_environments[$de_number_to_run]}
|
|
||||||
}
|
|
||||||
|
|
||||||
warn_xstartup_will_be_overwriten() {
|
|
||||||
if [[ -n "$assume_yes" || -n "$assume_yes_for_xstartup_overwrite" ]]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -f "$xstartup_script" ]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -n "WARNING: $xstartup_script will be overwritten y/N?"
|
|
||||||
read -r do_overwrite_xstartup
|
|
||||||
if [[ "$do_overwrite_xstartup" = "y" || "$do_overwrite_xstartup" = "Y" ]]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
setup_de_to_run_via_xstartup() {
|
|
||||||
warn_xstartup_will_be_overwriten
|
|
||||||
generate_xstartup "$de_name"
|
|
||||||
}
|
|
||||||
|
|
||||||
generate_xstartup() {
|
|
||||||
local de_name="$1"
|
|
||||||
|
|
||||||
de_cmd_from_name
|
|
||||||
|
|
||||||
cat <<-SCRIPT > "$xstartup_script"
|
|
||||||
#!/bin/sh
|
|
||||||
$de_cmd
|
|
||||||
SCRIPT
|
|
||||||
chmod +x "$xstartup_script"
|
|
||||||
}
|
|
||||||
|
|
||||||
user_asked_to_select_de() {
|
|
||||||
[[ "$action" = "select-de" ]]
|
|
||||||
}
|
|
||||||
|
|
||||||
user_specified_de() {
|
|
||||||
[ -n "$selected_de" ]
|
|
||||||
}
|
|
||||||
|
|
||||||
check_de_name_is_valid() {
|
|
||||||
local selected_de="$1"
|
|
||||||
local de_cmd=${all_desktop_environments["${selected_de^^}"]:-}
|
|
||||||
if [ -z "$de_cmd" ]; then
|
|
||||||
echo >&2 "'$selected_de': not supported Desktop Environment"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
de_installed() {
|
|
||||||
local de_name="${1^^}"
|
|
||||||
|
|
||||||
for de in "${detected_desktop_environments[@]}"; do
|
|
||||||
if [ "${de^^}" = "$de_name" ]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
check_de_installed() {
|
|
||||||
local de_name="$1"
|
|
||||||
|
|
||||||
if ! de_installed "$de_name"; then
|
|
||||||
echo >&2 "'$de_name': Desktop Environment not installed"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
if user_asked_to_select_de || ! de_was_selected_on_previous_run; then
|
|
||||||
if user_specified_de; then
|
|
||||||
check_de_name_is_valid "$selected_de"
|
|
||||||
fi
|
|
||||||
|
|
||||||
detect_desktop_environments
|
|
||||||
if user_specified_de; then
|
|
||||||
check_de_installed "$selected_de"
|
|
||||||
de_name="$selected_de"
|
|
||||||
else
|
|
||||||
ask_user_to_choose_de
|
|
||||||
fi
|
|
||||||
|
|
||||||
debug "You selected $de_name desktop environment"
|
|
||||||
if [[ "$de_name" != "$manual_xstartup_choice" ]]; then
|
|
||||||
setup_de_to_run_via_xstartup
|
|
||||||
fi
|
|
||||||
remember_de_choice
|
|
||||||
fi
|
|
||||||
@@ -61,6 +61,9 @@ kasmvncpasswd -d -u "$VNC_USER-to-delete" $HOME/.kasmpasswd
|
|||||||
chmod 0600 $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"
|
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
|
if [[ -f $PASSWD_PATH ]]; then
|
||||||
rm -f $PASSWD_PATH
|
rm -f $PASSWD_PATH
|
||||||
fi
|
fi
|
||||||
@@ -83,10 +86,10 @@ vncserver -kill $DISPLAY &> $HOME/.vnc/vnc_startup.log \
|
|||||||
|
|
||||||
detect_www_dir
|
detect_www_dir
|
||||||
detect_cert_location
|
detect_cert_location
|
||||||
[ -n "$KASMVNC_VERBOSE_LOGGING" ] && verbose_logging_option="-debug"
|
[ -n "$KASMVNC_VERBOSE_LOGGING" ] && verbose_logging_option="-log *:stderr:100"
|
||||||
|
|
||||||
echo -e "start vncserver with param: VNC_COL_DEPTH=$VNC_COL_DEPTH, VNC_RESOLUTION=$VNC_RESOLUTION\n..."
|
echo -e "start vncserver with param: VNC_COL_DEPTH=$VNC_COL_DEPTH, VNC_RESOLUTION=$VNC_RESOLUTION\n..."
|
||||||
vncserver $DISPLAY -select-de xfce -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 $verbose_logging_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 $verbose_logging_option #&> $STARTUPDIR/no_vnc_startup.log
|
||||||
|
|
||||||
PID_SUN=$!
|
PID_SUN=$!
|
||||||
|
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
cd "$(dirname "$0")"
|
|
||||||
. ./os_ver_cli.sh
|
|
||||||
|
|
||||||
docker build --build-arg KASMVNC_PACKAGE_DIR="build/${os_codename}" \
|
|
||||||
-t kasmvnctester_${os}:$os_codename \
|
|
||||||
-f dockerfile.${os}_${os_codename}.vncserver.test .
|
|
||||||
docker run -it -v $(realpath ${PWD}/..):/src -p 8443:8443 -p 8444:8444 \
|
|
||||||
-p 8445:8445 --rm \
|
|
||||||
-e KASMVNC_VERBOSE_LOGGING=$KASMVNC_VERBOSE_LOGGING \
|
|
||||||
-e "VNC_USER=foo" -e "VNC_PW=foobar" \
|
|
||||||
kasmvnctester_${os}:$os_codename
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
Name: kasmvncserver
|
Name: kasmvncserver
|
||||||
Version: 0.9.3~beta
|
Version: 0.9.1~beta
|
||||||
Release: 1%{?dist}
|
Release: 1%{?dist}
|
||||||
Summary: VNC server accessible from a web browser
|
Summary: VNC server accessible from a web browser
|
||||||
|
|
||||||
@@ -7,7 +7,7 @@ License: GPLv2+
|
|||||||
URL: https://github.com/kasmtech/KasmVNC
|
URL: https://github.com/kasmtech/KasmVNC
|
||||||
|
|
||||||
BuildRequires: rsync
|
BuildRequires: rsync
|
||||||
Requires: xorg-x11-xauth, xorg-x11-xkb-utils, xkeyboard-config, xorg-x11-server-utils, openssl, perl, perl-Switch, rpmfusion-free-release, perl-Hash-Merge-Simple, perl-Scalar-List-Utils
|
Requires: xorg-x11-xauth, xorg-x11-xkb-utils, xkeyboard-config, xorg-x11-server-utils, openssl, perl
|
||||||
Conflicts: tigervnc-server, tigervnc-server-minimal
|
Conflicts: tigervnc-server, tigervnc-server-minimal
|
||||||
|
|
||||||
%description
|
%description
|
||||||
@@ -48,12 +48,11 @@ DESTDIR=$RPM_BUILD_ROOT
|
|||||||
DST_MAN=$DESTDIR/usr/share/man/man1
|
DST_MAN=$DESTDIR/usr/share/man/man1
|
||||||
|
|
||||||
mkdir -p $DESTDIR/usr/bin $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/doc/kasmvncserver
|
||||||
cp $SRC_BIN/Xvnc $DESTDIR/usr/bin;
|
cp $SRC_BIN/Xvnc $DESTDIR/usr/bin;
|
||||||
cp $SRC_BIN/vncserver $DESTDIR/usr/bin;
|
cp $SRC_BIN/vncserver $DESTDIR/usr/bin;
|
||||||
cp $SRC_BIN/vncconfig $DESTDIR/usr/bin;
|
cp $SRC_BIN/vncconfig $DESTDIR/usr/bin;
|
||||||
cp $SRC_BIN/kasmvncpasswd $DESTDIR/usr/bin;
|
cp $SRC_BIN/kasmvncpasswd $DESTDIR/usr/bin;
|
||||||
cp -r $SRC/lib/kasmvnc/ $DESTDIR/usr/lib/kasmvncserver
|
|
||||||
cd $DESTDIR/usr/bin && ln -s kasmvncpasswd vncpasswd;
|
cd $DESTDIR/usr/bin && ln -s kasmvncpasswd vncpasswd;
|
||||||
cp -r $SRC/share/doc/kasmvnc*/* $DESTDIR/usr/share/doc/kasmvncserver/
|
cp -r $SRC/share/doc/kasmvnc*/* $DESTDIR/usr/share/doc/kasmvncserver/
|
||||||
rsync -r --exclude '.git*' --exclude po2js --exclude xgettext-html \
|
rsync -r --exclude '.git*' --exclude po2js --exclude xgettext-html \
|
||||||
@@ -67,7 +66,6 @@ cd $DST_MAN && ln -s vncpasswd.1 kasmvncpasswd.1;
|
|||||||
|
|
||||||
%files
|
%files
|
||||||
/usr/bin/*
|
/usr/bin/*
|
||||||
/usr/lib/kasmvncserver
|
|
||||||
/usr/share/man/man1/*
|
/usr/share/man/man1/*
|
||||||
/usr/share/kasmvnc/www
|
/usr/share/kasmvnc/www
|
||||||
|
|
||||||
|
|||||||
3
debian/Makefile.to_fakebuild_tar_package
vendored
3
debian/Makefile.to_fakebuild_tar_package
vendored
@@ -11,12 +11,11 @@ install: unpack_tarball
|
|||||||
echo "TAR_DATA: $(TAR_DATA)"
|
echo "TAR_DATA: $(TAR_DATA)"
|
||||||
echo "installing files"
|
echo "installing files"
|
||||||
mkdir -p $(DESTDIR)/usr/bin $(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/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)/vncserver $(DESTDIR)/usr/bin/kasmvncserver
|
||||||
cp $(SRC_BIN)/vncconfig $(DESTDIR)/usr/bin/kasmvncconfig
|
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)/lib/kasmvnc/ $(DESTDIR)/usr/lib/kasmvncserver
|
|
||||||
cp -r $(SRC)/share/doc/kasmvnc*/* $(DESTDIR)/usr/share/doc/kasmvncserver/
|
cp -r $(SRC)/share/doc/kasmvnc*/* $(DESTDIR)/usr/share/doc/kasmvncserver/
|
||||||
rsync -r --exclude '.git*' --exclude po2js --exclude xgettext-html \
|
rsync -r --exclude '.git*' --exclude po2js --exclude xgettext-html \
|
||||||
--exclude www/utils/ --exclude .eslintrc \
|
--exclude www/utils/ --exclude .eslintrc \
|
||||||
|
|||||||
6
debian/changelog
vendored
6
debian/changelog
vendored
@@ -1,9 +1,3 @@
|
|||||||
kasmvnc (0.9.3~beta-1) unstable; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release.
|
|
||||||
|
|
||||||
-- Dmitry Maksyoma <ledestin@gmail.com> Fri, 29 Oct 2021 19:16:33 +1300
|
|
||||||
|
|
||||||
kasmvnc (0.9.1~beta-1) unstable; urgency=medium
|
kasmvnc (0.9.1~beta-1) unstable; urgency=medium
|
||||||
|
|
||||||
* Initial release of the Debian package.
|
* Initial release of the Debian package.
|
||||||
|
|||||||
3
debian/control
vendored
3
debian/control
vendored
@@ -12,8 +12,7 @@ Homepage: https://github.com/kasmtech/KasmVNC
|
|||||||
Package: kasmvncserver
|
Package: kasmvncserver
|
||||||
Architecture: amd64 arm64
|
Architecture: amd64 arm64
|
||||||
Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends}, ssl-cert, xauth,
|
Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends}, ssl-cert, xauth,
|
||||||
x11-xkb-utils, xkb-data, procps, libswitch-perl, libyaml-tiny-perl,
|
x11-xkb-utils, xkb-data, procps
|
||||||
libhash-merge-simple-perl, libscalar-list-utils-perl
|
|
||||||
Provides: vnc-server
|
Provides: vnc-server
|
||||||
Description: VNC server accessible from a web browser
|
Description: VNC server accessible from a web browser
|
||||||
VNC stands for Virtual Network Computing. It is, in essence, a remote
|
VNC stands for Virtual Network Computing. It is, in essence, a remote
|
||||||
|
|||||||
2
kasmweb
2
kasmweb
Submodule kasmweb updated: 9383783efd...66c5812b4e
@@ -50,8 +50,6 @@ if [ $SERVER = 1 ]; then
|
|||||||
install -m 644 ./xorg.build/man/man1/Xserver.1 $OUTDIR/man/man1/Xserver.1
|
install -m 644 ./xorg.build/man/man1/Xserver.1 $OUTDIR/man/man1/Xserver.1
|
||||||
mkdir -p $OUTDIR/lib/dri/
|
mkdir -p $OUTDIR/lib/dri/
|
||||||
install -m 755 ./xorg.build/lib/dri/swrast_dri.so $OUTDIR/lib/dri/
|
install -m 755 ./xorg.build/lib/dri/swrast_dri.so $OUTDIR/lib/dri/
|
||||||
mkdir -p $OUTDIR/lib/kasmvnc
|
|
||||||
install -m 755 $SRCDIR/builder/startup/deb/select-de.sh $OUTDIR/lib/kasmvnc
|
|
||||||
mkdir -p $OUTDIR/share/kasmvnc
|
mkdir -p $OUTDIR/share/kasmvnc
|
||||||
cp -r $SRCDIR/builder/www $OUTDIR/share/kasmvnc/www
|
cp -r $SRCDIR/builder/www $OUTDIR/share/kasmvnc/www
|
||||||
fi
|
fi
|
||||||
|
|||||||
12
run-specs
12
run-specs
@@ -1,12 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
export PYTHONPATH=${PWD}/spec
|
|
||||||
|
|
||||||
RUN_CMD="pipenv run mamba"
|
|
||||||
|
|
||||||
if [[ -n "$1" ]]; then
|
|
||||||
$RUN_CMD "$1"
|
|
||||||
else
|
|
||||||
$RUN_CMD spec/*_spec.py
|
|
||||||
fi
|
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
import os
|
|
||||||
import shutil
|
|
||||||
import subprocess
|
|
||||||
import pexpect
|
|
||||||
from path import Path
|
|
||||||
from expects import expect, equal
|
|
||||||
|
|
||||||
vncserver_cmd = 'vncserver :1 -cert /etc/ssl/certs/ssl-cert-snakeoil.pem -key /etc/ssl/private/ssl-cert-snakeoil.key -sslOnly -FrameRate=24 -interface 0.0.0.0 -httpd /usr/share/kasmvnc/www -depth 24 -geometry 1280x1050 -log *:stderr:100'
|
|
||||||
running_xvnc = False
|
|
||||||
|
|
||||||
|
|
||||||
def clean_env():
|
|
||||||
clean_kasm_users()
|
|
||||||
|
|
||||||
home_dir = os.environ['HOME']
|
|
||||||
vnc_dir = os.path.join(home_dir, ".vnc")
|
|
||||||
Path(vnc_dir).rmtree(ignore_errors=True)
|
|
||||||
|
|
||||||
|
|
||||||
def clean_kasm_users():
|
|
||||||
home_dir = os.environ['HOME']
|
|
||||||
password_file = os.path.join(home_dir, ".kasmpasswd")
|
|
||||||
Path(password_file).remove_p()
|
|
||||||
|
|
||||||
|
|
||||||
def start_xvnc_pexpect(extra_args="", **kwargs):
|
|
||||||
global running_xvnc
|
|
||||||
|
|
||||||
# ":;" is a hack. Without it, Xvnc doesn't run. No idea what happens, but
|
|
||||||
# when I run top, Xvnc just isn't there. I suspect a race.
|
|
||||||
child = pexpect.spawn('/bin/bash',
|
|
||||||
['-ic', f':;{vncserver_cmd} {extra_args}'],
|
|
||||||
timeout=5, encoding='utf-8', **kwargs)
|
|
||||||
running_xvnc = True
|
|
||||||
|
|
||||||
return child
|
|
||||||
|
|
||||||
|
|
||||||
def start_xvnc(extra_args="", **kwargs):
|
|
||||||
global running_xvnc
|
|
||||||
completed_process = run_cmd(f'{vncserver_cmd} {extra_args}', **kwargs)
|
|
||||||
if completed_process.returncode == 0:
|
|
||||||
running_xvnc = True
|
|
||||||
|
|
||||||
return completed_process
|
|
||||||
|
|
||||||
|
|
||||||
def run_cmd(cmd, **kwargs):
|
|
||||||
completed_process = subprocess.run(cmd, shell=True, text=True,
|
|
||||||
capture_output=True,
|
|
||||||
executable='/bin/bash', **kwargs)
|
|
||||||
if completed_process.returncode != 0:
|
|
||||||
print(completed_process.stdout)
|
|
||||||
print(completed_process.stderr)
|
|
||||||
|
|
||||||
return completed_process
|
|
||||||
|
|
||||||
|
|
||||||
def add_kasmvnc_user_docker():
|
|
||||||
completed_process = run_cmd('echo -e "password\\npassword\\n" | vncpasswd -u docker')
|
|
||||||
expect(completed_process.returncode).to(equal(0))
|
|
||||||
|
|
||||||
|
|
||||||
def kill_xvnc():
|
|
||||||
global running_xvnc
|
|
||||||
if not running_xvnc:
|
|
||||||
return
|
|
||||||
|
|
||||||
run_cmd('vncserver -kill :1')
|
|
||||||
running_xvnc = False
|
|
||||||
@@ -1,125 +0,0 @@
|
|||||||
import os
|
|
||||||
import sys
|
|
||||||
import pexpect
|
|
||||||
from mamba import description, context, it, fit, before, after
|
|
||||||
from expects import expect, equal
|
|
||||||
|
|
||||||
from helper.spec_helper import start_xvnc, kill_xvnc, run_cmd, clean_env, \
|
|
||||||
add_kasmvnc_user_docker, clean_kasm_users, start_xvnc_pexpect
|
|
||||||
|
|
||||||
# WIP. Plan to move to start_xvnc_pexpect(), because pexpect provides a way to
|
|
||||||
# wait for vncserver output. start_xvnc() just blindly prints input to vncserver
|
|
||||||
# without knowing what it prints back.
|
|
||||||
|
|
||||||
|
|
||||||
def select_de(de_name):
|
|
||||||
try:
|
|
||||||
extra_args = f'-select-de {de_name}'
|
|
||||||
completed_process = start_xvnc(extra_args)
|
|
||||||
expect(completed_process.returncode).to(equal(0))
|
|
||||||
finally:
|
|
||||||
kill_xvnc()
|
|
||||||
|
|
||||||
|
|
||||||
def check_de_was_setup_to_run(de_name):
|
|
||||||
completed_process = run_cmd(f'grep -q {de_name} ~/.vnc/xstartup')
|
|
||||||
expect(completed_process.returncode).to(equal(0))
|
|
||||||
|
|
||||||
|
|
||||||
with description('vncserver') as self:
|
|
||||||
with before.each:
|
|
||||||
clean_env()
|
|
||||||
with after.each:
|
|
||||||
kill_xvnc()
|
|
||||||
|
|
||||||
with context('on the first run'):
|
|
||||||
with before.each:
|
|
||||||
add_kasmvnc_user_docker()
|
|
||||||
|
|
||||||
with it('asks user to select a DE'):
|
|
||||||
choose_cinnamon = "1\n"
|
|
||||||
completed_process = start_xvnc(input=choose_cinnamon)
|
|
||||||
expect(completed_process.returncode).to(equal(0))
|
|
||||||
|
|
||||||
check_de_was_setup_to_run('cinnamon')
|
|
||||||
|
|
||||||
with it('asks to select a DE, when ran with -select-de'):
|
|
||||||
choose_cinnamon = "1\n"
|
|
||||||
completed_process = start_xvnc('-select-de', input=choose_cinnamon)
|
|
||||||
expect(completed_process.returncode).to(equal(0))
|
|
||||||
|
|
||||||
check_de_was_setup_to_run('cinnamon')
|
|
||||||
|
|
||||||
with it('selects passed DE with -s'):
|
|
||||||
select_de('mate')
|
|
||||||
check_de_was_setup_to_run('mate')
|
|
||||||
|
|
||||||
with context('after DE was selected'):
|
|
||||||
with before.each:
|
|
||||||
add_kasmvnc_user_docker()
|
|
||||||
|
|
||||||
with it("don't ask to choose DE by default"):
|
|
||||||
select_de('mate')
|
|
||||||
|
|
||||||
completed_process = start_xvnc()
|
|
||||||
expect(completed_process.returncode).to(equal(0))
|
|
||||||
|
|
||||||
check_de_was_setup_to_run('mate')
|
|
||||||
|
|
||||||
with it('asks to select a DE, when ran with -select-de'):
|
|
||||||
select_de('mate')
|
|
||||||
|
|
||||||
choose_cinnamon_and_answer_yes = "1\ny\n"
|
|
||||||
completed_process = start_xvnc('-select-de',
|
|
||||||
input=choose_cinnamon_and_answer_yes)
|
|
||||||
expect(completed_process.returncode).to(equal(0))
|
|
||||||
|
|
||||||
check_de_was_setup_to_run('cinnamon')
|
|
||||||
|
|
||||||
with it('selects passed DE with -s'):
|
|
||||||
select_de('mate')
|
|
||||||
|
|
||||||
completed_process = start_xvnc('-select-de cinnamon')
|
|
||||||
expect(completed_process.returncode).to(equal(0))
|
|
||||||
|
|
||||||
check_de_was_setup_to_run('cinnamon')
|
|
||||||
|
|
||||||
with context('guided user creation'):
|
|
||||||
with fit('asks to create a user if none exist'):
|
|
||||||
clean_kasm_users()
|
|
||||||
|
|
||||||
child = start_xvnc_pexpect('-select-de cinnamon')
|
|
||||||
child.expect('Enter username')
|
|
||||||
child.sendline()
|
|
||||||
child.expect('Password:')
|
|
||||||
child.sendline('password')
|
|
||||||
child.expect('Verify:')
|
|
||||||
child.sendline('password')
|
|
||||||
child.expect(pexpect.EOF)
|
|
||||||
child.close()
|
|
||||||
expect(child.exitstatus).to(equal(0))
|
|
||||||
|
|
||||||
home_dir = os.environ['HOME']
|
|
||||||
user = os.environ['USER']
|
|
||||||
completed_process = run_cmd(f'grep -qw {user} {home_dir}/.kasmpasswd')
|
|
||||||
expect(completed_process.returncode).to(equal(0))
|
|
||||||
|
|
||||||
with fit('specify custom username'):
|
|
||||||
custom_username = 'custom_username'
|
|
||||||
child = start_xvnc_pexpect('-select-de cinnamon')
|
|
||||||
child.logfile_read = sys.stderr
|
|
||||||
child.expect('Enter username')
|
|
||||||
child.sendline(custom_username)
|
|
||||||
child.expect('Password:')
|
|
||||||
child.sendline('password')
|
|
||||||
child.expect('Verify:')
|
|
||||||
child.sendline('password')
|
|
||||||
child.expect(pexpect.EOF)
|
|
||||||
child.wait()
|
|
||||||
# expect(child.exitstatus).to(equal(0))
|
|
||||||
|
|
||||||
home_dir = os.environ['HOME']
|
|
||||||
completed_process = run_cmd(f'grep -qw {custom_username} {home_dir}/.kasmpasswd')
|
|
||||||
expect(completed_process.returncode).to(equal(0))
|
|
||||||
|
|
||||||
# os.system(f'pgrep Xvnc >/dev/null || cat {home_dir}/.vnc/*.log')
|
|
||||||
1349
unix/vncserver
Executable file → Normal file
1349
unix/vncserver
Executable file → Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,4 +0,0 @@
|
|||||||
---
|
|
||||||
network:
|
|
||||||
ssl:
|
|
||||||
pem_certificate: lol
|
|
||||||
@@ -1,142 +0,0 @@
|
|||||||
---
|
|
||||||
desktop:
|
|
||||||
resolution:
|
|
||||||
width: 1024
|
|
||||||
height: 768
|
|
||||||
allow_resize: true
|
|
||||||
pixel_depth: 16|24|32
|
|
||||||
|
|
||||||
network:
|
|
||||||
protocol: http|vnc
|
|
||||||
interface: 0.0.0.0
|
|
||||||
websocket_port: default
|
|
||||||
use_ipv4: true
|
|
||||||
use_ipv6: true
|
|
||||||
ssl:
|
|
||||||
pem_certificate: [/etc/...]
|
|
||||||
pem_key: [/etc/...]
|
|
||||||
require_ssl: true
|
|
||||||
|
|
||||||
user_session:
|
|
||||||
concurrent_connections_mode: always-allow|prompt|block-new-connections|disconnect-current
|
|
||||||
approval_dialog_timeout: 10
|
|
||||||
|
|
||||||
force_session_type: shared|exclusive
|
|
||||||
new_session_disconnects_existing_exlusive_session: true
|
|
||||||
ask_user_to_vet_new_sessions: false
|
|
||||||
vetting_dialog_duration: 10
|
|
||||||
idle_timeout: never
|
|
||||||
|
|
||||||
keyboard:
|
|
||||||
remap_keys:
|
|
||||||
- 0x22->0x40
|
|
||||||
- 0x24->0x40
|
|
||||||
# If NumLock is on (as it usually is), then pressing a key on the numeric
|
|
||||||
# keypad while holding the shift key overrides NumLock and instead generates
|
|
||||||
# the arrow key (or other navigation key) printed in small print under the big
|
|
||||||
# digits.
|
|
||||||
ignore_numlock: false
|
|
||||||
raw_keyboard: false
|
|
||||||
|
|
||||||
# Mouse, trackpad, etc.
|
|
||||||
pointer:
|
|
||||||
enabled: true
|
|
||||||
|
|
||||||
runtime_configuration:
|
|
||||||
allow_client_to_override_server_settings: true
|
|
||||||
allow_override_list:
|
|
||||||
- pointer.allow_client_to_override_server_settings
|
|
||||||
|
|
||||||
logging:
|
|
||||||
log_writer_name: all|*|<string>
|
|
||||||
log_to: stderr|stdout|syslog
|
|
||||||
# 0 - silent(?), 100 - most verbose
|
|
||||||
level: 0..100
|
|
||||||
|
|
||||||
security:
|
|
||||||
brute_force_protection:
|
|
||||||
blacklist_threshold: 5
|
|
||||||
blacklist_timeout: 10
|
|
||||||
|
|
||||||
data_loss_prevention:
|
|
||||||
visible_region:
|
|
||||||
top: 10
|
|
||||||
left: 10
|
|
||||||
right: 40
|
|
||||||
bottom: 40
|
|
||||||
concealed_region:
|
|
||||||
allow_click_down: false
|
|
||||||
allow_click_release: false
|
|
||||||
clipboard:
|
|
||||||
delay_between_operations: none
|
|
||||||
# Cut buffers and CLIPBOARD selection.
|
|
||||||
server_to_client:
|
|
||||||
enabled: true
|
|
||||||
size: 10000|unlimited
|
|
||||||
primary_clipboard_enabled: false
|
|
||||||
client_to_server:
|
|
||||||
enabled: true
|
|
||||||
size: 10000|unlimited
|
|
||||||
keyboard:
|
|
||||||
enabled: true
|
|
||||||
rate_limit: 1|unlimited
|
|
||||||
# LOGS YOUR PRIVATE INFORMATION. Keypresses and clipboard content.
|
|
||||||
logging:
|
|
||||||
level: off|info|verbose
|
|
||||||
|
|
||||||
# legacy:
|
|
||||||
# pixel_format: 16|24|32
|
|
||||||
# inetd: false
|
|
||||||
# desktop_name: default
|
|
||||||
# rfb_port: 5900
|
|
||||||
# rfb_unix_socket_path:
|
|
||||||
# rfb_unix_mode: 0600
|
|
||||||
# password_file:
|
|
||||||
# password:
|
|
||||||
# plain_user_list:
|
|
||||||
# - foo
|
|
||||||
# - bar
|
|
||||||
# pam_service: vnc
|
|
||||||
# use_protocol_3.3: false
|
|
||||||
# x509_certificate:
|
|
||||||
# x509_key:
|
|
||||||
# gnu_tls_priority: NORMAL
|
|
||||||
|
|
||||||
encoding:
|
|
||||||
max_frame_rate: 60
|
|
||||||
native_resolution_mode:
|
|
||||||
min_quality: 7
|
|
||||||
max_quality: 8
|
|
||||||
treat_this_quality_level_as_lossless: 10
|
|
||||||
prefer_bandwidth_over_quality: false
|
|
||||||
rectangle_compress_threads: auto|number
|
|
||||||
|
|
||||||
video_mode:
|
|
||||||
jpeg_quality: auto
|
|
||||||
webp_quality: auto
|
|
||||||
max_resolution:
|
|
||||||
width: 1920
|
|
||||||
height: 1080
|
|
||||||
enter_video_mode:
|
|
||||||
time_threshold: 5
|
|
||||||
area_threshold: 45
|
|
||||||
exit_video_mode:
|
|
||||||
time_threshold: 3
|
|
||||||
logging:
|
|
||||||
level: off|info
|
|
||||||
scaling_algorithm: nearest|bilinear|progressive_bilinear
|
|
||||||
|
|
||||||
compare_framebuffer: off|always|auto
|
|
||||||
zrle_zlib_level: 0..9
|
|
||||||
hextile_improved_compression: true
|
|
||||||
|
|
||||||
server:
|
|
||||||
advanced:
|
|
||||||
x_font_path: default
|
|
||||||
httpd_directory: /usr/share/kasmvnc/www
|
|
||||||
kasm_password_file: ~/.kasmpasswd
|
|
||||||
x_authtority_file: default
|
|
||||||
auto_shutdown:
|
|
||||||
no_user_session_timeout: never
|
|
||||||
active_user_session_timeout: never
|
|
||||||
inactive_user_session_timeout: never
|
|
||||||
Reference in New Issue
Block a user