Using noVNC and Liberation as Web Interface - dcs-liberation/dcs_liberation GitHub Wiki

Situation:

My flight group and I want to create missions using Liberation. I run the campaign on my dedicated server, which is a Windows 10 Guest VM. Generally we use the Server Interface provided by ED to control the server. Missions are synced by a Google Drive sync. So everybody is able to upload missions and run them on the server remotely, without having to use some sort of third party interface - like VNC or Remote Desktop.

On Liberation it is a bit different - you cannot control it using some sort of WebGui. Making a turn would need the user to be on that very machine the mission runs. Asking for a solution I was pointed to use Remote Desktop for such an endeavour - in my eyes not a good solution when running a server where several people want to operate.

Workaround:

To access the Liberation Tool I used VNC and set it up the following way...

Setting up Liberation area

On the Windows VM set up a second screen in which you want to position Liberation. Note that the resolution should be somewhat below your clients-resolution for example: If you use 1080p on your client then it would be best that the resolution on your VM is below that (1680x1050) - otherwise your browser bars/frames will cost viewing area. If you fancy remove the Taskbar from that screen.

Setting up VNC

Download TightVNC - why? Because you can limit the viewing-Area with it.

I found several other VNC server tools, but its seldom that you can limit the provided area to a certain window or coordinates. Install TightVNC using its installer. Once done install it as a service (there are links in the StartMenu for that) and run that service (also link in StartMenu). In your tray you'll find a VNC icon, click on it and open configuration. Set up your ports and passwords as needed. On Extra Ports add the port and viewing area your Liberation is positioned In my particular case (1152x864 main screen / 1680x1050 second screen) that string looks like that:

5901:1680x1020+1152+30

Explanation:

  • 5901: listening port for VNC connections
  • 1680: picture width
  • 1020: picture height (minus the windows top-bar)
  • 1152: starting point X (right of my main screen)
  • 30: starting point Y (below the windows top-bar)

Change to the tab Access Control and allow loopback connections

Setting up noVNC and websockify

  • Download noVNC and extract it to a folder of your liking.
  • change the websocket.json (../noVNC-1.2.0/core/websocket.json - Line 185) to following: > this_websocket = new WebSocket(uri, ['binary',base64']);
  • Download Websockify
  • Start websockify using (for example) the following parameters: ..\websockify.exe 5902 127.0.0.1:5901 --web ..\noVNC-1.2.0
  • Explanation:
  • ..\websockify.exe - please provide the correct path to the executable
  • 5902 - any port you want to use for your connection
  • 127.0.0.1:5901 - localhost + the port your VNC server is listening on
  • --web - parameter for the web interface to show
  • ..\noVNC-1.2.0 - the path to your noVNC folder
  • rename the vnc.html to index.html so you don't need to enter it in the URL afterwards

There are some more parameters to websockify to wrap executables or start them on connection, which I haven't had a look on yet.

Execution

Start websockify using the parameters given (or adapted). Start Liberation and put it on your second screen maximized. Start a Browser and enter the URL:port of your machine. Enter you password - now you should see your Liberation tool.

Notes

I did all that for people I trust and not for a public server. Keep in mind that this provides an access to your machine, there is no security implemented. Why did I use an area instead of an executable wrapping? Because Liberation uses popups, if I wrap VNC only to liberation.exe those popups might not show up - providing an area I avoid this.