5
0
mirror of git://git.proxmox.com/git/pve-xtermjs.git synced 2025-03-11 20:58:41 +03:00
Thomas Lamprecht 24d707d050 termproxy: switch from clap to pico-args for CLI argument handling
Not that clap is bad or anything the like, but for one it's rather
over engineered, and it has to be as long as it wants to provide a
dozen wildly different way to do things.
And the second, more important reason: it's still undergoing a lot of
churn every year or so.  Each upgrade to a major version needs like
two hours of understanding what's going on, at least if one wants to
Do It Right™.

Termproxy, otoh., is a small and internal tool that doesn't need an
overly fancy CLI targetting humans, as it will be only called by the
API anyway.

So, to reduce the time required to constantly catch up, and remove
some complexity, switch over to pico-args. That one provides a few
small interfaces for the most common things, does it right and uses
OsString as main type and has exactly zero dependencies on its own.
In other words, perfect for such internal tools (and possibly also
most others).

Copy over the help output from the clap based tool for convenience,
pico-args really doesn't bother with such things, and introduce an
Options struct to have a, well, more structured way of handling CLI
arguments/options.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-10-20 08:06:09 +02:00
2020-07-23 12:13:31 +02:00
2023-10-04 15:40:01 +02:00

xterm.js webclient and helper utility
=====================================

This repository contains the client and helper utility to use xterm.js [0] in
the web UI of Proxmox projects like Proxmox VE, Proxmox Mail Gateway or Proxmox
Backup Server.

[0]: https://xtermjs.org

To be able to relay between the frontend and a shell program/console running in
the backend, we provide a tool called termproxy to open a port (where our
websocketproxy connects to) and to open a PTY and execute a program.

For communication originating from the client towards the server, it implements
a simple packet-based protocol where everything is a string. The protocol
consists of the following messages:

* Normal Message
    0:LENGTH:MSG
    where LENGTH is the bytelength of the msg

* Resize Message
    1:COLS:ROWS:
	where COLS is the number of columns the client wants to resize to, and ROWS
	the number of rows, respectively

* Ping Message
    2
    used to keep the connection between client and server alive
    (we have a timeout of 5 minutes)

Every other input from the client will be ignored.

Communication from server to the client uses no protocol, the raw data coming
from the terminal/program will be forwarded 1:1, without any wrapping format.
Description
No description provided
Readme 2.7 MiB
Languages
Rust 44.7%
JavaScript 27.6%
CSS 16%
Makefile 11.7%