network: Convert EAPMethod to an interface and make the subclasses GObjects
This commit is contained in:
parent
426896b7a2
commit
5006342308
14 changed files with 366 additions and 371 deletions
|
@ -36,7 +36,7 @@
|
|||
#define I_METHOD_COLUMN 1
|
||||
|
||||
struct _EAPMethodFAST {
|
||||
EAPMethod parent;
|
||||
GObject parent;
|
||||
|
||||
GtkBuilder *builder;
|
||||
GtkEntry *anon_identity_entry;
|
||||
|
@ -55,13 +55,20 @@ struct _EAPMethodFAST {
|
|||
gboolean is_editor;
|
||||
};
|
||||
|
||||
static void eap_method_iface_init (EAPMethodInterface *);
|
||||
|
||||
G_DEFINE_TYPE_WITH_CODE (EAPMethodFAST, eap_method_fast, G_TYPE_OBJECT,
|
||||
G_IMPLEMENT_INTERFACE (eap_method_get_type (), eap_method_iface_init))
|
||||
|
||||
static void
|
||||
destroy (EAPMethod *parent)
|
||||
eap_method_fast_dispose (GObject *object)
|
||||
{
|
||||
EAPMethodFAST *self = (EAPMethodFAST *) parent;
|
||||
EAPMethodFAST *self = EAP_METHOD_FAST (object);
|
||||
|
||||
g_clear_object (&self->builder);
|
||||
g_clear_object (&self->size_group);
|
||||
|
||||
G_OBJECT_CLASS (eap_method_fast_parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
@ -312,13 +319,37 @@ changed_cb (EAPMethodFAST *self)
|
|||
wireless_security_notify_changed (self->sec_parent);
|
||||
}
|
||||
|
||||
static void
|
||||
eap_method_fast_init (EAPMethodFAST *self)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
eap_method_fast_class_init (EAPMethodFASTClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
object_class->dispose = eap_method_fast_dispose;
|
||||
}
|
||||
|
||||
static void
|
||||
eap_method_iface_init (EAPMethodInterface *iface)
|
||||
{
|
||||
iface->validate = validate;
|
||||
iface->add_to_size_group = add_to_size_group;
|
||||
iface->fill_connection = fill_connection;
|
||||
iface->update_secrets = update_secrets;
|
||||
iface->get_widget = get_widget;
|
||||
iface->get_default_field = get_default_field;
|
||||
iface->get_password_flags_name = get_password_flags_name;
|
||||
}
|
||||
|
||||
EAPMethodFAST *
|
||||
eap_method_fast_new (WirelessSecurity *ws_parent,
|
||||
NMConnection *connection,
|
||||
gboolean is_editor,
|
||||
gboolean secrets_only)
|
||||
{
|
||||
EAPMethod *parent;
|
||||
EAPMethodFAST *self;
|
||||
GtkFileFilter *filter;
|
||||
NMSetting8021x *s_8021x = NULL;
|
||||
|
@ -326,20 +357,7 @@ eap_method_fast_new (WirelessSecurity *ws_parent,
|
|||
gboolean provisioning_enabled = TRUE;
|
||||
g_autoptr(GError) error = NULL;
|
||||
|
||||
parent = eap_method_init (sizeof (EAPMethodFAST),
|
||||
validate,
|
||||
add_to_size_group,
|
||||
fill_connection,
|
||||
update_secrets,
|
||||
get_widget,
|
||||
get_default_field,
|
||||
get_password_flags_name,
|
||||
NULL,
|
||||
destroy);
|
||||
if (!parent)
|
||||
return NULL;
|
||||
|
||||
self = (EAPMethodFAST *) parent;
|
||||
self = g_object_new (eap_method_fast_get_type (), NULL);
|
||||
self->sec_parent = ws_parent;
|
||||
self->is_editor = is_editor;
|
||||
|
||||
|
|
|
@ -20,20 +20,19 @@
|
|||
* (C) Copyright 2012 Red Hat, Inc.
|
||||
*/
|
||||
|
||||
#ifndef EAP_METHOD_FAST_H
|
||||
#define EAP_METHOD_FAST_H
|
||||
#pragma once
|
||||
|
||||
#include <NetworkManager.h>
|
||||
|
||||
#include "wireless-security.h"
|
||||
|
||||
typedef struct _EAPMethodFAST EAPMethodFAST;
|
||||
G_BEGIN_DECLS
|
||||
|
||||
G_DECLARE_FINAL_TYPE (EAPMethodFAST, eap_method_fast, EAP, METHOD_FAST, GObject)
|
||||
|
||||
EAPMethodFAST *eap_method_fast_new (WirelessSecurity *ws_parent,
|
||||
NMConnection *connection,
|
||||
gboolean is_editor,
|
||||
gboolean secrets_only);
|
||||
|
||||
static void eap_method_fast_unref (EAPMethodFAST *method) { eap_method_unref (EAP_METHOD (method)); }
|
||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (EAPMethodFAST, eap_method_fast_unref)
|
||||
|
||||
#endif /* EAP_METHOD_FAST_H */
|
||||
|
||||
G_END_DECLS
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
#include "utils.h"
|
||||
|
||||
struct _EAPMethodLEAP {
|
||||
EAPMethod parent;
|
||||
GObject parent;
|
||||
|
||||
GtkBuilder *builder;
|
||||
GtkGrid *grid;
|
||||
|
@ -48,6 +48,11 @@ struct _EAPMethodLEAP {
|
|||
gboolean editing_connection;
|
||||
};
|
||||
|
||||
static void eap_method_iface_init (EAPMethodInterface *);
|
||||
|
||||
G_DEFINE_TYPE_WITH_CODE (EAPMethodLEAP, eap_method_leap, G_TYPE_OBJECT,
|
||||
G_IMPLEMENT_INTERFACE (eap_method_get_type (), eap_method_iface_init))
|
||||
|
||||
static void
|
||||
show_toggled_cb (EAPMethodLEAP *self)
|
||||
{
|
||||
|
@ -183,15 +188,17 @@ widgets_unrealized (EAPMethodLEAP *self)
|
|||
}
|
||||
|
||||
static void
|
||||
destroy (EAPMethod *parent)
|
||||
eap_method_leap_dispose (GObject *object)
|
||||
{
|
||||
EAPMethodLEAP *self = (EAPMethodLEAP *) parent;
|
||||
EAPMethodLEAP *self = EAP_METHOD_LEAP (object);
|
||||
|
||||
g_clear_object (&self->builder);
|
||||
g_signal_handlers_disconnect_by_data (self->grid, self);
|
||||
g_signal_handlers_disconnect_by_data (self->username_entry, self->ws_parent);
|
||||
g_signal_handlers_disconnect_by_data (self->password_entry, self->ws_parent);
|
||||
g_signal_handlers_disconnect_by_data (self->show_password_check, self);
|
||||
|
||||
G_OBJECT_CLASS (eap_method_leap_parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -200,30 +207,41 @@ changed_cb (EAPMethodLEAP *self)
|
|||
wireless_security_notify_changed (self->ws_parent);
|
||||
}
|
||||
|
||||
static void
|
||||
eap_method_leap_init (EAPMethodLEAP *self)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
eap_method_leap_class_init (EAPMethodLEAPClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
object_class->dispose = eap_method_leap_dispose;
|
||||
}
|
||||
|
||||
static void
|
||||
eap_method_iface_init (EAPMethodInterface *iface)
|
||||
{
|
||||
iface->validate = validate;
|
||||
iface->add_to_size_group = add_to_size_group;
|
||||
iface->fill_connection = fill_connection;
|
||||
iface->update_secrets = update_secrets;
|
||||
iface->get_widget = get_widget;
|
||||
iface->get_default_field = get_default_field;
|
||||
iface->get_password_flags_name = get_password_flags_name;
|
||||
}
|
||||
|
||||
EAPMethodLEAP *
|
||||
eap_method_leap_new (WirelessSecurity *ws_parent,
|
||||
NMConnection *connection,
|
||||
gboolean secrets_only)
|
||||
{
|
||||
EAPMethodLEAP *self;
|
||||
EAPMethod *parent;
|
||||
NMSetting8021x *s_8021x = NULL;
|
||||
g_autoptr(GError) error = NULL;
|
||||
|
||||
parent = eap_method_init (sizeof (EAPMethodLEAP),
|
||||
validate,
|
||||
add_to_size_group,
|
||||
fill_connection,
|
||||
update_secrets,
|
||||
get_widget,
|
||||
get_default_field,
|
||||
get_password_flags_name,
|
||||
NULL,
|
||||
destroy);
|
||||
if (!parent)
|
||||
return NULL;
|
||||
|
||||
self = (EAPMethodLEAP *) parent;
|
||||
self = g_object_new (eap_method_leap_get_type (), NULL);
|
||||
self->editing_connection = secrets_only ? FALSE : TRUE;
|
||||
self->ws_parent = ws_parent;
|
||||
|
||||
|
|
|
@ -20,19 +20,16 @@
|
|||
* (C) Copyright 2007 - 2010 Red Hat, Inc.
|
||||
*/
|
||||
|
||||
#ifndef EAP_METHOD_LEAP_H
|
||||
#define EAP_METHOD_LEAP_H
|
||||
#pragma once
|
||||
|
||||
#include "wireless-security.h"
|
||||
|
||||
typedef struct _EAPMethodLEAP EAPMethodLEAP;
|
||||
G_BEGIN_DECLS
|
||||
|
||||
G_DECLARE_FINAL_TYPE (EAPMethodLEAP, eap_method_leap, EAP, METHOD_LEAP, GObject)
|
||||
|
||||
EAPMethodLEAP *eap_method_leap_new (WirelessSecurity *ws_parent,
|
||||
NMConnection *connection,
|
||||
gboolean secrets_only);
|
||||
|
||||
static void eap_method_leap_unref (EAPMethodLEAP *method) { eap_method_unref (EAP_METHOD (method)); }
|
||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (EAPMethodLEAP, eap_method_leap_unref)
|
||||
|
||||
#endif /* EAP_METHOD_LEAP_H */
|
||||
|
||||
G_END_DECLS
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
#define I_METHOD_COLUMN 1
|
||||
|
||||
struct _EAPMethodPEAP {
|
||||
EAPMethod parent;
|
||||
GObject parent;
|
||||
|
||||
GtkBuilder *builder;
|
||||
GtkEntry *anon_identity_entry;
|
||||
|
@ -55,19 +55,26 @@ struct _EAPMethodPEAP {
|
|||
gboolean is_editor;
|
||||
};
|
||||
|
||||
static void eap_method_iface_init (EAPMethodInterface *);
|
||||
|
||||
G_DEFINE_TYPE_WITH_CODE (EAPMethodPEAP, eap_method_peap, G_TYPE_OBJECT,
|
||||
G_IMPLEMENT_INTERFACE (eap_method_get_type (), eap_method_iface_init))
|
||||
|
||||
static void
|
||||
destroy (EAPMethod *parent)
|
||||
eap_method_peap_dispose (GObject *object)
|
||||
{
|
||||
EAPMethodPEAP *self = (EAPMethodPEAP *) parent;
|
||||
EAPMethodPEAP *self = EAP_METHOD_PEAP (object);
|
||||
|
||||
g_clear_object (&self->builder);
|
||||
g_clear_object (&self->size_group);
|
||||
|
||||
G_OBJECT_CLASS (eap_method_peap_parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
validate (EAPMethod *parent, GError **error)
|
||||
validate (EAPMethod *method, GError **error)
|
||||
{
|
||||
EAPMethodPEAP *self = (EAPMethodPEAP *) parent;
|
||||
EAPMethodPEAP *self = EAP_METHOD_PEAP (method);
|
||||
GtkTreeModel *model;
|
||||
GtkTreeIter iter;
|
||||
g_autoptr(EAPMethod) eap = NULL;
|
||||
|
@ -102,9 +109,9 @@ ca_cert_not_required_toggled (EAPMethodPEAP *self)
|
|||
}
|
||||
|
||||
static void
|
||||
add_to_size_group (EAPMethod *parent, GtkSizeGroup *group)
|
||||
add_to_size_group (EAPMethod *method, GtkSizeGroup *group)
|
||||
{
|
||||
EAPMethodPEAP *self = (EAPMethodPEAP *) parent;
|
||||
EAPMethodPEAP *self = EAP_METHOD_PEAP (method);
|
||||
GtkTreeModel *model;
|
||||
GtkTreeIter iter;
|
||||
g_autoptr(EAPMethod) eap = NULL;
|
||||
|
@ -126,9 +133,9 @@ add_to_size_group (EAPMethod *parent, GtkSizeGroup *group)
|
|||
}
|
||||
|
||||
static void
|
||||
fill_connection (EAPMethod *parent, NMConnection *connection, NMSettingSecretFlags flags)
|
||||
fill_connection (EAPMethod *method, NMConnection *connection, NMSettingSecretFlags flags)
|
||||
{
|
||||
EAPMethodPEAP *self = (EAPMethodPEAP *) parent;
|
||||
EAPMethodPEAP *self = EAP_METHOD_PEAP (method);
|
||||
NMSetting8021x *s_8021x;
|
||||
NMSetting8021xCKFormat format = NM_SETTING_802_1X_CK_FORMAT_UNKNOWN;
|
||||
const char *text;
|
||||
|
@ -154,7 +161,7 @@ fill_connection (EAPMethod *parent, NMConnection *connection, NMSettingSecretFla
|
|||
g_warning ("Couldn't read CA certificate '%s': %s", filename, error ? error->message : "(unknown)");
|
||||
ca_cert_error = TRUE;
|
||||
}
|
||||
eap_method_ca_cert_ignore_set (parent, connection, filename, ca_cert_error);
|
||||
eap_method_ca_cert_ignore_set (method, connection, filename, ca_cert_error);
|
||||
|
||||
peapver_active = gtk_combo_box_get_active (self->version_combo);
|
||||
switch (peapver_active) {
|
||||
|
@ -286,31 +293,31 @@ inner_auth_combo_init (EAPMethodPEAP *self,
|
|||
}
|
||||
|
||||
static void
|
||||
update_secrets (EAPMethod *parent, NMConnection *connection)
|
||||
update_secrets (EAPMethod *method, NMConnection *connection)
|
||||
{
|
||||
EAPMethodPEAP *self = (EAPMethodPEAP *) parent;
|
||||
eap_method_phase2_update_secrets_helper (parent,
|
||||
EAPMethodPEAP *self = EAP_METHOD_PEAP (method);
|
||||
eap_method_phase2_update_secrets_helper (method,
|
||||
connection,
|
||||
self->inner_auth_combo,
|
||||
I_METHOD_COLUMN);
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
get_widget (EAPMethod *parent)
|
||||
get_widget (EAPMethod *method)
|
||||
{
|
||||
EAPMethodPEAP *self = (EAPMethodPEAP *) parent;
|
||||
EAPMethodPEAP *self = EAP_METHOD_PEAP (method);
|
||||
return GTK_WIDGET (self->grid);
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
get_default_field (EAPMethod *parent)
|
||||
get_default_field (EAPMethod *method)
|
||||
{
|
||||
EAPMethodPEAP *self = (EAPMethodPEAP *) parent;
|
||||
EAPMethodPEAP *self = EAP_METHOD_PEAP (method);
|
||||
return GTK_WIDGET (self->anon_identity_entry);
|
||||
}
|
||||
|
||||
static const gchar *
|
||||
get_password_flags_name (EAPMethod *parent)
|
||||
get_password_flags_name (EAPMethod *method)
|
||||
{
|
||||
return NM_SETTING_802_1X_PASSWORD;
|
||||
}
|
||||
|
@ -321,33 +328,44 @@ changed_cb (EAPMethodPEAP *self)
|
|||
wireless_security_notify_changed (self->sec_parent);
|
||||
}
|
||||
|
||||
static void
|
||||
eap_method_peap_init (EAPMethodPEAP *self)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
eap_method_peap_class_init (EAPMethodPEAPClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
object_class->dispose = eap_method_peap_dispose;
|
||||
}
|
||||
|
||||
static void
|
||||
eap_method_iface_init (EAPMethodInterface *iface)
|
||||
{
|
||||
iface->validate = validate;
|
||||
iface->add_to_size_group = add_to_size_group;
|
||||
iface->fill_connection = fill_connection;
|
||||
iface->update_secrets = update_secrets;
|
||||
iface->get_widget = get_widget;
|
||||
iface->get_default_field = get_default_field;
|
||||
iface->get_password_flags_name = get_password_flags_name;
|
||||
}
|
||||
|
||||
EAPMethodPEAP *
|
||||
eap_method_peap_new (WirelessSecurity *ws_parent,
|
||||
NMConnection *connection,
|
||||
gboolean is_editor,
|
||||
gboolean secrets_only)
|
||||
{
|
||||
EAPMethod *parent;
|
||||
EAPMethodPEAP *self;
|
||||
GtkFileFilter *filter;
|
||||
NMSetting8021x *s_8021x = NULL;
|
||||
const char *filename;
|
||||
g_autoptr(GError) error = NULL;
|
||||
|
||||
parent = eap_method_init (sizeof (EAPMethodPEAP),
|
||||
validate,
|
||||
add_to_size_group,
|
||||
fill_connection,
|
||||
update_secrets,
|
||||
get_widget,
|
||||
get_default_field,
|
||||
get_password_flags_name,
|
||||
NULL,
|
||||
destroy);
|
||||
if (!parent)
|
||||
return NULL;
|
||||
|
||||
self = (EAPMethodPEAP *) parent;
|
||||
self = g_object_new (eap_method_peap_get_type (), NULL);
|
||||
self->sec_parent = ws_parent;
|
||||
self->is_editor = is_editor;
|
||||
|
||||
|
@ -388,7 +406,7 @@ eap_method_peap_new (WirelessSecurity *ws_parent,
|
|||
gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (self->ca_cert_button), filename);
|
||||
}
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->ca_cert_not_required_check),
|
||||
!filename && eap_method_ca_cert_ignore_get (parent, connection));
|
||||
!filename && eap_method_ca_cert_ignore_get (EAP_METHOD (self), connection));
|
||||
}
|
||||
|
||||
inner_auth_combo_init (self, connection, s_8021x, secrets_only);
|
||||
|
|
|
@ -20,20 +20,17 @@
|
|||
* (C) Copyright 2007 - 2010 Red Hat, Inc.
|
||||
*/
|
||||
|
||||
#ifndef EAP_METHOD_PEAP_H
|
||||
#define EAP_METHOD_PEAP_H
|
||||
#pragma once
|
||||
|
||||
#include "wireless-security.h"
|
||||
|
||||
typedef struct _EAPMethodPEAP EAPMethodPEAP;
|
||||
G_BEGIN_DECLS
|
||||
|
||||
G_DECLARE_FINAL_TYPE (EAPMethodPEAP, eap_method_peap, EAP, METHOD_PEAP, GObject)
|
||||
|
||||
EAPMethodPEAP *eap_method_peap_new (WirelessSecurity *ws_parent,
|
||||
NMConnection *connection,
|
||||
gboolean is_editor,
|
||||
gboolean secrets_only);
|
||||
|
||||
static void eap_method_peap_unref (EAPMethodPEAP *method) { eap_method_unref (EAP_METHOD (method)); }
|
||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (EAPMethodPEAP, eap_method_peap_unref)
|
||||
|
||||
#endif /* EAP_METHOD_PEAP_H */
|
||||
|
||||
G_END_DECLS
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
#include "utils.h"
|
||||
|
||||
struct _EAPMethodSimple {
|
||||
EAPMethod parent;
|
||||
GObject parent;
|
||||
|
||||
GtkBuilder *builder;
|
||||
GtkGrid *grid;
|
||||
|
@ -51,6 +51,11 @@ struct _EAPMethodSimple {
|
|||
guint idle_func_id;
|
||||
};
|
||||
|
||||
static void eap_method_iface_init (EAPMethodInterface *);
|
||||
|
||||
G_DEFINE_TYPE_WITH_CODE (EAPMethodSimple, eap_method_simple, G_TYPE_OBJECT,
|
||||
G_IMPLEMENT_INTERFACE (eap_method_get_type (), eap_method_iface_init))
|
||||
|
||||
static void
|
||||
show_toggled_cb (EAPMethodSimple *self)
|
||||
{
|
||||
|
@ -68,9 +73,9 @@ always_ask_selected (GtkEntry *passwd_entry)
|
|||
}
|
||||
|
||||
static gboolean
|
||||
validate (EAPMethod *parent, GError **error)
|
||||
validate (EAPMethod *method, GError **error)
|
||||
{
|
||||
EAPMethodSimple *self = (EAPMethodSimple *)parent;
|
||||
EAPMethodSimple *self = EAP_METHOD_SIMPLE (method);
|
||||
const char *text;
|
||||
gboolean ret = TRUE;
|
||||
|
||||
|
@ -101,9 +106,9 @@ validate (EAPMethod *parent, GError **error)
|
|||
}
|
||||
|
||||
static void
|
||||
add_to_size_group (EAPMethod *parent, GtkSizeGroup *group)
|
||||
add_to_size_group (EAPMethod *method, GtkSizeGroup *group)
|
||||
{
|
||||
EAPMethodSimple *self = (EAPMethodSimple *) parent;
|
||||
EAPMethodSimple *self = EAP_METHOD_SIMPLE (method);
|
||||
gtk_size_group_add_widget (group, GTK_WIDGET (self->username_label));
|
||||
gtk_size_group_add_widget (group, GTK_WIDGET (self->password_label));
|
||||
}
|
||||
|
@ -126,9 +131,9 @@ static const EapType eap_table[EAP_METHOD_SIMPLE_TYPE_LAST] = {
|
|||
};
|
||||
|
||||
static void
|
||||
fill_connection (EAPMethod *parent, NMConnection *connection, NMSettingSecretFlags prev_flags)
|
||||
fill_connection (EAPMethod *method, NMConnection *connection, NMSettingSecretFlags prev_flags)
|
||||
{
|
||||
EAPMethodSimple *self = (EAPMethodSimple *) parent;
|
||||
EAPMethodSimple *self = EAP_METHOD_SIMPLE (method);
|
||||
NMSetting8021x *s_8021x;
|
||||
gboolean not_saved = FALSE;
|
||||
NMSettingSecretFlags flags;
|
||||
|
@ -140,11 +145,11 @@ fill_connection (EAPMethod *parent, NMConnection *connection, NMSettingSecretFla
|
|||
/* If this is the main EAP method, clear any existing methods because the
|
||||
* user-selected on will replace it.
|
||||
*/
|
||||
if (eap_method_get_phase2 (parent) == FALSE)
|
||||
if (eap_method_get_phase2 (method) == FALSE)
|
||||
nm_setting_802_1x_clear_eap_methods (s_8021x);
|
||||
|
||||
eap_type = &eap_table[self->type];
|
||||
if (eap_method_get_phase2 (parent)) {
|
||||
if (eap_method_get_phase2 (method)) {
|
||||
/* If the outer EAP method (TLS, TTLS, PEAP, etc) allows inner/phase2
|
||||
* EAP methods (which only TTLS allows) *and* the inner/phase2 method
|
||||
* supports being an inner EAP method, then set PHASE2_AUTHEAP.
|
||||
|
@ -183,9 +188,9 @@ fill_connection (EAPMethod *parent, NMConnection *connection, NMSettingSecretFla
|
|||
}
|
||||
|
||||
static void
|
||||
update_secrets (EAPMethod *parent, NMConnection *connection)
|
||||
update_secrets (EAPMethod *method, NMConnection *connection)
|
||||
{
|
||||
EAPMethodSimple *self = (EAPMethodSimple *) parent;
|
||||
EAPMethodSimple *self = EAP_METHOD_SIMPLE (method);
|
||||
helper_fill_secret_entry (connection,
|
||||
self->password_entry,
|
||||
NM_TYPE_SETTING_802_1X,
|
||||
|
@ -193,29 +198,29 @@ update_secrets (EAPMethod *parent, NMConnection *connection)
|
|||
}
|
||||
|
||||
static GtkWidget *
|
||||
get_widget (EAPMethod *parent)
|
||||
get_widget (EAPMethod *method)
|
||||
{
|
||||
EAPMethodSimple *self = (EAPMethodSimple *) parent;
|
||||
EAPMethodSimple *self = EAP_METHOD_SIMPLE (method);
|
||||
return GTK_WIDGET (self->grid);
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
get_default_field (EAPMethod *parent)
|
||||
get_default_field (EAPMethod *method)
|
||||
{
|
||||
EAPMethodSimple *self = (EAPMethodSimple *) parent;
|
||||
EAPMethodSimple *self = EAP_METHOD_SIMPLE (method);
|
||||
return GTK_WIDGET (self->username_entry);
|
||||
}
|
||||
|
||||
static const gchar *
|
||||
get_password_flags_name (EAPMethod *parent)
|
||||
get_password_flags_name (EAPMethod *method)
|
||||
{
|
||||
return NM_SETTING_802_1X_PASSWORD;
|
||||
}
|
||||
|
||||
static const gboolean
|
||||
get_phase2 (EAPMethod *parent)
|
||||
get_phase2 (EAPMethod *method)
|
||||
{
|
||||
EAPMethodSimple *self = (EAPMethodSimple *) parent;
|
||||
EAPMethodSimple *self = EAP_METHOD_SIMPLE (method);
|
||||
return self->flags & EAP_METHOD_SIMPLE_FLAG_PHASE2;
|
||||
}
|
||||
|
||||
|
@ -283,9 +288,9 @@ widgets_unrealized (EAPMethodSimple *self)
|
|||
}
|
||||
|
||||
static void
|
||||
destroy (EAPMethod *parent)
|
||||
eap_method_simple_dispose (GObject *object)
|
||||
{
|
||||
EAPMethodSimple *self = (EAPMethodSimple *) parent;
|
||||
EAPMethodSimple *self = EAP_METHOD_SIMPLE (object);
|
||||
|
||||
g_clear_object (&self->builder);
|
||||
g_signal_handlers_disconnect_by_data (self->grid, self);
|
||||
|
@ -295,6 +300,8 @@ destroy (EAPMethod *parent)
|
|||
g_signal_handlers_disconnect_by_data (self->show_password_check, self);
|
||||
|
||||
nm_clear_g_source (&self->idle_func_id);
|
||||
|
||||
G_OBJECT_CLASS (eap_method_simple_parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -303,31 +310,43 @@ changed_cb (EAPMethodSimple *self)
|
|||
wireless_security_notify_changed (self->ws_parent);
|
||||
}
|
||||
|
||||
static void
|
||||
eap_method_simple_init (EAPMethodSimple *self)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
eap_method_simple_class_init (EAPMethodSimpleClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
object_class->dispose = eap_method_simple_dispose;
|
||||
}
|
||||
|
||||
static void
|
||||
eap_method_iface_init (EAPMethodInterface *iface)
|
||||
{
|
||||
iface->validate = validate;
|
||||
iface->add_to_size_group = add_to_size_group;
|
||||
iface->fill_connection = fill_connection;
|
||||
iface->update_secrets = update_secrets;
|
||||
iface->get_widget = get_widget;
|
||||
iface->get_default_field = get_default_field;
|
||||
iface->get_password_flags_name = get_password_flags_name;
|
||||
iface->get_phase2 = get_phase2;
|
||||
}
|
||||
|
||||
EAPMethodSimple *
|
||||
eap_method_simple_new (WirelessSecurity *ws_parent,
|
||||
NMConnection *connection,
|
||||
EAPMethodSimpleType type,
|
||||
EAPMethodSimpleFlags flags)
|
||||
{
|
||||
EAPMethod *parent;
|
||||
EAPMethodSimple *self;
|
||||
NMSetting8021x *s_8021x = NULL;
|
||||
g_autoptr(GError) error = NULL;
|
||||
|
||||
parent = eap_method_init (sizeof (EAPMethodSimple),
|
||||
validate,
|
||||
add_to_size_group,
|
||||
fill_connection,
|
||||
update_secrets,
|
||||
get_widget,
|
||||
get_default_field,
|
||||
get_password_flags_name,
|
||||
get_phase2,
|
||||
destroy);
|
||||
if (!parent)
|
||||
return NULL;
|
||||
|
||||
self = (EAPMethodSimple *) parent;
|
||||
self = g_object_new (eap_method_simple_get_type (), NULL);
|
||||
self->ws_parent = ws_parent;
|
||||
self->flags = flags;
|
||||
self->type = type;
|
||||
|
|
|
@ -20,11 +20,14 @@
|
|||
* (C) Copyright 2007 - 2010 Red Hat, Inc.
|
||||
*/
|
||||
|
||||
#ifndef EAP_METHOD_SIMPLE_H
|
||||
#define EAP_METHOD_SIMPLE_H
|
||||
#pragma once
|
||||
|
||||
#include "wireless-security.h"
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
G_DECLARE_FINAL_TYPE (EAPMethodSimple, eap_method_simple, EAP, METHOD_SIMPLE, GObject)
|
||||
|
||||
typedef enum {
|
||||
/* NOTE: when updating this table, also update eap_methods[] */
|
||||
EAP_METHOD_SIMPLE_TYPE_PAP = 0,
|
||||
|
@ -52,15 +55,9 @@ typedef enum {
|
|||
EAP_METHOD_SIMPLE_FLAG_SECRETS_ONLY = 0x08
|
||||
} EAPMethodSimpleFlags;
|
||||
|
||||
typedef struct _EAPMethodSimple EAPMethodSimple;
|
||||
|
||||
EAPMethodSimple *eap_method_simple_new (WirelessSecurity *ws_parent,
|
||||
NMConnection *connection,
|
||||
EAPMethodSimpleType type,
|
||||
EAPMethodSimpleFlags flags);
|
||||
|
||||
static void eap_method_simple_unref (EAPMethodSimple *method) { eap_method_unref (EAP_METHOD (method)); }
|
||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (EAPMethodSimple, eap_method_simple_unref)
|
||||
|
||||
#endif /* EAP_METHOD_SIMPLE_H */
|
||||
|
||||
G_END_DECLS
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
#include "utils.h"
|
||||
|
||||
struct _EAPMethodTLS {
|
||||
EAPMethod parent;
|
||||
GObject parent;
|
||||
|
||||
GtkBuilder *builder;
|
||||
GtkFileChooserButton *ca_cert_button;
|
||||
|
@ -56,12 +56,19 @@ struct _EAPMethodTLS {
|
|||
gboolean editing_connection;
|
||||
};
|
||||
|
||||
static void eap_method_iface_init (EAPMethodInterface *);
|
||||
|
||||
G_DEFINE_TYPE_WITH_CODE (EAPMethodTLS, eap_method_tls, G_TYPE_OBJECT,
|
||||
G_IMPLEMENT_INTERFACE (eap_method_get_type (), eap_method_iface_init))
|
||||
|
||||
static void
|
||||
destroy (EAPMethod *parent)
|
||||
eap_method_tls_dispose (GObject *object)
|
||||
{
|
||||
EAPMethodTLS *self = (EAPMethodTLS *) parent;
|
||||
EAPMethodTLS *self = EAP_METHOD_TLS (object);
|
||||
|
||||
g_clear_object (&self->builder);
|
||||
|
||||
G_OBJECT_CLASS (eap_method_tls_parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -74,9 +81,9 @@ show_toggled_cb (EAPMethodTLS *self)
|
|||
}
|
||||
|
||||
static gboolean
|
||||
validate (EAPMethod *parent, GError **error)
|
||||
validate (EAPMethod *method, GError **error)
|
||||
{
|
||||
EAPMethodTLS *self = (EAPMethodTLS *) parent;
|
||||
EAPMethodTLS *self = EAP_METHOD_TLS (method);
|
||||
NMSetting8021xCKFormat format = NM_SETTING_802_1X_CK_FORMAT_UNKNOWN;
|
||||
const char *password, *identity;
|
||||
g_autoptr(GError) ca_cert_error = NULL;
|
||||
|
@ -146,9 +153,9 @@ ca_cert_not_required_toggled (EAPMethodTLS *self)
|
|||
}
|
||||
|
||||
static void
|
||||
add_to_size_group (EAPMethod *parent, GtkSizeGroup *group)
|
||||
add_to_size_group (EAPMethod *method, GtkSizeGroup *group)
|
||||
{
|
||||
EAPMethodTLS *self = (EAPMethodTLS *) parent;
|
||||
EAPMethodTLS *self = EAP_METHOD_TLS (method);
|
||||
|
||||
gtk_size_group_add_widget (group, GTK_WIDGET (self->ca_cert_not_required_check));
|
||||
gtk_size_group_add_widget (group, GTK_WIDGET (self->identity_label));
|
||||
|
@ -159,9 +166,9 @@ add_to_size_group (EAPMethod *parent, GtkSizeGroup *group)
|
|||
}
|
||||
|
||||
static void
|
||||
fill_connection (EAPMethod *parent, NMConnection *connection, NMSettingSecretFlags flags)
|
||||
fill_connection (EAPMethod *method, NMConnection *connection, NMSettingSecretFlags flags)
|
||||
{
|
||||
EAPMethodTLS *self = (EAPMethodTLS *) parent;
|
||||
EAPMethodTLS *self = EAP_METHOD_TLS (method);
|
||||
NMSetting8021xCKFormat format = NM_SETTING_802_1X_CK_FORMAT_UNKNOWN;
|
||||
NMSetting8021x *s_8021x;
|
||||
NMSettingSecretFlags secret_flags;
|
||||
|
@ -246,13 +253,12 @@ fill_connection (EAPMethod *parent, NMConnection *connection, NMSettingSecretFla
|
|||
ca_cert_error = TRUE;
|
||||
}
|
||||
}
|
||||
eap_method_ca_cert_ignore_set (parent, connection, ca_filename, ca_cert_error);
|
||||
eap_method_ca_cert_ignore_set (method, connection, ca_filename, ca_cert_error);
|
||||
}
|
||||
|
||||
static void
|
||||
private_key_picker_helper (EAPMethod *parent, const char *filename, gboolean changed)
|
||||
private_key_picker_helper (EAPMethodTLS *self, const char *filename, gboolean changed)
|
||||
{
|
||||
EAPMethodTLS *self = (EAPMethodTLS *) parent;
|
||||
g_autoptr(NMSetting8021x) setting = NULL;
|
||||
NMSetting8021xCKFormat cert_format = NM_SETTING_802_1X_CK_FORMAT_UNKNOWN;
|
||||
const char *password;
|
||||
|
@ -296,12 +302,12 @@ private_key_picker_helper (EAPMethod *parent, const char *filename, gboolean cha
|
|||
static void
|
||||
private_key_picker_file_set_cb (GtkWidget *chooser, gpointer user_data)
|
||||
{
|
||||
EAPMethod *parent = (EAPMethod *) user_data;
|
||||
EAPMethodTLS *self = user_data;
|
||||
g_autofree gchar *filename = NULL;
|
||||
|
||||
filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (chooser));
|
||||
if (filename)
|
||||
private_key_picker_helper (parent, filename, TRUE);
|
||||
private_key_picker_helper (self, filename, TRUE);
|
||||
}
|
||||
|
||||
static void reset_filter (GtkWidget *widget, GParamSpec *spec, gpointer user_data)
|
||||
|
@ -323,10 +329,10 @@ changed_cb (EAPMethodTLS *self)
|
|||
}
|
||||
|
||||
static void
|
||||
setup_filepicker (GtkFileChooserButton *button,
|
||||
setup_filepicker (EAPMethodTLS *self,
|
||||
GtkFileChooserButton *button,
|
||||
const char *title,
|
||||
WirelessSecurity *ws_parent,
|
||||
EAPMethod *parent,
|
||||
NMSetting8021x *s_8021x,
|
||||
SchemeFunc scheme_func,
|
||||
PathFunc path_func,
|
||||
|
@ -353,12 +359,12 @@ setup_filepicker (GtkFileChooserButton *button,
|
|||
if (privkey) {
|
||||
g_signal_connect (button, "selection-changed",
|
||||
(GCallback) private_key_picker_file_set_cb,
|
||||
parent);
|
||||
self);
|
||||
if (filename)
|
||||
private_key_picker_helper (parent, filename, FALSE);
|
||||
private_key_picker_helper (self, filename, FALSE);
|
||||
}
|
||||
|
||||
g_signal_connect_swapped (button, "selection-changed", G_CALLBACK (changed_cb), parent);
|
||||
g_signal_connect_swapped (button, "selection-changed", G_CALLBACK (changed_cb), self);
|
||||
|
||||
filter = eap_method_default_file_chooser_filter_new (privkey);
|
||||
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (button), filter);
|
||||
|
@ -373,9 +379,9 @@ setup_filepicker (GtkFileChooserButton *button,
|
|||
}
|
||||
|
||||
static void
|
||||
update_secrets (EAPMethod *parent, NMConnection *connection)
|
||||
update_secrets (EAPMethod *method, NMConnection *connection)
|
||||
{
|
||||
EAPMethodTLS *self = (EAPMethodTLS *) parent;
|
||||
EAPMethodTLS *self = EAP_METHOD_TLS (method);
|
||||
NMSetting8021x *s_8021x;
|
||||
HelperSecretFunc password_func;
|
||||
SchemeFunc scheme_func;
|
||||
|
@ -407,33 +413,59 @@ update_secrets (EAPMethod *parent, NMConnection *connection)
|
|||
}
|
||||
|
||||
static GtkWidget *
|
||||
get_widget (EAPMethod *parent)
|
||||
get_widget (EAPMethod *method)
|
||||
{
|
||||
EAPMethodTLS *self = (EAPMethodTLS *) parent;
|
||||
EAPMethodTLS *self = EAP_METHOD_TLS (method);
|
||||
return GTK_WIDGET (self->grid);
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
get_default_field (EAPMethod *parent)
|
||||
get_default_field (EAPMethod *method)
|
||||
{
|
||||
EAPMethodTLS *self = (EAPMethodTLS *) parent;
|
||||
EAPMethodTLS *self = EAP_METHOD_TLS (method);
|
||||
return GTK_WIDGET (self->identity_entry);
|
||||
}
|
||||
|
||||
static const gchar *
|
||||
get_password_flags_name (EAPMethod *parent)
|
||||
get_password_flags_name (EAPMethod *method)
|
||||
{
|
||||
EAPMethodTLS *self = (EAPMethodTLS *) parent;
|
||||
EAPMethodTLS *self = EAP_METHOD_TLS (method);
|
||||
return self->password_flags_name;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
get_phase2 (EAPMethod *parent)
|
||||
get_phase2 (EAPMethod *method)
|
||||
{
|
||||
EAPMethodTLS *self = (EAPMethodTLS *) parent;
|
||||
EAPMethodTLS *self = EAP_METHOD_TLS (method);
|
||||
return self->phase2;
|
||||
}
|
||||
|
||||
static void
|
||||
eap_method_tls_init (EAPMethodTLS *self)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
eap_method_tls_class_init (EAPMethodTLSClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
object_class->dispose = eap_method_tls_dispose;
|
||||
}
|
||||
|
||||
static void
|
||||
eap_method_iface_init (EAPMethodInterface *iface)
|
||||
{
|
||||
iface->validate = validate;
|
||||
iface->add_to_size_group = add_to_size_group;
|
||||
iface->fill_connection = fill_connection;
|
||||
iface->update_secrets = update_secrets;
|
||||
iface->get_widget = get_widget;
|
||||
iface->get_default_field = get_default_field;
|
||||
iface->get_password_flags_name = get_password_flags_name;
|
||||
iface->get_phase2 = get_phase2;
|
||||
}
|
||||
|
||||
EAPMethodTLS *
|
||||
eap_method_tls_new (WirelessSecurity *ws_parent,
|
||||
NMConnection *connection,
|
||||
|
@ -441,25 +473,11 @@ eap_method_tls_new (WirelessSecurity *ws_parent,
|
|||
gboolean secrets_only)
|
||||
{
|
||||
EAPMethodTLS *self;
|
||||
EAPMethod *parent;
|
||||
NMSetting8021x *s_8021x = NULL;
|
||||
gboolean ca_not_required = FALSE;
|
||||
g_autoptr(GError) error = NULL;
|
||||
|
||||
parent = eap_method_init (sizeof (EAPMethodTLS),
|
||||
validate,
|
||||
add_to_size_group,
|
||||
fill_connection,
|
||||
update_secrets,
|
||||
get_widget,
|
||||
get_default_field,
|
||||
get_password_flags_name,
|
||||
get_phase2,
|
||||
destroy);
|
||||
if (!parent)
|
||||
return NULL;
|
||||
|
||||
self = (EAPMethodTLS *) parent;
|
||||
self = g_object_new (eap_method_tls_get_type (), NULL);
|
||||
self->phase2 = phase2;
|
||||
self->password_flags_name = phase2 ?
|
||||
NM_SETTING_802_1X_PHASE2_PRIVATE_KEY_PASSWORD :
|
||||
|
@ -496,32 +514,35 @@ eap_method_tls_new (WirelessSecurity *ws_parent,
|
|||
if (s_8021x && nm_setting_802_1x_get_identity (s_8021x))
|
||||
gtk_entry_set_text (self->identity_entry, nm_setting_802_1x_get_identity (s_8021x));
|
||||
|
||||
setup_filepicker (self->user_cert_button,
|
||||
setup_filepicker (self,
|
||||
self->user_cert_button,
|
||||
_("Choose your personal certificate"),
|
||||
ws_parent, parent, s_8021x,
|
||||
ws_parent, s_8021x,
|
||||
phase2 ? nm_setting_802_1x_get_phase2_client_cert_scheme : nm_setting_802_1x_get_client_cert_scheme,
|
||||
phase2 ? nm_setting_802_1x_get_phase2_client_cert_path : nm_setting_802_1x_get_client_cert_path,
|
||||
FALSE, TRUE);
|
||||
setup_filepicker (self->ca_cert_button,
|
||||
setup_filepicker (self,
|
||||
self->ca_cert_button,
|
||||
_("Choose a Certificate Authority certificate"),
|
||||
ws_parent, parent, s_8021x,
|
||||
ws_parent, s_8021x,
|
||||
phase2 ? nm_setting_802_1x_get_phase2_ca_cert_scheme : nm_setting_802_1x_get_ca_cert_scheme,
|
||||
phase2 ? nm_setting_802_1x_get_phase2_ca_cert_path : nm_setting_802_1x_get_ca_cert_path,
|
||||
FALSE, FALSE);
|
||||
setup_filepicker (self->private_key_button,
|
||||
setup_filepicker (self,
|
||||
self->private_key_button,
|
||||
_("Choose your private key"),
|
||||
ws_parent, parent, s_8021x,
|
||||
ws_parent, s_8021x,
|
||||
phase2 ? nm_setting_802_1x_get_phase2_private_key_scheme : nm_setting_802_1x_get_private_key_scheme,
|
||||
phase2 ? nm_setting_802_1x_get_phase2_private_key_path : nm_setting_802_1x_get_private_key_path,
|
||||
TRUE, FALSE);
|
||||
|
||||
if (connection && eap_method_ca_cert_ignore_get (parent, connection))
|
||||
if (connection && eap_method_ca_cert_ignore_get (EAP_METHOD (self), connection))
|
||||
ca_not_required = !gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (self->ca_cert_button));
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->ca_cert_not_required_check), ca_not_required);
|
||||
|
||||
/* Fill secrets, if any */
|
||||
if (connection)
|
||||
update_secrets (parent, connection);
|
||||
update_secrets (EAP_METHOD (self), connection);
|
||||
|
||||
g_signal_connect_swapped (self->private_key_password_entry, "changed", G_CALLBACK (changed_cb), self);
|
||||
|
||||
|
|
|
@ -20,20 +20,17 @@
|
|||
* (C) Copyright 2007 - 2010 Red Hat, Inc.
|
||||
*/
|
||||
|
||||
#ifndef EAP_METHOD_TLS_H
|
||||
#define EAP_METHOD_TLS_H
|
||||
#pragma once
|
||||
|
||||
#include "wireless-security.h"
|
||||
|
||||
typedef struct _EAPMethodTLS EAPMethodTLS;
|
||||
G_BEGIN_DECLS
|
||||
|
||||
G_DECLARE_FINAL_TYPE (EAPMethodTLS, eap_method_tls, EAP, METHOD_TLS, GObject)
|
||||
|
||||
EAPMethodTLS *eap_method_tls_new (WirelessSecurity *ws_parent,
|
||||
NMConnection *connection,
|
||||
gboolean phase2,
|
||||
gboolean secrets_only);
|
||||
|
||||
static void eap_method_tls_unref (EAPMethodTLS *method) { eap_method_unref (EAP_METHOD (method)); }
|
||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (EAPMethodTLS, eap_method_tls_unref)
|
||||
|
||||
#endif /* EAP_METHOD_TLS_H */
|
||||
|
||||
G_END_DECLS
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
#define I_METHOD_COLUMN 1
|
||||
|
||||
struct _EAPMethodTTLS {
|
||||
EAPMethod parent;
|
||||
GObject parent;
|
||||
|
||||
GtkBuilder *builder;
|
||||
GtkEntry *anon_identity_entry;
|
||||
|
@ -55,19 +55,26 @@ struct _EAPMethodTTLS {
|
|||
gboolean is_editor;
|
||||
};
|
||||
|
||||
static void eap_method_iface_init (EAPMethodInterface *);
|
||||
|
||||
G_DEFINE_TYPE_WITH_CODE (EAPMethodTTLS, eap_method_ttls, G_TYPE_OBJECT,
|
||||
G_IMPLEMENT_INTERFACE (eap_method_get_type (), eap_method_iface_init))
|
||||
|
||||
static void
|
||||
destroy (EAPMethod *parent)
|
||||
eap_method_ttls_dispose (GObject *object)
|
||||
{
|
||||
EAPMethodTTLS *self = (EAPMethodTTLS *) parent;
|
||||
EAPMethodTTLS *self = EAP_METHOD_TTLS (object);
|
||||
|
||||
g_clear_object (&self->builder);
|
||||
g_clear_object (&self->size_group);
|
||||
|
||||
G_OBJECT_CLASS (eap_method_ttls_parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
validate (EAPMethod *parent, GError **error)
|
||||
validate (EAPMethod *method, GError **error)
|
||||
{
|
||||
EAPMethodTTLS *self = (EAPMethodTTLS *) parent;
|
||||
EAPMethodTTLS *self = EAP_METHOD_TTLS (method);
|
||||
GtkTreeModel *model;
|
||||
GtkTreeIter iter;
|
||||
g_autoptr(EAPMethod) eap = NULL;
|
||||
|
@ -102,9 +109,9 @@ ca_cert_not_required_toggled (EAPMethodTTLS *self)
|
|||
}
|
||||
|
||||
static void
|
||||
add_to_size_group (EAPMethod *parent, GtkSizeGroup *group)
|
||||
add_to_size_group (EAPMethod *method, GtkSizeGroup *group)
|
||||
{
|
||||
EAPMethodTTLS *self = (EAPMethodTTLS *) parent;
|
||||
EAPMethodTTLS *self = EAP_METHOD_TTLS (method);
|
||||
GtkTreeModel *model;
|
||||
GtkTreeIter iter;
|
||||
g_autoptr(EAPMethod) eap = NULL;
|
||||
|
@ -126,9 +133,9 @@ add_to_size_group (EAPMethod *parent, GtkSizeGroup *group)
|
|||
}
|
||||
|
||||
static void
|
||||
fill_connection (EAPMethod *parent, NMConnection *connection, NMSettingSecretFlags flags)
|
||||
fill_connection (EAPMethod *method, NMConnection *connection, NMSettingSecretFlags flags)
|
||||
{
|
||||
EAPMethodTTLS *self = (EAPMethodTTLS *) parent;
|
||||
EAPMethodTTLS *self = EAP_METHOD_TTLS (method);
|
||||
NMSetting8021x *s_8021x;
|
||||
NMSetting8021xCKFormat format = NM_SETTING_802_1X_CK_FORMAT_UNKNOWN;
|
||||
const char *text;
|
||||
|
@ -157,7 +164,7 @@ fill_connection (EAPMethod *parent, NMConnection *connection, NMSettingSecretFla
|
|||
g_warning ("Couldn't read CA certificate '%s': %s", filename, error ? error->message : "(unknown)");
|
||||
ca_cert_error = TRUE;
|
||||
}
|
||||
eap_method_ca_cert_ignore_set (parent, connection, filename, ca_cert_error);
|
||||
eap_method_ca_cert_ignore_set (method, connection, filename, ca_cert_error);
|
||||
|
||||
model = gtk_combo_box_get_model (self->inner_auth_combo);
|
||||
gtk_combo_box_get_active_iter (self->inner_auth_combo, &iter);
|
||||
|
@ -339,31 +346,31 @@ inner_auth_combo_init (EAPMethodTTLS *self,
|
|||
}
|
||||
|
||||
static void
|
||||
update_secrets (EAPMethod *parent, NMConnection *connection)
|
||||
update_secrets (EAPMethod *method, NMConnection *connection)
|
||||
{
|
||||
EAPMethodTTLS *self = (EAPMethodTTLS *) parent;
|
||||
eap_method_phase2_update_secrets_helper (parent,
|
||||
EAPMethodTTLS *self = EAP_METHOD_TTLS (method);
|
||||
eap_method_phase2_update_secrets_helper (method,
|
||||
connection,
|
||||
self->inner_auth_combo,
|
||||
I_METHOD_COLUMN);
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
get_widget (EAPMethod *parent)
|
||||
get_widget (EAPMethod *method)
|
||||
{
|
||||
EAPMethodTTLS *self = (EAPMethodTTLS *) parent;
|
||||
EAPMethodTTLS *self = EAP_METHOD_TTLS (method);
|
||||
return GTK_WIDGET (self->grid);
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
get_default_field (EAPMethod *parent)
|
||||
get_default_field (EAPMethod *method)
|
||||
{
|
||||
EAPMethodTTLS *self = (EAPMethodTTLS *) parent;
|
||||
EAPMethodTTLS *self = EAP_METHOD_TTLS (method);
|
||||
return GTK_WIDGET (self->anon_identity_entry);
|
||||
}
|
||||
|
||||
static const gchar *
|
||||
get_password_flags_name (EAPMethod *parent)
|
||||
get_password_flags_name (EAPMethod *method)
|
||||
{
|
||||
return NM_SETTING_802_1X_PASSWORD;
|
||||
}
|
||||
|
@ -374,33 +381,44 @@ changed_cb (EAPMethodTTLS *self)
|
|||
wireless_security_notify_changed (self->sec_parent);
|
||||
}
|
||||
|
||||
static void
|
||||
eap_method_ttls_init (EAPMethodTTLS *self)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
eap_method_ttls_class_init (EAPMethodTTLSClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
object_class->dispose = eap_method_ttls_dispose;
|
||||
}
|
||||
|
||||
static void
|
||||
eap_method_iface_init (EAPMethodInterface *iface)
|
||||
{
|
||||
iface->validate = validate;
|
||||
iface->add_to_size_group = add_to_size_group;
|
||||
iface->fill_connection = fill_connection;
|
||||
iface->update_secrets = update_secrets;
|
||||
iface->get_widget = get_widget;
|
||||
iface->get_default_field = get_default_field;
|
||||
iface->get_password_flags_name = get_password_flags_name;
|
||||
}
|
||||
|
||||
EAPMethodTTLS *
|
||||
eap_method_ttls_new (WirelessSecurity *ws_parent,
|
||||
NMConnection *connection,
|
||||
gboolean is_editor,
|
||||
gboolean secrets_only)
|
||||
{
|
||||
EAPMethod *parent;
|
||||
EAPMethodTTLS *self;
|
||||
GtkFileFilter *filter;
|
||||
NMSetting8021x *s_8021x = NULL;
|
||||
const char *filename;
|
||||
g_autoptr(GError) error = NULL;
|
||||
|
||||
parent = eap_method_init (sizeof (EAPMethodTTLS),
|
||||
validate,
|
||||
add_to_size_group,
|
||||
fill_connection,
|
||||
update_secrets,
|
||||
get_widget,
|
||||
get_default_field,
|
||||
get_password_flags_name,
|
||||
NULL,
|
||||
destroy);
|
||||
if (!parent)
|
||||
return NULL;
|
||||
|
||||
self = (EAPMethodTTLS *) parent;
|
||||
self = g_object_new (eap_method_ttls_get_type (), NULL);
|
||||
self->sec_parent = ws_parent;
|
||||
self->is_editor = is_editor;
|
||||
|
||||
|
@ -441,7 +459,7 @@ eap_method_ttls_new (WirelessSecurity *ws_parent,
|
|||
gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (self->ca_cert_button), filename);
|
||||
}
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->ca_cert_not_required_check),
|
||||
!filename && eap_method_ca_cert_ignore_get (parent, connection));
|
||||
!filename && eap_method_ca_cert_ignore_get (EAP_METHOD (self), connection));
|
||||
}
|
||||
|
||||
if (s_8021x && nm_setting_802_1x_get_anonymous_identity (s_8021x))
|
||||
|
|
|
@ -20,20 +20,17 @@
|
|||
* (C) Copyright 2007 - 2010 Red Hat, Inc.
|
||||
*/
|
||||
|
||||
#ifndef EAP_METHOD_TTLS_H
|
||||
#define EAP_METHOD_TTLS_H
|
||||
#pragma once
|
||||
|
||||
#include "wireless-security.h"
|
||||
|
||||
typedef struct _EAPMethodTTLS EAPMethodTTLS;
|
||||
G_BEGIN_DECLS
|
||||
|
||||
G_DECLARE_FINAL_TYPE (EAPMethodTTLS, eap_method_ttls, EAP, METHOD_TTLS, GObject)
|
||||
|
||||
EAPMethodTTLS *eap_method_ttls_new (WirelessSecurity *ws_parent,
|
||||
NMConnection *connection,
|
||||
gboolean is_editor,
|
||||
gboolean secrets_only);
|
||||
|
||||
static void eap_method_ttls_unref (EAPMethodTTLS *method) { eap_method_unref (EAP_METHOD (method)); }
|
||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (EAPMethodTTLS, eap_method_ttls_unref)
|
||||
|
||||
#endif /* EAP_METHOD_TTLS_H */
|
||||
|
||||
G_END_DECLS
|
||||
|
|
|
@ -33,18 +33,11 @@
|
|||
#include "utils.h"
|
||||
#include "helpers.h"
|
||||
|
||||
GType
|
||||
eap_method_get_type (void)
|
||||
G_DEFINE_INTERFACE (EAPMethod, eap_method, G_TYPE_OBJECT)
|
||||
|
||||
static void
|
||||
eap_method_default_init (EAPMethodInterface *iface)
|
||||
{
|
||||
static GType type_id = 0;
|
||||
|
||||
if (!type_id) {
|
||||
type_id = g_boxed_type_register_static ("CcEAPMethod",
|
||||
(GBoxedCopyFunc) eap_method_ref,
|
||||
(GBoxedFreeFunc) eap_method_unref);
|
||||
}
|
||||
|
||||
return type_id;
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
|
@ -52,7 +45,7 @@ eap_method_get_widget (EAPMethod *self)
|
|||
{
|
||||
g_return_val_if_fail (self != NULL, NULL);
|
||||
|
||||
return self->get_widget (self);
|
||||
return EAP_METHOD_GET_IFACE (self)->get_widget (self);
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
|
@ -60,7 +53,7 @@ eap_method_get_default_field (EAPMethod *self)
|
|||
{
|
||||
g_return_val_if_fail (self != NULL, NULL);
|
||||
|
||||
return self->get_default_field (self);
|
||||
return EAP_METHOD_GET_IFACE (self)->get_default_field (self);
|
||||
}
|
||||
|
||||
const gchar *
|
||||
|
@ -68,8 +61,8 @@ eap_method_get_password_flags_name (EAPMethod *self)
|
|||
{
|
||||
g_return_val_if_fail (self != NULL, NULL);
|
||||
|
||||
if (self->get_password_flags_name)
|
||||
return self->get_password_flags_name (self);
|
||||
if (EAP_METHOD_GET_IFACE (self)->get_password_flags_name)
|
||||
return EAP_METHOD_GET_IFACE (self)->get_password_flags_name (self);
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
@ -79,8 +72,8 @@ eap_method_get_phase2 (EAPMethod *self)
|
|||
{
|
||||
g_return_val_if_fail (self != NULL, FALSE);
|
||||
|
||||
if (self->get_phase2)
|
||||
return self->get_phase2 (self);
|
||||
if (EAP_METHOD_GET_IFACE (self)->get_phase2)
|
||||
return EAP_METHOD_GET_IFACE (self)->get_phase2 (self);
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -92,8 +85,7 @@ eap_method_validate (EAPMethod *self, GError **error)
|
|||
|
||||
g_return_val_if_fail (self != NULL, FALSE);
|
||||
|
||||
g_assert (self->validate);
|
||||
result = (*(self->validate)) (self, error);
|
||||
result = (*(EAP_METHOD_GET_IFACE (self)->validate)) (self, error);
|
||||
if (!result && error && !*error)
|
||||
g_set_error_literal (error, NMA_ERROR, NMA_ERROR_GENERIC, _("undefined error in 802.1X security (wpa-eap)"));
|
||||
return result;
|
||||
|
@ -105,8 +97,7 @@ eap_method_add_to_size_group (EAPMethod *self, GtkSizeGroup *group)
|
|||
g_return_if_fail (self != NULL);
|
||||
g_return_if_fail (group != NULL);
|
||||
|
||||
g_assert (self->add_to_size_group);
|
||||
return (*(self->add_to_size_group)) (self, group);
|
||||
return (*(EAP_METHOD_GET_IFACE (self)->add_to_size_group)) (self, group);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -117,8 +108,7 @@ eap_method_fill_connection (EAPMethod *self,
|
|||
g_return_if_fail (self != NULL);
|
||||
g_return_if_fail (connection != NULL);
|
||||
|
||||
g_assert (self->fill_connection);
|
||||
return (*(self->fill_connection)) (self, connection, flags);
|
||||
return (*(EAP_METHOD_GET_IFACE (self)->fill_connection)) (self, connection, flags);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -141,72 +131,12 @@ eap_method_phase2_update_secrets_helper (EAPMethod *self,
|
|||
g_autoptr(EAPMethod) eap = NULL;
|
||||
|
||||
gtk_tree_model_get (model, &iter, column, &eap, -1);
|
||||
if (eap && eap->update_secrets)
|
||||
eap->update_secrets (self, connection);
|
||||
if (eap && EAP_METHOD_GET_IFACE (eap)->update_secrets)
|
||||
EAP_METHOD_GET_IFACE (eap)->update_secrets (self, connection);
|
||||
} while (gtk_tree_model_iter_next (model, &iter));
|
||||
}
|
||||
}
|
||||
|
||||
EAPMethod *
|
||||
eap_method_init (gsize obj_size,
|
||||
EMValidateFunc validate,
|
||||
EMAddToSizeGroupFunc add_to_size_group,
|
||||
EMFillConnectionFunc fill_connection,
|
||||
EMUpdateSecretsFunc update_secrets,
|
||||
EMGetWidgetFunc get_widget,
|
||||
EMGetWidgetFunc get_default_field,
|
||||
EMGetStringFunc get_password_flags_name,
|
||||
EMGetBooleanFunc get_phase2,
|
||||
EMDestroyFunc destroy)
|
||||
{
|
||||
g_autoptr(EAPMethod) self = NULL;
|
||||
|
||||
g_return_val_if_fail (obj_size > 0, NULL);
|
||||
|
||||
self = g_slice_alloc0 (obj_size);
|
||||
g_assert (self);
|
||||
|
||||
self->refcount = 1;
|
||||
self->obj_size = obj_size;
|
||||
self->validate = validate;
|
||||
self->add_to_size_group = add_to_size_group;
|
||||
self->fill_connection = fill_connection;
|
||||
self->update_secrets = update_secrets;
|
||||
self->get_widget = get_widget;
|
||||
self->get_default_field = get_default_field;
|
||||
self->get_password_flags_name = get_password_flags_name;
|
||||
self->get_phase2 = get_phase2;
|
||||
self->destroy = destroy;
|
||||
|
||||
return g_steal_pointer (&self);
|
||||
}
|
||||
|
||||
|
||||
EAPMethod *
|
||||
eap_method_ref (EAPMethod *self)
|
||||
{
|
||||
g_return_val_if_fail (self != NULL, NULL);
|
||||
g_return_val_if_fail (self->refcount > 0, NULL);
|
||||
|
||||
self->refcount++;
|
||||
return self;
|
||||
}
|
||||
|
||||
void
|
||||
eap_method_unref (EAPMethod *self)
|
||||
{
|
||||
g_return_if_fail (self != NULL);
|
||||
g_return_if_fail (self->refcount > 0);
|
||||
|
||||
self->refcount--;
|
||||
if (self->refcount == 0) {
|
||||
if (self->destroy)
|
||||
self->destroy (self);
|
||||
|
||||
g_slice_free1 (self->obj_size, self);
|
||||
}
|
||||
}
|
||||
|
||||
gboolean
|
||||
eap_method_validate_filepicker (GtkFileChooser *chooser,
|
||||
guint32 item_type,
|
||||
|
|
|
@ -20,40 +20,28 @@
|
|||
* Copyright 2007 - 2014 Red Hat, Inc.
|
||||
*/
|
||||
|
||||
#ifndef EAP_METHOD_H
|
||||
#define EAP_METHOD_H
|
||||
#pragma once
|
||||
|
||||
#include <glib-object.h>
|
||||
#include <NetworkManager.h>
|
||||
|
||||
typedef struct _EAPMethod EAPMethod;
|
||||
G_BEGIN_DECLS
|
||||
|
||||
typedef void (*EMAddToSizeGroupFunc) (EAPMethod *method, GtkSizeGroup *group);
|
||||
typedef void (*EMFillConnectionFunc) (EAPMethod *method, NMConnection *connection, NMSettingSecretFlags flags);
|
||||
typedef void (*EMUpdateSecretsFunc) (EAPMethod *method, NMConnection *connection);
|
||||
typedef void (*EMDestroyFunc) (EAPMethod *method);
|
||||
typedef gboolean (*EMValidateFunc) (EAPMethod *method, GError **error);
|
||||
typedef GtkWidget* (*EMGetWidgetFunc) (EAPMethod *method);
|
||||
typedef const gchar* (*EMGetStringFunc) (EAPMethod *method);
|
||||
typedef gboolean (*EMGetBooleanFunc) (EAPMethod *method);
|
||||
G_DECLARE_INTERFACE (EAPMethod, eap_method, EAP, METHOD, GObject)
|
||||
|
||||
struct _EAPMethod {
|
||||
guint32 refcount;
|
||||
gsize obj_size;
|
||||
struct _EAPMethodInterface {
|
||||
GTypeInterface g_iface;
|
||||
|
||||
EMAddToSizeGroupFunc add_to_size_group;
|
||||
EMFillConnectionFunc fill_connection;
|
||||
EMUpdateSecretsFunc update_secrets;
|
||||
EMValidateFunc validate;
|
||||
EMGetWidgetFunc get_widget;
|
||||
EMGetWidgetFunc get_default_field;
|
||||
EMGetStringFunc get_password_flags_name;
|
||||
EMGetBooleanFunc get_phase2;
|
||||
EMDestroyFunc destroy;
|
||||
void (*add_to_size_group) (EAPMethod *method, GtkSizeGroup *group);
|
||||
void (*fill_connection) (EAPMethod *method, NMConnection *connection, NMSettingSecretFlags flags);
|
||||
void (*update_secrets) (EAPMethod *method, NMConnection *connection);
|
||||
gboolean (*validate) (EAPMethod *method, GError **error);
|
||||
GtkWidget* (*get_widget) (EAPMethod *method);
|
||||
GtkWidget* (*get_default_field) (EAPMethod *method);
|
||||
const gchar* (*get_password_flags_name) (EAPMethod *method);
|
||||
gboolean (*get_phase2) (EAPMethod *method);
|
||||
};
|
||||
|
||||
#define EAP_METHOD(x) ((EAPMethod *) x)
|
||||
|
||||
|
||||
GtkWidget *eap_method_get_widget (EAPMethod *method);
|
||||
|
||||
GtkWidget *eap_method_get_default_field (EAPMethod *method);
|
||||
|
@ -70,25 +58,8 @@ void eap_method_fill_connection (EAPMethod *method,
|
|||
NMConnection *connection,
|
||||
NMSettingSecretFlags flags);
|
||||
|
||||
EAPMethod *eap_method_ref (EAPMethod *method);
|
||||
|
||||
void eap_method_unref (EAPMethod *method);
|
||||
|
||||
GType eap_method_get_type (void);
|
||||
|
||||
/* Below for internal use only */
|
||||
|
||||
EAPMethod *eap_method_init (gsize obj_size,
|
||||
EMValidateFunc validate,
|
||||
EMAddToSizeGroupFunc add_to_size_group,
|
||||
EMFillConnectionFunc fill_connection,
|
||||
EMUpdateSecretsFunc update_secrets,
|
||||
EMGetWidgetFunc get_widget,
|
||||
EMGetWidgetFunc get_default_field,
|
||||
EMGetStringFunc get_password_flags_name,
|
||||
EMGetBooleanFunc get_phase2,
|
||||
EMDestroyFunc destroy);
|
||||
|
||||
GtkFileFilter * eap_method_default_file_chooser_filter_new (gboolean privkey);
|
||||
|
||||
gboolean eap_method_is_encrypted_private_key (const char *path);
|
||||
|
@ -122,6 +93,4 @@ gboolean eap_method_ca_cert_ignore_get (EAPMethod *method, NMConnection *connect
|
|||
void eap_method_ca_cert_ignore_save (NMConnection *connection);
|
||||
void eap_method_ca_cert_ignore_load (NMConnection *connection);
|
||||
|
||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (EAPMethod, eap_method_unref)
|
||||
|
||||
#endif /* EAP_METHOD_H */
|
||||
G_END_DECLS
|
||||
|
|
Loading…
Add table
Reference in a new issue