annotate pidgin/gtkcertmgr.c @ 20811:368d79355aba

Fix the notorious log_reader plugin crash. It turns out that the file contents being freed wasn't the original pointer and, naturally, that doesn't work. There is some additional cleanup and prevention of unnecessary allocations. Fixes #3461, #1249.
author Daniel Atallah <daniel.atallah@gmail.com>
date Sun, 07 Oct 2007 00:49:17 +0000
parents 6bf32c9e15a7
children 591267f6f1d5 787b3897ba9f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
19015
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
1 /*
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
2 * @file gtkcertmgr.c GTK+ Certificate Manager API
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
3 * @ingroup pidgin
20074
6bf32c9e15a7 remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@gmail.com>
parents: 19986
diff changeset
4 */
6bf32c9e15a7 remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@gmail.com>
parents: 19986
diff changeset
5
6bf32c9e15a7 remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@gmail.com>
parents: 19986
diff changeset
6 /* pidgin
19015
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
7 *
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
8 * Pidgin is the legal property of its developers, whose names are too numerous
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
9 * to list here. Please refer to the COPYRIGHT file distributed with this
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
10 * source distribution.
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
11 *
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
12 * This program is free software; you can redistribute it and/or modify
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
13 * it under the terms of the GNU General Public License as published by
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
15 * (at your option) any later version.
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
16 *
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
17 * This program is distributed in the hope that it will be useful,
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
20 * GNU General Public License for more details.
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
21 *
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
23 * along with this program; if not, write to the Free Software
19680
44b4e8bd759b The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19650
diff changeset
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
19015
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
25 *
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
26 */
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
27
19031
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
28 #include <glib.h>
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
29
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
30 #include "core.h"
19015
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
31 #include "internal.h"
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
32 #include "pidgin.h"
19503
2f0960548c1d Make the gtkcert stuff compile on GTK+ older than 2.8
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19270
diff changeset
33 #include "pidginstock.h"
19015
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
34
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
35 #include "certificate.h"
19029
3f929a770f1b - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19015
diff changeset
36 #include "debug.h"
19015
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
37 #include "notify.h"
19062
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
38 #include "request.h"
19015
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
39
19031
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
40 #include "gtkblist.h"
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
41 #include "gtkutils.h"
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
42
19015
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
43 #include "gtkcertmgr.h"
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
44
19035
284199d26040 - Comment cosmetics
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19032
diff changeset
45 /*****************************************************************************
19038
5040616cace9 - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19035
diff changeset
46 * X.509 tls_peers management interface *
5040616cace9 - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19035
diff changeset
47 *****************************************************************************/
19039
3054f7c6b30d - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19038
diff changeset
48
19052
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
49 typedef struct {
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
50 GtkWidget *mgmt_widget;
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
51 GtkTreeView *listview;
19054
ffeb39523eb6 - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19053
diff changeset
52 GtkTreeSelection *listselect;
19052
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
53 GtkWidget *importbutton;
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
54 GtkWidget *exportbutton;
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
55 GtkWidget *infobutton;
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
56 GtkWidget *deletebutton;
19053
95a8469cd1e3 - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19052
diff changeset
57 PurpleCertificatePool *tls_peers;
19052
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
58 } tls_peers_mgmt_data;
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
59
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
60 tls_peers_mgmt_data *tpm_dat = NULL;
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
61
19041
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
62 /* Columns
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
63 See http://developer.gnome.org/doc/API/2.0/gtk/TreeWidget.html */
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
64 enum
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
65 {
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
66 TPM_HOSTNAME_COLUMN,
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
67 TPM_N_COLUMNS
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
68 };
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
69
19039
3054f7c6b30d - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19038
diff changeset
70 static void
3054f7c6b30d - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19038
diff changeset
71 tls_peers_mgmt_destroy(GtkWidget *mgmt_widget, gpointer data)
3054f7c6b30d - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19038
diff changeset
72 {
3054f7c6b30d - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19038
diff changeset
73 purple_debug_info("certmgr",
3054f7c6b30d - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19038
diff changeset
74 "tls peers self-destructs\n");
19052
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
75
19053
95a8469cd1e3 - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19052
diff changeset
76 purple_signals_disconnect_by_handle(tpm_dat);
19062
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
77 purple_request_close_with_handle(tpm_dat);
19052
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
78 g_free(tpm_dat); tpm_dat = NULL;
19039
3054f7c6b30d - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19038
diff changeset
79 }
3054f7c6b30d - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19038
diff changeset
80
19042
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
81 static void
19052
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
82 tls_peers_mgmt_repopulate_list(void)
19042
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
83 {
19052
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
84 GtkTreeView *listview = tpm_dat->listview;
19042
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
85 PurpleCertificatePool *tls_peers;
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
86 GList *idlist, *l;
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
87
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
88 GtkListStore *store = GTK_LIST_STORE(
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
89 gtk_tree_view_get_model(GTK_TREE_VIEW(listview)));
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
90
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
91 /* First, delete everything in the list */
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
92 gtk_list_store_clear(store);
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
93
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
94 /* Locate the "tls_peers" pool */
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
95 tls_peers = purple_certificate_find_pool("x509", "tls_peers");
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
96 g_return_if_fail(tls_peers);
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
97
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
98 /* Grab the loaded certificates */
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
99 idlist = purple_certificate_pool_get_idlist(tls_peers);
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
100
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
101 /* Populate the listview */
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
102 for (l = idlist; l; l = l->next) {
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
103 GtkTreeIter iter;
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
104 gtk_list_store_append(store, &iter);
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
105
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
106 gtk_list_store_set(GTK_LIST_STORE(store), &iter,
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
107 TPM_HOSTNAME_COLUMN, l->data,
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
108 -1);
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
109 }
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
110 purple_certificate_pool_destroy_idlist(idlist);
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
111 }
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
112
19053
95a8469cd1e3 - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19052
diff changeset
113 static void
95a8469cd1e3 - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19052
diff changeset
114 tls_peers_mgmt_mod_cb(PurpleCertificatePool *pool, const gchar *id, gpointer data)
95a8469cd1e3 - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19052
diff changeset
115 {
95a8469cd1e3 - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19052
diff changeset
116 g_assert (pool == tpm_dat->tls_peers);
95a8469cd1e3 - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19052
diff changeset
117
95a8469cd1e3 - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19052
diff changeset
118 tls_peers_mgmt_repopulate_list();
95a8469cd1e3 - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19052
diff changeset
119 }
95a8469cd1e3 - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19052
diff changeset
120
19054
ffeb39523eb6 - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19053
diff changeset
121 static void
19056
9e747806bb07 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19055
diff changeset
122 tls_peers_mgmt_select_chg_cb(GtkTreeSelection *ignored, gpointer data)
9e747806bb07 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19055
diff changeset
123 {
9e747806bb07 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19055
diff changeset
124 GtkTreeSelection *select = tpm_dat->listselect;
9e747806bb07 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19055
diff changeset
125 GtkTreeIter iter;
9e747806bb07 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19055
diff changeset
126 GtkTreeModel *model;
9e747806bb07 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19055
diff changeset
127
9e747806bb07 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19055
diff changeset
128 /* See if things are selected */
9e747806bb07 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19055
diff changeset
129 if (gtk_tree_selection_get_selected(select, &model, &iter)) {
9e747806bb07 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19055
diff changeset
130 /* Enable buttons if something is selected */
9e747806bb07 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19055
diff changeset
131 gtk_widget_set_sensitive(GTK_WIDGET(tpm_dat->exportbutton), TRUE);
9e747806bb07 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19055
diff changeset
132 gtk_widget_set_sensitive(GTK_WIDGET(tpm_dat->infobutton), TRUE);
9e747806bb07 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19055
diff changeset
133 gtk_widget_set_sensitive(GTK_WIDGET(tpm_dat->deletebutton), TRUE);
9e747806bb07 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19055
diff changeset
134 } else {
9e747806bb07 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19055
diff changeset
135 /* Otherwise, disable them */
9e747806bb07 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19055
diff changeset
136 gtk_widget_set_sensitive(GTK_WIDGET(tpm_dat->exportbutton), FALSE);
9e747806bb07 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19055
diff changeset
137 gtk_widget_set_sensitive(GTK_WIDGET(tpm_dat->infobutton), FALSE);
9e747806bb07 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19055
diff changeset
138 gtk_widget_set_sensitive(GTK_WIDGET(tpm_dat->deletebutton), FALSE);
9e747806bb07 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19055
diff changeset
139
9e747806bb07 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19055
diff changeset
140 }
9e747806bb07 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19055
diff changeset
141 }
9e747806bb07 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19055
diff changeset
142
9e747806bb07 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19055
diff changeset
143 static void
19062
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
144 tls_peers_mgmt_import_ok2_cb(gpointer data, const char *result)
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
145 {
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
146 PurpleCertificate *crt = (PurpleCertificate *) data;
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
147 const char *id = result;
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
148
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
149 /* TODO: Perhaps prompt if you're overwriting a cert? */
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
150
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
151 /* Drop the certificate into the pool */
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
152 purple_certificate_pool_store(tpm_dat->tls_peers, id, crt);
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
153
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
154 /* And this certificate is not needed any more */
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
155 purple_certificate_destroy(crt);
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
156 }
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
157
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
158 static void
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
159 tls_peers_mgmt_import_cancel2_cb(gpointer data, const char *result)
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
160 {
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
161 PurpleCertificate *crt = (PurpleCertificate *) data;
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
162 purple_certificate_destroy(crt);
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
163 }
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
164
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
165 static void
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
166 tls_peers_mgmt_import_ok_cb(gpointer data, const char *filename)
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
167 {
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
168 PurpleCertificateScheme *x509;
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
169 PurpleCertificate *crt;
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
170
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
171 /* Load the scheme of our tls_peers pool (ought to be x509) */
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
172 x509 = purple_certificate_pool_get_scheme(tpm_dat->tls_peers);
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
173
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
174 /* Now load the certificate from disk */
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
175 crt = purple_certificate_import(x509, filename);
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
176
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
177 /* Did it work? */
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
178 if (crt != NULL) {
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
179 gchar *default_hostname;
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
180 /* Get name to add to pool as */
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
181 /* Make a guess about what the hostname should be */
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
182 default_hostname = purple_certificate_get_subject_name(crt);
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
183 /* TODO: Find a way to make sure that crt gets destroyed
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
184 if the window gets closed unusually, such as by handle
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
185 deletion */
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
186 /* TODO: Display some more information on the certificate? */
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
187 purple_request_input(tpm_dat,
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
188 _("Certificate Import"),
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
189 _("Specify a hostname"),
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
190 _("Type the host name this certificate is for."),
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
191 default_hostname,
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
192 FALSE, /* Not multiline */
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
193 FALSE, /* Not masked? */
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
194 NULL, /* No hints? */
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
195 _("OK"),
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
196 G_CALLBACK(tls_peers_mgmt_import_ok2_cb),
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
197 _("Cancel"),
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
198 G_CALLBACK(tls_peers_mgmt_import_cancel2_cb),
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
199 NULL, NULL, NULL, /* No account/who/conv*/
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
200 crt /* Pass cert instance to callback*/
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
201 );
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
202
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
203 g_free(default_hostname);
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
204 } else {
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
205 /* Errors! Oh no! */
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
206 /* TODO: Perhaps find a way to be specific about what just
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
207 went wrong? */
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
208 gchar * secondary;
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
209
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
210 secondary = g_strdup_printf(_("File %s could not be imported.\nMake sure that the file is readable and in PEM format.\n"), filename);
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
211 purple_notify_error(NULL,
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
212 _("Certificate Import Error"),
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
213 _("X.509 certificate import failed"),
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
214 secondary);
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
215 g_free(secondary);
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
216 }
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
217 }
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
218
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
219 static void
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
220 tls_peers_mgmt_import_cb(GtkWidget *button, gpointer data)
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
221 {
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
222 /* TODO: need to tell the user that we want a .PEM file! */
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
223 purple_request_file(tpm_dat,
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
224 _("Select a PEM certificate"),
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
225 "certificate.pem",
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
226 FALSE, /* Not a save dialog */
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
227 G_CALLBACK(tls_peers_mgmt_import_ok_cb),
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
228 NULL, /* Do nothing if cancelled */
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
229 NULL, NULL, NULL, NULL );/* No account,conv,etc. */
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
230 }
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
231
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
232 static void
19064
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
233 tls_peers_mgmt_export_ok_cb(gpointer data, const char *filename)
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
234 {
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
235 PurpleCertificate *crt = (PurpleCertificate *) data;
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
236
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
237 g_assert(filename);
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
238
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
239 if (!purple_certificate_export(filename, crt)) {
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
240 /* Errors! Oh no! */
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
241 /* TODO: Perhaps find a way to be specific about what just
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
242 went wrong? */
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
243 gchar * secondary;
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
244
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
245 secondary = g_strdup_printf(_("Export to file %s failed.\nCheck that you have write permission to the target path\n"), filename);
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
246 purple_notify_error(NULL,
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
247 _("Certificate Export Error"),
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
248 _("X.509 certificate export failed"),
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
249 secondary);
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
250 g_free(secondary);
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
251 }
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
252
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
253 purple_certificate_destroy(crt);
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
254 }
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
255
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
256 static void
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
257 tls_peers_mgmt_export_cancel_cb(gpointer data, const char *filename)
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
258 {
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
259 PurpleCertificate *crt = (PurpleCertificate *) data;
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
260 /* Pressing cancel just frees the duplicated certificate */
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
261 purple_certificate_destroy(crt);
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
262 }
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
263
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
264 static void
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
265 tls_peers_mgmt_export_cb(GtkWidget *button, gpointer data)
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
266 {
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
267 PurpleCertificate *crt;
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
268 GtkTreeSelection *select = tpm_dat->listselect;
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
269 GtkTreeIter iter;
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
270 GtkTreeModel *model;
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
271 gchar *id;
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
272
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
273 /* See if things are selected */
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
274 if (!gtk_tree_selection_get_selected(select, &model, &iter)) {
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
275 purple_debug_warning("gtkcertmgr/tls_peers_mgmt",
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
276 "Export clicked with no selection?\n");
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
277 return;
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
278 }
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
279
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
280 /* Retrieve the selected hostname */
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
281 gtk_tree_model_get(model, &iter, TPM_HOSTNAME_COLUMN, &id, -1);
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
282
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
283 /* Extract the certificate from the pool now to make sure it doesn't
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
284 get deleted out from under us */
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
285 crt = purple_certificate_pool_retrieve(tpm_dat->tls_peers, id);
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
286
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
287 if (NULL == crt) {
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
288 purple_debug_error("gtkcertmgr/tls_peers_mgmt",
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
289 "Id %s was not in the peers cache?!\n",
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
290 id);
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
291 g_free(id);
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
292 return;
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
293 }
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
294 g_free(id);
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
295
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
296
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
297 /* TODO: inform user that it will be a PEM? */
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
298 purple_request_file(tpm_dat,
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
299 _("PEM X.509 Certificate Export"),
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
300 "certificate.pem",
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
301 TRUE, /* Is a save dialog */
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
302 G_CALLBACK(tls_peers_mgmt_export_ok_cb),
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
303 G_CALLBACK(tls_peers_mgmt_export_cancel_cb),
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
304 NULL, NULL, NULL, /* No account,conv,etc. */
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
305 crt); /* Pass the certificate on to the callback */
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
306 }
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
307
19065
ebae00bbb57e - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19064
diff changeset
308 static void
ebae00bbb57e - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19064
diff changeset
309 tls_peers_mgmt_info_cb(GtkWidget *button, gpointer data)
ebae00bbb57e - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19064
diff changeset
310 {
ebae00bbb57e - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19064
diff changeset
311 GtkTreeSelection *select = tpm_dat->listselect;
ebae00bbb57e - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19064
diff changeset
312 GtkTreeIter iter;
ebae00bbb57e - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19064
diff changeset
313 GtkTreeModel *model;
ebae00bbb57e - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19064
diff changeset
314 gchar *id;
ebae00bbb57e - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19064
diff changeset
315 PurpleCertificate *crt;
ebae00bbb57e - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19064
diff changeset
316
ebae00bbb57e - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19064
diff changeset
317 /* See if things are selected */
ebae00bbb57e - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19064
diff changeset
318 if (!gtk_tree_selection_get_selected(select, &model, &iter)) {
ebae00bbb57e - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19064
diff changeset
319 purple_debug_warning("gtkcertmgr/tls_peers_mgmt",
ebae00bbb57e - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19064
diff changeset
320 "Info clicked with no selection?\n");
ebae00bbb57e - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19064
diff changeset
321 return;
ebae00bbb57e - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19064
diff changeset
322 }
ebae00bbb57e - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19064
diff changeset
323
ebae00bbb57e - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19064
diff changeset
324 /* Retrieve the selected hostname */
ebae00bbb57e - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19064
diff changeset
325 gtk_tree_model_get(model, &iter, TPM_HOSTNAME_COLUMN, &id, -1);
ebae00bbb57e - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19064
diff changeset
326
ebae00bbb57e - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19064
diff changeset
327 /* Now retrieve the certificate */
ebae00bbb57e - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19064
diff changeset
328 crt = purple_certificate_pool_retrieve(tpm_dat->tls_peers, id);
ebae00bbb57e - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19064
diff changeset
329 g_return_if_fail(crt);
ebae00bbb57e - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19064
diff changeset
330
19986
4840b100e14f - GTKCertMgr X.509 infothing now uses the
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19680
diff changeset
331 /* Fire the notification */
4840b100e14f - GTKCertMgr X.509 infothing now uses the
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19680
diff changeset
332 purple_certificate_display_x509(crt);
19065
ebae00bbb57e - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19064
diff changeset
333
ebae00bbb57e - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19064
diff changeset
334 g_free(id);
19219
8828d7aec7b6 - Fix a memleak
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19066
diff changeset
335 purple_certificate_destroy(crt);
19065
ebae00bbb57e - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19064
diff changeset
336 }
19064
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
337
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
338 static void
19066
b631b409a515 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19065
diff changeset
339 tls_peers_mgmt_delete_confirm_cb(gchar *id, gint choice)
b631b409a515 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19065
diff changeset
340 {
b631b409a515 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19065
diff changeset
341 if (1 == choice) {
b631b409a515 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19065
diff changeset
342 /* Yes, delete was confirmed */
b631b409a515 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19065
diff changeset
343 /* Now delete the thing */
19270
fb4a1fb9ce8a - Fix some overzealous g_asserts leading to a crash
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19219
diff changeset
344 if (!purple_certificate_pool_delete(tpm_dat->tls_peers, id)) {
fb4a1fb9ce8a - Fix some overzealous g_asserts leading to a crash
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19219
diff changeset
345 purple_debug_warning("gtkcertmgr/tls_peers_mgmt",
fb4a1fb9ce8a - Fix some overzealous g_asserts leading to a crash
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19219
diff changeset
346 "Deletion failed on id %s\n",
fb4a1fb9ce8a - Fix some overzealous g_asserts leading to a crash
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19219
diff changeset
347 id);
fb4a1fb9ce8a - Fix some overzealous g_asserts leading to a crash
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19219
diff changeset
348 };
19066
b631b409a515 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19065
diff changeset
349 }
b631b409a515 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19065
diff changeset
350
b631b409a515 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19065
diff changeset
351 g_free(id);
b631b409a515 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19065
diff changeset
352 }
b631b409a515 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19065
diff changeset
353
b631b409a515 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19065
diff changeset
354 static void
19054
ffeb39523eb6 - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19053
diff changeset
355 tls_peers_mgmt_delete_cb(GtkWidget *button, gpointer data)
ffeb39523eb6 - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19053
diff changeset
356 {
ffeb39523eb6 - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19053
diff changeset
357 GtkTreeSelection *select = tpm_dat->listselect;
ffeb39523eb6 - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19053
diff changeset
358 GtkTreeIter iter;
ffeb39523eb6 - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19053
diff changeset
359 GtkTreeModel *model;
ffeb39523eb6 - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19053
diff changeset
360
ffeb39523eb6 - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19053
diff changeset
361 /* See if things are selected */
ffeb39523eb6 - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19053
diff changeset
362 if (gtk_tree_selection_get_selected(select, &model, &iter)) {
ffeb39523eb6 - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19053
diff changeset
363
ffeb39523eb6 - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19053
diff changeset
364 gchar *id;
19066
b631b409a515 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19065
diff changeset
365 gchar *primary;
19054
ffeb39523eb6 - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19053
diff changeset
366
ffeb39523eb6 - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19053
diff changeset
367 /* Retrieve the selected hostname */
ffeb39523eb6 - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19053
diff changeset
368 gtk_tree_model_get(model, &iter, TPM_HOSTNAME_COLUMN, &id, -1);
ffeb39523eb6 - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19053
diff changeset
369
19066
b631b409a515 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19065
diff changeset
370 /* Prompt to confirm deletion */
b631b409a515 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19065
diff changeset
371 primary = g_strdup_printf(
b631b409a515 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19065
diff changeset
372 _("Really delete certificate for %s?"), id );
19054
ffeb39523eb6 - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19053
diff changeset
373
19066
b631b409a515 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19065
diff changeset
374 purple_request_yes_no(tpm_dat, _("Confirm certificate delete"),
b631b409a515 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19065
diff changeset
375 primary, NULL, /* Can this be NULL? */
b631b409a515 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19065
diff changeset
376 2, /* NO is default action */
b631b409a515 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19065
diff changeset
377 NULL, NULL, NULL,
b631b409a515 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19065
diff changeset
378 id, /* id ownership passed to callback */
b631b409a515 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19065
diff changeset
379 tls_peers_mgmt_delete_confirm_cb,
b631b409a515 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19065
diff changeset
380 tls_peers_mgmt_delete_confirm_cb );
b631b409a515 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19065
diff changeset
381
b631b409a515 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19065
diff changeset
382 g_free(primary);
b631b409a515 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19065
diff changeset
383
19054
ffeb39523eb6 - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19053
diff changeset
384 } else {
ffeb39523eb6 - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19053
diff changeset
385 purple_debug_warning("gtkcertmgr/tls_peers_mgmt",
ffeb39523eb6 - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19053
diff changeset
386 "Delete clicked with no selection?\n");
ffeb39523eb6 - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19053
diff changeset
387 return;
ffeb39523eb6 - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19053
diff changeset
388 }
ffeb39523eb6 - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19053
diff changeset
389 }
ffeb39523eb6 - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19053
diff changeset
390
19038
5040616cace9 - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19035
diff changeset
391 static GtkWidget *
5040616cace9 - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19035
diff changeset
392 tls_peers_mgmt_build(void)
5040616cace9 - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19035
diff changeset
393 {
19041
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
394 GtkWidget *bbox;
19052
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
395 GtkListStore *store;
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
396
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
397 /* This block of variables will end up in tpm_dat */
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
398 GtkTreeView *listview;
19055
e5981fc8733f - Code cosmetics
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19054
diff changeset
399 GtkTreeSelection *select;
19041
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
400 GtkWidget *importbutton;
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
401 GtkWidget *exportbutton;
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
402 GtkWidget *infobutton;
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
403 GtkWidget *deletebutton;
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
404 /** Element to return to the Certmgr window to put in the Notebook */
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
405 GtkWidget *mgmt_widget;
19052
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
406
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
407 /* Create a struct to store context information about this window */
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
408 tpm_dat = g_new0(tls_peers_mgmt_data, 1);
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
409
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
410 tpm_dat->mgmt_widget = mgmt_widget =
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
411 gtk_hbox_new(FALSE, /* Non-homogeneous */
19058
ba99c1100e98 - HIG compliance improved
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19057
diff changeset
412 PIDGIN_HIG_BORDER);
19039
3054f7c6b30d - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19038
diff changeset
413 gtk_widget_show(mgmt_widget);
3054f7c6b30d - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19038
diff changeset
414
3054f7c6b30d - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19038
diff changeset
415 /* Ensure that everything gets cleaned up when the dialog box
3054f7c6b30d - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19038
diff changeset
416 is closed */
3054f7c6b30d - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19038
diff changeset
417 g_signal_connect(G_OBJECT(mgmt_widget), "destroy",
3054f7c6b30d - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19038
diff changeset
418 G_CALLBACK(tls_peers_mgmt_destroy), NULL);
19041
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
419
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
420 /* List view */
19042
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
421 store = gtk_list_store_new(TPM_N_COLUMNS, G_TYPE_STRING);
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
422
19052
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
423 tpm_dat->listview = listview =
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
424 GTK_TREE_VIEW(gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)));
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
425
19042
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
426 {
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
427 GtkCellRenderer *renderer;
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
428 GtkTreeViewColumn *column;
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
429
19043
8026af6fbb3b - Specify the selection mode on the tls_peers_mgmt listview (may not be
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19042
diff changeset
430 /* Set up the display columns */
19042
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
431 renderer = gtk_cell_renderer_text_new();
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
432 column = gtk_tree_view_column_new_with_attributes(
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
433 "Hostname",
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
434 renderer,
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
435 "text", TPM_HOSTNAME_COLUMN,
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
436 NULL);
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
437 gtk_tree_view_append_column(GTK_TREE_VIEW(listview), column);
19650
2604ae7c227b Sort the certificates by hostname
Mark Doliner <mark@kingant.net>
parents: 19522
diff changeset
438
2604ae7c227b Sort the certificates by hostname
Mark Doliner <mark@kingant.net>
parents: 19522
diff changeset
439 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(store),
2604ae7c227b Sort the certificates by hostname
Mark Doliner <mark@kingant.net>
parents: 19522
diff changeset
440 TPM_HOSTNAME_COLUMN, GTK_SORT_ASCENDING);
19042
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
441 }
276c4b70d9cb - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19041
diff changeset
442
19055
e5981fc8733f - Code cosmetics
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19054
diff changeset
443 /* Get the treeview selector into the struct */
e5981fc8733f - Code cosmetics
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19054
diff changeset
444 tpm_dat->listselect = select =
e5981fc8733f - Code cosmetics
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19054
diff changeset
445 gtk_tree_view_get_selection(GTK_TREE_VIEW(listview));
e5981fc8733f - Code cosmetics
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19054
diff changeset
446
e5981fc8733f - Code cosmetics
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19054
diff changeset
447 /* Force the selection mode */
e5981fc8733f - Code cosmetics
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19054
diff changeset
448 gtk_tree_selection_set_mode(select, GTK_SELECTION_SINGLE);
19056
9e747806bb07 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19055
diff changeset
449
9e747806bb07 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19055
diff changeset
450 /* Use a callback to enable/disable the buttons based on whether
9e747806bb07 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19055
diff changeset
451 something is selected */
9e747806bb07 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19055
diff changeset
452 g_signal_connect(G_OBJECT(select), "changed",
9e747806bb07 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19055
diff changeset
453 G_CALLBACK(tls_peers_mgmt_select_chg_cb), NULL);
19055
e5981fc8733f - Code cosmetics
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19054
diff changeset
454
19052
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
455 gtk_box_pack_start(GTK_BOX(mgmt_widget), GTK_WIDGET(listview),
19041
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
456 TRUE, TRUE, /* Take up lots of space */
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
457 0); /* TODO: this padding is wrong */
19052
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
458 gtk_widget_show(GTK_WIDGET(listview));
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
459
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
460 /* Fill the list for the first time */
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
461 tls_peers_mgmt_repopulate_list();
19041
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
462
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
463 /* Right-hand side controls box */
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
464 bbox = gtk_vbutton_box_new();
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
465 gtk_box_pack_end(GTK_BOX(mgmt_widget), bbox,
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
466 FALSE, FALSE, /* Do not take up space */
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
467 0); /* TODO: this padding is probably wrong */
19058
ba99c1100e98 - HIG compliance improved
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19057
diff changeset
468 gtk_box_set_spacing(GTK_BOX(bbox), PIDGIN_HIG_BOX_SPACE);
19041
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
469 gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_START);
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
470 gtk_widget_show(bbox);
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
471
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
472 /* Import button */
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
473 /* TODO: This is the wrong stock button */
19052
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
474 tpm_dat->importbutton = importbutton =
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
475 gtk_button_new_from_stock(GTK_STOCK_ADD);
19041
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
476 gtk_box_pack_start(GTK_BOX(bbox), importbutton, FALSE, FALSE, 0);
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
477 gtk_widget_show(importbutton);
19062
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
478 g_signal_connect(G_OBJECT(importbutton), "clicked",
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
479 G_CALLBACK(tls_peers_mgmt_import_cb), NULL);
da88aa8f83ad - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19061
diff changeset
480
19041
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
481
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
482 /* Export button */
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
483 /* TODO: This is the wrong stock button */
19052
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
484 tpm_dat->exportbutton = exportbutton =
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
485 gtk_button_new_from_stock(GTK_STOCK_SAVE);
19041
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
486 gtk_box_pack_start(GTK_BOX(bbox), exportbutton, FALSE, FALSE, 0);
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
487 gtk_widget_show(exportbutton);
19064
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
488 g_signal_connect(G_OBJECT(exportbutton), "clicked",
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
489 G_CALLBACK(tls_peers_mgmt_export_cb), NULL);
f407244c4e57 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19062
diff changeset
490
19041
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
491
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
492 /* Info button */
19052
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
493 tpm_dat->infobutton = infobutton =
19503
2f0960548c1d Make the gtkcert stuff compile on GTK+ older than 2.8
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19270
diff changeset
494 gtk_button_new_from_stock(PIDGIN_STOCK_INFO);
19041
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
495 gtk_box_pack_start(GTK_BOX(bbox), infobutton, FALSE, FALSE, 0);
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
496 gtk_widget_show(infobutton);
19065
ebae00bbb57e - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19064
diff changeset
497 g_signal_connect(G_OBJECT(infobutton), "clicked",
ebae00bbb57e - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19064
diff changeset
498 G_CALLBACK(tls_peers_mgmt_info_cb), NULL);
ebae00bbb57e - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19064
diff changeset
499
19041
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
500
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
501 /* Delete button */
19052
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
502 tpm_dat->deletebutton = deletebutton =
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
503 gtk_button_new_from_stock(GTK_STOCK_DELETE);
19041
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
504 gtk_box_pack_start(GTK_BOX(bbox), deletebutton, FALSE, FALSE, 0);
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
505 gtk_widget_show(deletebutton);
19054
ffeb39523eb6 - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19053
diff changeset
506 g_signal_connect(G_OBJECT(deletebutton), "clicked",
ffeb39523eb6 - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19053
diff changeset
507 G_CALLBACK(tls_peers_mgmt_delete_cb), NULL);
19041
dd4444be5e26 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19039
diff changeset
508
19057
3cc03c2801ed - Delegate all button enabling/disabling in tls_peers_mgmt to its "is
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19056
diff changeset
509 /* Call the "selection changed" callback, which will probably disable
3cc03c2801ed - Delegate all button enabling/disabling in tls_peers_mgmt to its "is
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19056
diff changeset
510 all the buttons since nothing is selected yet */
3cc03c2801ed - Delegate all button enabling/disabling in tls_peers_mgmt to its "is
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19056
diff changeset
511 tls_peers_mgmt_select_chg_cb(select, NULL);
19052
78f185af7952 - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19043
diff changeset
512
19053
95a8469cd1e3 - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19052
diff changeset
513 /* Bind us to the tls_peers pool */
95a8469cd1e3 - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19052
diff changeset
514 tpm_dat->tls_peers = purple_certificate_find_pool("x509", "tls_peers");
95a8469cd1e3 - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19052
diff changeset
515
95a8469cd1e3 - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19052
diff changeset
516 /**** libpurple signals ****/
95a8469cd1e3 - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19052
diff changeset
517 /* Respond to certificate add/remove by just reloading everything */
95a8469cd1e3 - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19052
diff changeset
518 purple_signal_connect(tpm_dat->tls_peers, "certificate-stored",
95a8469cd1e3 - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19052
diff changeset
519 tpm_dat, PURPLE_CALLBACK(tls_peers_mgmt_mod_cb),
95a8469cd1e3 - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19052
diff changeset
520 NULL);
95a8469cd1e3 - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19052
diff changeset
521 purple_signal_connect(tpm_dat->tls_peers, "certificate-deleted",
95a8469cd1e3 - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19052
diff changeset
522 tpm_dat, PURPLE_CALLBACK(tls_peers_mgmt_mod_cb),
95a8469cd1e3 - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19052
diff changeset
523 NULL);
95a8469cd1e3 - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19052
diff changeset
524
19039
3054f7c6b30d - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19038
diff changeset
525 return mgmt_widget;
19038
5040616cace9 - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19035
diff changeset
526 }
5040616cace9 - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19035
diff changeset
527
5040616cace9 - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19035
diff changeset
528 PidginCertificateManager tls_peers_mgmt = {
5040616cace9 - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19035
diff changeset
529 tls_peers_mgmt_build, /* Widget creation function */
5040616cace9 - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19035
diff changeset
530 N_("SSL Servers")
5040616cace9 - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19035
diff changeset
531 };
5040616cace9 - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19035
diff changeset
532
5040616cace9 - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19035
diff changeset
533 /*****************************************************************************
19035
284199d26040 - Comment cosmetics
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19032
diff changeset
534 * GTK+ main certificate manager *
284199d26040 - Comment cosmetics
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19032
diff changeset
535 *****************************************************************************/
19031
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
536 typedef struct
19015
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
537 {
19031
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
538 GtkWidget *window;
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
539 GtkWidget *notebook;
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
540
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
541 GtkWidget *closebutton;
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
542 } CertMgrDialog;
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
543
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
544 /* If a certificate manager window is open, this will point to it.
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
545 So if it is set, don't open another one! */
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
546 CertMgrDialog *certmgr_dialog = NULL;
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
547
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
548 static void
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
549 certmgr_close_cb(GtkWidget *w, CertMgrDialog *dlg)
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
550 {
19035
284199d26040 - Comment cosmetics
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19032
diff changeset
551 /* TODO: Ignoring the arguments to this function may not be ideal,
284199d26040 - Comment cosmetics
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19032
diff changeset
552 but there *should* only be "one dialog to rule them all" at a time*/
19031
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
553 pidgin_certmgr_hide();
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
554 }
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
555
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
556 void
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
557 pidgin_certmgr_show(void)
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
558 {
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
559 CertMgrDialog *dlg;
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
560 GtkWidget *win;
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
561 GtkWidget *vbox;
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
562 GtkWidget *bbox;
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
563
19029
3f929a770f1b - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19015
diff changeset
564 /* Enumerate all the certificates on file */
3f929a770f1b - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19015
diff changeset
565 {
3f929a770f1b - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19015
diff changeset
566 GList *idlist, *poollist;
3f929a770f1b - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19015
diff changeset
567
3f929a770f1b - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19015
diff changeset
568 for ( poollist = purple_certificate_get_pools();
3f929a770f1b - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19015
diff changeset
569 poollist;
3f929a770f1b - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19015
diff changeset
570 poollist = poollist->next ) {
3f929a770f1b - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19015
diff changeset
571 PurpleCertificatePool *pool = poollist->data;
3f929a770f1b - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19015
diff changeset
572 GList *l;
3f929a770f1b - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19015
diff changeset
573
3f929a770f1b - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19015
diff changeset
574 purple_debug_info("gtkcertmgr",
3f929a770f1b - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19015
diff changeset
575 "Pool %s found for scheme %s -"
3f929a770f1b - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19015
diff changeset
576 "Enumerating certificates:\n",
3f929a770f1b - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19015
diff changeset
577 pool->name, pool->scheme_name);
3f929a770f1b - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19015
diff changeset
578
3f929a770f1b - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19015
diff changeset
579 idlist = purple_certificate_pool_get_idlist(pool);
3f929a770f1b - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19015
diff changeset
580
3f929a770f1b - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19015
diff changeset
581 for (l=idlist; l; l = l->next) {
3f929a770f1b - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19015
diff changeset
582 purple_debug_info("gtkcertmgr",
3f929a770f1b - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19015
diff changeset
583 "- %s\n",
19513
8c59bb6dfc7e Fix printf(%s, NULL).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19503
diff changeset
584 l->data ? (gchar *) l->data : "(null)");
19029
3f929a770f1b - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19015
diff changeset
585 } /* idlist */
3f929a770f1b - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19015
diff changeset
586 purple_certificate_pool_destroy_idlist(idlist);
3f929a770f1b - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19015
diff changeset
587 } /* poollist */
3f929a770f1b - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19015
diff changeset
588 }
19031
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
589
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
590
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
591 /* If the manager is already open, bring it to the front */
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
592 if (certmgr_dialog != NULL) {
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
593 gtk_window_present(GTK_WINDOW(certmgr_dialog->window));
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
594 return;
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
595 }
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
596
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
597 /* Create the dialog, and set certmgr_dialog so we never create
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
598 more than one at a time */
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
599 dlg = certmgr_dialog = g_new0(CertMgrDialog, 1);
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
600
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
601 win = dlg->window =
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
602 pidgin_create_window(_("Certificate Manager"),/* Title */
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
603 PIDGIN_HIG_BORDER, /*Window border*/
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
604 "certmgr", /* Role */
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
605 TRUE); /* Allow resizing */
19032
73172682eefd - CertMgr window responds properly to delete_event
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19031
diff changeset
606 g_signal_connect(G_OBJECT(win), "delete_event",
73172682eefd - CertMgr window responds properly to delete_event
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19031
diff changeset
607 G_CALLBACK(certmgr_close_cb), dlg);
73172682eefd - CertMgr window responds properly to delete_event
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19031
diff changeset
608
19031
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
609
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
610 /* TODO: Retrieve the user-set window size and use it */
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
611 gtk_window_set_default_size(GTK_WINDOW(win), 400, 400);
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
612
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
613 /* Main vbox */
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
614 vbox = gtk_vbox_new( FALSE, PIDGIN_HIG_BORDER );
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
615 gtk_container_add(GTK_CONTAINER(win), vbox);
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
616 gtk_widget_show(vbox);
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
617
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
618 /* Notebook of various certificate managers */
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
619 dlg->notebook = gtk_notebook_new();
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
620 gtk_box_pack_start(GTK_BOX(vbox), dlg->notebook,
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
621 TRUE, TRUE, /* Notebook should take extra space */
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
622 0);
19038
5040616cace9 - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19035
diff changeset
623 gtk_widget_show(dlg->notebook);
19031
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
624
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
625 /* Box for the close button */
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
626 bbox = gtk_hbutton_box_new();
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
627 gtk_box_set_spacing(GTK_BOX(bbox), PIDGIN_HIG_BOX_SPACE);
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
628 gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
629 gtk_box_pack_end(GTK_BOX(vbox), bbox, FALSE, TRUE, 0);
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
630 gtk_widget_show(bbox);
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
631
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
632 /* Close button */
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
633 dlg->closebutton = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
634 gtk_box_pack_start(GTK_BOX(bbox), dlg->closebutton, FALSE, FALSE, 0);
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
635 gtk_widget_show(dlg->closebutton);
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
636 g_signal_connect(G_OBJECT(dlg->closebutton), "clicked",
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
637 G_CALLBACK(certmgr_close_cb), dlg);
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
638
19038
5040616cace9 - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19035
diff changeset
639 /* Add the defined certificate managers */
5040616cace9 - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19035
diff changeset
640 /* TODO: Find a way of determining whether each is shown or not */
5040616cace9 - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19035
diff changeset
641 /* TODO: Implement this correctly */
5040616cace9 - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19035
diff changeset
642 gtk_notebook_append_page(GTK_NOTEBOOK (dlg->notebook),
5040616cace9 - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19035
diff changeset
643 (tls_peers_mgmt.build)(),
5040616cace9 - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19035
diff changeset
644 gtk_label_new(_(tls_peers_mgmt.label)) );
5040616cace9 - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19035
diff changeset
645
19031
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
646 gtk_widget_show(win);
19015
720c61141f4b - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
647 }
19031
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
648
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
649 void
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
650 pidgin_certmgr_hide(void)
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
651 {
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
652 /* If it isn't open, do nothing */
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
653 if (certmgr_dialog == NULL) {
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
654 return;
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
655 }
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
656
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
657 purple_signals_disconnect_by_handle(certmgr_dialog);
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
658 purple_prefs_disconnect_by_handle(certmgr_dialog);
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
659
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
660 gtk_widget_destroy(certmgr_dialog->window);
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
661 g_free(certmgr_dialog);
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
662 certmgr_dialog = NULL;
8c3fecc32451 - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19029
diff changeset
663 }