diff options
author | Antenore Gatta (tmow) <antenore@simbiosi.org> | 2022-01-15 02:32:16 +0300 |
---|---|---|
committer | Antenore Gatta (tmow) <antenore@simbiosi.org> | 2022-01-15 02:32:16 +0300 |
commit | 1a1d23cf533c0964967928ec9a1352ae328fe2e1 (patch) | |
tree | 02e40431262d39b6888811b3b23bbd892779604c /src/remmina_pref_dialog.c | |
parent | 9f0784aad43a1ea42ca511407516ac10c1c83241 (diff) |
Refactoring security tab, solves #2676
Diffstat (limited to 'src/remmina_pref_dialog.c')
-rw-r--r-- | src/remmina_pref_dialog.c | 72 |
1 files changed, 25 insertions, 47 deletions
diff --git a/src/remmina_pref_dialog.c b/src/remmina_pref_dialog.c index 3a2f7d385..bfb7b9390 100644 --- a/src/remmina_pref_dialog.c +++ b/src/remmina_pref_dialog.c @@ -44,6 +44,7 @@ #include "remmina_log.h" #include "remmina_file_manager.h" #include "remmina_sodium.h" +#include "remmina_passwd.h" #include "remmina_public.h" #include "remmina_string_list.h" #include "remmina_widget_pool.h" @@ -167,40 +168,32 @@ void remmina_prefdiag_on_grab_color_activated(GtkSwitch *widget, gpointer user_d gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog->entry_grab_color), gtk_switch_get_active(widget)); } - -void remmina_prefdiag_unlock_repwd_on_changed(GtkEditable *editable, RemminaPrefDialog *dialog) +/* connect to notify::active or toggled (in this case ::toggled */ +void remmina_prefdiag_on_use_password_activated(GtkSwitch *sw, gpointer user_data) { TRACE_CALL(__func__); - GtkCssProvider *provider; - const gchar *color; - const gchar *password; - const gchar *repassword; - - provider = gtk_css_provider_new(); - - password = gtk_entry_get_text(remmina_pref_dialog->unlock_password); - repassword = gtk_entry_get_text(remmina_pref_dialog->unlock_repassword); - if (g_strcmp0(password, repassword) == 0) - color = g_strdup("green"); - else - color = g_strdup("red"); - - if (repassword == NULL || repassword[0] == '\0') - color = g_strdup("inherit"); - - gtk_css_provider_load_from_data(provider, - g_strdup_printf( - ".unlock_repassword {\n" - " color: %s;\n" - "}\n" - , color) - , -1, NULL); - gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), - GTK_STYLE_PROVIDER(provider), - GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); - - gtk_widget_queue_draw(GTK_WIDGET(remmina_pref_dialog->unlock_repassword)); - g_object_unref(provider); + //REMMINA_DEBUG ("Use Primary Password %d", gtk_switch_get_active(sw)); + if (gtk_switch_get_active(sw)) { + //REMMINA_DEBUG ("use_password activated"); + gchar *unlock_password = NULL; + unlock_password = g_strdup(remmina_pref_get_value("unlock_password")); + //REMMINA_DEBUG ("Password from preferences is: %s", unlock_password); + if (unlock_password == NULL || unlock_password[0] == '\0') { + if (remmina_passwd (GTK_WINDOW(remmina_pref_dialog->dialog), &unlock_password)) { + //REMMINA_DEBUG ("Password is: %s", unlock_password); + remmina_pref_set_value("unlock_password", g_strdup(unlock_password)); + remmina_pref.unlock_password = g_strdup(unlock_password); + } else { + remmina_pref.unlock_password = ""; + remmina_pref_set_value("unlock_password", ""); + } + } + g_free(unlock_password), unlock_password = NULL; + } else { + //REMMINA_DEBUG ("use_password deactivated"); + remmina_pref.unlock_password = ""; + remmina_pref_set_value("unlock_password", ""); + } } void remmina_pref_dialog_on_action_close(GSimpleAction *action, GVariant *param, gpointer data) @@ -234,11 +227,6 @@ void remmina_pref_on_dialog_destroy(GtkWidget *widget, gpointer user_data) remmina_pref.deny_screenshot_clipboard = gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog->switch_options_deny_screenshot_clipboard)); remmina_pref.save_view_mode = gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog->switch_options_remember_last_view_mode)); remmina_pref.use_primary_password = gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog->switch_security_use_primary_password)); -#if SODIUM_VERSION_INT >= 90200 - remmina_pref.unlock_repassword = gtk_entry_get_text(remmina_pref_dialog->unlock_repassword); - if (gtk_entry_get_text_length(remmina_pref_dialog->unlock_repassword) != 0) - remmina_pref.unlock_password = remmina_sodium_pwhash_str(gtk_entry_get_text(remmina_pref_dialog->unlock_password)); -#endif remmina_pref.lock_connect = gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog->switch_security_lock_connect)); remmina_pref.lock_edit = gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog->switch_security_lock_edit)); remmina_pref.enc_mode = gtk_combo_box_get_active(remmina_pref_dialog->comboboxtext_security_enc_method); @@ -471,13 +459,7 @@ static void remmina_pref_dialog_init(void) gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog->switch_options_remember_last_view_mode), remmina_pref.save_view_mode); #if SODIUM_VERSION_INT >= 90200 gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog->switch_security_use_primary_password), remmina_pref.use_primary_password); - if (remmina_pref.unlock_password != NULL) - gtk_entry_set_text(remmina_pref_dialog->unlock_password, remmina_pref.unlock_password); - else - gtk_entry_set_text(remmina_pref_dialog->unlock_password, ""); gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog->switch_security_use_primary_password), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog->unlock_password), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog->unlock_repassword), TRUE); gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog->switch_security_lock_connect), remmina_pref.lock_connect); gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog->switch_security_lock_edit), remmina_pref.lock_edit); gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog->unlock_timeout), TRUE); @@ -486,8 +468,6 @@ static void remmina_pref_dialog_init(void) gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog->switch_security_use_primary_password), FALSE); // TRANSLATORS: Do not translate libsodium, is the name of a library gtk_widget_set_tooltip_text(GTK_WIDGET(remmina_pref_dialog->switch_security_use_primary_password), _("libsodium >= 1.9.0 is required to use Primary Password")); - gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog->unlock_password), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog->unlock_repassword), FALSE); gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog->switch_security_lock_connect), FALSE); gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog->switch_security_lock_edit), FALSE); gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog->unlock_timeout), FALSE); @@ -724,8 +704,6 @@ GtkWidget *remmina_pref_dialog_new(gint default_tab, GtkWindow *parent) remmina_pref_dialog->switch_options_remember_last_view_mode = GTK_SWITCH(GET_OBJECT("switch_options_remember_last_view_mode")); remmina_pref_dialog->switch_security_use_primary_password = GTK_SWITCH(GET_OBJECT("switch_security_use_primary_password")); remmina_pref_dialog->unlock_timeout = GTK_ENTRY(GET_OBJECT("unlock_timeout")); - remmina_pref_dialog->unlock_password = GTK_ENTRY(GET_OBJECT("unlock_password")); - remmina_pref_dialog->unlock_repassword = GTK_ENTRY(GET_OBJECT("unlock_repassword")); remmina_pref_dialog->switch_security_lock_connect = GTK_SWITCH(GET_OBJECT("switch_security_lock_connect")); remmina_pref_dialog->switch_security_lock_edit = GTK_SWITCH(GET_OBJECT("switch_security_lock_edit")); remmina_pref_dialog->comboboxtext_security_enc_method = GTK_COMBO_BOX(GET_OBJECT("comboboxtext_security_enc_method")); |