<commit_before># guacamole-auth-hmac

## Description

This project is a plugin for [Guacamole](http://guac-dev.org), an HTML5 based
remote desktop solution supporting VNC/RFB, RDP, and SSH.

This plugin is an _authentication provider_ that enables stateless, on-the-fly
configuration of remote desktop connections that are authorized using a
pre-shared key. It is most appropriate for scenarios where you have an existing
user authentication & authorization mechanism.

## Installation

The current release of guacamole-client (0.8.2) is missing some internal APIs
used by this plugin, so you will have to build the [unstable branch][unstable]
of Guacamole until those changes are released in a new version.

The simplest way to get this running is to [install normally][guac-install] and
then replace guacamole.war with a build of [guacamole-client@unstable][unstable].
The manual explains [how to build guacamole-client from source][guac-build].

After you have a version of guacamole running that implements
`SimpleConnectionDirectory.putConnection` you can build, deploy, and configure this
auth plugin.

[guac-install]: guac-dev.org/doc/gug/installing-guacamole.html
[guac-build]: http://guac-dev.org/doc/gug/installing-guacamole.html#compiling-guacamole-client
[unstable]: https://github.com/glyptodon/guacamole-client/tree/unstable

## Deployment & Configuration

Copy `guacamole-auth-hmac.jar` to the location specified by
[`lib-directory`][config-classpath] in `guacamole.properties`. Then set the
`auth-provider` property to `net.sourceforge.guacamole.net.hmac.HmacAuthenticationProvider`.

`guacamole-auth-hmac` adds one new config key to `guacamole.properties`:<commit_msg>add build instructions to README.md<commit_after># guacamole-auth-hmac

## Description

This project is a plugin for [Guacamole](http://guac-dev.org), an HTML5 based
remote desktop solution supporting VNC/RFB, RDP, and SSH.

This plugin is an _authentication provider_ that enables stateless, on-the-fly
configuration of remote desktop connections that are authorized using a
pre-shared key. It is most appropriate for scenarios where you have an existing
user authentication & authorization mechanism.

## Installation

The current release of guacamole-client (0.8.2) is missing some internal APIs
used by this plugin, so you will have to build the [unstable branch][unstable]
of Guacamole until those changes are released in a new version.

The simplest way to get this running is to [install normally][guac-install] and
then replace guacamole.war with a build of [guacamole-client@unstable][unstable].
The manual explains [how to build guacamole-client from source][guac-build]. After building
guacamole-client (via `mvn package`) it is helpful to install to your local Maven
repository: `mvn install`.

After you have a version of guacamole running that implements
`SimpleConnectionDirectory.putConnection` you can build, deploy, and configure this
auth plugin.

[guac-install]: guac-dev.org/doc/gug/installing-guacamole.html
[guac-build]: http://guac-dev.org/doc/gug/installing-guacamole.html#compiling-guacamole-client
[unstable]: https://github.com/glyptodon/guacamole-client/tree/unstable

## Building

guacamole-auth-hmac uses Maven for managing builds. After installing Maven and building and 
installing guacamole-client in your local repository, build guacamole-auth-hmac:
`mvn package`

The resulting jar file will be placed in `target/guacamole-auth-hmac-<version>.jar`.

## Deployment & Configuration

Copy `guacamole-auth-hmac.jar` to the location specified by
[`lib-directory`][config-classpath] in `guacamole.properties`. Then set the
`auth-provider` property to `net.sourceforge.guacamole.net.hmac.HmacAuthenticationProvider`.

`guacamole-auth-hmac` adds one new config key to `guacamole.properties`:
{'fraction_non_alphanumeric': 0.08569926393270241, 'fraction_numerical': 0.002103049421661409, 'mean_word_length': 5.352253756260434, 'pattern_counts': {'":': 0, '<': 4, '<?xml version=': 0, '>': 4, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '157054', 'n_tokens_mistral': 1144, 'n_tokens_neox': 1116, 'n_words': 405}