38 #include <glib/gi18n.h> 40 #include <glib/gprintf.h> 49 #if SODIUM_VERSION_INT >= 90200 51 #define GET_OBJ(object_name) gtk_builder_get_object(remmina_unlock_dialog->builder, object_name) 60 timer = g_timer_new();
61 g_info(
"Unlock Master Password timer initialized");
69 g_info(
"Unlock Master Password timer reset");
76 g_timer_destroy(
timer);
84 gchar *unlock_password;
85 const gchar *entry_passwd;
89 entry_passwd = gtk_entry_get_text(remmina_unlock_dialog->
entry_unlock);
91 g_info(
"remmina_sodium_pwhash_str_verify returned %i", rc);
94 g_info(
"Passphrase veryfied successfully");
96 gtk_widget_destroy(GTK_WIDGET(remmina_unlock_dialog->
dialog));
97 remmina_unlock_dialog->
dialog = NULL;
99 g_warning (
"Passphrase is wrong, to reset it, you can edit the remmina.pref file by hand");
105 TRACE_CALL(__func__);
106 remmina_unlock_dialog->
retval = 0;
107 gtk_widget_destroy(GTK_WIDGET(remmina_unlock_dialog->
dialog));
108 remmina_unlock_dialog->
dialog = NULL;
113 TRACE_CALL(__func__);
115 gdouble unlock_timeout;
116 gdouble elapsed = 0.0;
117 gboolean lock = TRUE;
123 remmina_unlock_dialog->
retval = 1;
128 elapsed = g_timer_elapsed(
timer, NULL);
129 if (((
int)unlock_timeout - elapsed) < 0) lock = TRUE;
130 if (((
int)unlock_timeout - elapsed) >= 0) lock = FALSE;
132 if (
timer != NULL && (
int)unlock_timeout == 0) lock = FALSE;
134 if (
isinit == 0 && (
int)unlock_timeout >= 0) {
139 if (
isinit == 0 && (
int)unlock_timeout == 0) {
143 g_info(
"Based on settings and current status, the unlock dialog is set to %d", lock);
146 remmina_unlock_dialog->
dialog = GTK_DIALOG(gtk_builder_get_object(remmina_unlock_dialog->
builder,
"RemminaUnlockDialog"));
148 gtk_window_set_transient_for(GTK_WINDOW(remmina_unlock_dialog->
dialog), parent);
150 remmina_unlock_dialog->
entry_unlock = GTK_ENTRY(GET_OBJ(
"entry_unlock"));
151 gtk_entry_set_activates_default(GTK_ENTRY(remmina_unlock_dialog->
entry_unlock), TRUE);
152 remmina_unlock_dialog->
button_unlock = GTK_BUTTON(GET_OBJ(
"button_unlock"));
153 gtk_widget_set_can_default(GTK_WIDGET(remmina_unlock_dialog->
button_unlock), TRUE);
154 gtk_widget_grab_default(GTK_WIDGET(remmina_unlock_dialog->
button_unlock));
157 g_signal_connect(remmina_unlock_dialog->
button_unlock,
"clicked",
159 g_signal_connect(remmina_unlock_dialog->button_unlock_cancel,
"clicked",
161 g_signal_connect (remmina_unlock_dialog->dialog,
"close",
165 gtk_builder_connect_signals(remmina_unlock_dialog->builder, NULL);
170 gtk_dialog_run(remmina_unlock_dialog->dialog);
171 return(remmina_unlock_dialog->retval);
GtkBuilder * remmina_public_gtk_builder_new_from_file(gchar *filename)
static void remmina_unlock_cancel_clicked(GtkButton *btn, gpointer user_data)
GtkButton * button_unlock
gchar * remmina_pref_get_value(const gchar *key)
gint remmina_sodium_pwhash_str_verify(const char *key, const char *pass)
GtkButton * button_unlock_cancel
static void remmina_unlock_unlock_clicked(GtkButton *btn, gpointer user_data)
static RemminaUnlockDialog * remmina_unlock_dialog
static void remmina_unlock_timer_reset(gpointer user_data)
static void remmina_unlock_timer_init()
gboolean remmina_pref_get_boolean(const gchar *key)
void remmina_unlock_timer_destroy()
gint remmina_unlock_new(GtkWindow *parent)