Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rfb server support #1620

Closed
totaam opened this issue Aug 9, 2017 · 6 comments
Closed

rfb server support #1620

totaam opened this issue Aug 9, 2017 · 6 comments

Comments

@totaam
Copy link
Collaborator

totaam commented Aug 9, 2017

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 VncAuth)
  • 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"
@totaam
Copy link
Collaborator Author

totaam commented Aug 9, 2017

Code added in r16673, see also #639.

Better links:

@totaam
Copy link
Collaborator Author

totaam commented Aug 27, 2017

Updates linked to UDP (#639):

  • r16710 + r16713: authentication modules refactoring - preparation
  • r16712: large rfb update (see commit message)

@totaam
Copy link
Collaborator Author

totaam commented Sep 6, 2017

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-tcp=0.0.0.0: \
    --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

@totaam
Copy link
Collaborator Author

totaam commented Sep 6, 2017

2017-09-06 21:59:59: maxmylyn commented


Noted and closing.

@totaam totaam closed this as completed Sep 6, 2017
@totaam
Copy link
Collaborator Author

totaam commented Sep 7, 2017

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 bandwidth-limit (#417)

@totaam
Copy link
Collaborator Author

totaam commented Jun 18, 2020

Regression in v4: #2811.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant