Pierre Ossman
047531e886
Merge branch 'webcodec-h264' of https://github.com/any1/noVNC
2024-08-29 16:59:25 +02:00
Tomasz Kalisiak
a4465516df
Fix sQpushBytes sending the beginning of the array multiple times
2024-08-23 13:14:36 +02:00
Andri Yngvason
c1bba972f4
Add unit tests for H.264 decoder
2024-08-19 22:08:32 +00:00
Andri Yngvason
d106b7a6bb
Add H.264 decoder
...
This adds an H.264 decoder based on WebCodecs.
2024-08-18 14:06:25 +00:00
Mark Peek
c6c8e5e513
Add Zlib encoding
2024-08-16 09:12:43 -07:00
leedagee
6c07136169
Interrupt AltGr sequence detection on focus lost, fixes #1880
2024-08-01 01:31:47 +08:00
Jiang XueQian
c187b2e5e0
Implement gradient filter of tight decoder, fixing issue #1767
...
This commit is a basic implementation of the gradient filter required by
qemu `lossy` option.
2024-05-02 20:41:38 +08:00
Kostiantyn Syrykh
9a1b1f0d06
Clipboard: handle multiple CR+LF
2024-03-25 17:35:28 +02:00
Simon Bungartz
bd32922ff8
Avoid exception when cursor was removed from DOM already
2024-01-31 16:16:01 +00:00
Pierre Ossman
48c8e41877
Fix key event debug output
...
Fix for a0b7c0dac5
.
2024-01-23 12:54:18 +01:00
Pierre Ossman
ab2fd41693
Handle broken Oculus browser keyboard events
...
It sets KeyboardEvent.key to "Unidentified" for all non-character keys,
which means we must ignore it and use the legacy handling to figure out
the key pressed.
2024-01-23 12:51:35 +01:00
Pierre Ossman
85a465288b
Merge branch 'qemu_ledstate_pseudo_encoding' of https://github.com/otthou/noVNC
2023-09-29 14:18:02 +02:00
Otto van Houten
a0b7c0dac5
Add QEMU Led Pseudo encoding support
...
Previously, num-lock and caps-lock syncing was performed on a best effort basis by qemu.
Now, the syncing is performed by no-vnc instead. This allows the led state syncing to work
in cases where it previously couldn't, since no-vnc has with this extension knowledge of both
the remote and local capslock and numlock status, which QEMU doesn't have.
2023-09-29 13:58:55 +02:00
Pierre Ossman
370f21b117
Correctly handle legacy security rejections
...
The code comment of this code was entirely incorrect, but the commit
message for 5671072
when it was added was correct. I.e. there is a
result, but not a reason.
Adjust the unit tests to make sure this doesn't regress again.
2023-09-07 14:59:36 +02:00
Pierre Ossman
72f6810797
Correctly handle "none" auth on old servers
...
There is no security result for the "none" authentication until RFB 3.8.
This got broken by mistake in 5671072
.
2023-09-07 14:38:04 +02:00
Pierre Ossman
b40a45a11b
Remove unused argument to inflateInit()
...
There is just one argument to inflateInit(). It is inflateInit2() that
takes two arguments.
Since this argument was never used, let's just remove it and keep the
existing behaviour.
2023-08-29 17:30:00 +02:00
Pierre Ossman
01bb36d431
Use proper argument to deflateInit()
...
This was an accidental copy error from inflator.js. The second argument
to deflateInit() is the compression level, not the window bits.
We have not strong opinions on an appropriate level, so stick to the
default.
2023-08-29 17:28:54 +02:00
Pierre Ossman
ccef89f556
Implicitly flush Websock if needed
...
Callers shouldn't have to deal with the internal buffering limits of
Websock, so implicitly flush the buffer if more room is needed.
2023-06-04 22:32:43 +02:00
Pierre Ossman
f8b65f9fe1
Add Websock send queue helpers
...
Callers shouldn't be poking around directly in to the send queue, but
should use accessor functions like for the read queue.
2023-06-04 22:32:43 +02:00
Pierre Ossman
7356d4e60b
Move WebSocket queue index reset to receive
...
It's more robust to do this just before we need the space, rather than
assume when the queue will be read and adjust things right after.
2023-06-04 22:32:43 +02:00
Pierre Ossman
3fc0cb0cb7
Remove Base64 WebSocket remnants
...
There is no encoding/decoding in modern WebSockets, so let's clean up
some of the old crud that no longer serves a purpose.
2023-06-04 22:32:43 +02:00
Pierre Ossman
45cedea78f
Don't send SetDesktopSize too early
...
We don't know the server layout yet, so we can't preserve the screen id
or flags yet at this point. Move it until after we've parsed everything.
2023-06-04 19:12:02 +02:00
Pierre Ossman
12d2e7832d
Properly decode ExtendedDesktopSize fields
...
We are expected to preserve these and use them in our requests back to
the server. We can't do that if we don't actually decode them correctly.
2023-06-04 19:12:02 +02:00
Pierre Ossman
0ccc679d32
Return unsigned values from rQshift32()
...
This is what we almost always want, and this makes it consistent with
rQshift8() and rQshift16().
2023-06-04 19:12:02 +02:00
Pierre Ossman
d0203a5995
Always return copy of data from socket
...
We don't know how long the caller will hang on to this data, so we need
to be safe by default and assume it will kept indefinitely. That means
we can't return a reference to the internal buffer, as that will get
overwritten with future messages.
We want to avoid unnecessary copying in performance critical code,
though. So allow code to explicitly ask for a shared buffer, assuming
they know the data needs to be consumed immediately.
2023-06-04 19:12:02 +02:00
Pierre Ossman
aaa4eb8c3c
Use proper socket helpers for FBU header
...
Let's not duplicate this stuff when we have convenience functions.
2023-06-04 19:00:33 +02:00
Pierre Ossman
e01dd27be4
Remove Websock implicit read length
...
Callers should be properly aware of how much data they need, as they
need to call rQwait() first to ensure the data is present.
2023-06-04 19:00:33 +02:00
Pierre Ossman
55ffe8fc51
Stop exposing Websock queue length
...
Callers should be using rQwait() to ensure sufficient data is present,
and not poke around in the internal buffering.
2023-06-04 19:00:33 +02:00
Pierre Ossman
0180bc81c1
Stop direct access to socket buffer
...
Use proper accessor functions instead of poking around in internal
buffers.
2023-06-04 19:00:33 +02:00
Pierre Ossman
fb3c8f64e9
Switch Display.flush() to use a promise
...
That is the modern way to handle operations that cannot complete
immediately.
2023-06-04 19:00:33 +02:00
Pierre Ossman
ae9b042df1
Change rQslice() to rQpeekBytes()
...
We don't need any full slice functionality, so let's change this to
better march rQpeek8() and rQshiftBytes().
2023-06-04 19:00:33 +02:00
Pierre Ossman
87143b361e
Reduce kept state in JPEG decoder
...
We don't have to keep track of this much data between rects, so
restructure things to make it more simple. This allows the JPEG parsing
code to be a pure function which only depends on the input.
2023-06-04 19:00:33 +02:00
Pierre Ossman
afbb1da4d5
Remove custom RSA-AES event
...
We shouldn't add extra, undocumented, API just for the tests. They need
to figure out less invasive way to probe things.
2023-05-30 20:11:51 +02:00
Pierre Ossman
775ccaa74c
Handle immediate responses in RSA-AES authentication
...
The event handlers might provide the needed response right away, before
even existing the event handler. We should be prepared to handle this
case.
2023-05-30 20:11:51 +02:00
Pierre Ossman
c2d6a06d6d
Merge branch 'master' of https://github.com/lewayotte/noVNC
2023-05-11 12:20:18 +02:00
Ryo Ota
2a675b3394
fix typo
2023-04-30 02:04:00 +09:00
Lew Ayotte
b16f19f9ce
Set _rfbVeNCryptState = 4 not == 4
2023-04-06 15:00:21 -05:00
pdlan
f974b73137
Cleanup for the cryptographic algorithms that are not supported by SubtleCrypto
2023-01-20 05:54:00 -05:00
Pierre Ossman
12a7c6f0de
Check for Android using userAgent
...
Modern Android systems seem to report "Linux" for navigator.platform, so
we can no longer rely on that.
2022-12-27 12:50:57 +01:00
Pierre Ossman
a187821e4f
Add OS checks for Android and ChromeOS
2022-12-27 12:50:57 +01:00
Pierre Ossman
ee5e3c5fa3
Refine browser detection
...
Try to follow the principle outlined by Mozilla when detecting browsers
and engines.
2022-12-27 12:50:57 +01:00
Pierre Ossman
4a34ee4b1e
Remove navigator check from browser tests
...
This is a fundamental object that should always be present.
2022-12-27 12:50:57 +01:00
Pierre Ossman
262a90b0e0
Consistently use "first" indentation
...
We already enforced this for most things, so let's fix up the last few
variants as well.
2022-12-27 12:50:57 +01:00
Pierre Ossman
7f4a9eebc8
Export clipping state externally
...
So that UI can reflect if it is currently possible to drag the viewport
or not.
2022-12-27 12:50:57 +01:00
Dinglan Peng
b776e1495e
Add MSLogonII security type
2022-12-21 15:52:31 -05:00
Fredrik Kortetjärvi
90f120c139
Added none user select on the cursor
...
This is because, when double-clicking with the trackpad, it will not
highlight the mouse. And this only happened on the iOS but the decision
on adding it a normal user select comes from the other commits that it
looks like it elsewhere.
2022-12-14 13:47:01 +01:00
Pierre Ossman
6eb17b27a0
Correctly mask non-BMP clipboard characters
...
JavaScript strings use UTF-16 encoding under the hood, but we only want
a single '?' per character we replace. So we need to be more careful
which methods we use when iterating over the clipboard string.
2022-10-27 16:24:27 +02:00
Pierre Ossman
6b555f1f74
Mask unsupported clipboard characters
...
Add a more explicit '?' for characters that the clipboard cannot handle,
instead of getting random junk.
2022-10-27 16:03:22 +02:00
Miroslav Šedivý
1971823a4f
auto release keys while meta is held down.
2022-10-15 14:48:39 +02:00
Frederik Fix
edc7520e27
access to raw image data
2022-09-07 13:26:10 +02:00