27
27
#include "eap-method.h"
28
28
#include "wireless-security.h"
29
29
#include "helpers.h"
31
32
struct _EAPMethodLEAP {
34
gboolean new_connection;
35
WirelessSecurity *ws_parent;
37
gboolean editing_connection;
39
GtkEntry *username_entry;
40
GtkEntry *password_entry;
41
GtkToggleButton *show_password;
38
show_toggled_cb (GtkCheckButton *button, EAPMethod *method)
45
show_toggled_cb (GtkToggleButton *button, EAPMethodLEAP *method)
43
widget = GTK_WIDGET (gtk_builder_get_object (method->builder, "eap_leap_password_entry"));
46
visible = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button));
47
gtk_entry_set_visibility (GTK_ENTRY (widget), visible);
49
visible = gtk_toggle_button_get_active (button);
50
gtk_entry_set_visibility (method->password_entry, visible);
51
54
validate (EAPMethod *parent)
56
EAPMethodLEAP *method = (EAPMethodLEAP *)parent;
56
widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_leap_username_entry"));
58
text = gtk_entry_get_text (GTK_ENTRY (widget));
59
text = gtk_entry_get_text (method->username_entry);
59
60
if (!text || !strlen (text))
62
widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_leap_password_entry"));
64
text = gtk_entry_get_text (GTK_ENTRY (widget));
63
text = gtk_entry_get_text (method->password_entry);
65
64
if (!text || !strlen (text))
86
fill_connection (EAPMethod *parent, NMConnection *connection)
85
fill_connection (EAPMethod *parent, NMConnection *connection, NMSettingSecretFlags flags)
88
87
EAPMethodLEAP *method = (EAPMethodLEAP *) parent;
89
88
NMSetting8021x *s_8021x;
92
90
s_8021x = nm_connection_get_setting_802_1x (connection);
93
91
g_assert (s_8021x);
95
93
nm_setting_802_1x_add_eap_method (s_8021x, "leap");
97
widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_leap_username_entry"));
99
g_object_set (s_8021x, NM_SETTING_802_1X_IDENTITY, gtk_entry_get_text (GTK_ENTRY (widget)), NULL);
101
widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_leap_password_entry"));
103
g_object_set (s_8021x, NM_SETTING_802_1X_PASSWORD, gtk_entry_get_text (GTK_ENTRY (widget)), NULL);
105
/* Default to agent-owned secrets for new connections */
106
if (method->new_connection) {
107
g_object_set (s_8021x,
108
NM_SETTING_802_1X_PASSWORD_FLAGS, NM_SETTING_SECRET_FLAG_AGENT_OWNED,
95
g_object_set (s_8021x, NM_SETTING_802_1X_IDENTITY, gtk_entry_get_text (method->username_entry), NULL);
96
g_object_set (s_8021x, NM_SETTING_802_1X_PASSWORD, gtk_entry_get_text (method->password_entry), NULL);
98
/* Update secret flags and popup when editing the connection */
99
if (method->editing_connection) {
100
GtkWidget *passwd_entry = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_leap_password_entry"));
101
g_assert (passwd_entry);
103
utils_update_password_storage (NM_SETTING (s_8021x), flags, passwd_entry, parent->password_flags_name);
120
114
(HelperSecretFunc) nm_setting_802_1x_get_password);
117
/* Set the UI fields for user, password and show_password to the
118
* values as provided by method->ws_parent. */
120
set_userpass_ui (EAPMethodLEAP *method)
122
if (method->ws_parent->username)
123
gtk_entry_set_text (method->username_entry, method->ws_parent->username);
125
gtk_entry_set_text (method->username_entry, "");
127
if (method->ws_parent->password && !method->ws_parent->always_ask)
128
gtk_entry_set_text (method->password_entry, method->ws_parent->password);
130
gtk_entry_set_text (method->password_entry, "");
132
gtk_toggle_button_set_active (method->show_password, method->ws_parent->show_password);
136
widgets_realized (GtkWidget *widget, EAPMethodLEAP *method)
138
set_userpass_ui (method);
142
widgets_unrealized (GtkWidget *widget, EAPMethodLEAP *method)
144
wireless_security_set_userpass (method->ws_parent,
145
gtk_entry_get_text (method->username_entry),
146
gtk_entry_get_text (method->password_entry),
148
gtk_toggle_button_get_active (method->show_password));
152
destroy (EAPMethod *parent)
154
EAPMethodLEAP *method = (EAPMethodLEAP *) parent;
157
widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_leap_notebook"));
160
g_signal_handlers_disconnect_by_func (G_OBJECT (widget),
161
(GCallback) widgets_realized,
163
g_signal_handlers_disconnect_by_func (G_OBJECT (widget),
164
(GCallback) widgets_unrealized,
167
wireless_security_unref (method->ws_parent);
124
171
eap_method_leap_new (WirelessSecurity *ws_parent,
125
172
NMConnection *connection,
192
parent->password_flags_name = NM_SETTING_802_1X_PASSWORD;
145
193
method = (EAPMethodLEAP *) parent;
146
method->new_connection = secrets_only ? FALSE : TRUE;
194
method->editing_connection = secrets_only ? FALSE : TRUE;
195
method->ws_parent = wireless_security_ref (ws_parent);
197
widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_leap_notebook"));
199
g_signal_connect (G_OBJECT (widget), "realize",
200
(GCallback) widgets_realized,
202
g_signal_connect (G_OBJECT (widget), "unrealize",
203
(GCallback) widgets_unrealized,
148
206
widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_leap_username_entry"));
149
207
g_assert (widget);
208
method->username_entry = GTK_ENTRY (widget);
150
209
g_signal_connect (G_OBJECT (widget), "changed",
151
210
(GCallback) wireless_security_changed_cb,
154
NMSetting8021x *s_8021x;
156
s_8021x = nm_connection_get_setting_802_1x (connection);
157
if (s_8021x && nm_setting_802_1x_get_identity (s_8021x))
158
gtk_entry_set_text (GTK_ENTRY (widget), nm_setting_802_1x_get_identity (s_8021x));
161
213
if (secrets_only)
162
214
gtk_widget_set_sensitive (widget, FALSE);
164
216
widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_leap_password_entry"));
165
217
g_assert (widget);
218
method->password_entry = GTK_ENTRY (widget);
166
219
g_signal_connect (G_OBJECT (widget), "changed",
167
220
(GCallback) wireless_security_changed_cb,
170
/* Fill secrets, if any */
172
update_secrets (parent, connection);
223
/* Create password-storage popup menu for password entry under entry's secondary icon */
224
utils_setup_password_storage (connection, NM_SETTING_802_1X_SETTING_NAME, widget, parent->password_flags_name);
174
226
widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "show_checkbutton_eapleap"));
175
227
g_assert (widget);
228
method->show_password = GTK_TOGGLE_BUTTON (widget);
176
229
g_signal_connect (G_OBJECT (widget), "toggled",
177
230
(GCallback) show_toggled_cb,
233
/* Initialize the UI fields with the security settings from method->ws_parent.
234
* This will be done again when the widget gets realized. It must be done here as well,
235
* because the outer dialog will ask to 'validate' the connection before the security tab
236
* is shown/realized (to enable the 'Apply' button).
237
* As 'validate' accesses the contents of the UI fields, they must be initialized now, even
238
* if the widgets are not yet visible. */
239
set_userpass_ui (method);