summaryrefslogtreecommitdiff
path: root/src/gui/dialogs/identity.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2019-09-01 21:37:51 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2019-09-01 21:37:51 (GMT)
commita820f204162f61e3e7a91e66c1aabea22f23d0cb (patch)
treed8cd00ab7dbef97272858c5217ce3ef4b6981996 /src/gui/dialogs/identity.c
parent14f1b8ff552dfb8aef6c66b3c65e816aa7820bb0 (diff)
Prepared the update of the user identity from the GUI.
Diffstat (limited to 'src/gui/dialogs/identity.c')
-rw-r--r--src/gui/dialogs/identity.c111
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..."));
}