Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/Remmina/Remmina.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntenore Gatta <antenore@simbiosi.org>2019-03-29 04:37:04 +0300
committerAntenore Gatta <antenore@simbiosi.org>2019-03-29 04:37:04 +0300
commit04a061e6e7ba26561b95d9db2456d2266b644b9f (patch)
tree116db5a7457f69c054ebf7da1b8a55079e344d1d
parente134dbd2f1d8478f49b0483bbf0c57feae71c661 (diff)
WIP: core unlock code - password validation
-rw-r--r--data/ui/remmina_preferences.glade4
-rw-r--r--src/remmina_file_editor.c1
-rw-r--r--src/remmina_pref.h1
-rw-r--r--src/remmina_pref_dialog.c45
-rw-r--r--src/remmina_pref_dialog.h2
5 files changed, 53 insertions, 0 deletions
diff --git a/data/ui/remmina_preferences.glade b/data/ui/remmina_preferences.glade
index 95748c8f7..b792e0d4d 100644
--- a/data/ui/remmina_preferences.glade
+++ b/data/ui/remmina_preferences.glade
@@ -1507,6 +1507,10 @@ Author: Antenore Gatta
<property name="visibility">False</property>
<property name="invisible_char">•</property>
<property name="input_purpose">password</property>
+ <signal name="changed" handler="remmina_pref_dialog_entry_on_changed" swapped="no"/>
+ <style>
+ <class name="unlock_repassword"/>
+ </style>
</object>
<packing>
<property name="left_attach">1</property>
diff --git a/src/remmina_file_editor.c b/src/remmina_file_editor.c
index 314a962c6..d96ee94b0 100644
--- a/src/remmina_file_editor.c
+++ b/src/remmina_file_editor.c
@@ -1379,6 +1379,7 @@ static void remmina_file_editor_entry_on_changed(GtkEditable* editable, RemminaF
priv = gfe->priv;
if (remmina_file_get_filename(priv->remmina_file) == NULL) {
remmina_file_generate_filename(priv->remmina_file);
+ /* TODO Probably to be removed */
remmina_file_editor_check_profile(gfe);
} else {
remmina_file_delete(remmina_file_get_filename(priv->remmina_file));
diff --git a/src/remmina_pref.h b/src/remmina_pref.h
index 35e91659c..4ff2d27a0 100644
--- a/src/remmina_pref.h
+++ b/src/remmina_pref.h
@@ -118,6 +118,7 @@ typedef struct _RemminaPref {
gboolean save_view_mode;
gboolean use_master_password;
const gchar *unlock_password;
+ const gchar *unlock_repassword;
gint unlock_timeout;
gint default_action;
gint scale_quality;
diff --git a/src/remmina_pref_dialog.c b/src/remmina_pref_dialog.c
index 6b810da33..ed9ae10e0 100644
--- a/src/remmina_pref_dialog.c
+++ b/src/remmina_pref_dialog.c
@@ -147,6 +147,47 @@ void remmina_pref_on_button_keystrokes_clicked(GtkWidget *widget, gpointer user_
gtk_widget_destroy(GTK_WIDGET(dialog));
}
+void remmina_pref_dialog_entry_on_changed(GtkEditable* editable, RemminaPrefDialog *dialog)
+{
+ 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");
+
+ g_print("Password is %s\n", password);
+ g_print("Re-typed password is %s\n", repassword);
+ g_print("Color is %s\n", color);
+
+ 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);
+
+}
+
void remmina_pref_dialog_on_close_clicked(GtkWidget *widget, RemminaPrefDialog *dialog)
{
TRACE_CALL(__func__);
@@ -168,6 +209,7 @@ void remmina_pref_on_dialog_destroy(GtkWidget *widget, gpointer user_data)
remmina_pref.save_view_mode = gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog->switch_options_remember_last_view_mode));
remmina_pref.use_master_password = gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog->switch_security_use_master_password));
remmina_pref.unlock_password = gtk_entry_get_text(remmina_pref_dialog->unlock_password);
+ remmina_pref.unlock_repassword = gtk_entry_get_text(remmina_pref_dialog->unlock_repassword);
remmina_pref.screenshot_path = gtk_file_chooser_get_filename(remmina_pref_dialog->filechooserbutton_options_screenshots_path);
remmina_pref.fullscreen_on_auto = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog->checkbutton_appearance_fullscreen_on_auto));
remmina_pref.always_show_tab = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog->checkbutton_appearance_show_tabs));
@@ -577,6 +619,8 @@ GtkDialog* 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_master_password = GTK_SWITCH(GET_OBJECT("switch_security_use_master_password"));
remmina_pref_dialog->unlock_password = GTK_ENTRY(GET_OBJECT("unlock_password"));
+ remmina_pref_dialog->unlock_repassword = GTK_ENTRY(GET_OBJECT("unlock_repassword"));
+ //gtk_style_context_add_class(gtk_widget_get_style_context(GTK_WIDGET(remmina_pref_dialog->unlock_repassword)), "unlock_repassword");
remmina_pref_dialog->checkbutton_options_save_settings = GTK_CHECK_BUTTON(GET_OBJECT("checkbutton_options_save_settings"));
remmina_pref_dialog->checkbutton_appearance_fullscreen_on_auto = GTK_CHECK_BUTTON(GET_OBJECT("checkbutton_appearance_fullscreen_on_auto"));
remmina_pref_dialog->checkbutton_appearance_show_tabs = GTK_CHECK_BUTTON(GET_OBJECT("checkbutton_appearance_show_tabs"));
@@ -659,6 +703,7 @@ GtkDialog* remmina_pref_dialog_new(gint default_tab, GtkWindow *parent)
/* Connect signals */
gtk_builder_connect_signals(remmina_pref_dialog->builder, NULL);
+ //g_signal_connect(G_OBJECT(remmina_pref_dialog->unlock_repassword), "changed", G_CALLBACK(remmina_pref_dialog_entry_on_changed), remmina_pref_dialog);
/* Initialize the window and load the preferences */
remmina_pref_dialog_init();
diff --git a/src/remmina_pref_dialog.h b/src/remmina_pref_dialog.h
index 6d8b95d04..6c276f8c4 100644
--- a/src/remmina_pref_dialog.h
+++ b/src/remmina_pref_dialog.h
@@ -57,6 +57,7 @@ typedef struct _RemminaPrefDialog {
GtkSwitch *switch_security_use_master_password;
GtkEntry *unlock_timeout;
GtkEntry *unlock_password;
+ GtkEntry *unlock_repassword;
GtkCheckButton *checkbutton_options_save_settings;
GtkCheckButton *checkbutton_appearance_fullscreen_on_auto;
GtkCheckButton *checkbutton_appearance_show_tabs;
@@ -148,6 +149,7 @@ G_BEGIN_DECLS
GtkDialog* remmina_pref_dialog_new(gint default_tab, GtkWindow *parent);
/* Get the current PrefDialog or NULL if not initialized */
GtkDialog* remmina_pref_dialog_get_dialog(void);
+void remmina_pref_dialog_entry_on_changed(GtkEditable* editable, RemminaPrefDialog *dialog);
G_END_DECLS