Skip to content

Commit

Permalink
UI fixes when SSH or SFTP are the protocol
Browse files Browse the repository at this point in the history
  • Loading branch information
antenore committed Jun 16, 2017
1 parent 4640edc commit 644b66b
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 25 deletions.
58 changes: 36 additions & 22 deletions remmina/src/remmina_file_editor.c
Original file line number Diff line number Diff line change
Expand Up @@ -292,14 +292,24 @@ static void remmina_file_editor_ssh_auth_publickey_radio_on_toggled(GtkToggleBut
}
}

static void remmina_file_editor_ssh_enabled_check_on_toggled(GtkToggleButton* togglebutton, RemminaFileEditor* gfe)
static void remmina_file_editor_ssh_enabled_check_on_toggled(GtkToggleButton* togglebutton,
RemminaFileEditor* gfe, RemminaProtocolSSHSetting ssh_setting)
{
TRACE_CALL("remmina_file_editor_ssh_enabled_check_on_toggled");
gboolean enabled = TRUE;

if (gfe->priv->ssh_enabled_check)
{
enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gfe->priv->ssh_enabled_check));
if (ssh_setting == REMMINA_PROTOCOL_SSH_SETTING_SSH ||
ssh_setting == REMMINA_PROTOCOL_SSH_SETTING_SFTP)
{
gtk_widget_set_sensitive(gfe->priv->ssh_enabled_check, 1);
gtk_widget_set_sensitive(gfe->priv->ssh_loopback_check, 1);
}
else
{
enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gfe->priv->ssh_enabled_check));
}
if (gfe->priv->ssh_loopback_check)
gtk_widget_set_sensitive(gfe->priv->ssh_loopback_check, enabled);
if (gfe->priv->ssh_server_default_radio)
Expand Down Expand Up @@ -785,20 +795,24 @@ static void remmina_file_editor_create_ssh_tab(RemminaFileEditor* gfe, RemminaPr
gtk_grid_attach (GTK_GRID(grid), hbox, 0, 0, 3, 1);
row++;

widget = gtk_check_button_new_with_label (_("Enable SSH tunnel"));
gtk_widget_show(widget);
gtk_box_pack_start (GTK_BOX (hbox), widget, TRUE, TRUE, 0);
g_signal_connect(G_OBJECT(widget), "toggled",
G_CALLBACK(remmina_file_editor_ssh_enabled_check_on_toggled), gfe);
priv->ssh_enabled_check = widget;
if (!(ssh_setting == REMMINA_PROTOCOL_SSH_SETTING_SSH ||
ssh_setting == REMMINA_PROTOCOL_SSH_SETTING_SFTP))
{
widget = gtk_check_button_new_with_label (_("Enable SSH tunnel"));
gtk_widget_show(widget);
gtk_box_pack_start (GTK_BOX (hbox), widget, TRUE, TRUE, 0);
g_signal_connect(G_OBJECT(widget), "toggled",
G_CALLBACK(remmina_file_editor_ssh_enabled_check_on_toggled), gfe);
priv->ssh_enabled_check = widget;

widget = gtk_check_button_new_with_label (_("Tunnel via loopback address"));
gtk_widget_show(widget);
gtk_box_pack_start (GTK_BOX (hbox), widget, TRUE, TRUE, 0);
priv->ssh_loopback_check = widget;
widget = gtk_check_button_new_with_label (_("Tunnel via loopback address"));
gtk_widget_show(widget);
gtk_box_pack_start (GTK_BOX (hbox), widget, TRUE, TRUE, 0);
priv->ssh_loopback_check = widget;

row++;
}
/* SSH Server group */
row++;

switch (ssh_setting)
{
Expand Down Expand Up @@ -932,15 +946,15 @@ static void remmina_file_editor_create_ssh_tab(RemminaFileEditor* gfe, RemminaPr
}

gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(
remmina_file_get_int (priv->remmina_file, "ssh_auth", 0) == SSH_AUTH_PUBLICKEY ?
priv->ssh_auth_publickey_radio :
remmina_file_get_int (priv->remmina_file, "ssh_auth", 0) == SSH_AUTH_AUTO_PUBLICKEY ?
priv->ssh_auth_auto_publickey_radio :
remmina_file_get_int (priv->remmina_file, "ssh_auth", 0) == SSH_AUTH_AGENT ?
priv->ssh_auth_agent_radio :
priv->ssh_auth_password_radio), TRUE);

remmina_file_editor_ssh_enabled_check_on_toggled (NULL, gfe);
remmina_file_get_int (priv->remmina_file, "ssh_auth", 0) == SSH_AUTH_PUBLICKEY ?
priv->ssh_auth_publickey_radio :
remmina_file_get_int (priv->remmina_file, "ssh_auth", 0) == SSH_AUTH_AUTO_PUBLICKEY ?
priv->ssh_auth_auto_publickey_radio :
remmina_file_get_int (priv->remmina_file, "ssh_auth", 0) == SSH_AUTH_AGENT ?
priv->ssh_auth_agent_radio :
priv->ssh_auth_password_radio), TRUE);

remmina_file_editor_ssh_enabled_check_on_toggled (NULL, gfe, ssh_setting);
#endif
}

Expand Down
16 changes: 14 additions & 2 deletions remmina/src/remmina_ssh.c
Original file line number Diff line number Diff line change
Expand Up @@ -312,10 +312,22 @@ remmina_ssh_auth (RemminaSSH *ssh, const gchar *password)
return remmina_ssh_auth_pubkey (ssh);

case SSH_AUTH_AGENT:
return remmina_ssh_auth_agent (ssh);
if (!remmina_ssh_auth_agent (ssh))
{
if (!remmina_ssh_auth_auto_pubkey (ssh))
{
return remmina_ssh_auth_password (ssh);
}
return 1;
}
return 1;

case SSH_AUTH_AUTO_PUBLICKEY:
return remmina_ssh_auth_auto_pubkey (ssh);
if (!remmina_ssh_auth_auto_pubkey (ssh))
{
return remmina_ssh_auth_password (ssh);
}
return 1;

default:
return 0;
Expand Down
2 changes: 1 addition & 1 deletion remmina/src/remmina_ssh_plugin.c
Original file line number Diff line number Diff line change
Expand Up @@ -434,7 +434,7 @@ remmina_plugin_ssh_vte_paste_clipboard (GtkMenuItem *menuitem, gpointer user_dat
/* Send a keystroke to the plugin window */
static void remmina_ssh_keystroke(RemminaProtocolWidget *gp, const guint keystrokes[], const gint keylen)
{
TRACE_CALL("remmina_rdp_keystroke");
TRACE_CALL("remmina_ssh_keystroke");
RemminaPluginSshData *gpdata = GET_PLUGIN_DATA(gp);
remmina_plugin_service->protocol_plugin_send_keys_signals(gpdata->vte,
keystrokes, keylen, GDK_KEY_PRESS | GDK_KEY_RELEASE);
Expand Down

0 comments on commit 644b66b

Please sign in to comment.