Compare commits

...

211 Commits

Author SHA1 Message Date
Dmitry Maksyoma 0a81e4be72 vncserver: fix case of -websocketPort not specified 4 years ago
Dmitry Maksyoma 1bc53710c7 Deb/Rpm: set package versions to 0.9.3~beta 4 years ago
Dmitry Maksyoma 991e839408 Refactor vnc_startup.sh 4 years ago
Dmitry Maksyoma b682457093 vnc_startup.sh: select XFCE by default 4 years ago
Dmitry Maksyoma 4d34a083be vnc_startup.sh: remove temporary hack 4 years ago
Dmitry Maksyoma 54cfcccd1b vncserver test image: Python specs require a newer Python
Newer Python is available in Ubuntu Focal.
4 years ago
Dmitry Maksyoma 923b05803e Don't check www.x.org certificate for now (wget) 4 years ago
Dmitry Maksyoma 0844c10674 vncserver: fix -websocketPort being ignored 4 years ago
Dmitry Maksyoma 991bf3c773 vncserver: CentOS support 4 years ago
Dmitry Maksyoma 9a82b7debe vncserver: fix -debug 4 years ago
Dmitry Maksyoma c2d18f3829 vncserver: fix display :0 being ignored on CLI 4 years ago
Dmitry Maksyoma 3e843eea8d vncserver: fix heredoc to work on CentOS 4 years ago
Dmitry Maksyoma aefbb4d143 vncserver: update comment 4 years ago
Dmitry Maksyoma b34fe08786 vncserver refactor: use standard way of calling functions
For somebody coming from Python/Ruby/JavaScript, foo() is easier to
understand than &foo. Also, less noise.
4 years ago
Dmitry Maksyoma ee3b7f9aa5 vncserver: add easy -debug option to pass -log to Xvnc 4 years ago
Dmitry Maksyoma f7254e9708 vncserver: fix -select-de 4 years ago
Dmitry Maksyoma e3a41bc055 vncserver: use IP when printing browser url 4 years ago
Dmitry Maksyoma 1bda8ab452 Specs: add comments 4 years ago
Dmitry Maksyoma 02ef620f67 vncserver: print browser url to connect to
Add 0.0.0.0 as default interface. Xvnc fails if -interface isn't passed.
4 years ago
Dmitry Maksyoma e453c7d73b vncserver: swallow -interface and pass through to Xvnc 4 years ago
Dmitry Maksyoma ca42870585 Specs: refactor 4 years ago
Dmitry Maksyoma 0b53e9f0a6 Specs: extract start_xvnc_pexpect() 4 years ago
Dmitry Maksyoma 3f69b7bd33 Specs: extract clean_kasm_users() 4 years ago
Dmitry Maksyoma 4cb75459ed Specs: run vncserver with debug on 4 years ago
Dmitry Maksyoma 8a424a0463 Update README 4 years ago
Dmitry Maksyoma a9d85aa99b Update README 4 years ago
Dmitry Maksyoma cca1dabb71 Update README 4 years ago
Dmitry Maksyoma 183917d046 Update README 4 years ago
Dmitry Maksyoma a31601de9a Update README 4 years ago
Dmitry Maksyoma e21366cc7b Update README 4 years ago
Dmitry Maksyoma 76a5b18748 vncserver: remove obsolete code 4 years ago
Dmitry Maksyoma 04379056af vncserver: refactor 4 years ago
Dmitry Maksyoma 49908e1867 vncserver: detect select-de.sh location 4 years ago
Dmitry Maksyoma df4a5ac910 Put select-de.sh in /usr/lib 4 years ago
Dmitry Maksyoma 606075ddc0 vncserver: refactor 4 years ago
Dmitry Maksyoma 17fa6911c1 vncserver: extract IsDebian() 4 years ago
Dmitry Maksyoma 5f7d3ad43a Specs: pexpect starts Xvnc now 4 years ago
Dmitry Maksyoma f857d47ccf vncserver: fix generated xstartup indentation 4 years ago
Dmitry Maksyoma 3b3c8d0881 vncserver: refactor 4 years ago
Dmitry Maksyoma fe3569c6e8 vncserver: check user is in ssl-cert group on Debian-based distros 4 years ago
Dmitry Maksyoma 90d9cbe65b Specs: WIP 4 years ago
Dmitry Maksyoma f0e63b2e3d Specs: require Python 3.8 4 years ago
Dmitry Maksyoma b5eaf71248 Specs: unfocus tests 4 years ago
Dmitry Maksyoma e643cf4115 Specs: improve test 4 years ago
Dmitry Maksyoma df35fadc9b Specs: test specifying custom user name for guided user creation 4 years ago
Dmitry Maksyoma a27ad89677 Spec: add user creation test 4 years ago
Dmitry Maksyoma 04e93956b5 vncserver test image: add strace 4 years ago
Dmitry Maksyoma 5de1b80ca7 Spec refactoring 4 years ago
Dmitry Maksyoma d3e209c9ba vncserver test image based on Ubuntu Focal 4 years ago
Dmitry Maksyoma ff8ab63aab Spec: extract start_xvnc(), kill only if running 4 years ago
Dmitry Maksyoma a51444257a Spec: no overwrite is possible on the first run 4 years ago
Dmitry Maksyoma e23e5cc63b Spec refactoring 4 years ago
Dmitry Maksyoma 043438e2e0 Spec: vncserver 2nd run tests 4 years ago
Dmitry Maksyoma 8152596519 Spec refactoring 4 years ago
Dmitry Maksyoma fe2bd6c6d6 Specs: extract select_de() 4 years ago
Dmitry Maksyoma 5d0e8b1b03 Spec refactoring 4 years ago
Dmitry Maksyoma 9faf87389f vncserver: no xstartup overwrite confirmation if it doesn't exist 4 years ago
Dmitry Maksyoma ec948ab20f Spec refactoring 4 years ago
Dmitry Maksyoma 2fa381a3fe Spec add "first run" test 4 years ago
Dmitry Maksyoma 9161015aca Spec refactoring 4 years ago
Dmitry Maksyoma 3fe52a84ba Spec refactoring 4 years ago
Dmitry Maksyoma 0c26c4cb85 Specs: fix file/dir removal 4 years ago
Dmitry Maksyoma 177da18fc8 vncserver: update Bionic image 4 years ago
Dmitry Maksyoma 0b495fd3f9 Specs: clean environment before each test 4 years ago
Dmitry Maksyoma 0011fa6afd Specs: extract check_de_was_setup_to_run() 4 years ago
Dmitry Maksyoma ed78c9dcc5 Specs: extract kill_xvnc() 4 years ago
Dmitry Maksyoma dca392eafd Specs: extract add_kasmvnc_user_docker() 4 years ago
Dmitry Maksyoma 28c06893e3 Specs: add -select-de test spike 4 years ago
Dmitry Maksyoma 0f23baa647 Specs: run_cmd() add **kwargs 4 years ago
Dmitry Maksyoma d1f0d6f7e7 Spec refactoring 4 years ago
Dmitry Maksyoma d522457723 Add spec runner 4 years ago
Dmitry Maksyoma d8bbb9884d vncserver: spec creates password file 4 years ago
Dmitry Maksyoma 7cb1ea9ebc vncserver: Python spec spike 4 years ago
Dmitry Maksyoma dbd54fe35c vncserver: add -select-de 4 years ago
Dmitry Maksyoma 6287114cbf Merge branch 'master' into KASM-1609_select_de_to_run 4 years ago
Dmitry Maksyoma f999acc490 vncserver: extract ForgetSelectedDe() 4 years ago
Dmitry Maksyoma 71c420fc86 Deb/Rpm: add Perl Switch dependency 4 years ago
Dmitry Maksyoma f766c3a8c0 Fix test-vncserver 4 years ago
Dmitry Maksyoma c96d38bbe5 select-de.sh: refactor 4 years ago
Dmitry Maksyoma c2a5876127 select-de.sh: use exec with XFCE 4 years ago
Dmitry Maksyoma 64c190e2bb select-de.sh: fix -s <DE> 4 years ago
Dmitry Maksyoma 4ed2c57ce3 select-de.sh: fix MATE DE 4 years ago
Dmitry Maksyoma 3a528b94e6 select-de.sh: -s supports mangled DE names like CiNnAmOn 4 years ago
Dmitry Maksyoma fbdda196b8 select-de.sh: make -s <DE> work 4 years ago
Dmitry Maksyoma 75b42e4f3f select-de.sh: assume -y if -s <DE> was given 4 years ago
Dmitry Maksyoma 003958dd9f select-de.sh: fix -s 4 years ago
Dmitry Maksyoma 69a9ba66cd vncserver test env: install MATE 4 years ago
Dmitry Maksyoma 279e91dcb1 select-de.sh: add -y, --assume-yes option 4 years ago
Dmitry Maksyoma 102d9b9a6c Merge branch 'master' into KASM-1609_select_de_to_run 4 years ago
Dmitry Maksyoma 3eb1ffd94b vncserver: -select-de spike 4 years ago
Dmitry Maksyoma 551f292144 vncserver: CLI optional option arg support (-select-de=[DE]) 4 years ago
Dmitry Maksyoma 36ffbe1572 test-vncserver: ns alias for netstat -nltp 4 years ago
Dmitry Maksyoma c775f7198b select-de.sh: process --select-de with arg spike 4 years ago
Dmitry Maksyoma 0fa98100f8 select-de.sh: process --select-de spike 4 years ago
Dmitry Maksyoma b0ffc6a27e vncserver: use unique -websocketPort for each display 4 years ago
Dmitry Maksyoma fa7b3492da test-vncserver: export port for display :2 4 years ago
Dmitry Maksyoma 4a4e1d65b8 vncserver: Dockerfile and script for testing 4 years ago
Dmitry Maksyoma cb08058d34 vncserver: print empty line before guided user creation 4 years ago
Dmitry Maksyoma b4612d548f Merge branch 'master' into KASM-1609_select_de_to_run 4 years ago
Dmitry Maksyoma d0fe229684 vncserver: refactor 4 years ago
Dmitry Maksyoma ded3840f6b vncserver: extract PrintLogFilenameAndConfiguredUsersAndStuff() 4 years ago
Dmitry Maksyoma c6f7d2eff0 vncserver: refactor 4 years ago
Dmitry Maksyoma 7e854294a2 vncserver: refactor 4 years ago
Dmitry Maksyoma 5635096978 vncserver: refactor 4 years ago
Dmitry Maksyoma 34565c5950 vncserver: extract AllowXProgramsToConnectToXvnc() 4 years ago
Dmitry Maksyoma 3522000d1f vncserver: extract PrepareLoggingAndXvncKillingFramework() 4 years ago
Dmitry Maksyoma 3f23bddb6b vncserver: refactor 4 years ago
Dmitry Maksyoma b350557afd vncserver: refactor 4 years ago
Dmitry Maksyoma 7dc12ccb8a vncserver: refactor 4 years ago
Dmitry Maksyoma f187aa9540 vncserver: remove obsolete code 4 years ago
Dmitry Maksyoma 79a21347f1 vncserver: extract DefineLogAndPidFilesForDisplayNumber() 4 years ago
Dmitry Maksyoma 0c1423f0b1 vncserver: remove obsolete code 4 years ago
Dmitry Maksyoma 1e21e09754 vncserver: remove obsolete code 4 years ago
Dmitry Maksyoma 6e0d272946 vncserver: enable "say" 4 years ago
Dmitry Maksyoma c64e83732d vncserver: fix indentation 4 years ago
Dmitry Maksyoma acb9793841 vncserver: refactor 4 years ago
Dmitry Maksyoma 9a6ea64e0f vncserver: refactor 4 years ago
Dmitry Maksyoma 68554d84d6 vncserver: refactor 4 years ago
Dmitry Maksyoma ac51bd1d57 vncserver: refactor 4 years ago
Dmitry Maksyoma 3ef297a7cd vncserver: refactor 4 years ago
Dmitry Maksyoma 0ca46888a0 vncserver: replace -kill sleep with a faster busyloop 4 years ago
Dmitry Maksyoma 8ca36e349e vncserver: extract StartXvncOrExit() 4 years ago
Dmitry Maksyoma cc90fe9ff6 vncserver: slice start time from 3 seconds to ~170ms 4 years ago
Dmitry Maksyoma 2b4f01f5ae vncserver: extract EnsureAtLeastOneKasmUserExists() 4 years ago
Dmitry Maksyoma 65f957695e vncserver: extract DeleteLogLeftFromPreviousXvncRun() 4 years ago
Dmitry Maksyoma 06e9e92ee1 vncserver: refactor 4 years ago
Dmitry Maksyoma 13f4ce0fba vncserver: refactor 4 years ago
Dmitry Maksyoma 349a33e402 vncserver: refactor 4 years ago
Dmitry Maksyoma a44241971e vncserver: extract PrepareDefaultsForPassingToXvnc() 4 years ago
Dmitry Maksyoma b26a20d44d vncserver: refactor 4 years ago
Dmitry Maksyoma f15aae2db8 vncserver: refactor 4 years ago
Dmitry Maksyoma 895f8bc10d vncserver: refactor 4 years ago
Dmitry Maksyoma 649868241c vncserver: refactor 4 years ago
Dmitry Maksyoma 8a3cf76f82 vncserver: refactor 4 years ago
Dmitry Maksyoma cfac63aec5 vncserver: refactor 4 years ago
Dmitry Maksyoma 59f990b372 vncserver: extract ParseAndProcessCliOptions() 4 years ago
Dmitry Maksyoma aa5fd48852 vncserver: extract SetGlobalVariables() 4 years ago
Dmitry Maksyoma a2a748a582 vncserver: extract DetectEnvironment() 4 years ago
Dmitry Maksyoma 5f3fcddcde vncserver: refactor 4 years ago
Dmitry Maksyoma fa4308c542 vncserver: print user permissions 4 years ago
Dmitry Maksyoma db2901e673 vncserver: print configured Kasm users 4 years ago
Dmitry Maksyoma a0f09dea15 vncserver: refactor 4 years ago
Dmitry Maksyoma 21b42e462b vncserver: extract CheckCliOptionsForBeingValid() 4 years ago
Dmitry Maksyoma 27f7f823fe vncserver: fix DISPLAY detection 4 years ago
Dmitry Maksyoma 93d2c6c716 vncserver: guide user to create a KasmVNC user 4 years ago
Dmitry Maksyoma fa342f624f vncserver: extract AtLeastOneUserConfigured() 4 years ago
Dmitry Maksyoma a6e9f94e27 vncserver: load .kasmpasswd users 4 years ago
Dmitry Maksyoma ffb88ee8e6 vncserver: extract $kasmPasswdFile 4 years ago
Dmitry Maksyoma c99d82fd8b vncserver: refactor 4 years ago
Dmitry Maksyoma 69a2f9a13b vncserver: extract CreateUserConfigIfNeeded() 4 years ago
Dmitry Maksyoma 08ede14dfe vncserver: refactor 4 years ago
Dmitry Maksyoma 79c9c7157b vncserver: remove obsolete comment 4 years ago
Dmitry Maksyoma 8f58d9bc92 vncserver: split IfXvncDidntStartTryFixingFontPathAndStartXvncAgain() 4 years ago
Dmitry Maksyoma 7ee1522143 vncserver: extract WaitForXvncToStart() 4 years ago
Dmitry Maksyoma df5d3e506d vncserver: extract WarnUserXvncNotStartedAndExit() 4 years ago
Dmitry Maksyoma 7954cc506c vncserver: extract IsXvncRunning() 4 years ago
Dmitry Maksyoma 84764bac80 vncserver: refactor 4 years ago
Dmitry Maksyoma bc54f75226 vncserver: extract IfXvncDidntStartTryFixingFontPathAndStartXvncAgain() 4 years ago
Dmitry Maksyoma 42eadfe784 vncserver: convert tabs -> spaces 4 years ago
Dmitry Maksyoma 1bea4d0a41 vncserver: extract StartXAndRecordPID() 4 years ago
Dmitry Maksyoma 6181c249d7 vncserver: extract ConstructXvncCmd() 4 years ago
Dmitry Maksyoma 4a63e93582 vncserver: extract SetupXauthorityFile() and others 4 years ago
Dmitry Maksyoma f6667e99be vncserver: remove obsolete code 4 years ago
Dmitry Maksyoma d6fa4b55d7 vncserver: extract DisableVncAuth() 4 years ago
Dmitry Maksyoma dc1850f1e7 vncserver: remove obsolete code 4 years ago
Dmitry Maksyoma a6b3eb1f24 vncserver: extract LoadSystemThenUserThenMandatoryConfigs() 4 years ago
Dmitry Maksyoma efbf401c8e vncserver: refactor 4 years ago
Dmitry Maksyoma c79da47c21 vncserver: extract DetectDisplayNumberFromCliArgs() 4 years ago
Dmitry Maksyoma 55525a627b vncserver: fix formatting 4 years ago
Dmitry Maksyoma c435e6ba7d vncserver: refactor 4 years ago
Dmitry Maksyoma 59d53dbb19 vncserver: extract AskUserToChooseDeOrManualXstartup() 4 years ago
Dmitry Maksyoma 8da1612d4c vncserver: extract CreateDotVncDir() 4 years ago
Dmitry Maksyoma a560276817 vncserver: extract ProcessCliOptions() 4 years ago
Dmitry Maksyoma 2cb5098060 vncserver: extract DetectFontPath 4 years ago
Dmitry Maksyoma ed51231b4e vncserver: remove obsolete code 4 years ago
Dmitry Maksyoma f903fd6c9d vncserver: refactor 4 years ago
Dmitry Maksyoma a3b9a96df7 vncserver: extract DetectUserName 4 years ago
Dmitry Maksyoma 5811e14b42 vncserver: extract DetectBinariesDir() 4 years ago
Dmitry Maksyoma fc732f3603 vncserver: refactor 4 years ago
Dmitry Maksyoma b330856d67 vncserver: improve readability 4 years ago
Dmitry Maksyoma 1165159180 vncserver: extract DetectDisplay() and RunXstartup() 4 years ago
Dmitry Maksyoma 25e761326f vncserver: extract CreateXstartup() 4 years ago
Dmitry Maksyoma 53c545a9ad vncserver: better test env detection 4 years ago
Dmitry Maksyoma 7c28908722 vncserver: ask to choose DE spike 4 years ago
Dmitry Maksyoma 6bdcbc32b1 vncserver: enable local testing
It uses the dir it was ran from to find other binaries. If I run it
locally as unix/vncserver, I want to use /usr/bin for other binaries.
4 years ago
Dmitry Maksyoma fe736c8a2b Easy start script: split shell code into modules 4 years ago
Dmitry Maksyoma b13698eb56 Easy start script: code formatting 4 years ago
Dmitry Maksyoma 7941e10b0a Easy start script: document --help in README 4 years ago
Dmitry Maksyoma fc1aa63a44 Easy start script: use long GNU options -k, --kill, etc 4 years ago
Dmitry Maksyoma 1bd14fe881 Update xstartup modification documentation in README 4 years ago
Dmitry Maksyoma 8deac5cfa7 Easy start script: add -select-de to README 4 years ago
Dmitry Maksyoma ba942e102e Easy start script: remove obsolete code 4 years ago
Dmitry Maksyoma c4cc856e56 Revert "vncserver: add magic text to signify that the file can be replaced"
This reverts commit b8fd6a28a4.
4 years ago
Dmitry Maksyoma 7d842fe3d2 Easy start script: warn xstartup will be overwritten 4 years ago
Dmitry Maksyoma 7c4896ac66 Easy start script: refactor 4 years ago
Dmitry Maksyoma 24336b236a Early start script: add -select-de support 4 years ago
Dmitry Maksyoma 8a11d171d5 Easy start script: fail if unsupported option is given 4 years ago
Dmitry Maksyoma 892c285963 Easy start script: refactor and correct option processing 4 years ago
Dmitry Maksyoma 26cc3845b0 Easy start script: sort DEs presented to user 4 years ago
Dmitry Maksyoma f046e3340c Easy start script: remember DE choice 4 years ago
Dmitry Maksyoma bd144b71bf Easy start script: add manual xstartup choice 4 years ago
Dmitry Maksyoma 66d999beaf Refactor easy start script 4 years ago
Dmitry Maksyoma 3584d8c3cb Refactor easy start script 4 years ago
Dmitry Maksyoma f8bcfcc493 Easy start script: add did_user_forbid_replacing_xstartup() 4 years ago
Dmitry Maksyoma 22654f7ab6 Easy start script: handle incorrect DE number selection 4 years ago
Dmitry Maksyoma 33327c1159 Easy start script: can choose DE and run it via xstartup 4 years ago
Dmitry Maksyoma aeec23bd68 test-deb: add temporary volume of . 4 years ago
Dmitry Maksyoma 34a389f714 Add temporary DE installations to Buster dockerfile 4 years ago
Dmitry Maksyoma b8fd6a28a4 vncserver: add magic text to signify that the file can be replaced 4 years ago
Dmitry Maksyoma 240b1342fd Easy start script: DE -> Desktop Environment 4 years ago
Dmitry Maksyoma 640a195e3e Easy start script: choose DE to run spike 4 years ago

@ -0,0 +1,15 @@
[[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

@ -0,0 +1,136 @@
{
"_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": {}
}

@ -44,28 +44,28 @@ Future Goals:
```sh ```sh
wget -qO- https://github.com/kasmtech/KasmVNC/releases/download/v0.9.1-beta/kasmvncserver_0.9.1~beta-1_amd64.deb wget -qO- https://github.com/kasmtech/KasmVNC/releases/download/v0.9.1-beta/kasmvncserver_0.9.1~beta-1_amd64.deb
sudo dpkg -i kasmvncserver_0.9.1~beta-1_amd64.deb sudo apt-get install ./kasmvncserver_0.9.1~beta-1_amd64.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
# Create ~/.vnc directory and corresponding files. # Run KasmVNC on display :10 and on interface 0.0.0.0:
kasmvncserver-easy-start -d && kasmvncserver-easy-start -kill KASMVNC_OPTIONS=':10 -depth 24 -geometry 1280x1050
-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
# Modify vncstartup to launch your environment of choice, in this example LXDE # On the first run, vncserver will ask you to create a KasmVNC user and choose a desktop
# This may be optional depending on your system configuration # environment you want to run. It can detect Cinnamon, Mate, LXDE, KDE, Gnome,
echo '/usr/bin/lxsession -s LXDE &' >> ~/.vnc/xstartup # XFCE. You can also choose to manually edit 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
# Start KasmVNC with debug logging: # You can select a specific Desktop Environment like this:
kasmvncserver-easy-start -d vncserver $KASMVNC_OPTIONS -select-de mate
# 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 a running KasmVNC: To stop the KasmVNC you started earlier on display 10:
```sh ```sh
kasmvncserver-easy-start -kill vncserver -kill :10
``` ```
The options for vncserver: The options for vncserver:

@ -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 https://www.x.org/archive/individual/xserver/xorg-server-${XORG_VER}.tar.bz2 wget --no-check-certificate 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

@ -34,6 +34,14 @@ 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

@ -0,0 +1,50 @@
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 purge -y pm-utils xscreensaver*
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 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 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"]

@ -0,0 +1,50 @@
#!/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,43 +4,8 @@ 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 $log_option -interface $interface -httpd /usr/share/kasmvnc/www

@ -0,0 +1,258 @@
#!/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,9 +61,6 @@ 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
@ -86,10 +83,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="-log *:stderr:100" [ -n "$KASMVNC_VERBOSE_LOGGING" ] && verbose_logging_option="-debug"
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 -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 -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
PID_SUN=$! PID_SUN=$!

@ -0,0 +1,15 @@
#!/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.1~beta Version: 0.9.3~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 Requires: xorg-x11-xauth, xorg-x11-xkb-utils, xkeyboard-config, xorg-x11-server-utils, openssl, perl, perl-Switch
Conflicts: tigervnc-server, tigervnc-server-minimal Conflicts: tigervnc-server, tigervnc-server-minimal
%description %description
@ -48,11 +48,12 @@ 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/share/doc/kasmvncserver $DESTDIR/usr/lib
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 \
@ -66,6 +67,7 @@ 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

@ -11,11 +11,12 @@ 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/share/doc/kasmvncserver $(DESTDIR)/usr/lib
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

@ -1,3 +1,9 @@
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.

2
debian/control vendored

@ -12,7 +12,7 @@ Homepage: https://github.com/kasmtech/KasmVNC
Package: kasmvncserver Package: kasmvncserver
Architecture: amd64 Architecture: amd64
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 x11-xkb-utils, xkb-data, procps, libswitch-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

@ -1 +1 @@
Subproject commit ba40cacce068fa35fc706c41605db14c04348170 Subproject commit f9f5b01cc23f3084f83ccf15c144de130b8b3222

@ -50,6 +50,8 @@ 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

@ -0,0 +1,3 @@
#!/bin/bash
pipenv run mamba spec/*

@ -0,0 +1,189 @@
import os
import sys
import pexpect
import shutil
import subprocess
from path import Path
from mamba import description, context, it, fit, before, after
from expects import expect, equal
# 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.
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
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')

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save