summaryrefslogtreecommitdiffstats
path: root/src/server.h
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 02:54:31 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 02:54:31 +0000
commit3b4936b6f2b870f9f2444ebb6ce1ca2de3f49d9f (patch)
treec91ab0ac9447b25f91c05e901212c2142fb95953 /src/server.h
parentInitial commit. (diff)
downloadttyd-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.h85
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
+};