Como Acessar Desktops Remotos Usando Apache Guacamole

O que é Apache Guacamole?

O Apache Guacamole é um framework de código aberto criado pela Apache Foundation que fornece um aplicativo HTML5 que age como um gateway de desktop remoto, permitindo o acesso a desktops remotos através dos protocolos RDP, SSH e VNC sem a necessidade de qualquer outro software de terceiros.

A solução Guacamole inclui muitos componentes individuais, como libguac, guacamole-common e guacamole-ext. Embora esses projetos estejam além do escopo deste artigo, vamos nos concentrar em guacamole-common-js dentro do ecossistema Guacamole.

O que é guacamole-common-js?

O projeto Guacamole fornece uma API JavaScript para interfacear com componentes projetados para atender às especificações Guacamole. A API guacamole-common-js oferece uma implementação JavaScript de um Cliente Guacamole e mecanismos de túnel para transferir dados de protocolo do JavaScript para o lado do servidor da aplicação. O lado do servidor geralmente é executado em uma máquina com guacd ou o Daemon Guacamole. A biblioteca guacamole-common-js fornece objetos de abstração de mouse e teclado para traduzir eventos de mouse e teclado JavaScript em dados que o Guacamole pode facilmente processar.

Usando guacamole-common-js para Criar um Cliente Guacamole Personalizado

Pré-requisitos: Instale guacamole-common-js via qualquer gerenciador de pacotes da sua escolha. Neste exemplo, usaremos npm.

Shell

 

Passo 1: Crie um Túnel Guacamole

Criar um Túnel Guacamole permite-lhe transmitir dados facilmente entre o servidor e o seu cliente.

JavaScript

 

Pode passar parâmetros adicionais ao seu servidor através da URL do túnel usando parâmetros de consulta. Por exemplo, a URL do seu túnel pode parecer-se com path/to/your/tunnel?param1=value1&param2=value2.

Passo 2: Use o Objeto Túnel para Criar um Cliente Guacamole

Pode criar um objeto Cliente Guacamole passando o objeto Túnel que acabou de criar para o construtor Guacamole.Client.

JavaScript

 

Passo 3: Chame a Função Conectar para Estabelecer a Conexão

Então, temos a instância de Túnel Guacamole e a instância de Cliente Guacamole. Estes são todos os que precisamos para estabelecer uma conexão com a nossa máquina remota.

JavaScript

 

Só há uma coisa para lembrar: O objeto Guacamole.Tunnel passado para o construtor Guacamole.Client não deve já estar conectado. Isso porque, internamente, o método guacClient.connect() chamará o método tunnel.connect(), e se o túnel já estiver conectado, essa operação falhará.

Agora, os mais perspicazes entre vocês vão descobrir que ainda não veem o conteúdo da sua máquina remota no cliente. Isso porque ainda estamos faltando um passo crucial.

Passo 4: Obter o Display Guacamole e Atribuí-lo ao DOM

Una vez que estabeleceu a conexão chamando guacClient.connect(), pode ver o display da máquina remota ao atribuir o display Guacamole (um HTMLDivElement) ao DOM. Vamos ver como podemos fazer isso.

Imagine que você tem uma página HTML onde deseja exibir a tela da sua máquina remota.

HTML

 

Em seguida, vamos obter o HTMLDivElement, que precisa ser exibido ao usuário a partir do guacClient.

JavaScript

 

Et voilà! Agora você vê o conteúdo da sua máquina remota no seu DOM. Mas esperem, algo não está certo. A entrada do seu teclado não faz nada, e nem o mouse. Como vamos abordar isso?

Passo 5: Configurar Eventos de Teclado e Mouse

Para configurar eventos de teclado e mouse, você precisa configurar os manipuladores de entrada fornecidos pelo guacamole-common-js.

Vamos primeiro ver como podemos configurar eventos de mouse.

JavaScript

 

A configuração do teclado é ainda mais simples porque existem apenas dois eventos que precisam ser configurados.

JavaScript

 

Passo 6: Configurar Eventos de Toque (Opcional)

Opcionalmente, você também pode configurar seu cliente para entrada de toque, mas isso será traduzido para eventos de Guacamole.Mouse.

JavaScript

 

Como você pode ver, estamos traduzindo eventos de toque em eventos de mouse do Guacamole, e este passo é entirely opcional. Você só precisa configurar eventos de toque se pretende usar seu cliente personalizado em um dispositivo de tela sensível ao toque.

Passo 7: Desconectar da Sua Máquina Remota

Finalmente, chegamos ao último passo, que é desconectar da sua máquina remota, e é tão simples quanto chamar um método no seu cliente.

JavaScript

 

Conclusão

Resumindo, Apache Guacamole é um framework poderoso e versátil de código aberto que oferece uma forma integrada de acessar desktops remotos através dos protocolos RDP, SSH ou VNC. A biblioteca guacamole-common-js permite que desenvolvedores criem clientes Guacamole personalizados que podem interfacear com outros componentes Guacamole, como guacamole-common, guaclib e guacamole-ext.

Seguindo os passos descritos neste artigo, você pode configurar um cliente guacamole básico personalizado que pode se conectar aos seus servidores remotos e lidar com eventos de teclado, mouse e toque.

Source:
https://dzone.com/articles/access-remote-desktops-using-apache-guacamole-a-ba