Xpra: Ticket #1620: rfb server support
Implementing a bare bones RFB server turned out to be trivial since the protocol is so simple (unlike xpra, no windows or metadata to deal with!): rfc6143.
This may be useful for comparing with VNC clients, debugging the vfb state, etc
TODO before the next release (minimum required for secure usage):
- bug: screen updates are always one frame behind
- authentication step (support at least
- move code to an rfb support module and also support rfb in shadow servers
- honour server sharing options, fix source missing attributes (uuid, etc)
- verify control channel commands, etc (anything that might dereference missing source attributes)
Extras (probably for a later milestone):
- SSL support (should be trivial)
- refactor rfb protocol code into a common superclass with regular xpra protocol (packet accounting, threads, close, etc)
- more encodings than just plain RGB (ie: copyrect for scrolling, jpeg)
- clipboard support
- support colormap modes? (8 / 16 bit)
- desktop-size pseudo encoding (randr like)
- maybe add a default port for bind-rfb (5900 + DISPLAY)
- support older protocols
To use it:
xpra start-desktop :100 --start=xterm --bind-rfb=0.0.0.0:5900 -d rfb
vncviewer 127.0.0.1:0 -Log "*:stderr:100"
Wed, 09 Aug 2017 16:37:12 GMT - Antoine Martin: status changed
changed from new to assigned
Code added in r16673, see also #639.
Sun, 27 Aug 2017 04:46:53 GMT - Antoine Martin:
Updates linked to UDP (#639):
- r16710 + r16713: authentication modules refactoring - preparation
- r16712: large rfb update (see commit message)
Wed, 06 Sep 2017 15:50:49 GMT - Antoine Martin: owner, status changed
changed from Antoine Martin to J. Max Mena
changed from assigned to new
Should be fully usable as of r16784 (see commit message).
This is useful for testing, but will need work before being able to compete with other RFB servers (#1632).
@maxmylyn: this is just a FYI, feel free to close.
It does support authentication and sharing options, ie:
echo -n 01234567 > password.txt
xpra start-desktop :100 --start=xterm --sharing=yes \
--bind-rfb=0.0.0.0: --rfb-auth=file,filename=./password.txt --no-daemon
You can then connect with vncviewer:
echo -n 01234567 | vncpasswd -f > password.vnc
vncviewer 127.0.0.1:0 -Log "*:stderr:100" -Shared=1 -passwd=./password.vnc
And since sharing is enabled, you can connect an xpra client simultaneously:
xpra attach tcp:localhost
Wed, 06 Sep 2017 20:59:59 GMT - J. Max Mena: status changed; resolution set
changed from new to closed
set to fixed
Noted and closing.
Thu, 07 Sep 2017 09:47:54 GMT - Antoine Martin:
As usual, this required a bunch of platform tweaks and fixes:
- better keycode support: r16785, with macos and win32 servers support: r16789
- shadow servers needed to be told to start refreshing: r16786
- handle win32 sockets timeouts: r16787
- mouse button handler method signature requires position on win32: r16788
- platform import fixes, macos doesn't have X11: r16790, r16791
- macos shadow server fixes: r16792, r16794
- TCP sockets can be "upgraded" to RFB after a timeout: r16836
It would be nice to add support for
Thu, 18 Jun 2020 09:02:50 GMT - Antoine Martin:
Regression in v4: #2811.
Sat, 23 Jan 2021 05:29:18 GMT - migration script:
this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/1620