1
0
mirror of https://github.com/tmate-io/tmate-ssh-server.git synced 2020-11-18 19:53:51 -08:00

Refactoring

This commit is contained in:
Nicolas Viennot 2015-09-19 22:07:02 -04:00
parent 825ad72720
commit dd1078d183
8 changed files with 27 additions and 30 deletions

View File

@ -179,13 +179,13 @@ dist_tmate_slave_SOURCES = \
signal.c \
status.c \
tmate-debug.c \
tmate-client-decoder.c \
tmate-client-encoder.c \
tmate-daemon-decoder.c \
tmate-daemon-encoder.c \
tmate-msgpack.c \
tmate-master.c \
tmate-slave.c \
tmate-ssh-client-pty.c \
tmate-ssh-client.c \
tmate-ssh-daemon.c \
tmate-ssh-server.c \
tmux-bare.c \
tty-acs.c \

View File

@ -1,7 +1,7 @@
#include "tmate.h"
#include "tmate-protocol.h"
#define pack(what, ...) _pack(&tmate_session->client_encoder, what, __VA_ARGS__)
#define pack(what, ...) _pack(&tmate_session->daemon_encoder, what, __VA_ARGS__)
static void __tmate_notify(const char *msg)
{

View File

@ -161,7 +161,7 @@ static void set_session_token(struct tmate_session *session,
memset(cmdline, 0, cmdline_end - cmdline);
sprintf(cmdline, "tmate-slave [%s] %s %s",
session->session_token,
session->ssh_client.role == TMATE_ROLE_SERVER ? "(server)" : "(client)",
session->ssh_client.role == TMATE_ROLE_DAEMON ? "(daemon)" : "(pty client)",
session->ssh_client.ip_address);
}
static void create_session_ro_symlink(struct tmate_session *session)
@ -297,7 +297,7 @@ static void setup_ncurse(int fd, const char *name)
tmate_fatal("Cannot setup terminal");
}
static void tmate_spawn_slave_server(struct tmate_session *session)
static void tmate_spawn_slave_daemon(struct tmate_session *session)
{
struct tmate_ssh_client *client = &session->ssh_client;
@ -342,7 +342,7 @@ static void tmate_spawn_slave_server(struct tmate_session *session)
/* never reached */
}
static void tmate_spawn_slave_client(struct tmate_session *session)
static void tmate_spawn_slave_pty_client(struct tmate_session *session)
{
struct tmate_ssh_client *client = &session->ssh_client;
char *argv_rw[] = {(char *)"attach", NULL};
@ -400,7 +400,7 @@ static void tmate_spawn_slave_client(struct tmate_session *session)
setup_ncurse(slave_pty, "screen-256color");
tmate_ssh_client_pty_init(session);
tmate_client_pty_init(session);
/* the unused session->master_fd will get closed automatically */
@ -418,9 +418,8 @@ static void tmate_spawn_slave_client(struct tmate_session *session)
void tmate_spawn_slave(struct tmate_session *session)
{
if (session->ssh_client.role == TMATE_ROLE_SERVER)
tmate_spawn_slave_server(session);
else
tmate_spawn_slave_client(session);
switch (session->ssh_client.role) {
case TMATE_ROLE_DAEMON: tmate_spawn_slave_daemon(session); break;
case TMATE_ROLE_PTY_CLIENT: tmate_spawn_slave_pty_client(session); break;
}
}

View File

@ -87,7 +87,7 @@ void tmate_flush_pty(struct tmate_session *session)
close(session->pty);
}
void tmate_ssh_client_pty_init(struct tmate_session *session)
void tmate_client_pty_init(struct tmate_session *session)
{
struct tmate_ssh_client *client = &session->ssh_client;

View File

@ -18,7 +18,7 @@ static void on_master_read(struct bufferevent *bev, void *_session)
master_in = bufferevent_get_input(session->bev_master);
while (evbuffer_get_length(master_in)) {
tmate_decoder_get_buffer(&session->client_decoder, &buf, &len);
tmate_decoder_get_buffer(&session->daemon_decoder, &buf, &len);
if (len == 0)
tmate_fatal("No more room in client decoder. Message too big?");
@ -93,7 +93,7 @@ static int on_ssh_channel_read(ssh_session _session, ssh_channel channel,
size_t len;
while (total_len) {
tmate_decoder_get_buffer(&session->client_decoder, &buf, &len);
tmate_decoder_get_buffer(&session->daemon_decoder, &buf, &len);
if (len == 0)
tmate_fatal("No more room in client decoder. Message too big?");
@ -103,7 +103,7 @@ static int on_ssh_channel_read(ssh_session _session, ssh_channel channel,
memcpy(buf, data, len);
tmate_decoder_commit(&session->client_decoder, len);
tmate_decoder_commit(&session->daemon_decoder, len);
total_len -= len;
written += len;
@ -169,8 +169,8 @@ void tmate_daemon_init(struct tmate_session *session)
client->channel_cb.channel_data_function = on_ssh_channel_read,
ssh_set_channel_callbacks(client->channel, &client->channel_cb);
tmate_encoder_init(&session->client_encoder, on_daemon_encoder_write, session);
tmate_decoder_init(&session->client_decoder, on_daemon_decoder_read, session);
tmate_encoder_init(&session->daemon_encoder, on_daemon_encoder_write, session);
tmate_decoder_init(&session->daemon_decoder, on_daemon_decoder_read, session);
if (tmate_has_master())
init_master(session);

View File

@ -45,7 +45,7 @@ static int shell_request(ssh_session session, ssh_channel channel,
{
struct tmate_ssh_client *client = userdata;
client->role = TMATE_ROLE_CLIENT;
client->role = TMATE_ROLE_PTY_CLIENT;
return 0;
}
@ -56,7 +56,7 @@ static int subsystem_request(ssh_session session, ssh_channel channel,
struct tmate_ssh_client *client = userdata;
if (!strcmp(subsystem, "tmate"))
client->role = TMATE_ROLE_SERVER;
client->role = TMATE_ROLE_DAEMON;
return 0;
}

16
tmate.h
View File

@ -103,12 +103,10 @@ extern void unpack_array(struct tmate_unpacker *uk, struct tmate_unpacker *neste
(tmp_uk)->argc > 0 && (init_unpacker(nested_uk, (tmp_uk)->argv[0]), 1); \
(tmp_uk)->argv++, (tmp_uk)->argc--)
/* tmate-client-encoder.c */
/* tmate-daemon-encoder.c */
#define TMATE_LATEST_VERSION "1.8.10"
extern void tmate_client_encoder_init(struct tmate_encoder *encoder);
extern void printflike1 tmate_notify(const char *fmt, ...);
extern void printflike2 tmate_notify_later(int timeout, const char *fmt, ...);
extern void tmate_notify_client_join(struct client *c);
@ -122,7 +120,7 @@ extern int tmate_should_exec_cmd_locally(const struct cmd_entry *cmd);
extern void tmate_send_env(const char *name, const char *value);
extern void tmate_send_client_ready(void);
/* tmate-client-decoder.c */
/* tmate-daemon-decoder.c */
#define TMATE_HLIMIT 2000
#define TMATE_PANE_ACTIVE 1
@ -140,7 +138,7 @@ extern void tmate_daemon_init(struct tmate_session *session);
/* tmate-ssh-client-pty.c */
extern void tmate_ssh_client_pty_init(struct tmate_session *session);
extern void tmate_client_pty_init(struct tmate_session *session);
extern void tmate_flush_pty(struct tmate_session *session);
/* tmate-ssh-server.c */
@ -148,8 +146,8 @@ extern void tmate_flush_pty(struct tmate_session *session);
#define TMATE_SSH_BANNER "tmate"
#define TMATE_SSH_KEEPALIVE 60
#define TMATE_ROLE_SERVER 1
#define TMATE_ROLE_CLIENT 2
#define TMATE_ROLE_DAEMON 1
#define TMATE_ROLE_PTY_CLIENT 2
struct tmate_ssh_client {
char ip_address[64];
@ -213,8 +211,8 @@ struct tmate_session {
const char *session_token;
const char *session_token_ro;
struct tmate_encoder client_encoder;
struct tmate_decoder client_decoder;
struct tmate_encoder daemon_encoder;
struct tmate_decoder daemon_decoder;
int client_protocol_version;
struct event ev_notify_timer;