Commit Graph

525 Commits

Author SHA1 Message Date
mattmcclaskey d1419f9430
KASM-4146 check browser support for webrtc 2023-03-20 15:25:32 -04:00
Matt McClaskey 4a9d5cebb4
KASM-4039 Limit clipboard checks only after a focus change (#59)
* limit clipboard checks only after a focus change

---------

Co-authored-by: mattmcclaskey <matt@kasmweb.com>
2023-03-02 07:53:10 -05:00
Matt McClaskey d83f94c886
Transparent Rect Type (#58)
* implement new transparent rect encoding
* implement a max frame hold time
---------

Co-authored-by: Lauri Kasanen <cand@gmx.com>
Co-authored-by: mattmcclaskey <matt@kasmweb.com>
2023-03-01 11:18:59 -05:00
Ryan Kuba d177cd0c51
KASM-3972 use an array of known scaling values to produce pixel perfect output (#54)
* KASM-3972 use an array of known scaling values to produce pixel perfect output

* KASM-3972 drop automatic pixel perfect support to only 1.25 and 1.5 ratios common to Windows installations

* KASM-3972 change setting name and commit html changes

---------

Co-authored-by: ryan.kuba <ryan.kuba@kasmweb.com>
2023-02-23 16:01:35 -05:00
Mariusz Marciniak 31b1a93335
KASM-3744 Fix copy/paste for files and folders (#53) 2023-01-10 08:26:53 -05:00
j-travis 8e5c0e977f
Feature/kasm 3314 kasmvnc controls (#45)
* KASM-3314 Support for changing framerate / resolution / scaling via
iframe message
2022-11-17 14:21:27 -05:00
Matt McClaskey 2f01048bc6
KASM-3574 worker cleanup (#49)
* KASM-3574 worker cleanup

Co-authored-by: mattmcclaskey <matt@kasmweb.com>
2022-11-15 12:15:40 -05:00
Ryan Kuba 34305e9956
KASM-3535 code to disable workers on jpeg quality change more qoi threads (#47)
Added more QOI worker threads
2022-11-14 07:09:10 -05:00
Matt McClaskey 437830d497
Feature/kasm 3380 udp frame (#46)
* Handle the frame id in udp packets

* refactor udp message buffer, add frame_id and rect cnt

* refactor udp to work with new display.js

* additional debug metrics, clear frame buffer on transitions tcp/udp

* fix udp with display refactor, KASM-3541 cancelAnimationFrame

Co-authored-by: Lauri Kasanen <cand@gmx.com>
Co-authored-by: mattmcclaskey <matt@kasmweb.com>
2022-11-11 09:31:16 -05:00
Matt McClaskey 3a6a63cde3
KASM-3102 Allow setting the idle timeout (#41)
refactor idle timeout to use date diff
2022-11-11 09:29:52 -05:00
Ryan Kuba c5350ba2d7
KASM-3521 need to support relative pathing for the qoi workers (#44)
KASM-3521 need to support relative pathing for the qoi workers
2022-11-04 15:40:41 -04:00
Anthony Merrill a97fa93d84
Bug/kasm 3355 multibyte issue (#42)
Fix clipboard server to client decoding of multi-byte characters
2022-11-04 07:13:19 -04:00
Matt McClaskey 9f240fc7b1
Major refactor of display class, support for QOI (#43)
* Major refactor of display.js queue to assume async rect processing in order to accommodate threaded decode or udp

* QOI lossless decoder on worker threads using WASM

* rfb.js class to provide frame_id and rect counts per frame

Co-authored-by: ryan.kuba <ryan.kuba@kasmweb.com>
Co-authored-by: matt <matt@kasmweb.com>
2022-11-02 07:01:54 -04:00
Matt McClaskey 9a95983382
KASM-3367 Refactor display.js, direct to visible canvas (#40)
* refactor display.js, remove non-visible canvas and concept of damage

* tweaks to UDP transitions

* Update testing readme

Co-authored-by: matt <matt@kasmweb.com>
Co-authored-by: matt mcclaskey <matt@kamsweb.com>
2022-10-14 15:07:57 -04:00
Dmitry Maksyoma 26c97c1dd3
Feature/kasm 2346 extend mouse buttons (#39)
* Extend mouse event button mask to 16 bits

* Mouse button mapping (JS -> Xorg) support

* Refactor: extract XVNC_BUTTONS

* Refactor: XVNC_BUTTONS numbers correspond to X button numbers

* Refactor

Co-authored-by: Lauri Kasanen <cand@gmx.com>
2022-10-14 12:52:19 -04:00
Matt McClaskey cac1f25ce4
Base64opt (#38)
* Add a faster base64 encoder
2022-10-11 15:56:53 -04:00
Matt McClaskey acb64b01b3
Fix send clipboard seamless client to server (#34)
Co-authored-by: mmcclaskey <matt@kasmweb.com>
2022-09-16 14:35:53 -04:00
Matt McClaskey 842d7ad938
added udp toggle in UI, added err handling (#33)
Co-authored-by: Matt McClaskey <matt@kasmweb.com>
2022-09-07 05:40:29 -04:00
Matt McClaskey 5a8d8f24b4
Udp Initial MVP (#32)
* Initial UDP code

* refactored UDP reassembly

* WIP Added udp decoder

* WIP cleanup

* Port multiplexing

* UDP upgrade/downgrade

* UDP packets now have a hash

* Correct udp.js this.numColors bug

* auto upgrade to udp

* re-apply webpack

* Code cleanup, optimize clearing udpBuffer

Co-authored-by: Lauri Kasanen <cand@gmx.com>
Co-authored-by: matt <matt@kasmweb.com>
2022-07-29 12:38:55 -04:00
Matt McClaskey 1753425874
Pointer lock api (#29)
Add pointer lock and relative cursor position support. Game mode enables both pointer lock and relative cursor positions.
2022-05-03 10:37:22 -04:00
Matt McClaskey 6c708d8254
Feature/kasm 2445 clipboard ids (#28)
Adds IDs to clipboard operations for use in DLP, logging, and general attribution.
2022-04-05 08:56:54 -04:00
Matt McClaskey 385a1f99b4
Feature/kasm 2335 ime support 2 (#27)
IME support, refactored keyboard input
2022-03-25 15:03:19 -04:00
Matt McClaskey df9c9d0d96
Bugfix/kasm 2242 clipboard sync (#26)
* KASM-2242 clipboard behavior correction

* remove clipboard length check

Co-authored-by: matt <matt@kasmweb.com>
2022-01-31 09:39:19 -05:00
mmcclaskey ad1fc1f06d
KASM-2152 fps added to stats (#25)
Co-authored-by: matt <matt@kasmweb.com>
2022-01-11 15:31:39 -05:00
j-travis 9383783efd
Merge pull request #24 from kasmtech/bugfix/KASM-2108_mobile_ipc
KASM-2108 Update Kasm<->noVNC communication for mobile related features
2021-11-15 20:08:54 -05:00
Mariusz Marciniak c20db143a0 KASM-2108 Update Kasm<->noVNC communication for mobile related features 2021-11-15 13:53:58 +00:00
mmcclaskey ce2cd26277
Bugfx/kasm 2090 resizing issues (#23)
* KASM-2090 work around for incomplete webp images when there are lots of concurrent users on a single session. Unknown root cause, work around will in most cases keep the connection alive.
2021-11-15 08:19:19 -05:00
Mariusz Marciniak a8a3651898 KASM-2001 Add keyboard controls panel 2021-11-08 21:22:39 +00:00
mmcclaskey 2faf2049c2
Bugfix/kasm 2053 video quality (#19)
* KASM-2053 Fixes previous issues where there was no difference between medium and high
* Expands quality settings to adjust more rendering settings
* Adds an extreme quality setting and custom
* Adds the quality setting to the noVNC control panel, was previously only exposed in the backend for integration with Kasm Workspaces
* Switching quality settings no longer requires reconnecting.
2021-11-08 12:57:24 -05:00
mmcclaskey e11e76e2c7
Feature/kasm 2041 mobile scaling (#20)
* KASM-2041 auto scale high res mobile - Browsers typically set a scale ratio for high resolution screens, so everything isn't tiny. This mostly works well, but results in a super low resolution for the remote display. This feature detects low resolutions where the browser is doing scaling and adjusts the scale backwards to reach a more reasonable resolution. This typically only happens on modern phones.
2021-11-08 12:55:37 -05:00
Mariusz Marciniak 66c5812b4e KASM-2034 Unlock mobile audio playing on first mobile touch event 2021-11-03 12:27:01 +00:00
matt a36f941493 fix Edge 18 and under clipboard 2021-10-15 19:34:01 +00:00
matt 37c41c60f6 Fixes for older Chrome browsers 2021-10-14 17:33:03 +00:00
matt 0bd7bf8b3e rebase from master 2021-10-12 18:36:43 +00:00
matt f8fde81dfb WIP: cleanup code 2021-10-12 14:11:26 +00:00
matt f3418af9b7 WIP: fix recieving large binary cliipboard 2021-10-08 15:08:12 +00:00
Mariusz Marciniak d20e5d78fa KASM-1968 Add support for CMD+click on MacOs 2021-10-07 12:05:45 +02:00
Mariusz Marciniak 66cc16a894 KASM-1980 Add support for CMD right + key shortcuts on MacOs 2021-10-07 12:04:33 +02:00
Mariusz Marciniak fff810d45a KASM-1871 Add smooth scrolling by sending scroll delta directly 2021-10-07 11:58:46 +02:00
Mariusz Marciniak 09707e9820 KASM-1882 Improved pinch&zoom responsiveness 2021-10-07 11:58:46 +02:00
Mariusz Marciniak f509f5231a KASM-1890 Add MacOS shortcut translation 2021-10-07 11:58:46 +02:00
matt 8842f372b8 WIP, firefox support 2021-10-01 19:02:51 +00:00
matt c533d18ac7 Merge branch 'master' into chromeclip 2021-10-01 09:03:09 +00:00
matt e7c601efc0 clipboard WIP 2021-10-01 09:03:03 +00:00
matt 34bfdddab5 KASM-1947 binary clipboard WIP 2021-09-23 08:39:37 +00:00
matt 141f91fde5 KASM-1947 WIP 2021-09-21 09:38:34 +00:00
matt 3c477925f3 KASM-1947 send png WIP 2021-09-17 13:47:11 +00:00
matt f165845c2d KASM-1947 binary clipboard WIP 2021-09-16 19:16:49 +00:00
Lauri Kasanen effc0eee02 Initial binary clipboard support 2021-09-16 15:32:26 +03:00
matt a0907e9390 KASM-1834 added new anti-aliasing feature 2021-09-12 17:53:03 +00:00
mmcclaskey 6b283b2313
Update display.js 2021-09-10 13:41:03 -04:00
matt 4c8e8ef1e1 KASM-1834 disable anti-aliasing when screen ratio is 1:1 2021-09-10 17:31:44 +00:00
matt a814f0594f KASM-1834 high dpi screens blurry 2021-09-09 11:34:39 +00:00
Mariusz Marciniak ace35fa652 KASM-1882 MacOs pinch and zoom 2021-08-31 10:39:47 +02:00
Mariusz Marciniak 8453916f9c KASM-1881 Add MacOs cmd+wheel zoom support 2021-08-30 21:28:13 +02:00
mmcclaskey 519a40213b
Merge pull request #6 from kasmtech/apistats
Apistats
2021-08-05 11:01:03 -04:00
matt 30326f7c11 KASM-1834 expose quality settings 2021-08-02 17:13:01 +00:00
matt d7d748e05a fixed time tracking 2021-07-30 17:07:44 +00:00
Lauri Kasanen f9f5b01cc2 Initial frame stat tracking 2021-07-27 15:28:02 +03:00
Kasm c02aca5c13
restoring behavior of KasmVNC 2021-04-22 08:37:43 -04:00
Kasm 94c67f501f
Remove istouch variable 2021-04-21 20:04:25 -04:00
Kasm 10a7fcb91d
Merge pull request #3 from kasmtech/bug_fixes
Fix auto size on low quality setting
2021-04-20 09:31:46 -04:00
matt ed0744497d fix for video mode resizing 2021-04-18 06:36:53 -04:00
matt 1a823c85d9 various bug fixes 2021-04-11 18:33:30 +00:00
matt be658061e8 Fixes 2021-03-30 16:40:32 -04:00
matt f1d7df548a KasmVNC changes merged manually 2021-03-30 15:03:34 -04:00
lhchavez f9a8c4ccd5 Add VeNCrypt Plain authentication tests
This change adds tests for the VeNCrypt Plain authentication. In doing
that, this also fixes a typo that was introduced in a recent change.
2021-03-13 05:40:38 -08:00
Pierre Ossman 9ca337d3a8 Merge branch 'homogenize-credentials-testing' of https://github.com/lhchavez/noVNC 2021-03-11 16:47:35 +01:00
Pierre Ossman 4c96d4b7bd Merge branch 'feature/support-existing-rtcdatachannel-or-websocket-squashed' of https://github.com/TimSBSquare/noVNC 2021-03-11 16:30:22 +01:00
lhchavez 0c55c64757 Normalize the credentials presence check
Most places that check for the presence / absence of credentials compare
them against `undefined`, except the one for Plain authentication.

This change makes the very last place to use the same pattern (instead
of checking for falsiness) for consistency. Additionally, there are ways
to configure PAM to accept empty passwords, so it's possible for a user
to legitimately send an empty string as password.
2021-03-11 06:42:11 -08:00
Tim Stableford 44d384b99c Added support for RTCDataChannel
This work is originally by Ryan Castner <castner.rr@gmail.com> and
submitted as a PR here https://github.com/novnc/noVNC/pull/1362

Architecturally it is much the same except it doesn't rename a lot
of variables to make this more reviewable. It also avoids unrelated
changes such as replacing .onclose with an event listener, which
caused numerous test failures.

It also adds in ppoffice's fix to initialise the buffers.

Like the original author I don't have enough time available to
refactor this project to the new style event listeners.

Review cleanup for RTCDataChannel support (see below)

* More descriptive error when url or channel not set.
* Moved websocket property check to WebSock.
  This had unintended consequences in the tests that required some
  fixup. Mostly due to some tests not always passing FakeWebsocket.
  FakeWebsocket also needs to set the listeners to null to be compatible
  with what is in thw browser and expected by the property check code.
  The property check code now also takes into account class prototypes
  for test compatibility.
* Removed unreachable code.
* Reverted comment.
* Cleanup raw channel reference in rfb on websock close.
* Use readyState to check whether a socket is open rather than assuming.
* Updated RFB constructor documentation

Removed an unused boolean passed to attach
2021-03-04 18:55:06 +00:00
lhchavez 18593154d3 Allow longer passwords in Plain authentication
Some people have longer passwords than 256 characters (hooray for
password managers!). Server implementations also allow longer passwords:
TigerVNC allows up to 1024 characters.
2021-03-03 17:34:02 -08:00
Quentin Dreyer 6784bb312f
chore: sync with W3C documentation
https://www.w3.org/TR/uievents-key/
2020-12-22 10:50:23 +01:00
Pierre Ossman 0cdf2962c0 Fake key releases for some Japanese IM keys
Windows behaves very oddly for some Japanese IM keys in that it won't
send a key release event when the key is released. In some keys it never
sends the event, and in some cases it sends the release as the key is
pressed the subsequent time.
2020-12-10 10:21:21 +01:00
Pierre Ossman 146258291a Send combination keysyms for some Japanese keys
Windows doesn't give us stable symbols for a bunch of Japanese IM keys,
instead alternating between two symbols. This state is not synchronised
with the IM running on the remote server so to have stable behaviour we
have to collapse these multiple symbols in to a single keysym.
2020-12-10 10:00:44 +01:00
Pierre Ossman 3e55d5d71a Fix typo for ZenkakuHankaku key 2020-12-10 09:43:08 +01:00
Pierre Ossman bd1bb2ed75 Use toggle keysym for Eisu key
This matches how the key behaves on a Linux system.
2020-12-10 09:42:19 +01:00
Pierre Ossman dc9da4a042 Merge branch 'noie' of https://github.com/CendioOssman/noVNC 2020-12-07 14:30:05 +01:00
Pierre Ossman 6a4c411976 Remove createEvent() fallbacks
We can now rely on proper constructors for our events.
2020-12-07 10:10:53 +01:00
Pierre Ossman 27496941a0 Remove createImageData() fallback
All our browsers should be new enough now that we can rely on the
ImageData constructor.
2020-12-07 10:10:53 +01:00
Pierre Ossman 5b5b747494 Remove many small, obsolete, old browser hacks
These are for browsers no longer supported anyway.
2020-12-07 10:10:53 +01:00
Pierre Ossman 60c7518f8c Update keycode mappings to latest version
This update fixes Korean layouts.
2020-11-16 13:44:27 +01:00
Pierre Ossman 1f7e1c7572 Remove keypress handling
We no longer support any browser that requires this legacy handling.
2020-10-15 18:53:51 +02:00
Pierre Ossman dccf6facdc Drop support for legacy Edge 2020-10-15 18:53:51 +02:00
Pierre Ossman c01eb5e74d Drop support for Internet Explorer 2020-10-15 18:53:51 +02:00
Pierre Ossman 20e4f1b3f8 Remove Firefox Alt workaround
The bug got fixed way back in Firefox 63, and it is also misbehaving
with modern Firefox as they no longer consider AltGr an Alt-key.
2020-09-28 11:12:16 +02:00
Pierre Ossman b91b1e8edc Handle empty rects in RAW decoder as well
It was overlooked in the previous commit because we couldn't feed
empty data messages through the test framework.
2020-09-07 12:58:52 +02:00
Pierre Ossman 113fa27ebc Handle empty rects from the server
These are very pointless for the server to send, but not a violation of
the protocol so we need to be able to handle them. We've seen this
happen in real world scenarios a few times.
2020-09-04 16:16:44 +02:00
Pierre Ossman 0630352e19 Merge branch 'rgbx' of https://github.com/CendioOssman/noVNC 2020-09-04 13:40:23 +02:00
Pierre Ossman 484a9551d1 Handle quick Cursor detach after mouse up
This timer might fire after the Cursor object has detached from a DOM
element, causing crashes. This will likely not happen in real scenarios,
but the tests are quick enough to trigger this.
2020-06-25 14:37:21 +02:00
Pierre Ossman 57ba67f306 Alway focus on touchstart
The new gesture detection code will always prevent the default behaviour
of touchstart, so this check no longer works properly. We might want to
add something similar to GestureHandler in the future, but let's wait
and see what use cases are requested.
2020-06-16 15:32:38 +02:00
Pierre Ossman 48f15efa69 Compensate for visual viewport when moving cursor 2020-06-16 14:24:00 +02:00
Samuel Mannehed 32ed7c6724 Fake cursor position when using touch
With the new gestures we will simulate the cursor being in a different
location than any of the touch points. This is a bit too complex for the
Cursor class, so let's just explicitly tell it where we want the cursor
rendered.
2020-06-12 14:36:10 +02:00
Pierre Ossman 50cde2faab Move mouse event handling to RFB class
Move the last remaining bits to the RFB class to keep things simple, as
the Mouse class no longer provides any real value.
2020-06-12 14:36:10 +02:00
Pierre Ossman 88589a44f7 Increase wheel step threshold
The previous value made the detection too sensitive and it was very
difficult to scroll precisely. A value of 50 pixels should give similar
behaviour to systems that don't do fine grained scrolling.
2020-06-12 09:18:46 +02:00
Pierre Ossman f84bc57bda Move wheel event handling to RFB class
The Mouse class does very little now so it mostly just obfuscate things.
Move everything directly in to the RFB class instead.
2020-06-12 09:18:46 +02:00
Pierre Ossman 4a87038080 Remove very legacy mouse event handling
This is only needed on such ancient versions of Internet Explorer that
it wouldn't satisfy our other requirements anyway.
2020-06-12 09:18:46 +02:00
Pierre Ossman 77c32d164d Remove delayed wheel timer
This isn't really expected behaviour from a user, i.e. that an extremely
small wheel movement still gives a large scroll event in the remote application.
2020-06-12 09:18:46 +02:00
Pierre Ossman 8be924c9d9 Add touch gestures for mouse emulation
Add several single and multitouch gestures to simulate various mouse
actions that would otherwise be impossible to perform.

This replaces the old system where you could select which mouse button
a single touch would generate.
2020-06-12 09:18:46 +02:00
Pierre Ossman 97b86abc94 Avoid fractional pixel sizes from Display 2020-06-11 16:50:08 +02:00