network: Simplify TTLS inner auth widgets
This commit is contained in:
parent
90c190dd5c
commit
c8231a5099
2 changed files with 158 additions and 213 deletions
|
@ -31,8 +31,8 @@
|
|||
#include "wireless-security.h"
|
||||
#include "utils.h"
|
||||
|
||||
#define I_NAME_COLUMN 0
|
||||
#define I_METHOD_COLUMN 1
|
||||
#define I_NAME_COLUMN 0
|
||||
#define I_ID_COLUMN 1
|
||||
|
||||
struct _EAPMethodTTLS {
|
||||
GtkGrid parent;
|
||||
|
@ -46,9 +46,17 @@ struct _EAPMethodTTLS {
|
|||
GtkLabel *domain_match_label;
|
||||
GtkComboBox *inner_auth_combo;
|
||||
GtkLabel *inner_auth_label;
|
||||
GtkListStore *inner_auth_model;
|
||||
GtkBox *inner_auth_box;
|
||||
|
||||
GtkSizeGroup *size_group;
|
||||
EAPMethodSimple *em_chap;
|
||||
EAPMethodSimple *em_gtc;
|
||||
EAPMethodSimple *em_md5;
|
||||
EAPMethodSimple *em_mschap;
|
||||
EAPMethodSimple *em_mschap_v2;
|
||||
EAPMethodSimple *em_pap;
|
||||
EAPMethodSimple *em_plain_mschap_v2;
|
||||
|
||||
WirelessSecurity *sec_parent;
|
||||
gboolean is_editor;
|
||||
};
|
||||
|
@ -58,24 +66,38 @@ static void eap_method_iface_init (EAPMethodInterface *);
|
|||
G_DEFINE_TYPE_WITH_CODE (EAPMethodTTLS, eap_method_ttls, GTK_TYPE_GRID,
|
||||
G_IMPLEMENT_INTERFACE (eap_method_get_type (), eap_method_iface_init))
|
||||
|
||||
static void
|
||||
eap_method_ttls_dispose (GObject *object)
|
||||
static EAPMethod *
|
||||
get_inner_method (EAPMethodTTLS *self)
|
||||
{
|
||||
EAPMethodTTLS *self = EAP_METHOD_TTLS (object);
|
||||
GtkTreeIter iter;
|
||||
g_autofree gchar *id = NULL;
|
||||
|
||||
g_clear_object (&self->size_group);
|
||||
if (!gtk_combo_box_get_active_iter (self->inner_auth_combo, &iter))
|
||||
return NULL;
|
||||
gtk_tree_model_get (GTK_TREE_MODEL (self->inner_auth_model), &iter, I_ID_COLUMN, &id, -1);
|
||||
|
||||
G_OBJECT_CLASS (eap_method_ttls_parent_class)->dispose (object);
|
||||
if (strcmp (id, "chap") == 0)
|
||||
return EAP_METHOD (self->em_chap);
|
||||
if (strcmp (id, "gtc") == 0)
|
||||
return EAP_METHOD (self->em_gtc);
|
||||
if (strcmp (id, "md5") == 0)
|
||||
return EAP_METHOD (self->em_md5);
|
||||
if (strcmp (id, "mschap") == 0)
|
||||
return EAP_METHOD (self->em_mschap);
|
||||
if (strcmp (id, "mschapv2") == 0)
|
||||
return EAP_METHOD (self->em_mschap_v2);
|
||||
if (strcmp (id, "pap") == 0)
|
||||
return EAP_METHOD (self->em_pap);
|
||||
if (strcmp (id, "plain_mschapv2") == 0)
|
||||
return EAP_METHOD (self->em_plain_mschap_v2);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
validate (EAPMethod *method, GError **error)
|
||||
{
|
||||
EAPMethodTTLS *self = EAP_METHOD_TTLS (method);
|
||||
GtkTreeModel *model;
|
||||
GtkTreeIter iter;
|
||||
g_autoptr(EAPMethod) eap = NULL;
|
||||
gboolean valid = FALSE;
|
||||
g_autoptr(GError) local_error = NULL;
|
||||
|
||||
if (!eap_method_validate_filepicker (GTK_FILE_CHOOSER (self->ca_cert_button),
|
||||
|
@ -89,12 +111,7 @@ validate (EAPMethod *method, GError **error)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
model = gtk_combo_box_get_model (self->inner_auth_combo);
|
||||
gtk_combo_box_get_active_iter (self->inner_auth_combo, &iter);
|
||||
gtk_tree_model_get (model, &iter, I_METHOD_COLUMN, &eap, -1);
|
||||
g_assert (eap);
|
||||
valid = eap_method_validate (eap, error);
|
||||
return valid;
|
||||
return eap_method_validate (get_inner_method (self), error);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -109,12 +126,6 @@ static void
|
|||
add_to_size_group (EAPMethod *method, GtkSizeGroup *group)
|
||||
{
|
||||
EAPMethodTTLS *self = EAP_METHOD_TTLS (method);
|
||||
GtkTreeModel *model;
|
||||
GtkTreeIter iter;
|
||||
g_autoptr(EAPMethod) eap = NULL;
|
||||
|
||||
g_clear_object (&self->size_group);
|
||||
self->size_group = g_object_ref (group);
|
||||
|
||||
gtk_size_group_add_widget (group, GTK_WIDGET (self->ca_cert_not_required_check));
|
||||
gtk_size_group_add_widget (group, GTK_WIDGET (self->anon_identity_label));
|
||||
|
@ -122,11 +133,13 @@ add_to_size_group (EAPMethod *method, GtkSizeGroup *group)
|
|||
gtk_size_group_add_widget (group, GTK_WIDGET (self->ca_cert_label));
|
||||
gtk_size_group_add_widget (group, GTK_WIDGET (self->inner_auth_label));
|
||||
|
||||
model = gtk_combo_box_get_model (self->inner_auth_combo);
|
||||
gtk_combo_box_get_active_iter (self->inner_auth_combo, &iter);
|
||||
gtk_tree_model_get (model, &iter, I_METHOD_COLUMN, &eap, -1);
|
||||
g_assert (eap);
|
||||
eap_method_add_to_size_group (eap, group);
|
||||
eap_method_add_to_size_group (EAP_METHOD (self->em_chap), group);
|
||||
eap_method_add_to_size_group (EAP_METHOD (self->em_gtc), group);
|
||||
eap_method_add_to_size_group (EAP_METHOD (self->em_md5), group);
|
||||
eap_method_add_to_size_group (EAP_METHOD (self->em_mschap), group);
|
||||
eap_method_add_to_size_group (EAP_METHOD (self->em_mschap_v2), group);
|
||||
eap_method_add_to_size_group (EAP_METHOD (self->em_pap), group);
|
||||
eap_method_add_to_size_group (EAP_METHOD (self->em_plain_mschap_v2), group);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -137,9 +150,6 @@ fill_connection (EAPMethod *method, NMConnection *connection, NMSettingSecretFla
|
|||
NMSetting8021xCKFormat format = NM_SETTING_802_1X_CK_FORMAT_UNKNOWN;
|
||||
const char *text;
|
||||
g_autofree gchar *filename = NULL;
|
||||
g_autoptr(EAPMethod) eap = NULL;
|
||||
GtkTreeModel *model;
|
||||
GtkTreeIter iter;
|
||||
g_autoptr(GError) error = NULL;
|
||||
gboolean ca_cert_error = FALSE;
|
||||
|
||||
|
@ -163,199 +173,37 @@ fill_connection (EAPMethod *method, NMConnection *connection, NMSettingSecretFla
|
|||
}
|
||||
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);
|
||||
gtk_tree_model_get (model, &iter, I_METHOD_COLUMN, &eap, -1);
|
||||
g_assert (eap);
|
||||
|
||||
eap_method_fill_connection (eap, connection, flags);
|
||||
eap_method_fill_connection (get_inner_method (self), connection, flags);
|
||||
}
|
||||
|
||||
static void
|
||||
inner_auth_combo_changed_cb (EAPMethodTTLS *self)
|
||||
{
|
||||
g_autoptr(EAPMethod) eap = NULL;
|
||||
EAPMethod *inner_method;
|
||||
GList *elt, *children;
|
||||
GtkTreeModel *model;
|
||||
GtkTreeIter iter;
|
||||
|
||||
/* Remove any previous wireless security widgets */
|
||||
children = gtk_container_get_children (GTK_CONTAINER (self->inner_auth_box));
|
||||
for (elt = children; elt; elt = g_list_next (elt))
|
||||
gtk_container_remove (GTK_CONTAINER (self->inner_auth_box), GTK_WIDGET (elt->data));
|
||||
g_list_free (children);
|
||||
|
||||
model = gtk_combo_box_get_model (self->inner_auth_combo);
|
||||
gtk_combo_box_get_active_iter (self->inner_auth_combo, &iter);
|
||||
gtk_tree_model_get (model, &iter, I_METHOD_COLUMN, &eap, -1);
|
||||
g_assert (eap);
|
||||
|
||||
gtk_widget_unparent (GTK_WIDGET (eap));
|
||||
if (self->size_group)
|
||||
eap_method_add_to_size_group (eap, self->size_group);
|
||||
gtk_widget_show (GTK_WIDGET (eap));
|
||||
gtk_container_add (GTK_CONTAINER (self->inner_auth_box), g_object_ref (GTK_WIDGET (eap)));
|
||||
inner_method = get_inner_method (self);
|
||||
gtk_container_add (GTK_CONTAINER (self->inner_auth_box), g_object_ref (GTK_WIDGET (inner_method)));
|
||||
|
||||
wireless_security_notify_changed (self->sec_parent);
|
||||
}
|
||||
|
||||
static void
|
||||
inner_auth_combo_init (EAPMethodTTLS *self,
|
||||
NMConnection *connection,
|
||||
NMSetting8021x *s_8021x,
|
||||
gboolean secrets_only)
|
||||
{
|
||||
g_autoptr(GtkListStore) auth_model = NULL;
|
||||
GtkTreeIter iter;
|
||||
g_autoptr(EAPMethodSimple) em_pap = NULL;
|
||||
g_autoptr(EAPMethodSimple) em_mschap = NULL;
|
||||
g_autoptr(EAPMethodSimple) em_mschap_v2 = NULL;
|
||||
g_autoptr(EAPMethodSimple) em_plain_mschap_v2 = NULL;
|
||||
g_autoptr(EAPMethodSimple) em_chap = NULL;
|
||||
g_autoptr(EAPMethodSimple) em_md5 = NULL;
|
||||
g_autoptr(EAPMethodSimple) em_gtc = NULL;
|
||||
guint32 active = 0;
|
||||
const char *phase2_auth = NULL;
|
||||
EAPMethodSimpleFlags simple_flags;
|
||||
|
||||
auth_model = gtk_list_store_new (2, G_TYPE_STRING, eap_method_get_type ());
|
||||
|
||||
if (s_8021x) {
|
||||
if (nm_setting_802_1x_get_phase2_auth (s_8021x))
|
||||
phase2_auth = nm_setting_802_1x_get_phase2_auth (s_8021x);
|
||||
else if (nm_setting_802_1x_get_phase2_autheap (s_8021x))
|
||||
phase2_auth = nm_setting_802_1x_get_phase2_autheap (s_8021x);
|
||||
}
|
||||
|
||||
simple_flags = EAP_METHOD_SIMPLE_FLAG_PHASE2 | EAP_METHOD_SIMPLE_FLAG_AUTHEAP_ALLOWED;
|
||||
if (self->is_editor)
|
||||
simple_flags |= EAP_METHOD_SIMPLE_FLAG_IS_EDITOR;
|
||||
if (secrets_only)
|
||||
simple_flags |= EAP_METHOD_SIMPLE_FLAG_SECRETS_ONLY;
|
||||
|
||||
em_pap = eap_method_simple_new (self->sec_parent,
|
||||
connection,
|
||||
EAP_METHOD_SIMPLE_TYPE_PAP,
|
||||
simple_flags);
|
||||
gtk_list_store_append (auth_model, &iter);
|
||||
gtk_list_store_set (auth_model, &iter,
|
||||
I_NAME_COLUMN, _("PAP"),
|
||||
I_METHOD_COLUMN, em_pap,
|
||||
-1);
|
||||
|
||||
/* Check for defaulting to PAP */
|
||||
if (phase2_auth && !strcasecmp (phase2_auth, "pap"))
|
||||
active = 0;
|
||||
|
||||
em_mschap = eap_method_simple_new (self->sec_parent,
|
||||
connection,
|
||||
EAP_METHOD_SIMPLE_TYPE_MSCHAP,
|
||||
simple_flags);
|
||||
gtk_list_store_append (auth_model, &iter);
|
||||
gtk_list_store_set (auth_model, &iter,
|
||||
I_NAME_COLUMN, _("MSCHAP"),
|
||||
I_METHOD_COLUMN, em_mschap,
|
||||
-1);
|
||||
|
||||
/* Check for defaulting to MSCHAP */
|
||||
if (phase2_auth && !strcasecmp (phase2_auth, "mschap"))
|
||||
active = 1;
|
||||
|
||||
em_mschap_v2 = eap_method_simple_new (self->sec_parent,
|
||||
connection,
|
||||
EAP_METHOD_SIMPLE_TYPE_MSCHAP_V2,
|
||||
simple_flags);
|
||||
gtk_list_store_append (auth_model, &iter);
|
||||
gtk_list_store_set (auth_model, &iter,
|
||||
I_NAME_COLUMN, _("MSCHAPv2"),
|
||||
I_METHOD_COLUMN, em_mschap_v2,
|
||||
-1);
|
||||
|
||||
/* Check for defaulting to MSCHAPv2 */
|
||||
if (phase2_auth && !strcasecmp (phase2_auth, "mschapv2") &&
|
||||
nm_setting_802_1x_get_phase2_autheap (s_8021x) != NULL)
|
||||
active = 2;
|
||||
|
||||
em_plain_mschap_v2 = eap_method_simple_new (self->sec_parent,
|
||||
connection,
|
||||
EAP_METHOD_SIMPLE_TYPE_PLAIN_MSCHAP_V2,
|
||||
simple_flags);
|
||||
gtk_list_store_append (auth_model, &iter);
|
||||
gtk_list_store_set (auth_model, &iter,
|
||||
I_NAME_COLUMN, _("MSCHAPv2 (no EAP)"),
|
||||
I_METHOD_COLUMN, em_plain_mschap_v2,
|
||||
-1);
|
||||
|
||||
/* Check for defaulting to plain MSCHAPv2 */
|
||||
if (phase2_auth && !strcasecmp (phase2_auth, "mschapv2") &&
|
||||
nm_setting_802_1x_get_phase2_auth (s_8021x) != NULL)
|
||||
active = 3;
|
||||
|
||||
em_chap = eap_method_simple_new (self->sec_parent,
|
||||
connection,
|
||||
EAP_METHOD_SIMPLE_TYPE_CHAP,
|
||||
simple_flags);
|
||||
gtk_list_store_append (auth_model, &iter);
|
||||
gtk_list_store_set (auth_model, &iter,
|
||||
I_NAME_COLUMN, _("CHAP"),
|
||||
I_METHOD_COLUMN, em_chap,
|
||||
-1);
|
||||
|
||||
/* Check for defaulting to CHAP */
|
||||
if (phase2_auth && !strcasecmp (phase2_auth, "chap"))
|
||||
active = 4;
|
||||
|
||||
em_md5 = eap_method_simple_new (self->sec_parent,
|
||||
connection,
|
||||
EAP_METHOD_SIMPLE_TYPE_MD5,
|
||||
simple_flags);
|
||||
gtk_list_store_append (auth_model, &iter);
|
||||
gtk_list_store_set (auth_model, &iter,
|
||||
I_NAME_COLUMN, _("MD5"),
|
||||
I_METHOD_COLUMN, em_md5,
|
||||
-1);
|
||||
|
||||
/* Check for defaulting to MD5 */
|
||||
if (phase2_auth && !strcasecmp (phase2_auth, "md5"))
|
||||
active = 5;
|
||||
|
||||
em_gtc = eap_method_simple_new (self->sec_parent,
|
||||
connection,
|
||||
EAP_METHOD_SIMPLE_TYPE_GTC,
|
||||
simple_flags);
|
||||
gtk_list_store_append (auth_model, &iter);
|
||||
gtk_list_store_set (auth_model, &iter,
|
||||
I_NAME_COLUMN, _("GTC"),
|
||||
I_METHOD_COLUMN, em_gtc,
|
||||
-1);
|
||||
|
||||
/* Check for defaulting to GTC */
|
||||
if (phase2_auth && !strcasecmp (phase2_auth, "gtc"))
|
||||
active = 6;
|
||||
|
||||
gtk_combo_box_set_model (self->inner_auth_combo, GTK_TREE_MODEL (auth_model));
|
||||
gtk_combo_box_set_active (self->inner_auth_combo, active);
|
||||
|
||||
g_signal_connect_swapped (self->inner_auth_combo, "changed", G_CALLBACK (inner_auth_combo_changed_cb), self);
|
||||
}
|
||||
|
||||
static void
|
||||
update_secrets (EAPMethod *method, NMConnection *connection)
|
||||
{
|
||||
EAPMethodTTLS *self = EAP_METHOD_TTLS (method);
|
||||
GtkTreeModel *model;
|
||||
GtkTreeIter iter;
|
||||
|
||||
model = gtk_combo_box_get_model (self->inner_auth_combo);
|
||||
if (!gtk_tree_model_get_iter_first (model, &iter))
|
||||
return;
|
||||
|
||||
do {
|
||||
g_autoptr(EAPMethod) eap = NULL;
|
||||
|
||||
gtk_tree_model_get (model, &iter, I_METHOD_COLUMN, &eap, -1);
|
||||
eap_method_update_secrets (eap, connection);
|
||||
} while (gtk_tree_model_iter_next (model, &iter));
|
||||
eap_method_update_secrets (EAP_METHOD (self->em_chap), connection);
|
||||
eap_method_update_secrets (EAP_METHOD (self->em_gtc), connection);
|
||||
eap_method_update_secrets (EAP_METHOD (self->em_md5), connection);
|
||||
eap_method_update_secrets (EAP_METHOD (self->em_mschap), connection);
|
||||
eap_method_update_secrets (EAP_METHOD (self->em_mschap_v2), connection);
|
||||
eap_method_update_secrets (EAP_METHOD (self->em_pap), connection);
|
||||
eap_method_update_secrets (EAP_METHOD (self->em_plain_mschap_v2), connection);
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
|
@ -386,11 +234,8 @@ eap_method_ttls_init (EAPMethodTTLS *self)
|
|||
static void
|
||||
eap_method_ttls_class_init (EAPMethodTTLSClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
|
||||
|
||||
object_class->dispose = eap_method_ttls_dispose;
|
||||
|
||||
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/ControlCenter/network/eap-method-ttls.ui");
|
||||
|
||||
gtk_widget_class_bind_template_child (widget_class, EAPMethodTTLS, anon_identity_entry);
|
||||
|
@ -402,6 +247,7 @@ eap_method_ttls_class_init (EAPMethodTTLSClass *klass)
|
|||
gtk_widget_class_bind_template_child (widget_class, EAPMethodTTLS, domain_match_label);
|
||||
gtk_widget_class_bind_template_child (widget_class, EAPMethodTTLS, inner_auth_combo);
|
||||
gtk_widget_class_bind_template_child (widget_class, EAPMethodTTLS, inner_auth_label);
|
||||
gtk_widget_class_bind_template_child (widget_class, EAPMethodTTLS, inner_auth_model);
|
||||
gtk_widget_class_bind_template_child (widget_class, EAPMethodTTLS, inner_auth_box);
|
||||
}
|
||||
|
||||
|
@ -426,6 +272,9 @@ eap_method_ttls_new (WirelessSecurity *ws_parent,
|
|||
GtkFileFilter *filter;
|
||||
NMSetting8021x *s_8021x = NULL;
|
||||
const char *filename;
|
||||
EAPMethodSimpleFlags simple_flags;
|
||||
const char *phase2_auth = NULL;
|
||||
GtkTreeIter iter;
|
||||
|
||||
self = g_object_new (eap_method_ttls_get_type (), NULL);
|
||||
self->sec_parent = ws_parent;
|
||||
|
@ -460,7 +309,76 @@ eap_method_ttls_new (WirelessSecurity *ws_parent,
|
|||
gtk_entry_set_text (self->domain_match_entry, nm_setting_802_1x_get_domain_suffix_match (s_8021x));
|
||||
g_signal_connect_swapped (self->domain_match_entry, "changed", G_CALLBACK (changed_cb), self);
|
||||
|
||||
inner_auth_combo_init (self, connection, s_8021x, secrets_only);
|
||||
simple_flags = EAP_METHOD_SIMPLE_FLAG_PHASE2 | EAP_METHOD_SIMPLE_FLAG_AUTHEAP_ALLOWED;
|
||||
if (self->is_editor)
|
||||
simple_flags |= EAP_METHOD_SIMPLE_FLAG_IS_EDITOR;
|
||||
if (secrets_only)
|
||||
simple_flags |= EAP_METHOD_SIMPLE_FLAG_SECRETS_ONLY;
|
||||
|
||||
self->em_pap = eap_method_simple_new (self->sec_parent,
|
||||
connection,
|
||||
EAP_METHOD_SIMPLE_TYPE_PAP,
|
||||
simple_flags);
|
||||
gtk_widget_show (GTK_WIDGET (self->em_pap));
|
||||
|
||||
self->em_mschap = eap_method_simple_new (self->sec_parent,
|
||||
connection,
|
||||
EAP_METHOD_SIMPLE_TYPE_MSCHAP,
|
||||
simple_flags);
|
||||
gtk_widget_show (GTK_WIDGET (self->em_mschap));
|
||||
|
||||
self->em_mschap_v2 = eap_method_simple_new (self->sec_parent,
|
||||
connection,
|
||||
EAP_METHOD_SIMPLE_TYPE_MSCHAP_V2,
|
||||
simple_flags);
|
||||
gtk_widget_show (GTK_WIDGET (self->em_mschap_v2));
|
||||
|
||||
self->em_plain_mschap_v2 = eap_method_simple_new (self->sec_parent,
|
||||
connection,
|
||||
EAP_METHOD_SIMPLE_TYPE_PLAIN_MSCHAP_V2,
|
||||
simple_flags);
|
||||
gtk_widget_show (GTK_WIDGET (self->em_plain_mschap_v2));
|
||||
|
||||
self->em_chap = eap_method_simple_new (self->sec_parent,
|
||||
connection,
|
||||
EAP_METHOD_SIMPLE_TYPE_CHAP,
|
||||
simple_flags);
|
||||
gtk_widget_show (GTK_WIDGET (self->em_chap));
|
||||
|
||||
self->em_md5 = eap_method_simple_new (self->sec_parent,
|
||||
connection,
|
||||
EAP_METHOD_SIMPLE_TYPE_MD5,
|
||||
simple_flags);
|
||||
gtk_widget_show (GTK_WIDGET (self->em_md5));
|
||||
|
||||
self->em_gtc = eap_method_simple_new (self->sec_parent,
|
||||
connection,
|
||||
EAP_METHOD_SIMPLE_TYPE_GTC,
|
||||
simple_flags);
|
||||
gtk_widget_show (GTK_WIDGET (self->em_gtc));
|
||||
|
||||
if (s_8021x) {
|
||||
if (nm_setting_802_1x_get_phase2_auth (s_8021x))
|
||||
phase2_auth = nm_setting_802_1x_get_phase2_auth (s_8021x);
|
||||
else if (nm_setting_802_1x_get_phase2_autheap (s_8021x))
|
||||
phase2_auth = nm_setting_802_1x_get_phase2_autheap (s_8021x);
|
||||
}
|
||||
if (phase2_auth == NULL)
|
||||
phase2_auth = "pap";
|
||||
|
||||
if (strcmp (phase2_auth, "mschapv2") == 0 && nm_setting_802_1x_get_phase2_auth (s_8021x) != NULL)
|
||||
phase2_auth = "plain_mschapv2";
|
||||
|
||||
if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (self->inner_auth_model), &iter)) {
|
||||
do {
|
||||
g_autofree gchar *id = NULL;
|
||||
gtk_tree_model_get (GTK_TREE_MODEL (self->inner_auth_model), &iter, I_ID_COLUMN, &id, -1);
|
||||
if (strcmp (id, phase2_auth) == 0)
|
||||
gtk_combo_box_set_active_iter (self->inner_auth_combo, &iter);
|
||||
} while (gtk_tree_model_iter_next (GTK_TREE_MODEL (self->inner_auth_model), &iter));
|
||||
}
|
||||
|
||||
g_signal_connect_swapped (self->inner_auth_combo, "changed", G_CALLBACK (inner_auth_combo_changed_cb), self);
|
||||
inner_auth_combo_changed_cb (self);
|
||||
|
||||
if (secrets_only) {
|
||||
|
|
|
@ -1,14 +1,41 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<requires lib="gtk+" version="3.4"/>
|
||||
<object class="GtkListStore" id="auth_model">
|
||||
<object class="GtkListStore" id="inner_auth_model">
|
||||
<columns>
|
||||
<!-- column-name gchararray -->
|
||||
<!-- column-name label -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name id -->
|
||||
<column type="gchararray"/>
|
||||
</columns>
|
||||
<data>
|
||||
<row>
|
||||
<col id="0"> </col>
|
||||
<col id="0" translatable="yes">PAP</col>
|
||||
<col id="1">pap</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">MSCHAP</col>
|
||||
<col id="1">mschap</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">MSCHAPv2</col>
|
||||
<col id="1">mschapv2</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">MSCHAPv2 (no EAP)</col>
|
||||
<col id="1">plain_mschapv2</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">CHAP</col>
|
||||
<col id="1">chap</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">MD5</col>
|
||||
<col id="1">md5</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">GTC</col>
|
||||
<col id="1">gtc</col>
|
||||
</row>
|
||||
</data>
|
||||
</object>
|
||||
|
@ -128,7 +155,7 @@
|
|||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="model">auth_model</property>
|
||||
<property name="model">inner_auth_model</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText"/>
|
||||
<attributes>
|
||||
|
|
Loading…
Add table
Reference in a new issue