gboolean remmina_ssh_init_from_file (RemminaSSH *ssh, RemminaFile *remminafile) { const gchar *ssh_server; const gchar *ssh_username; const gchar *ssh_privatekey; const gchar *server; gchar *s; ssh->session = NULL; ssh->callback = NULL; ssh->authenticated = FALSE; ssh->error = NULL; pthread_mutex_init (&ssh->ssh_mutex, NULL); /* Parse the address and port */ ssh_server = remmina_file_get_string (remminafile, "ssh_server"); ssh_username = remmina_file_get_string (remminafile, "ssh_username"); ssh_privatekey = remmina_file_get_string (remminafile, "ssh_privatekey"); server = remmina_file_get_string (remminafile, "server"); if (ssh_server) { remmina_public_get_server_port (ssh_server, 22, &ssh->server, &ssh->port); if (ssh->server[0] == '\0') { g_free(ssh->server); remmina_public_get_server_port (server, 0, &ssh->server, NULL); } } else if (server == NULL) { ssh->server = g_strdup ("localhost"); ssh->port = 22; } else { remmina_public_get_server_port (server, 0, &ssh->server, NULL); ssh->port = 22; } ssh->user = g_strdup (ssh_username ? ssh_username : g_get_user_name ()); ssh->password = NULL; ssh->auth = remmina_file_get_int (remminafile, "ssh_auth", 0); ssh->charset = g_strdup (remmina_file_get_string (remminafile, "ssh_charset")); /* Public/Private keys */ s = (ssh_privatekey ? g_strdup (ssh_privatekey) : remmina_ssh_find_identity ()); if (s) { ssh->privkeyfile = remmina_ssh_identity_path (s); g_free(s); } else { ssh->privkeyfile = NULL; } return TRUE; }
static void remmina_file_editor_ssh_auth_publickey_radio_on_toggled(GtkToggleButton* togglebutton, RemminaFileEditor* gfe) { gboolean b; gchar* s; b = ((!gfe->priv->ssh_enabled_check || gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gfe->priv->ssh_enabled_check))) && gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gfe->priv->ssh_auth_publickey_radio))); gtk_widget_set_sensitive(gfe->priv->ssh_privatekey_chooser, b); if (b && remmina_file_get_string (gfe->priv->remmina_file, "ssh_privatekey")) { s = remmina_ssh_find_identity (); if (s) { gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (gfe->priv->ssh_privatekey_chooser), s); g_free(s); } } }