network: Convert EAPMethod to an interface and make the subclasses GObjects

This commit is contained in:
Robert Ancell 2019-11-07 10:21:54 +13:00 committed by Georges Basile Stavracas Neto
parent 426896b7a2
commit 5006342308
14 changed files with 366 additions and 371 deletions

View file

@ -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;

View file

@ -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

View file

@ -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;

View file

@ -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

View file

@ -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);

View file

@ -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

View file

@ -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;

View file

@ -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

View file

@ -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);

View file

@ -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

View file

@ -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))

View file

@ -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

View file

@ -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,

View file

@ -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