diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 02:54:31 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 02:54:31 +0000 |
commit | 3b4936b6f2b870f9f2444ebb6ce1ca2de3f49d9f (patch) | |
tree | c91ab0ac9447b25f91c05e901212c2142fb95953 /src/server.h | |
parent | Initial commit. (diff) | |
download | ttyd-3b4936b6f2b870f9f2444ebb6ce1ca2de3f49d9f.tar.xz ttyd-3b4936b6f2b870f9f2444ebb6ce1ca2de3f49d9f.zip |
Adding upstream version 1.7.4.upstream/1.7.4
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/server.h')
-rw-r--r-- | src/server.h | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/src/server.h b/src/server.h new file mode 100644 index 0000000..4a659b0 --- /dev/null +++ b/src/server.h @@ -0,0 +1,85 @@ +#include <libwebsockets.h> +#include <stdbool.h> +#include <uv.h> + +#include "pty.h" + +// client message +#define INPUT '0' +#define RESIZE_TERMINAL '1' +#define PAUSE '2' +#define RESUME '3' +#define JSON_DATA '{' + +// server message +#define OUTPUT '0' +#define SET_WINDOW_TITLE '1' +#define SET_PREFERENCES '2' + +// url paths +struct endpoints { + char *ws; + char *index; + char *token; + char *parent; +}; + +extern volatile bool force_exit; +extern struct lws_context *context; +extern struct server *server; +extern struct endpoints endpoints; + +struct pss_http { + char path[128]; + char *buffer; + char *ptr; + size_t len; +}; + +struct pss_tty { + bool initialized; + int initial_cmd_index; + bool authenticated; + char user[30]; + char address[50]; + char path[128]; + char **args; + int argc; + + struct lws *wsi; + char *buffer; + size_t len; + + pty_process *process; + pty_buf_t *pty_buf; + + int lws_close_status; +}; + +typedef struct { + struct pss_tty *pss; + bool ws_closed; +} pty_ctx_t ; + +struct server { + int client_count; // client count + char *prefs_json; // client preferences + char *credential; // encoded basic auth credential + char *auth_header; // header name used for auth proxy + char *index; // custom index.html + char *command; // full command line + char **argv; // command with arguments + int argc; // command + arguments count + char *cwd; // working directory + int sig_code; // close signal + char sig_name[20]; // human readable signal string + bool url_arg; // allow client to send cli arguments in URL + bool writable; // whether clients to write to the TTY + bool check_origin; // whether allow websocket connection from different origin + int max_clients; // maximum clients to support + bool once; // whether accept only one client and exit on disconnection + char socket_path[255]; // UNIX domain socket path + char terminal_type[30]; // terminal type to report + + uv_loop_t *loop; // the libuv event loop +}; |