Andri Yngvason
a02f578f9e
Add base64 encoder & decoder
...
I prefer to have these independent of the crypto suite that's being used.
2023-09-29 21:53:20 +00:00
Andri Yngvason
4705c0cfcc
Implement RSA-AES-256 security type
2023-09-29 21:53:20 +00:00
Andri Yngvason
396f4ed6c5
server: Clean up crypto resources on disconnect
2023-09-29 21:53:20 +00:00
Andri Yngvason
76c832d791
crypto: Make deleting NULL pointers noop
2023-09-29 21:53:20 +00:00
Andri Yngvason
7eb42324bf
server: Define rsa-aes server key length constant
2023-09-29 21:53:20 +00:00
Andri Yngvason
08312c3296
crypto: Add sha256
2023-09-29 21:53:20 +00:00
Andri Yngvason
d004a2fcb9
crypto: Remove unused code
2023-09-29 21:53:20 +00:00
Andri Yngvason
f029484a87
crypto: Add AES256-EAX cipher
2023-09-29 21:53:20 +00:00
Andri Yngvason
c6df99ec46
server: Use hash_{one,many}
2023-09-29 21:53:20 +00:00
Andri Yngvason
d12973486a
crypto: Add helper functions for hashing
2023-09-29 21:53:20 +00:00
Andri Yngvason
9507624cf3
Create dedicated RSA-AES stream
...
The message format isn't really within the domain of the cipher, so it
doesn't belong to the crypto interface.
2023-09-29 21:53:20 +00:00
Andri Yngvason
625323d8a3
stream-ws: Clean up exec-and-send resources
2023-09-29 21:53:20 +00:00
Andri Yngvason
dfc20d065e
stream-ws: Inherit stream-tcp
...
This eliminates the need for implementing all stream functions
2023-09-29 21:53:20 +00:00
Andri Yngvason
f90c628e66
Add temporary api function to enable auth without tls
2023-09-29 21:53:20 +00:00
Andri Yngvason
e341898bbc
Implement RSA-AES
2023-09-29 21:53:20 +00:00
Andri Yngvason
71aa5acfde
crypto: Integrate message handling into cipher
2023-09-29 21:53:20 +00:00
Andri Yngvason
c12c1c800a
crypto: Add RSA and AES-EAX
2023-09-29 21:53:20 +00:00
Andri Yngvason
7b878033f0
Implement Apple's Diffie-Hellman based security type 30
2023-09-29 21:53:20 +00:00
Andri Yngvason
da2518e296
stream: Integrate cipher
2023-09-29 21:53:20 +00:00
Andri Yngvason
0c3a98483c
Add abstract interface for low level crypto
2023-09-29 21:53:20 +00:00
MazTheMan
fd1e18b475
Implement 24 bit pixel formats for raw and tight
2023-09-29 21:46:05 +00:00
Andri Yngvason
8872dece0c
server: Defer client_unref in close_after_write
...
This ensures that the stream object stays alive while its write
queue is being processed.
2023-07-04 23:40:32 +00:00
Andri Yngvason
61fad8c96b
server: Actually send a reason when handshake fails
2023-07-04 22:56:52 +00:00
Andri Yngvason
ade1046391
stream: Allocate enough for tls upgrade
2023-05-30 08:40:56 +00:00
Andri Yngvason
b5f37d0227
stream: Move tls specific member into tls impl
2023-05-28 15:50:36 +00:00
Andri Yngvason
c006936fd0
http: Only support GET method
2023-04-30 14:31:34 +00:00
Andri Yngvason
2f439b9fa2
http: Stop memory leak in failure path
2023-04-30 14:29:30 +00:00
Andri Yngvason
1fa8d41aef
http: Re-order includes
2023-04-30 14:21:35 +00:00
Andri Yngvason
a179c83f81
http: Remove unused code
2023-04-30 14:20:53 +00:00
Andri Yngvason
c0b3e16bb0
stream-ws: Sanitise handshake input
2023-04-30 14:03:12 +00:00
Andri Yngvason
e5e6767c1e
ws-handshake: Handle protocol & version fields
2023-04-30 13:44:12 +00:00
Andri Yngvason
d7dc9c0db5
server: Set SO_SNDBUF to 65536
...
The previous value of 4096 caused a very bad performance regression
with GnuTLS.
2023-04-11 20:37:22 +00:00
Andri Yngvason
79d24ae0ca
stream-gnutls: Handle EAGAIN correctly
2023-04-11 20:33:13 +00:00
Andri Yngvason
4b5e4d628d
stream-gnutls: Fix use after free
2023-04-11 20:32:37 +00:00
Andri Yngvason
afc0256b2f
stream-tcp: EAGAIN is not an error
...
This fixes inadvertent treatment of a normal situation as an error.
2023-04-10 11:36:59 +00:00
Andri Yngvason
5530b22fde
server: Reduce SO_SNDBUF to 4096
...
This will allow us to more accuately gauge the back-pressure on the socket.
2023-04-08 13:40:24 +00:00
Andri Yngvason
aa6fadf2fd
server: Use stream_exec_and_send for ntp
2023-04-08 13:40:24 +00:00
Andri Yngvason
0cdbf6a602
stream: Add exec_and_send function
...
This allows us to execute a function right before a leaves the send queue
and is really only useful for NTP as far as I can tell.
2023-04-08 13:02:45 +00:00
Andri Yngvason
19172140ba
Add NTP inspired latency tracking and time sync
2023-04-07 21:24:22 +00:00
Andri Yngvason
8847511596
Implement websocket
2023-04-07 12:47:49 +00:00
Andri Yngvason
e385a98238
stream: Add a cork to pause sending
2023-04-07 12:47:49 +00:00
Andri Yngvason
979d10ce62
Turn stream into abstract interface class
2023-04-06 21:02:39 +00:00
Philipp Zabel
e19c9ad600
Implement desktop resizing
...
Implement minimal support for ExtendedDesktopSize pseudo-encoding
and SetDesktopSize client message.
The opaque nvnc_desktop_layout structure contains all information
from the SetDesktopSize client message.
2023-02-25 11:03:44 +00:00
Philipp Zabel
afe37b983d
stream: Fix remote closing TLS connection
...
If a TLS stream is closed by the remote VNC client,
stream__remote_closed must be called to signal the server.
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
2022-11-30 15:26:28 +00:00
Jim Ramsay
332be4d471
Add nvnc_client_close API
...
This allows the user or application to terminate any given nvnc_client
connection at any time.
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-24 16:08:06 +00:00
Andri Yngvason
8f979c9928
Pass nvnc_client to cut-text callback
2022-11-20 22:42:01 +00:00
Andri Yngvason
79f26924ea
Add functions for listing clients
2022-11-20 12:03:18 +00:00
Andri Yngvason
8a7509bd3a
raw: Allocate conservatively sized buffers
2022-11-05 13:54:01 +00:00
Andri Yngvason
f31ddf7fe9
enc-util: Add function to calculate region area
2022-11-05 13:52:55 +00:00
Andri Yngvason
3647457f6d
server: Properly handle stream write errors
...
This fixes leaked rcbufs when clients disconnect.
2022-11-05 13:22:14 +00:00
Andri Yngvason
fbe8631add
raw: Fix worker data dependencies
2022-11-05 13:22:14 +00:00
Andri Yngvason
935ce4e98d
Remove push/pull encoder interface
...
Think of it as a failed experiment.
2022-11-05 10:15:56 +00:00
Jim Ramsay
036b549fd8
Record authenticated username for each connected client
...
Signed-off-by: Jim Ramsay <jramsay@redhat.com>
2022-11-04 09:41:14 +00:00
Jim Ramsay
86bd2ced85
Record hostname for each connected client
...
Signed-off-by: Jim Ramsay <jramsay@redhat.com>
2022-11-04 09:41:14 +00:00
Andri Yngvason
73e1089f06
zrle: Unref result in destroy
2022-10-30 13:53:10 +00:00
Andri Yngvason
b525608a06
raw: Unref result in destroy
2022-10-30 13:52:52 +00:00
Andri Yngvason
b3c1d5d1dc
stream: Use MSG_NOSIGNAL
...
Without MSG_NOSIGNAL, sending to closed sockets will generate SIGPIPE.
2022-10-30 13:07:13 +00:00
Andri Yngvason
95742676c9
zrle: Keep reference to encoder while encoding
2022-10-30 12:44:05 +00:00
Andri Yngvason
91dc5da243
raw: Keep reference to encoder while encoding
2022-10-30 12:44:05 +00:00
Andri Yngvason
727b2f727e
tight: Keep reference to encoder while encoding
2022-10-30 12:44:05 +00:00
Andri Yngvason
8f2d137046
server: Make encoder inert when closing client
2022-10-30 12:44:05 +00:00
Andri Yngvason
baaf84eab9
Reference count encoders
2022-10-30 12:44:05 +00:00
Andri Yngvason
48b070af5a
server: Free cursor buffers on close
2022-10-30 12:44:05 +00:00
Andri Yngvason
adef210252
fb-pool: Add setter for fb allocator
2022-10-29 18:40:02 +00:00
Andri Yngvason
efb5ab956c
Add debug logging for tcp address binding
2022-10-24 20:55:38 +00:00
Andri Yngvason
3588670c81
server: Replace abort() with NVNC_LOG_PANIC
2022-10-24 09:16:59 +00:00
Andri Yngvason
3c4a069ba2
tight: Disable chroma subsampling at q=9
...
This avoids color banding at the highest quality level.
2022-10-23 19:05:32 +00:00
Philipp Zabel
df84f371fe
Fix fallthrough warnings in murmurhash
...
Fix two -Wimplicit-fallthrough warnings in the murmurhash function:
../src/murmurhash.c: In function 'murmurhash':
../src/murmurhash.c:71:15: warning: this statement may fall through [-Wimplicit-fallthrough=]
71 | case 3: k ^= (tail[2] << 16);
| ~~^~~~~~~~~~~~~~~~~~
../src/murmurhash.c:72:5: note: here
72 | case 2: k ^= (tail[1] << 8);
| ^~~~
../src/murmurhash.c:72:15: warning: this statement may fall through [-Wimplicit-fallthrough=]
72 | case 2: k ^= (tail[1] << 8);
| ~~^~~~~~~~~~~~~~~~~
../src/murmurhash.c:74:5: note: here
74 | case 1:
| ^~~~
2022-10-15 10:00:43 +00:00
Jeroen Hofstee
5b2a062f0e
don't resize an encoder if it is not set
2022-10-15 09:59:05 +00:00
Andri Yngvason
b932f3e2e0
h264-encoder: Set async_depth=1
...
This fixes stalling during encoding. The FFmpeg devs seem to think that it's
normal to change the default behaviour or their code, so this needs to be
fixed here instead.
Fixes #73
2022-09-10 15:48:15 +00:00
Andri Yngvason
19538c9435
server: Fix encoding selection for sw frames
...
This fixes encoding selection when not using the --gpu option. Before this
change, raw encoding would always be selected.
Reported-by: Consolatis
Suggested-by: Consolatis
2022-08-23 22:34:56 +00:00
Andri Yngvason
c0e1159a53
Revert "h264-encoder: Add 30 bit color depth formats"
...
This reverts commit 613761cf5f
.
These are not available on older libav version and they don't event work.
2022-08-23 21:13:13 +00:00
Andri Yngvason
5e5d5d6e29
resampler: Use transformed width as destination stride
...
Fixes #72
2022-08-23 20:23:12 +00:00
Philipp Zabel
affd7f3f6d
Allow to query client-side cursor support
...
Add a function nvnc_client_supports_cursor() to enable the API user to
make an informed decision whether nvnc_set_cursor() can be expected to
make the client draw the cursor, or whether it has to be rendered into
the framebuffer.
2022-07-29 08:37:29 +00:00
Andri Yngvason
263990f5ef
stream: Remove stray ampersand in tls handshake failure code path
2022-07-17 20:17:19 +00:00
Andri Yngvason
b9a5b9a3f1
h264: Set quality according to client's wishes
2022-07-10 13:53:32 +00:00
Andri Yngvason
528eac51a3
Fix jpeg quality setting
...
The encoding identifiers are supposed to be interpreted as a range. I
interpreted the upper and lower limits as two discrete quality settings
instead, which is wrong.
2022-07-10 12:41:20 +00:00
Jan Beich
4baeaa43fd
server: add missing header after f20ffb5e1e
...
src/server.c:1119:17: error: use of undeclared identifier 'IPPROTO_TCP'
setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &one, sizeof(one));
^
2022-07-09 20:04:53 +00:00
Andri Yngvason
d85347cfe3
h264-encoder: Set quality
...
This is to get libav to stop complaining about quality not being set
2022-07-09 17:19:46 +00:00
Andri Yngvason
362918a8cf
Integrate libav into logging framework
2022-07-09 17:15:35 +00:00
Andri Yngvason
863fb0ce80
h264-encoder: Add dtrace probes
2022-07-09 16:30:25 +00:00
Andri Yngvason
f20ffb5e1e
server: Turn off Nagle's algorithm
2022-07-09 16:29:18 +00:00
Andri Yngvason
d86af88573
server: Log encoder choices
2022-07-09 16:28:09 +00:00
Andri Yngvason
dc82b3f29d
h264-encoder: Clean up current_packet in destroy
2022-06-29 11:39:46 +00:00
Andri Yngvason
b8122725e2
server: Reset encoder callback on frame done
2022-06-29 11:36:05 +00:00
Andri Yngvason
4eb7a3a559
h264-encoder: Call on_packet_ready last in on_work_done
...
The callback can result in the encoder being destroyed, so we can't
dereference access the encoder object after calling it.
2022-06-29 11:34:12 +00:00
Andri Yngvason
e8f2481aa4
open-h264: unref result when finished with it
2022-06-26 14:12:37 +00:00
Andri Yngvason
8bde568112
server: Add dtrace probes with pts
2022-06-26 13:57:32 +00:00
Andri Yngvason
1e3819b6fb
open-h264: Add dtrace probes
2022-06-26 13:57:32 +00:00
Andri Yngvason
e05e812d93
resampler: Add dtrace probes
2022-06-26 13:57:32 +00:00
Andri Yngvason
ee64bc2722
display: Add dtrace probes
2022-06-26 13:57:32 +00:00
Andri Yngvason
4e9eb98301
open-h264: Convert to normal encoder
...
The push/pull code path is buggy.
2022-06-26 13:56:17 +00:00
Andri Yngvason
e6a12ffda7
server: Promote some log levels
2022-06-25 16:32:05 +00:00
Andri Yngvason
ad4a834cfc
Use new logging system
2022-06-25 16:15:32 +00:00
Andri Yngvason
45da0fc157
Add simple logging system
2022-06-25 16:15:32 +00:00
Andri Yngvason
9285594e9d
Call encoder.on_done in a function
2022-06-11 11:44:51 +00:00
Andri Yngvason
d4258a0aab
cursor: Handle rotated cursors
2022-06-11 11:44:51 +00:00
Andri Yngvason
bab78857e1
resampler: Extract function: resample_now()
2022-06-11 11:44:51 +00:00
Harm te Hennepe
7205139b11
Don't call gbm symbols when they are not available
2022-05-24 22:55:34 +00:00
Jan Beich
da290abc25
server: consistently use builtin byteswap after 53f88894d5
...
src/server.c:48:10: fatal error: 'byteswap.h' file not found
#include <byteswap.h>
^~~~~~~~~~~~
2022-04-24 17:56:03 +00:00