Remmina - The GTK+ Remote Desktop Client  v1.4.33
Remmina is a remote desktop client written in GTK+, aiming to be useful for system administrators and travellers, who need to work with lots of remote computers in front of either large monitors or tiny netbooks. Remmina supports multiple network protocols in an integrated and consistent user interface. Currently RDP, VNC, NX, XDMCP and SSH are supported.
remmina_ssh.c File Reference

Go to the source code of this file.

Data Structures

struct  item
 

Typedefs

typedef struct item node_t
 

Functions

static void remmina_ssh_insert_item (ssh_channel channel, gint fd_in, gint fd_out, gboolean protected, pthread_t thread)
 
static void remmina_ssh_delete_item (ssh_channel channel)
 
static node_tremmina_ssh_search_item (ssh_channel channel)
 
const char * remmina_ssh_ssh_gai_strerror (int gaierr)
 
static int remmina_ssh_x11_get_proto (const char *display, char **_proto, char **_data)
 
static void remmina_ssh_set_nodelay (int fd)
 
static int remmina_ssh_connect_local_xsocket_path (const char *pathname)
 
static int remmina_ssh_connect_local_xsocket (int display_number)
 
static int remmina_ssh_x11_connect_display ()
 
static int remmina_ssh_cp_to_ch_cb (int fd, int revents, void *userdata)
 
static int remmina_ssh_cp_to_fd_cb (ssh_session session, ssh_channel channel, void *data, uint32_t len, int is_stderr, void *userdata)
 
static void remmina_ssh_ch_close_cb (ssh_session session, ssh_channel channel, void *userdata)
 
static void remmina_ssh_close_all_x11_ch (pthread_t thread)
 
static ssh_channel remmina_ssh_x11_open_request_cb (ssh_session session, const char *shost, int sport, void *userdata)
 
gchar * remmina_ssh_identity_path (const gchar *id)
 
gchar * remmina_ssh_find_identity (void)
 
void remmina_ssh_set_error (RemminaSSH *ssh, const gchar *fmt)
 
void remmina_ssh_set_application_error (RemminaSSH *ssh, const gchar *fmt,...)
 
static enum remmina_ssh_auth_result remmina_ssh_auth_interactive (RemminaSSH *ssh)
 
static enum remmina_ssh_auth_result remmina_ssh_auth_password (RemminaSSH *ssh)
 
static enum remmina_ssh_auth_result remmina_ssh_auth_pubkey (RemminaSSH *ssh, RemminaProtocolWidget *gp, RemminaFile *remminafile)
 
static enum remmina_ssh_auth_result remmina_ssh_auth_auto_pubkey (RemminaSSH *ssh, RemminaProtocolWidget *gp, RemminaFile *remminafile)
 
static enum remmina_ssh_auth_result remmina_ssh_auth_agent (RemminaSSH *ssh)
 
static enum remmina_ssh_auth_result remmina_ssh_auth_gssapi (RemminaSSH *ssh)
 
enum remmina_ssh_auth_result remmina_ssh_auth (RemminaSSH *ssh, const gchar *password, RemminaProtocolWidget *gp, RemminaFile *remminafile)
 

Variables

static const gchar * common_identities []
 
node_tnode = NULL
 
pthread_mutex_t mutex
 
struct ssh_channel_callbacks_struct channel_cb
 
short events = POLLIN | POLLPRI | POLLERR | POLLHUP | POLLNVAL
 

Typedef Documentation

◆ node_t

typedef struct item node_t

Function Documentation

◆ remmina_ssh_auth()

enum remmina_ssh_auth_result remmina_ssh_auth ( RemminaSSH ssh,
const gchar *  password,
RemminaProtocolWidget gp,
RemminaFile remminafile 
)
Todo:
Here we should call gint method; method = ssh_userauth_list(ssh->session, NULL);

#define SSH_AUTH_METHOD_UNKNOWN 0x0000u #define SSH_AUTH_METHOD_NONE 0x0001u #define SSH_AUTH_METHOD_PASSWORD 0x0002u #define SSH_AUTH_METHOD_PUBLICKEY 0x0004u #define SSH_AUTH_METHOD_HOSTBASED 0x0008u #define SSH_AUTH_METHOD_INTERACTIVE 0x0010u #define SSH_AUTH_METHOD_GSSAPI_MIC 0x0020u

And than test both the method and the option selected by the user

gp flags title default_username default_password default_domain password_prompt

Some protocols may open new connections during the session. e.g: SPICE opens a new connection for some channels.

Definition at line 1085 of file remmina_ssh.c.

◆ remmina_ssh_auth_agent()

static enum remmina_ssh_auth_result remmina_ssh_auth_agent ( RemminaSSH ssh)
static

Definition at line 994 of file remmina_ssh.c.

◆ remmina_ssh_auth_auto_pubkey()

static enum remmina_ssh_auth_result remmina_ssh_auth_auto_pubkey ( RemminaSSH ssh,
RemminaProtocolWidget gp,
RemminaFile remminafile 
)
static

Definition at line 948 of file remmina_ssh.c.

◆ remmina_ssh_auth_gssapi()

static enum remmina_ssh_auth_result remmina_ssh_auth_gssapi ( RemminaSSH ssh)
static

Definition at line 1040 of file remmina_ssh.c.

◆ remmina_ssh_auth_interactive()

static enum remmina_ssh_auth_result remmina_ssh_auth_interactive ( RemminaSSH ssh)
static

Definition at line 674 of file remmina_ssh.c.

◆ remmina_ssh_auth_password()

static enum remmina_ssh_auth_result remmina_ssh_auth_password ( RemminaSSH ssh)
static

Definition at line 753 of file remmina_ssh.c.

◆ remmina_ssh_auth_pubkey()

static enum remmina_ssh_auth_result remmina_ssh_auth_pubkey ( RemminaSSH ssh,
RemminaProtocolWidget gp,
RemminaFile remminafile 
)
static

Definition at line 811 of file remmina_ssh.c.

◆ remmina_ssh_ch_close_cb()

static void remmina_ssh_ch_close_cb ( ssh_session  session,
ssh_channel  channel,
void *  userdata 
)
static

Definition at line 557 of file remmina_ssh.c.

◆ remmina_ssh_close_all_x11_ch()

static void remmina_ssh_close_all_x11_ch ( pthread_t  thread)
static

Definition at line 581 of file remmina_ssh.c.

◆ remmina_ssh_connect_local_xsocket()

static int remmina_ssh_connect_local_xsocket ( int  display_number)
static

Definition at line 377 of file remmina_ssh.c.

◆ remmina_ssh_connect_local_xsocket_path()

static int remmina_ssh_connect_local_xsocket_path ( const char *  pathname)
static

Definition at line 350 of file remmina_ssh.c.

◆ remmina_ssh_cp_to_ch_cb()

static int remmina_ssh_cp_to_ch_cb ( int  fd,
int  revents,
void *  userdata 
)
static

Definition at line 479 of file remmina_ssh.c.

◆ remmina_ssh_cp_to_fd_cb()

static int remmina_ssh_cp_to_fd_cb ( ssh_session  session,
ssh_channel  channel,
void *  data,
uint32_t  len,
int  is_stderr,
void *  userdata 
)
static

Definition at line 537 of file remmina_ssh.c.

◆ remmina_ssh_delete_item()

static void remmina_ssh_delete_item ( ssh_channel  channel)
static

Definition at line 226 of file remmina_ssh.c.

◆ remmina_ssh_find_identity()

gchar* remmina_ssh_find_identity ( void  )

Definition at line 637 of file remmina_ssh.c.

◆ remmina_ssh_identity_path()

gchar* remmina_ssh_identity_path ( const gchar *  id)

Definition at line 628 of file remmina_ssh.c.

◆ remmina_ssh_insert_item()

static void remmina_ssh_insert_item ( ssh_channel  channel,
gint  fd_in,
gint  fd_out,
gboolean  protected,
pthread_t  thread 
)
static

Definition at line 189 of file remmina_ssh.c.

◆ remmina_ssh_search_item()

static node_t * remmina_ssh_search_item ( ssh_channel  channel)
static

Definition at line 253 of file remmina_ssh.c.

◆ remmina_ssh_set_application_error()

void remmina_ssh_set_application_error ( RemminaSSH ssh,
const gchar *  fmt,
  ... 
)

Definition at line 663 of file remmina_ssh.c.

◆ remmina_ssh_set_error()

void remmina_ssh_set_error ( RemminaSSH ssh,
const gchar *  fmt 
)

Definition at line 653 of file remmina_ssh.c.

◆ remmina_ssh_set_nodelay()

static void remmina_ssh_set_nodelay ( int  fd)
static

Definition at line 278 of file remmina_ssh.c.

◆ remmina_ssh_ssh_gai_strerror()

const char * remmina_ssh_ssh_gai_strerror ( int  gaierr)

Definition at line 300 of file remmina_ssh.c.

◆ remmina_ssh_x11_connect_display()

static int remmina_ssh_x11_connect_display ( )
static

Definition at line 387 of file remmina_ssh.c.

◆ remmina_ssh_x11_get_proto()

static int remmina_ssh_x11_get_proto ( const char *  display,
char **  _proto,
char **  _data 
)
static

Definition at line 310 of file remmina_ssh.c.

◆ remmina_ssh_x11_open_request_cb()

static ssh_channel remmina_ssh_x11_open_request_cb ( ssh_session  session,
const char *  shost,
int  sport,
void *  userdata 
)
static

Definition at line 604 of file remmina_ssh.c.

Variable Documentation

◆ channel_cb

struct ssh_channel_callbacks_struct channel_cb
Initial value:
=
{
.channel_data_function = remmina_ssh_cp_to_fd_cb,
.channel_eof_function = remmina_ssh_ch_close_cb,
.channel_close_function = remmina_ssh_ch_close_cb,
.userdata = NULL
}
static void remmina_ssh_ch_close_cb(ssh_session session, ssh_channel channel, void *userdata)
Definition: remmina_ssh.c:557
static int remmina_ssh_cp_to_fd_cb(ssh_session session, ssh_channel channel, void *data, uint32_t len, int is_stderr, void *userdata)
Definition: remmina_ssh.c:537

Definition at line 176 of file remmina_ssh.c.

◆ common_identities

const gchar* common_identities[]
static
Initial value:
=
{
".ssh/id_ed25519",
".ssh/id_rsa",
".ssh/id_dsa",
".ssh/identity",
NULL
}

Definition at line 118 of file remmina_ssh.c.

◆ events

short events = POLLIN | POLLPRI | POLLERR | POLLHUP | POLLNVAL

Definition at line 185 of file remmina_ssh.c.

◆ mutex

pthread_mutex_t mutex

Definition at line 145 of file remmina_ssh.c.

◆ node

node_t* node = NULL

Definition at line 142 of file remmina_ssh.c.