diff options
Diffstat (limited to 'src/gui/dialogs/identity.c')
-rw-r--r-- | src/gui/dialogs/identity.c | 111 |
1 files changed, 67 insertions, 44 deletions
diff --git a/src/gui/dialogs/identity.c b/src/gui/dialogs/identity.c index 625c556..eae1069 100644 --- a/src/gui/dialogs/identity.c +++ b/src/gui/dialogs/identity.c @@ -24,19 +24,22 @@ #include "identity.h" +#include <malloc.h> #include <string.h> #include <i18n.h> +#include "../../analysis/db/auth.h" #include "../../analysis/db/certs.h" +#include "../../common/extstr.h" #include "../../core/logs.h" /* Applique la nouvelle définition d'identité. */ -static void update_identity(GtkButton *button, GtkBuilder *); +static void update_identity(GtkButton *, GtkBuilder *); @@ -57,8 +60,11 @@ GtkWidget *create_identity_dialog(GtkWindow *parent, GtkBuilder **outb) { GtkWidget *result; /* Fenêtre à renvoyer */ GtkBuilder *builder; /* Constructeur utilisé */ - x509_entries entries; /* Eléments identitaires */ + char *username; /* Nom par défaut */ GtkEntry *entry; /* Zone de saisie à initialiser*/ + char *filename; /* Fichier devant être présent */ + x509_entries identity; /* Eléments identitaires */ + bool status; /* Bilan d'un chargement */ builder = gtk_builder_new_from_resource("/org/chrysalide/gui/dialogs/identity.ui"); *outb = builder; @@ -67,47 +73,64 @@ GtkWidget *create_identity_dialog(GtkWindow *parent, GtkBuilder **outb) gtk_window_set_transient_for(GTK_WINDOW(result), parent); - /* Mise à jour de l'interface */ + username = get_default_username(); - memset(&entries, 0, sizeof(entries)); - //load_identity(true, &entries); + entry = GTK_ENTRY(gtk_builder_get_object(builder, "cn")); + gtk_entry_set_placeholder_text(entry, username); - if (entries.country != NULL) - { - entry = GTK_ENTRY(gtk_builder_get_object(builder, "c")); - gtk_entry_set_text(entry, entries.country); - } + free(username); - if (entries.state != NULL) - { - entry = GTK_ENTRY(gtk_builder_get_object(builder, "st")); - gtk_entry_set_text(entry, entries.state); - } + /* Mise à jour de l'interface */ - if (entries.locality != NULL) - { - entry = GTK_ENTRY(gtk_builder_get_object(builder, "l")); - gtk_entry_set_text(entry, entries.locality); - } + filename = get_db_working_directory("clients", NULL, NULL, NULL); + filename = stradd(filename, "client-csr.pem"); - if (entries.organisation != NULL) - { - entry = GTK_ENTRY(gtk_builder_get_object(builder, "o")); - gtk_entry_set_text(entry, entries.organisation); - } + status = load_identity_from_request(filename, &identity); - if (entries.organisational_unit != NULL) - { - entry = GTK_ENTRY(gtk_builder_get_object(builder, "ou")); - gtk_entry_set_text(entry, entries.organisational_unit); - } + free(filename); - if (entries.country != NULL) + if (status) { - entry = GTK_ENTRY(gtk_builder_get_object(builder, "cn")); - gtk_entry_set_text(entry, entries.common_name); - - gtk_editable_select_region(GTK_EDITABLE(entry), 0, -1); + if (identity.country != NULL) + { + entry = GTK_ENTRY(gtk_builder_get_object(builder, "c")); + gtk_entry_set_text(entry, identity.country); + } + + if (identity.state != NULL) + { + entry = GTK_ENTRY(gtk_builder_get_object(builder, "st")); + gtk_entry_set_text(entry, identity.state); + } + + if (identity.locality != NULL) + { + entry = GTK_ENTRY(gtk_builder_get_object(builder, "l")); + gtk_entry_set_text(entry, identity.locality); + } + + if (identity.organisation != NULL) + { + entry = GTK_ENTRY(gtk_builder_get_object(builder, "o")); + gtk_entry_set_text(entry, identity.organisation); + } + + if (identity.organisational_unit != NULL) + { + entry = GTK_ENTRY(gtk_builder_get_object(builder, "ou")); + gtk_entry_set_text(entry, identity.organisational_unit); + } + + if (identity.common_name != NULL) + { + entry = GTK_ENTRY(gtk_builder_get_object(builder, "cn")); + gtk_entry_set_text(entry, identity.common_name); + + gtk_editable_select_region(GTK_EDITABLE(entry), 0, -1); + + } + + free_x509_entries(&identity); } @@ -141,7 +164,7 @@ static void update_identity(GtkButton *button, GtkBuilder *builder) { GtkEntry *entry; /* Zone de saisie à consulter */ const gchar *data; /* Données internes à GTK */ - x509_entries entries; /* Nouvelle identité à pousser */ + x509_entries identity; /* Nouvelle identité à pousser */ bool status; /* Bilan de la mise à jour */ /* Récupération des éléments */ @@ -149,42 +172,42 @@ static void update_identity(GtkButton *button, GtkBuilder *builder) entry = GTK_ENTRY(gtk_builder_get_object(builder, "c")); data = gtk_entry_get_text(entry); - entries.country = (strlen(data) > 0 ? strdup(data) : NULL); + identity.country = (strlen(data) > 0 ? strdup(data) : NULL); entry = GTK_ENTRY(gtk_builder_get_object(builder, "st")); data = gtk_entry_get_text(entry); - entries.state = (strlen(data) > 0 ? strdup(data) : NULL); + identity.state = (strlen(data) > 0 ? strdup(data) : NULL); entry = GTK_ENTRY(gtk_builder_get_object(builder, "l")); data = gtk_entry_get_text(entry); - entries.locality = (strlen(data) > 0 ? strdup(data) : NULL); + identity.locality = (strlen(data) > 0 ? strdup(data) : NULL); entry = GTK_ENTRY(gtk_builder_get_object(builder, "o")); data = gtk_entry_get_text(entry); - entries.organisation = (strlen(data) > 0 ? strdup(data) : NULL); + identity.organisation = (strlen(data) > 0 ? strdup(data) : NULL); entry = GTK_ENTRY(gtk_builder_get_object(builder, "ou")); data = gtk_entry_get_text(entry); - entries.organisational_unit = (strlen(data) > 0 ? strdup(data) : NULL); + identity.organisational_unit = (strlen(data) > 0 ? strdup(data) : NULL); entry = GTK_ENTRY(gtk_builder_get_object(builder, "cn")); data = gtk_entry_get_text(entry); - entries.common_name = (strlen(data) > 0 ? strdup(data) : NULL); + identity.common_name = (strlen(data) > 0 ? strdup(data) : NULL); /* Application de la nouvelle définition */ status = false;//register_standalone_certs(&entries); - free_x509_entries(&entries); + free_x509_entries(&identity); if (status) log_simple_message(LMT_INFO, _("New identity has been loaded with success!")); else - log_simple_message(LMT_ERROR, _("Failure while loading the new identity...")); + log_simple_message(LMT_ERROR, _("Failure while reloading the new identity...")); } |