Compare commits
233 Commits
master
...
KASM-1810_
Author | SHA1 | Date |
---|---|---|
![]() |
d94b30c2fa | 4 years ago |
![]() |
8e040e58a1 | 4 years ago |
![]() |
c0229f8470 | 4 years ago |
![]() |
dcccd1d1f2 | 4 years ago |
![]() |
c2f302cdc6 | 4 years ago |
![]() |
becfa90a2c | 4 years ago |
![]() |
e5233f27bd | 4 years ago |
![]() |
377269129c | 4 years ago |
![]() |
8ea6704fcd | 4 years ago |
![]() |
a9888b9ca7 | 4 years ago |
![]() |
71b3515d6c | 4 years ago |
![]() |
b1ee23dc62 | 4 years ago |
![]() |
a675f411cc | 4 years ago |
![]() |
35e0157431 | 4 years ago |
![]() |
6fa5b9271f | 4 years ago |
![]() |
e4ad356c7d | 4 years ago |
![]() |
f79c3b3b11 | 4 years ago |
![]() |
8e96d4cac5 | 4 years ago |
![]() |
ab4642aa87 | 4 years ago |
![]() |
7ad6810d7f | 4 years ago |
![]() |
42021dd29a | 4 years ago |
![]() |
11d3958702 | 4 years ago |
![]() |
27f0ed29ca | 4 years ago |
![]() |
628033af45 | 4 years ago |
![]() |
3fac7c4947 | 4 years ago |
![]() |
2ecf9a25ed | 4 years ago |
![]() |
a4a8d3aad5 | 4 years ago |
![]() |
d6132154fb | 4 years ago |
![]() |
219e2c5cb1 | 4 years ago |
![]() |
7cced9dd05 | 4 years ago |
![]() |
f3681c87f9 | 4 years ago |
![]() |
303fde284e | 4 years ago |
![]() |
8cd49ebbf8 | 4 years ago |
![]() |
bc2e2512e3 | 4 years ago |
![]() |
aefbb4d143 | 4 years ago |
![]() |
b34fe08786 | 4 years ago |
![]() |
ee3b7f9aa5 | 4 years ago |
![]() |
f7254e9708 | 4 years ago |
![]() |
e3a41bc055 | 4 years ago |
![]() |
1bda8ab452 | 4 years ago |
![]() |
02ef620f67 | 4 years ago |
![]() |
e453c7d73b | 4 years ago |
![]() |
ca42870585 | 4 years ago |
![]() |
0b53e9f0a6 | 4 years ago |
![]() |
3f69b7bd33 | 4 years ago |
![]() |
4cb75459ed | 4 years ago |
![]() |
8a424a0463 | 4 years ago |
![]() |
a9d85aa99b | 4 years ago |
![]() |
cca1dabb71 | 4 years ago |
![]() |
183917d046 | 4 years ago |
![]() |
a31601de9a | 4 years ago |
![]() |
e21366cc7b | 4 years ago |
![]() |
76a5b18748 | 4 years ago |
![]() |
04379056af | 4 years ago |
![]() |
49908e1867 | 4 years ago |
![]() |
df4a5ac910 | 4 years ago |
![]() |
606075ddc0 | 4 years ago |
![]() |
17fa6911c1 | 4 years ago |
![]() |
5f7d3ad43a | 4 years ago |
![]() |
f857d47ccf | 4 years ago |
![]() |
3b3c8d0881 | 4 years ago |
![]() |
fe3569c6e8 | 4 years ago |
![]() |
90d9cbe65b | 4 years ago |
![]() |
f0e63b2e3d | 4 years ago |
![]() |
b5eaf71248 | 4 years ago |
![]() |
e643cf4115 | 4 years ago |
![]() |
df35fadc9b | 4 years ago |
![]() |
a27ad89677 | 4 years ago |
![]() |
04e93956b5 | 4 years ago |
![]() |
5de1b80ca7 | 4 years ago |
![]() |
d3e209c9ba | 4 years ago |
![]() |
ff8ab63aab | 4 years ago |
![]() |
a51444257a | 4 years ago |
![]() |
e23e5cc63b | 4 years ago |
![]() |
043438e2e0 | 4 years ago |
![]() |
8152596519 | 4 years ago |
![]() |
fe2bd6c6d6 | 4 years ago |
![]() |
5d0e8b1b03 | 4 years ago |
![]() |
9faf87389f | 4 years ago |
![]() |
ec948ab20f | 4 years ago |
![]() |
2fa381a3fe | 4 years ago |
![]() |
9161015aca | 4 years ago |
![]() |
3fe52a84ba | 4 years ago |
![]() |
0c26c4cb85 | 4 years ago |
![]() |
177da18fc8 | 4 years ago |
![]() |
0b495fd3f9 | 4 years ago |
![]() |
0011fa6afd | 4 years ago |
![]() |
ed78c9dcc5 | 4 years ago |
![]() |
dca392eafd | 4 years ago |
![]() |
28c06893e3 | 4 years ago |
![]() |
0f23baa647 | 4 years ago |
![]() |
d1f0d6f7e7 | 4 years ago |
![]() |
d522457723 | 4 years ago |
![]() |
d8bbb9884d | 4 years ago |
![]() |
7cb1ea9ebc | 4 years ago |
![]() |
dbd54fe35c | 4 years ago |
![]() |
6287114cbf | 4 years ago |
![]() |
f999acc490 | 4 years ago |
![]() |
71c420fc86 | 4 years ago |
![]() |
f766c3a8c0 | 4 years ago |
![]() |
c96d38bbe5 | 4 years ago |
![]() |
c2a5876127 | 4 years ago |
![]() |
64c190e2bb | 4 years ago |
![]() |
4ed2c57ce3 | 4 years ago |
![]() |
3a528b94e6 | 4 years ago |
![]() |
fbdda196b8 | 4 years ago |
![]() |
75b42e4f3f | 4 years ago |
![]() |
003958dd9f | 4 years ago |
![]() |
69a9ba66cd | 4 years ago |
![]() |
279e91dcb1 | 4 years ago |
![]() |
102d9b9a6c | 4 years ago |
![]() |
3eb1ffd94b | 4 years ago |
![]() |
551f292144 | 4 years ago |
![]() |
36ffbe1572 | 4 years ago |
![]() |
c775f7198b | 4 years ago |
![]() |
0fa98100f8 | 4 years ago |
![]() |
b0ffc6a27e | 4 years ago |
![]() |
fa7b3492da | 4 years ago |
![]() |
4a4e1d65b8 | 4 years ago |
![]() |
cb08058d34 | 4 years ago |
![]() |
b4612d548f | 4 years ago |
![]() |
d0fe229684 | 4 years ago |
![]() |
ded3840f6b | 4 years ago |
![]() |
c6f7d2eff0 | 4 years ago |
![]() |
7e854294a2 | 4 years ago |
![]() |
5635096978 | 4 years ago |
![]() |
34565c5950 | 4 years ago |
![]() |
3522000d1f | 4 years ago |
![]() |
3f23bddb6b | 4 years ago |
![]() |
b350557afd | 4 years ago |
![]() |
7dc12ccb8a | 4 years ago |
![]() |
f187aa9540 | 4 years ago |
![]() |
79a21347f1 | 4 years ago |
![]() |
0c1423f0b1 | 4 years ago |
![]() |
1e21e09754 | 4 years ago |
![]() |
6e0d272946 | 4 years ago |
![]() |
c64e83732d | 4 years ago |
![]() |
acb9793841 | 4 years ago |
![]() |
9a6ea64e0f | 4 years ago |
![]() |
68554d84d6 | 4 years ago |
![]() |
ac51bd1d57 | 4 years ago |
![]() |
3ef297a7cd | 4 years ago |
![]() |
0ca46888a0 | 4 years ago |
![]() |
8ca36e349e | 4 years ago |
![]() |
cc90fe9ff6 | 4 years ago |
![]() |
2b4f01f5ae | 4 years ago |
![]() |
65f957695e | 4 years ago |
![]() |
06e9e92ee1 | 4 years ago |
![]() |
13f4ce0fba | 4 years ago |
![]() |
349a33e402 | 4 years ago |
![]() |
a44241971e | 4 years ago |
![]() |
b26a20d44d | 4 years ago |
![]() |
f15aae2db8 | 4 years ago |
![]() |
895f8bc10d | 4 years ago |
![]() |
649868241c | 4 years ago |
![]() |
8a3cf76f82 | 4 years ago |
![]() |
cfac63aec5 | 4 years ago |
![]() |
59f990b372 | 4 years ago |
![]() |
aa5fd48852 | 4 years ago |
![]() |
a2a748a582 | 4 years ago |
![]() |
5f3fcddcde | 4 years ago |
![]() |
fa4308c542 | 4 years ago |
![]() |
db2901e673 | 4 years ago |
![]() |
a0f09dea15 | 4 years ago |
![]() |
21b42e462b | 4 years ago |
![]() |
27f7f823fe | 4 years ago |
![]() |
93d2c6c716 | 4 years ago |
![]() |
fa342f624f | 4 years ago |
![]() |
a6e9f94e27 | 4 years ago |
![]() |
ffb88ee8e6 | 4 years ago |
![]() |
c99d82fd8b | 4 years ago |
![]() |
69a2f9a13b | 4 years ago |
![]() |
08ede14dfe | 4 years ago |
![]() |
79c9c7157b | 4 years ago |
![]() |
8f58d9bc92 | 4 years ago |
![]() |
7ee1522143 | 4 years ago |
![]() |
df5d3e506d | 4 years ago |
![]() |
7954cc506c | 4 years ago |
![]() |
84764bac80 | 4 years ago |
![]() |
bc54f75226 | 4 years ago |
![]() |
42eadfe784 | 4 years ago |
![]() |
1bea4d0a41 | 4 years ago |
![]() |
6181c249d7 | 4 years ago |
![]() |
4a63e93582 | 4 years ago |
![]() |
f6667e99be | 4 years ago |
![]() |
d6fa4b55d7 | 4 years ago |
![]() |
dc1850f1e7 | 4 years ago |
![]() |
a6b3eb1f24 | 4 years ago |
![]() |
efbf401c8e | 4 years ago |
![]() |
c79da47c21 | 4 years ago |
![]() |
55525a627b | 4 years ago |
![]() |
c435e6ba7d | 4 years ago |
![]() |
59d53dbb19 | 4 years ago |
![]() |
8da1612d4c | 4 years ago |
![]() |
a560276817 | 4 years ago |
![]() |
2cb5098060 | 4 years ago |
![]() |
ed51231b4e | 4 years ago |
![]() |
f903fd6c9d | 4 years ago |
![]() |
a3b9a96df7 | 4 years ago |
![]() |
5811e14b42 | 4 years ago |
![]() |
fc732f3603 | 4 years ago |
![]() |
b330856d67 | 4 years ago |
![]() |
1165159180 | 4 years ago |
![]() |
25e761326f | 4 years ago |
![]() |
53c545a9ad | 4 years ago |
![]() |
7c28908722 | 4 years ago |
![]() |
6bdcbc32b1 | 4 years ago |
![]() |
fe736c8a2b | 4 years ago |
![]() |
b13698eb56 | 4 years ago |
![]() |
7941e10b0a | 4 years ago |
![]() |
fc1aa63a44 | 4 years ago |
![]() |
1bd14fe881 | 4 years ago |
![]() |
8deac5cfa7 | 4 years ago |
![]() |
ba942e102e | 4 years ago |
![]() |
c4cc856e56 | 4 years ago |
![]() |
7d842fe3d2 | 4 years ago |
![]() |
7c4896ac66 | 4 years ago |
![]() |
24336b236a | 4 years ago |
![]() |
8a11d171d5 | 4 years ago |
![]() |
892c285963 | 4 years ago |
![]() |
26cc3845b0 | 4 years ago |
![]() |
f046e3340c | 4 years ago |
![]() |
bd144b71bf | 4 years ago |
![]() |
66d999beaf | 4 years ago |
![]() |
3584d8c3cb | 4 years ago |
![]() |
f8bcfcc493 | 4 years ago |
![]() |
22654f7ab6 | 4 years ago |
![]() |
33327c1159 | 4 years ago |
![]() |
aeec23bd68 | 4 years ago |
![]() |
34a389f714 | 4 years ago |
![]() |
b8fd6a28a4 | 4 years ago |
![]() |
240b1342fd | 4 years ago |
![]() |
640a195e3e | 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"
|
@ -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": {}
|
||||||
|
}
|
@ -0,0 +1,54 @@
|
|||||||
|
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"]
|
@ -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
|
||||||
|
}
|
@ -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
|
@ -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
|
@ -0,0 +1,12 @@
|
|||||||
|
#!/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
|
@ -0,0 +1,70 @@
|
|||||||
|
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
|
@ -0,0 +1,125 @@
|
|||||||
|
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')
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
network:
|
||||||
|
ssl:
|
||||||
|
pem_certificate: lol
|
@ -0,0 +1,142 @@
|
|||||||
|
---
|
||||||
|
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
|
Loading…
Reference in New Issue