Popularity
0.9
Growing
Activity
7.6
Declining
6
1
1

Description

Go Client for Apache Guacamole Protocol.

Why? Apache Guacamole was created with the goal of making a dedicated client unnecessary. So why create a client?!

The idea is that if you need to control a remote machine from your Go code, you can leverage the Guacamole protocol and the `guacd` server as a bridge. This way you can use any protocol supported by Guacamole (currently RDP and VNC, with X11 coming in the future) to do screen capture and remote control of networked servers/desktop machines.

Programming language: Go
License: MIT License
Tags: Networking     Vnc     Rdp     Guacamole     Remote Control    
Latest version: v0.0.7

Bring alternatives and similar packages

Based on the "Networking" category

Do you think we are missing an alternative of Bring or a related project?

Add another 'Networking' Package

README

Bring

GitHub tag (latest SemVer) Documentation Build Status Go Report Card Maintainability

Go client library for Apache Guacamole Protocol.

Quick start (tl;dr)

  1. Install the library in your project:

    go get github.com/deluan/bring

  2. Create a Client with the NewClient() function. This creates a session with the specified guacd server

  3. Start the client with go client.Start()

  4. Get screen updates with client.Screen()

  5. Send keystrokes with client.SendKey()

  6. Send mouse updates with client.SendMouse()

See the [sample app](sample/main.go) for a working example

Documentation

The API is provided by the the Client struct. The documentation is a work in progress, but the API is very simple and you can take a look at all features available in the [sample app](sample) provided. Here are the steps to run the app:

1) You'll need a working guacd server in your machine. The easiest way is using docker and docker-compose. Just call docker-compose up -d in the root of this project. It starts the guacd server and a sample headless linux with a VNC server

2) Run the sample app with make run. It will connect to the linux container started by docker.

Take a look at the Makefile to learn how to run it in different scenarios.

Why?

Apache Guacamole was created with the goal of making a dedicated client unnecessary. So why create a client?!

The idea is that if you need to control a remote machine from your Go code, you can leverage the Guacamole protocol and the guacd server as a bridge. This way you can use any protocol supported by Guacamole (currently RDP and VNC, with X11 coming in the future) to do screen capture and remote control of networked servers/desktop machines from within your Go app.

My use case was to automate some tasks in a VirtualBox VM, but there was no Go support for the VirtualBox XPCOM API on Macs (my host platform), nor a working RDP client implementation in Go. Instead of writing a new RDP client, why not leverage the awesome Guacamole project and get support for multiple protocols?

References: