Skip to content

Feature Request: SSH Typescript Recording Support #159

@GoepiGB

Description

@GoepiGB

Feature Request: SSH Typescript Recording Support

Summary

Please expose guacd's typescript-path, typescript-name, create-typescript-path, and recording-include-keys parameters for SSH connections, so that rustguac can pass them through to guacd to enable text-based session recording (typescript) and keystroke logging.

Background

guacd natively supports two types of SSH session recording:

  1. Graphical recording (Guacamole protocol dump) — already supported and working well in rustguac via the built-in playback UI.
  2. Typescript recording — writes the full raw terminal output to a plain text file (compatible with the standard Unix script command and replayable with scriptreplay). Keystroke logging can additionally be enabled via recording-include-keys on graphical recordings, making them parseable by guaclog.

Currently rustguac does not forward these parameters to guacd, so neither typescript recording nor keystroke logging in graphical recordings is available.

Use Case

For audit and compliance purposes (e.g. accessing network switches or other infrastructure devices), it is often required to have a human-readable, searchable text log of what occurred during a session — not just a graphical recording. A typescript produces exactly this: a plain text file of the full terminal output that can be stored, searched, and reviewed without any special tooling.

Requested Parameters

guacd parameter Description
typescript-path Directory to write typescript files to
typescript-name Base filename for the typescript (supports variable substitution)
create-typescript-path Automatically create the directory if it does not exist
recording-include-keys Include keystroke events in graphical recordings (enables guaclog output)

Suggested Implementation

A global default in config.toml (e.g. under a [recording] section), applied to all SSH sessions:

[recording]
typescript_path = "/opt/rustguac/data/typescripts"
typescript_name = "${GUAC_USERNAME}-${GUAC_DATE}-${GUAC_TIME}"
create_typescript_path = true
include_keys = true

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions