mirror of
https://git.libssh.org/projects/libssh.git
synced 2025-12-17 06:18:58 +03:00
The kex works, the client authentifies (with password) then it's possible to choose a subsystem. The channels don't completely work.
git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@7 7dcaeef0-15fb-0310-b436-a5af3365683c
This commit is contained in:
@@ -47,19 +47,95 @@ int ssh_accept(SSH_SESSION *session);
|
||||
|
||||
/* messages.c */
|
||||
|
||||
#define SSH_AUTH_REQUEST 1
|
||||
#define SSH_CHANNEL_REQUEST_OPEN 2
|
||||
#define SSH_CHANNEL_REQUEST 3
|
||||
|
||||
#define SSH_AUTH_NONE (1<<0)
|
||||
#define SSH_AUTH_PASSWORD (1<<1)
|
||||
#define SSH_AUTH_HOSTBASED (1<<2)
|
||||
#define SSH_AUTH_PUBLICKEY (1<<3)
|
||||
#define SSH_AUTH_KEYBINT (1<<4)
|
||||
#define SSH_AUTH_UNKNOWN 0
|
||||
|
||||
struct ssh_auth_request {
|
||||
char *username;
|
||||
int method;
|
||||
char *password;
|
||||
};
|
||||
|
||||
|
||||
#define SSH_CHANNEL_SESSION 1
|
||||
#define SSH_CHANNEL_TCPIP 2
|
||||
#define SSH_CHANNEL_X11 3
|
||||
#define SSH_CHANNEL_UNKNOWN 4
|
||||
struct ssh_channel_request_open {
|
||||
int type;
|
||||
u32 sender;
|
||||
u32 window;
|
||||
u32 packet_size;
|
||||
char *originator;
|
||||
u16 orignator_port;
|
||||
char *destination;
|
||||
u16 destination_port;
|
||||
};
|
||||
|
||||
#define SSH_CHANNEL_REQUEST_PTY 1
|
||||
#define SSH_CHANNEL_REQUEST_EXEC 2
|
||||
#define SSH_CHANNEL_REQUEST_SHELL 3
|
||||
#define SSH_CHANNEL_REQUEST_ENV 4
|
||||
#define SSH_CHANNEL_REQUEST_SUBSYSTEM 5
|
||||
#define SSH_CHANNEL_REQUEST_WINDOW_CHANGE 6
|
||||
#define SSH_CHANNEL_REQUEST_UNKNOWN 7
|
||||
|
||||
struct ssh_channel_request {
|
||||
int type;
|
||||
CHANNEL *channel;
|
||||
u8 want_reply;
|
||||
/* pty-req type specifics */
|
||||
char *TERM;
|
||||
u32 width;
|
||||
u32 height;
|
||||
u32 pxwidth;
|
||||
u32 pxheight;
|
||||
STRING *modes;
|
||||
|
||||
/* env type request */
|
||||
char *var_name;
|
||||
char *var_value;
|
||||
/* exec type request */
|
||||
char *command;
|
||||
/* subsystem */
|
||||
char *subsystem;
|
||||
};
|
||||
|
||||
struct ssh_message {
|
||||
SSH_SESSION *session;
|
||||
int type;
|
||||
struct ssh_auth_request auth_request;
|
||||
struct ssh_channel_request_open channel_request_open;
|
||||
struct ssh_channel_request channel_request;
|
||||
};
|
||||
|
||||
typedef struct ssh_message SSH_MESSAGE;
|
||||
|
||||
SSH_MESSAGE *ssh_message_get(SSH_SESSION *session);
|
||||
int ssh_message_type(SSH_MESSAGE *msg);
|
||||
int ssh_message_subtype(SSH_MESSAGE *msg);
|
||||
int ssh_message_reply_default(SSH_MESSAGE *msg);
|
||||
void ssh_message_free(SSH_MESSAGE *msg);
|
||||
|
||||
char *ssh_message_auth_user(SSH_MESSAGE *msg);
|
||||
char *ssh_message_auth_password(SSH_MESSAGE *msg);
|
||||
int ssh_message_auth_reply_success(SSH_MESSAGE *msg,int partial);
|
||||
void ssh_message_auth_set_methods(SSH_MESSAGE *msg, int methods);
|
||||
|
||||
CHANNEL *ssh_message_channel_request_open_reply_accept(SSH_MESSAGE *msg);
|
||||
|
||||
CHANNEL *ssh_message_channel_request_channel(SSH_MESSAGE *msg);
|
||||
// returns the TERM env variable
|
||||
char *ssh_message_channel_request_pty_term(SSH_MESSAGE *msg);
|
||||
char *ssh_message_channel_request_subsystem(SSH_MESSAGE *msg);
|
||||
int ssh_message_channel_request_reply_success(SSH_MESSAGE *msg);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user