Opened 11 years ago

Last modified 9 years ago

#53 accepted enhancement

export local displays to a remote server via a reverse tunnel

Reported by: Antoine Martin Owned by: Antoine Martin
Priority: minor Milestone: 1.0
Component: Global Keywords:

Description (last modified by Antoine Martin)

Now that we can export local displays (see r1397 and #12)

We can export these displays to a remote server by getting the server to give us a remote port and setting up a reverse tunnel to a local port on the client (reserved for nx shadow process).
When we request connection (detect local access and use a shortcut - or even warning if same display as current), get the client to start the nx shadow, then it sends the session to the actual client.

Since we may want to export many local displays to a single remote server, we should add these X sessions to the server and let the server provide the remote port (as per usual in an 'add_session' message). Then on the client which owns this display we simply forward the display to that port (rather than that port back to a local port). The status of the session should be 'starting' on the server until the client updates it to 'available' once the tunnel is ready. For connecting: the server should ask the client to start nxagent, once that is done the client can set 'connecting' OR just send the session to the client that requested it.

We should also deal with clients connecting to local displays remotely exported more cleverly by not using 2 tunnels! (just detect this is local and connect directly).

This can be done via NX or VNC, re-using much of the same server-side code... so this may require a bit of refactoring.

Change History (3)

comment:1 Changed 11 years ago by Antoine Martin

Description: modified (diff)
Owner: changed from Antoine Martin to Antoine Martin
Status: newaccepted

comment:2 Changed 10 years ago by Antoine Martin

Description: modified (diff)

comment:3 Changed 9 years ago by Antoine Martin

Description: modified (diff)
Note: See TracTickets for help on using tickets.