mirror of
git://git.proxmox.com/git/pve-xtermjs.git
synced 2025-03-11 20:58:41 +03:00
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>
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
Languages
Rust
44.7%
JavaScript
27.6%
CSS
16%
Makefile
11.7%