diff --git a/vpn-daemons/pptp/ChangeLog b/vpn-daemons/pptp/ChangeLog index d9bbe3d384..eb4e99f35a 100644 --- a/vpn-daemons/pptp/ChangeLog +++ b/vpn-daemons/pptp/ChangeLog @@ -1,3 +1,8 @@ +2008-08-11 Dan Williams + + Update to match NM svn3924 vpn setting changes; verify options better; + return more informative errors on VPN launch failures. + 2008-08-07 Dan Williams * src/nm-pptp-pppd-plugin.c diff --git a/vpn-daemons/pptp/auth-dialog/main.c b/vpn-daemons/pptp/auth-dialog/main.c index 3ddb9e727f..5d5d232743 100644 --- a/vpn-daemons/pptp/auth-dialog/main.c +++ b/vpn-daemons/pptp/auth-dialog/main.c @@ -30,7 +30,6 @@ #include #include -#include #include "../src/nm-pptp-service.h" #include "gnome-two-password-dialog.h" @@ -58,7 +57,7 @@ find_one_password (const char *vpn_id, vpn_id, KEYRING_SN_TAG, GNOME_KEYRING_ATTRIBUTE_TYPE_STRING, - NM_SETTING_VPN_PROPERTIES_SETTING_NAME, + NM_SETTING_VPN_SETTING_NAME, KEYRING_SK_TAG, GNOME_KEYRING_ATTRIBUTE_TYPE_STRING, secret_name, @@ -105,7 +104,7 @@ save_vpn_password (const char *vpn_id, GnomeKeyringAttributeList *attrs = NULL; guint32 id = 0; - display_name = g_strdup_printf ("VPN %s secret for %s/%s/" NM_SETTING_VPN_PROPERTIES_SETTING_NAME, + display_name = g_strdup_printf ("VPN %s secret for %s/%s/" NM_SETTING_VPN_SETTING_NAME, secret_name, vpn_name, vpn_service); @@ -116,7 +115,7 @@ save_vpn_password (const char *vpn_id, vpn_id); gnome_keyring_attribute_list_append_string (attrs, KEYRING_SN_TAG, - NM_SETTING_VPN_PROPERTIES_SETTING_NAME); + NM_SETTING_VPN_SETTING_NAME); gnome_keyring_attribute_list_append_string (attrs, KEYRING_SK_TAG, secret_name); diff --git a/vpn-daemons/pptp/properties/advanced-dialog.c b/vpn-daemons/pptp/properties/advanced-dialog.c index 7ab8b9b17b..7b03c07190 100644 --- a/vpn-daemons/pptp/properties/advanced-dialog.c +++ b/vpn-daemons/pptp/properties/advanced-dialog.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include @@ -36,7 +37,6 @@ #include #include -#include #include "advanced-dialog.h" #include "nm-pptp.h" @@ -51,15 +51,6 @@ #define TAG_MSCHAP 2 #define TAG_MSCHAPV2 3 -static void -nm_gvalue_destroy (gpointer data) -{ - GValue *value = (GValue *) data; - - g_value_unset (value); - g_slice_free (GValue, value); -} - static const char *advanced_keys[] = { NM_PPTP_KEY_REFUSE_EAP, NM_PPTP_KEY_REFUSE_PAP, @@ -82,30 +73,13 @@ static void copy_values (gpointer key, gpointer data, gpointer user_data) { GHashTable *hash = (GHashTable *) user_data; - GValue *value = (GValue *) data; const char **i; for (i = &advanced_keys[0]; *i; i++) { if (strcmp ((const char *) key, *i)) continue; - if (G_VALUE_HOLDS_STRING (value)) { - g_hash_table_insert (hash, - g_strdup ((const char *) key), - str_to_gvalue (g_value_get_string (value))); - } else if (G_VALUE_HOLDS_INT (value)) { - g_hash_table_insert (hash, - g_strdup ((const char *) key), - int_to_gvalue (g_value_get_int (value))); - } else if (G_VALUE_HOLDS_UINT (value)) { - g_hash_table_insert (hash, - g_strdup ((const char *) key), - uint_to_gvalue (g_value_get_uint (value))); - } else if (G_VALUE_HOLDS_BOOLEAN (value)) { - g_hash_table_insert (hash, - g_strdup ((const char *) key), - bool_to_gvalue (g_value_get_boolean (value))); - } + g_hash_table_insert (hash, g_strdup ((const char *) key), g_strdup ((const char *) data)); } } @@ -114,13 +88,13 @@ advanced_dialog_new_hash_from_connection (NMConnection *connection, GError **error) { GHashTable *hash; - NMSettingVPNProperties *s_vpn_props; + NMSettingVPN *s_vpn; - hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, nm_gvalue_destroy); + hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); - s_vpn_props = (NMSettingVPNProperties *) nm_connection_get_setting (connection, NM_TYPE_SETTING_VPN_PROPERTIES); - if (s_vpn_props && s_vpn_props->data) - g_hash_table_foreach (s_vpn_props->data, copy_values, hash); + s_vpn = (NMSettingVPN *) nm_connection_get_setting (connection, NM_TYPE_SETTING_VPN); + if (s_vpn && s_vpn->data) + g_hash_table_foreach (s_vpn->data, copy_values, hash); return hash; } @@ -159,7 +133,7 @@ setup_security_combo (GladeXML *xml, GHashTable *hash) GtkListStore *store; GtkTreeIter iter; int active = -1; - GValue *value; + const char *value; g_return_if_fail (xml != NULL); g_return_if_fail (hash != NULL); @@ -177,7 +151,7 @@ setup_security_combo (GladeXML *xml, GHashTable *hash) gtk_list_store_set (store, &iter, 0, _("128-bit (most secure)"), -1); if (active < 0) { value = g_hash_table_lookup (hash, NM_PPTP_KEY_REQUIRE_MPPE_128); - if (value && G_VALUE_HOLDS_BOOLEAN (value) && g_value_get_boolean (value)) + if (value && !strcmp (value, "yes")) active = SEC_INDEX_MPPE_128; } @@ -186,7 +160,7 @@ setup_security_combo (GladeXML *xml, GHashTable *hash) gtk_list_store_set (store, &iter, 0, _("40-bit (less secure)"), -1); if (active < 0) { value = g_hash_table_lookup (hash, NM_PPTP_KEY_REQUIRE_MPPE_40); - if (value && G_VALUE_HOLDS_BOOLEAN (value) && g_value_get_boolean (value)) + if (value && !strcmp (value, "yes")) active = SEC_INDEX_MPPE_40; } @@ -225,7 +199,7 @@ auth_methods_setup (GladeXML *xml, GHashTable *hash) GtkWidget *widget; GtkListStore *store; GtkTreeIter iter; - GValue *value; + const char *value; gboolean allowed; gboolean use_mppe = FALSE; GtkCellRendererToggle *check_renderer; @@ -237,40 +211,40 @@ auth_methods_setup (GladeXML *xml, GHashTable *hash) /* Check for MPPE */ value = g_hash_table_lookup (hash, NM_PPTP_KEY_REQUIRE_MPPE); - if (value && G_VALUE_HOLDS_BOOLEAN (value) && g_value_get_boolean (value)) + if (value && !strcmp (value, "yes")) use_mppe = TRUE; /* Or MPPE-128 */ value = g_hash_table_lookup (hash, NM_PPTP_KEY_REQUIRE_MPPE_128); - if (value && G_VALUE_HOLDS_BOOLEAN (value) && g_value_get_boolean (value)) + if (value && !strcmp (value, "yes")) use_mppe = TRUE; /* Or MPPE-40 */ value = g_hash_table_lookup (hash, NM_PPTP_KEY_REQUIRE_MPPE_40); - if (value && G_VALUE_HOLDS_BOOLEAN (value) && g_value_get_boolean (value)) + if (value && !strcmp (value, "yes")) use_mppe = TRUE; /* PAP */ value = g_hash_table_lookup (hash, NM_PPTP_KEY_REFUSE_PAP); - allowed = (value && G_VALUE_HOLDS_BOOLEAN (value) && g_value_get_boolean (value)) ? FALSE : TRUE; + allowed = (value && !strcmp (value, "yes")) ? FALSE : TRUE; gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, COL_NAME, _("PAP"), COL_VALUE, allowed, COL_TAG, TAG_PAP, -1); /* CHAP */ value = g_hash_table_lookup (hash, NM_PPTP_KEY_REFUSE_CHAP); - allowed = (value && G_VALUE_HOLDS_BOOLEAN (value) && g_value_get_boolean (value)) ? FALSE : TRUE; + allowed = (value && !strcmp (value, "yes")) ? FALSE : TRUE; gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, COL_NAME, _("CHAP"), COL_VALUE, allowed, COL_TAG, TAG_CHAP, -1); /* MSCHAP */ value = g_hash_table_lookup (hash, NM_PPTP_KEY_REFUSE_MSCHAP); - allowed = (value && G_VALUE_HOLDS_BOOLEAN (value) && g_value_get_boolean (value)) ? FALSE : TRUE; + allowed = (value && !strcmp (value, "yes")) ? FALSE : TRUE; gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, COL_NAME, _("MSCHAP"), COL_VALUE, allowed, COL_TAG, TAG_MSCHAP, -1); /* PAP */ value = g_hash_table_lookup (hash, NM_PPTP_KEY_REFUSE_MSCHAPV2); - allowed = (value && G_VALUE_HOLDS_BOOLEAN (value) && g_value_get_boolean (value)) ? FALSE : TRUE; + allowed = (value && !strcmp (value, "yes")) ? FALSE : TRUE; gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, COL_NAME, _("MSCHAPv2"), COL_VALUE, allowed, COL_TAG, TAG_MSCHAPV2, -1); @@ -306,7 +280,7 @@ advanced_dialog_new (GHashTable *hash) GtkWidget *dialog = NULL; char *glade_file = NULL; GtkWidget *widget; - GValue *value; + const char *value; g_return_val_if_fail (hash != NULL, NULL); @@ -332,47 +306,41 @@ advanced_dialog_new (GHashTable *hash) g_signal_connect (G_OBJECT (widget), "toggled", G_CALLBACK (mppe_toggled_cb), xml); value = g_hash_table_lookup (hash, NM_PPTP_KEY_REQUIRE_MPPE); - if (value && G_VALUE_HOLDS_BOOLEAN (value)) { - if (g_value_get_boolean (value)) - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE); - } + if (value && !strcmp (value, "yes")) + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE); mppe_toggled_cb (widget, xml); + widget = glade_xml_get_widget (xml, "ppp_allow_stateful_mppe"); value = g_hash_table_lookup (hash, NM_PPTP_KEY_MPPE_STATEFUL); - if (value && G_VALUE_HOLDS_BOOLEAN (value)) { - widget = glade_xml_get_widget (xml, "ppp_allow_stateful_mppe"); - if (g_value_get_boolean (value)) - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE); - } + if (value && !strcmp (value, "yes")) + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE); widget = glade_xml_get_widget (xml, "ppp_allow_bsdcomp"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE); value = g_hash_table_lookup (hash, NM_PPTP_KEY_NOBSDCOMP); - if (value && G_VALUE_HOLDS_BOOLEAN (value)) { - if (g_value_get_boolean (value)) - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE); - } + if (value && !strcmp (value, "yes")) + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE); widget = glade_xml_get_widget (xml, "ppp_allow_deflate"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE); value = g_hash_table_lookup (hash, NM_PPTP_KEY_NODEFLATE); - if (value && G_VALUE_HOLDS_BOOLEAN (value)) { - if (g_value_get_boolean (value)) - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE); - } + if (value && !strcmp (value, "yes")) + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE); widget = glade_xml_get_widget (xml, "ppp_usevj"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE); value = g_hash_table_lookup (hash, NM_PPTP_KEY_NO_VJ_COMP); - if (value && G_VALUE_HOLDS_BOOLEAN (value)) { - if (g_value_get_boolean (value)) - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE); - } + if (value && !strcmp (value, "yes")) + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE); + widget = glade_xml_get_widget (xml, "ppp_send_echo_packets"); value = g_hash_table_lookup (hash, NM_PPTP_KEY_LCP_ECHO_INTERVAL); - if (value && G_VALUE_HOLDS_UINT (value)) { - widget = glade_xml_get_widget (xml, "ppp_send_echo_packets"); - if (g_value_get_uint (value)) + if (value && strlen (value)) { + long int tmp_int; + + errno = 0; + tmp_int = strtol (value, NULL, 10); + if (errno == 0 && tmp_int > 0) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE); } @@ -400,7 +368,7 @@ advanced_dialog_new_hash_from_dialog (GtkWidget *dialog, GError **error) xml = g_object_get_data (G_OBJECT (dialog), "glade-xml"); g_return_val_if_fail (xml != NULL, NULL); - hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, nm_gvalue_destroy); + hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); widget = glade_xml_get_widget (xml, "ppp_use_mppe"); if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) { @@ -408,37 +376,37 @@ advanced_dialog_new_hash_from_dialog (GtkWidget *dialog, GError **error) widget = glade_xml_get_widget (xml, "ppp_mppe_security_combo"); switch (gtk_combo_box_get_active (GTK_COMBO_BOX (widget))) { case SEC_INDEX_MPPE_128: - g_hash_table_insert (hash, g_strdup (NM_PPTP_KEY_REQUIRE_MPPE_128), bool_to_gvalue (TRUE)); + g_hash_table_insert (hash, g_strdup (NM_PPTP_KEY_REQUIRE_MPPE_128), g_strdup ("yes")); break; case SEC_INDEX_MPPE_40: - g_hash_table_insert (hash, g_strdup (NM_PPTP_KEY_REQUIRE_MPPE_40), bool_to_gvalue (TRUE)); + g_hash_table_insert (hash, g_strdup (NM_PPTP_KEY_REQUIRE_MPPE_40), g_strdup ("yes")); break; default: - g_hash_table_insert (hash, g_strdup (NM_PPTP_KEY_REQUIRE_MPPE), bool_to_gvalue (TRUE)); + g_hash_table_insert (hash, g_strdup (NM_PPTP_KEY_REQUIRE_MPPE), g_strdup ("yes")); break; } widget = glade_xml_get_widget (xml, "ppp_allow_stateful_mppe"); if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) - g_hash_table_insert (hash, g_strdup (NM_PPTP_KEY_MPPE_STATEFUL), bool_to_gvalue (TRUE)); + g_hash_table_insert (hash, g_strdup (NM_PPTP_KEY_MPPE_STATEFUL), g_strdup ("yes")); } widget = glade_xml_get_widget (xml, "ppp_allow_bsdcomp"); if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) - g_hash_table_insert (hash, g_strdup (NM_PPTP_KEY_NOBSDCOMP), bool_to_gvalue (TRUE)); + g_hash_table_insert (hash, g_strdup (NM_PPTP_KEY_NOBSDCOMP), g_strdup ("yes")); widget = glade_xml_get_widget (xml, "ppp_allow_deflate"); if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) - g_hash_table_insert (hash, g_strdup (NM_PPTP_KEY_NODEFLATE), bool_to_gvalue (TRUE)); + g_hash_table_insert (hash, g_strdup (NM_PPTP_KEY_NODEFLATE), g_strdup ("yes")); widget = glade_xml_get_widget (xml, "ppp_usevj"); if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) - g_hash_table_insert (hash, g_strdup (NM_PPTP_KEY_NO_VJ_COMP), bool_to_gvalue (TRUE)); + g_hash_table_insert (hash, g_strdup (NM_PPTP_KEY_NO_VJ_COMP), g_strdup ("yes")); widget = glade_xml_get_widget (xml, "ppp_send_echo_packets"); if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) { - g_hash_table_insert (hash, g_strdup (NM_PPTP_KEY_LCP_ECHO_FAILURE), uint_to_gvalue (5)); - g_hash_table_insert (hash, g_strdup (NM_PPTP_KEY_LCP_ECHO_INTERVAL), uint_to_gvalue (30)); + g_hash_table_insert (hash, g_strdup (NM_PPTP_KEY_LCP_ECHO_FAILURE), g_strdup_printf ("%d", 5)); + g_hash_table_insert (hash, g_strdup (NM_PPTP_KEY_LCP_ECHO_INTERVAL), g_strdup_printf ("%d", 30)); } widget = glade_xml_get_widget (xml, "ppp_auth_methods"); @@ -452,19 +420,19 @@ advanced_dialog_new_hash_from_dialog (GtkWidget *dialog, GError **error) switch (tag) { case TAG_PAP: if (!allowed) - g_hash_table_insert (hash, g_strdup (NM_PPTP_KEY_REFUSE_PAP), bool_to_gvalue (TRUE)); + g_hash_table_insert (hash, g_strdup (NM_PPTP_KEY_REFUSE_PAP), g_strdup ("yes")); break; case TAG_CHAP: if (!allowed) - g_hash_table_insert (hash, g_strdup (NM_PPTP_KEY_REFUSE_CHAP), bool_to_gvalue (TRUE)); + g_hash_table_insert (hash, g_strdup (NM_PPTP_KEY_REFUSE_CHAP), g_strdup ("yes")); break; case TAG_MSCHAP: if (!allowed) - g_hash_table_insert (hash, g_strdup (NM_PPTP_KEY_REFUSE_MSCHAP), bool_to_gvalue (TRUE)); + g_hash_table_insert (hash, g_strdup (NM_PPTP_KEY_REFUSE_MSCHAP), g_strdup ("yes")); break; case TAG_MSCHAPV2: if (!allowed) - g_hash_table_insert (hash, g_strdup (NM_PPTP_KEY_REFUSE_MSCHAPV2), bool_to_gvalue (TRUE)); + g_hash_table_insert (hash, g_strdup (NM_PPTP_KEY_REFUSE_MSCHAPV2), g_strdup ("yes")); break; default: break; diff --git a/vpn-daemons/pptp/properties/import-export.c b/vpn-daemons/pptp/properties/import-export.c index 5715368941..356a6de5c3 100644 --- a/vpn-daemons/pptp/properties/import-export.c +++ b/vpn-daemons/pptp/properties/import-export.c @@ -35,7 +35,6 @@ #include #include -#include #include #include diff --git a/vpn-daemons/pptp/properties/nm-pptp.c b/vpn-daemons/pptp/properties/nm-pptp.c index 756c249ced..31df478118 100644 --- a/vpn-daemons/pptp/properties/nm-pptp.c +++ b/vpn-daemons/pptp/properties/nm-pptp.c @@ -38,7 +38,6 @@ #include #include -#include #include #include @@ -213,14 +212,14 @@ static gboolean init_plugin_ui (PptpPluginUiWidget *self, NMConnection *connection, GError **error) { PptpPluginUiWidgetPrivate *priv = PPTP_PLUGIN_UI_WIDGET_GET_PRIVATE (self); - NMSettingVPNProperties *s_vpn_props; + NMSettingVPN *s_vpn; GtkWidget *widget; GtkListStore *store; GtkTreeIter iter; int active = -1; - GValue *value; + const char *value; - s_vpn_props = (NMSettingVPNProperties *) nm_connection_get_setting (connection, NM_TYPE_SETTING_VPN_PROPERTIES); + s_vpn = (NMSettingVPN *) nm_connection_get_setting (connection, NM_TYPE_SETTING_VPN); priv->group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); @@ -228,10 +227,10 @@ init_plugin_ui (PptpPluginUiWidget *self, NMConnection *connection, GError **err if (!widget) return FALSE; gtk_size_group_add_widget (priv->group, widget); - if (s_vpn_props) { - value = g_hash_table_lookup (s_vpn_props->data, NM_PPTP_KEY_GATEWAY); - if (value && G_VALUE_HOLDS_STRING (value)) - gtk_entry_set_text (GTK_ENTRY (widget), g_value_get_string (value)); + if (s_vpn) { + value = g_hash_table_lookup (s_vpn->data, NM_PPTP_KEY_GATEWAY); + if (value && strlen (value)) + gtk_entry_set_text (GTK_ENTRY (widget), value); } g_signal_connect (G_OBJECT (widget), "changed", G_CALLBACK (stuff_changed_cb), self); @@ -239,10 +238,10 @@ init_plugin_ui (PptpPluginUiWidget *self, NMConnection *connection, GError **err if (!widget) return FALSE; gtk_size_group_add_widget (priv->group, widget); - if (s_vpn_props) { - value = g_hash_table_lookup (s_vpn_props->data, NM_PPTP_KEY_USER); - if (value && G_VALUE_HOLDS_STRING (value)) - gtk_entry_set_text (GTK_ENTRY (widget), g_value_get_string (value)); + if (s_vpn) { + value = g_hash_table_lookup (s_vpn->data, NM_PPTP_KEY_USER); + if (value && strlen (value)) + gtk_entry_set_text (GTK_ENTRY (widget), value); } g_signal_connect (G_OBJECT (widget), "changed", G_CALLBACK (stuff_changed_cb), self); @@ -250,10 +249,10 @@ init_plugin_ui (PptpPluginUiWidget *self, NMConnection *connection, GError **err if (!widget) return FALSE; gtk_size_group_add_widget (priv->group, widget); - if (s_vpn_props) { - value = g_hash_table_lookup (s_vpn_props->data, NM_PPTP_KEY_DOMAIN); - if (value && G_VALUE_HOLDS_STRING (value)) - gtk_entry_set_text (GTK_ENTRY (widget), g_value_get_string (value)); + if (s_vpn) { + value = g_hash_table_lookup (s_vpn->data, NM_PPTP_KEY_DOMAIN); + if (value && strlen (value)) + gtk_entry_set_text (GTK_ENTRY (widget), value); } g_signal_connect (G_OBJECT (widget), "changed", G_CALLBACK (stuff_changed_cb), self); @@ -272,76 +271,12 @@ get_widget (NMVpnPluginUiWidgetInterface *iface) return G_OBJECT (priv->widget); } -GValue * -str_to_gvalue (const char *str) -{ - GValue *value; - - value = g_slice_new0 (GValue); - g_value_init (value, G_TYPE_STRING); - g_value_set_string (value, str); - - return value; -} - -GValue * -bool_to_gvalue (gboolean b) -{ - GValue *value; - - value = g_slice_new0 (GValue); - g_value_init (value, G_TYPE_BOOLEAN); - g_value_set_boolean (value, b); - - return value; -} - -GValue * -int_to_gvalue (gint i) -{ - GValue *value; - - value = g_slice_new0 (GValue); - g_value_init (value, G_TYPE_INT); - g_value_set_int (value, i); - - return value; -} - -GValue * -uint_to_gvalue (guint32 u) -{ - GValue *value; - - value = g_slice_new0 (GValue); - g_value_init (value, G_TYPE_UINT); - g_value_set_uint (value, u); - - return value; -} - static void hash_copy_advanced (gpointer key, gpointer data, gpointer user_data) { GHashTable *hash = (GHashTable *) user_data; - GValue *value = (GValue *) data; - if (G_VALUE_HOLDS_STRING (value)) { - g_hash_table_insert (hash, - g_strdup ((const char *) key), - str_to_gvalue (g_value_get_string (value))); - } else if (G_VALUE_HOLDS_INT (value)) { - g_hash_table_insert (hash, - g_strdup ((const char *) key), - int_to_gvalue (g_value_get_int (value))); - } else if (G_VALUE_HOLDS_BOOLEAN (value)) { - g_hash_table_insert (hash, - g_strdup ((const char *) key), - bool_to_gvalue (g_value_get_boolean (value))); - } else { - g_warning ("%s: unhandled key '%s' of type '%s'", - __func__, (const char *) key, G_VALUE_TYPE_NAME (value)); - } + g_hash_table_insert (hash, g_strdup ((const char *) key), g_strdup ((const char *) data)); } static gboolean @@ -352,9 +287,8 @@ update_connection (NMVpnPluginUiWidgetInterface *iface, PptpPluginUiWidget *self = PPTP_PLUGIN_UI_WIDGET (iface); PptpPluginUiWidgetPrivate *priv = PPTP_PLUGIN_UI_WIDGET_GET_PRIVATE (self); NMSettingVPN *s_vpn; - NMSettingVPNProperties *s_vpn_props; GtkWidget *widget; - char *str; + const char *str; GtkTreeModel *model; GtkTreeIter iter; gboolean valid = FALSE; @@ -364,41 +298,29 @@ update_connection (NMVpnPluginUiWidgetInterface *iface, s_vpn = NM_SETTING_VPN (nm_setting_vpn_new ()); s_vpn->service_type = g_strdup (NM_DBUS_SERVICE_PPTP); - nm_connection_add_setting (connection, NM_SETTING (s_vpn)); - - s_vpn_props = NM_SETTING_VPN_PROPERTIES (nm_setting_vpn_properties_new ()); /* Gateway */ widget = glade_xml_get_widget (priv->xml, "gateway_entry"); - str = (char *) gtk_entry_get_text (GTK_ENTRY (widget)); - if (str && strlen (str)) { - g_hash_table_insert (s_vpn_props->data, - g_strdup (NM_PPTP_KEY_GATEWAY), - str_to_gvalue (str)); - } + str = gtk_entry_get_text (GTK_ENTRY (widget)); + if (str && strlen (str)) + g_hash_table_insert (s_vpn->data, g_strdup (NM_PPTP_KEY_GATEWAY), g_strdup (str)); /* Username */ widget = glade_xml_get_widget (priv->xml, "user_entry"); - str = (char *) gtk_entry_get_text (GTK_ENTRY (widget)); - if (str && strlen (str)) { - g_hash_table_insert (s_vpn_props->data, - g_strdup (NM_PPTP_KEY_USER), - str_to_gvalue (str)); - } + str = gtk_entry_get_text (GTK_ENTRY (widget)); + if (str && strlen (str)) + g_hash_table_insert (s_vpn->data, g_strdup (NM_PPTP_KEY_USER), g_strdup (str)); /* Domain */ widget = glade_xml_get_widget (priv->xml, "domain_entry"); - str = (char *) gtk_entry_get_text (GTK_ENTRY (widget)); - if (str && strlen (str)) { - g_hash_table_insert (s_vpn_props->data, - g_strdup (NM_PPTP_KEY_DOMAIN), - str_to_gvalue (str)); - } + str = gtk_entry_get_text (GTK_ENTRY (widget)); + if (str && strlen (str)) + g_hash_table_insert (s_vpn->data, g_strdup (NM_PPTP_KEY_DOMAIN), g_strdup (str)); if (priv->advanced) - g_hash_table_foreach (priv->advanced, hash_copy_advanced, s_vpn_props->data); + g_hash_table_foreach (priv->advanced, hash_copy_advanced, s_vpn->data); - nm_connection_add_setting (connection, NM_SETTING (s_vpn_props)); + nm_connection_add_setting (connection, NM_SETTING (s_vpn)); valid = TRUE; done: diff --git a/vpn-daemons/pptp/properties/nm-pptp.h b/vpn-daemons/pptp/properties/nm-pptp.h index 9ff8b9fb04..5877f06f37 100644 --- a/vpn-daemons/pptp/properties/nm-pptp.h +++ b/vpn-daemons/pptp/properties/nm-pptp.h @@ -82,13 +82,5 @@ struct _PptpPluginUiWidgetClass { GType pptp_plugin_ui_widget_get_type (void); -GValue *int_to_gvalue (gint i); - -GValue *uint_to_gvalue (guint32 u); - -GValue *bool_to_gvalue (gboolean b); - -GValue *str_to_gvalue (const char *str); - #endif /* _NM_PPTP_H_ */ diff --git a/vpn-daemons/pptp/src/nm-pptp-service.c b/vpn-daemons/pptp/src/nm-pptp-service.c index 5d81a27783..ae73fe822e 100644 --- a/vpn-daemons/pptp/src/nm-pptp-service.c +++ b/vpn-daemons/pptp/src/nm-pptp-service.c @@ -46,7 +46,6 @@ #include #include -#include #include #include "nm-pptp-service.h" @@ -228,8 +227,6 @@ nm_pptp_ppp_service_cache_credentials (NMPptpPppService *self, { NMPptpPppServicePrivate *priv = NM_PPTP_PPP_SERVICE_GET_PRIVATE (self); NMSettingVPN *s_vpn; - NMSettingVPNProperties *s_vpn_props; - GValue *value; const char *username, *password; g_return_val_if_fail (self != NULL, FALSE); @@ -239,7 +236,7 @@ nm_pptp_ppp_service_cache_credentials (NMPptpPppService *self, memset (priv->password, 0, sizeof (priv->password)); s_vpn = (NMSettingVPN *) nm_connection_get_setting (connection, NM_TYPE_SETTING_VPN); - if (!s_vpn) { + if (!s_vpn || !s_vpn->data) { g_set_error (error, NM_VPN_PLUGIN_ERROR, NM_VPN_PLUGIN_ERROR_CONNECTION_INVALID, @@ -248,20 +245,9 @@ nm_pptp_ppp_service_cache_credentials (NMPptpPppService *self, return FALSE; } - s_vpn_props = (NMSettingVPNProperties *) nm_connection_get_setting (connection, NM_TYPE_SETTING_VPN_PROPERTIES); - if (!s_vpn_props || !s_vpn_props->data) { - g_set_error (error, - NM_VPN_PLUGIN_ERROR, - NM_VPN_PLUGIN_ERROR_CONNECTION_INVALID, - "%s", - "Could not find secrets (connection invalid, no vpn-properties setting)."); - return FALSE; - } - /* Username; try PPTP specific username first, then generic username */ - value = g_hash_table_lookup (s_vpn_props->data, NM_PPTP_KEY_USER); - if (value && G_VALUE_HOLDS_STRING (value)) { - username = g_value_get_string (value); + username = g_hash_table_lookup (s_vpn->data, NM_PPTP_KEY_USER); + if (username && strlen (username)) { if (!username || !strlen (username)) { g_set_error (error, NM_VPN_PLUGIN_ERROR, @@ -282,23 +268,13 @@ nm_pptp_ppp_service_cache_credentials (NMPptpPppService *self, } } - value = g_hash_table_lookup (s_vpn_props->data, NM_PPTP_KEY_PASSWORD); - if (!value || !G_VALUE_HOLDS_STRING (value)) { - g_set_error (error, - NM_VPN_PLUGIN_ERROR, - NM_VPN_PLUGIN_ERROR_CONNECTION_INVALID, - "%s", - "Missing VPN password."); - return FALSE; - } - - password = g_value_get_string (value); + password = g_hash_table_lookup (s_vpn->data, NM_PPTP_KEY_PASSWORD); if (!password || !strlen (password)) { g_set_error (error, NM_VPN_PLUGIN_ERROR, NM_VPN_PLUGIN_ERROR_CONNECTION_INVALID, "%s", - "Invalid VPN password."); + "Missing or invalid VPN password."); return FALSE; } @@ -407,9 +383,8 @@ static ValidProperty valid_properties[] = { }; static gboolean -validate_gateway (GValue *value) +validate_gateway (const char *gateway) { - const char *gateway = g_value_get_string (value); const char *p = gateway; if (!gateway || !strlen (gateway)) @@ -426,12 +401,12 @@ validate_gateway (GValue *value) } static void -validate_one_property (gpointer key, gpointer val, gpointer user_data) +validate_one_property (gpointer key, gpointer value, gpointer user_data) { - gboolean *failed = (gboolean *) user_data; + GError **error = (GError **) user_data; int i; - if (*failed) + if (*error) return; /* 'name' is the setting name; always allowed but unused */ @@ -440,47 +415,100 @@ validate_one_property (gpointer key, gpointer val, gpointer user_data) for (i = 0; valid_properties[i].name; i++) { ValidProperty prop = valid_properties[i]; + long int tmp; - if (!strcmp (prop.name, (char *) key) && prop.type == G_VALUE_TYPE ((GValue *) val)) { - if (!strcmp (prop.name, NM_PPTP_KEY_GATEWAY)) { - if (!validate_gateway ((GValue *) val)) - goto failed; + if (strcmp (prop.name, (char *) key)) + continue; + + switch (prop.type) { + case G_TYPE_STRING: + if ( !strcmp (prop.name, NM_PPTP_KEY_GATEWAY) + && !validate_gateway (value)) { + g_set_error (error, + NM_VPN_PLUGIN_ERROR, + NM_VPN_PLUGIN_ERROR_BAD_ARGUMENTS, + "invalid gateway '%s'", + (const char *) key); + return; } - /* Property is ok */ - return; + return; /* valid */ + case G_TYPE_UINT: + errno = 0; + tmp = strtol ((char *) value, NULL, 10); + if (errno == 0) + return; /* valid */ + + g_set_error (error, + NM_VPN_PLUGIN_ERROR, + NM_VPN_PLUGIN_ERROR_BAD_ARGUMENTS, + "invalid integer property '%s'", + (const char *) key); + break; + case G_TYPE_BOOLEAN: + if (!strcmp ((char *) value, "yes") || !strcmp ((char *) value, "no")) + return; /* valid */ + + g_set_error (error, + NM_VPN_PLUGIN_ERROR, + NM_VPN_PLUGIN_ERROR_BAD_ARGUMENTS, + "invalid boolean property '%s' (not yes or no)", + (const char *) key); + break; + default: + g_set_error (error, + NM_VPN_PLUGIN_ERROR, + NM_VPN_PLUGIN_ERROR_BAD_ARGUMENTS, + "unhandled property '%s' type %d", + (const char *) key, prop.type); + break; } } -failed: /* Did not find the property from valid_properties or the type did not match */ - g_warning ("VPN property '%s' failed validation.", (char *) key); - *failed = TRUE; + if (!valid_properties[i].name) { + g_set_error (error, + NM_VPN_PLUGIN_ERROR, + NM_VPN_PLUGIN_ERROR_BAD_ARGUMENTS, + "property '%s' invalid or not supported", + (const char *) key); + } } static gboolean -nm_pptp_properties_validate (GHashTable *properties) +nm_pptp_properties_validate (GHashTable *properties, GError **error) { - gboolean failed = FALSE; int i; - if (g_hash_table_size (properties) < 1) - return failed; + if (g_hash_table_size (properties) < 1) { + g_set_error (error, + NM_VPN_PLUGIN_ERROR, + NM_VPN_PLUGIN_ERROR_BAD_ARGUMENTS, + "%s", + "No VPN configuration options."); + return FALSE; + } - g_hash_table_foreach (properties, validate_one_property, &failed); - if (failed) + g_hash_table_foreach (properties, validate_one_property, error); + if (*error) return FALSE; /* Ensure required properties exist */ for (i = 0; valid_properties[i].name; i++) { ValidProperty prop = valid_properties[i]; - GValue *value; + const char *value; if (!prop.required) continue; value = g_hash_table_lookup (properties, prop.name); - if (!value || (G_VALUE_TYPE (value) != prop.type)) + if (!value || !strlen (value)) { + g_set_error (error, + NM_VPN_PLUGIN_ERROR, + NM_VPN_PLUGIN_ERROR_BAD_ARGUMENTS, + "Missing required option '%s'.", + prop.name); return FALSE; + } } return TRUE; @@ -602,13 +630,11 @@ free_pppd_args (GPtrArray *args) static GPtrArray * construct_pppd_args (NMPptpPlugin *plugin, NMSettingVPN *s_vpn, - NMSettingVPNProperties *s_vpn_props, const char *pppd, GError **error) { GPtrArray *args = NULL; - GValue *value; - const char *pptp_binary; + const char *value, *pptp_binary; char *ipparam, *tmp; pptp_binary = nm_find_pptp (); @@ -625,8 +651,8 @@ construct_pppd_args (NMPptpPlugin *plugin, g_ptr_array_add (args, (gpointer) g_strdup (pppd)); /* PPTP options */ - value = g_hash_table_lookup (s_vpn_props->data, NM_PPTP_KEY_GATEWAY); - if (!value || !G_VALUE_HOLDS_STRING (value)) { + value = g_hash_table_lookup (s_vpn->data, NM_PPTP_KEY_GATEWAY); + if (!value || !strlen (value)) { g_set_error (error, NM_VPN_PLUGIN_ERROR, NM_VPN_PLUGIN_ERROR_CONNECTION_INVALID, @@ -638,8 +664,7 @@ construct_pppd_args (NMPptpPlugin *plugin, ipparam = g_strdup_printf ("nm-pptp-service-%d", getpid ()); g_ptr_array_add (args, (gpointer) g_strdup ("pty")); - tmp = g_strdup_printf ("%s %s --nolaunchpppd --logstring %s", - pptp_binary, g_value_get_string (value), ipparam); + tmp = g_strdup_printf ("%s %s --nolaunchpppd --logstring %s", pptp_binary, value, ipparam); g_ptr_array_add (args, (gpointer) tmp); /* PPP options */ @@ -651,66 +676,82 @@ construct_pppd_args (NMPptpPlugin *plugin, g_ptr_array_add (args, (gpointer) g_strdup ("usepeerdns")); g_ptr_array_add (args, (gpointer) g_strdup ("noipdefault")); - value = g_hash_table_lookup (s_vpn_props->data, NM_PPTP_KEY_REFUSE_EAP); - if (value && G_VALUE_HOLDS_BOOLEAN (value) && g_value_get_boolean (value)) + value = g_hash_table_lookup (s_vpn->data, NM_PPTP_KEY_REFUSE_EAP); + if (value && !strcmp (value, "yes")) g_ptr_array_add (args, (gpointer) g_strdup ("refuse-eap")); - value = g_hash_table_lookup (s_vpn_props->data, NM_PPTP_KEY_REFUSE_PAP); - if (value && G_VALUE_HOLDS_BOOLEAN (value) && g_value_get_boolean (value)) + value = g_hash_table_lookup (s_vpn->data, NM_PPTP_KEY_REFUSE_PAP); + if (value && !strcmp (value, "yes")) g_ptr_array_add (args, (gpointer) g_strdup ("refuse-pap")); - value = g_hash_table_lookup (s_vpn_props->data, NM_PPTP_KEY_REFUSE_CHAP); - if (value && G_VALUE_HOLDS_BOOLEAN (value) && g_value_get_boolean (value)) + value = g_hash_table_lookup (s_vpn->data, NM_PPTP_KEY_REFUSE_CHAP); + if (value && !strcmp (value, "yes")) g_ptr_array_add (args, (gpointer) g_strdup ("refuse-chap")); - value = g_hash_table_lookup (s_vpn_props->data, NM_PPTP_KEY_REFUSE_MSCHAP); - if (value && G_VALUE_HOLDS_BOOLEAN (value) && g_value_get_boolean (value)) + value = g_hash_table_lookup (s_vpn->data, NM_PPTP_KEY_REFUSE_MSCHAP); + if (value && !strcmp (value, "yes")) g_ptr_array_add (args, (gpointer) g_strdup ("refuse-mschap")); - value = g_hash_table_lookup (s_vpn_props->data, NM_PPTP_KEY_REFUSE_MSCHAPV2); - if (value && G_VALUE_HOLDS_BOOLEAN (value) && g_value_get_boolean (value)) + value = g_hash_table_lookup (s_vpn->data, NM_PPTP_KEY_REFUSE_MSCHAPV2); + if (value && !strcmp (value, "yes")) g_ptr_array_add (args, (gpointer) g_strdup ("refuse-mschap-v2")); - value = g_hash_table_lookup (s_vpn_props->data, NM_PPTP_KEY_REQUIRE_MPPE); - if (value && G_VALUE_HOLDS_BOOLEAN (value) && g_value_get_boolean (value)) + value = g_hash_table_lookup (s_vpn->data, NM_PPTP_KEY_REQUIRE_MPPE); + if (value && !strcmp (value, "yes")) g_ptr_array_add (args, (gpointer) g_strdup ("require-mppe")); - value = g_hash_table_lookup (s_vpn_props->data, NM_PPTP_KEY_REQUIRE_MPPE_40); - if (value && G_VALUE_HOLDS_BOOLEAN (value) && g_value_get_boolean (value)) + value = g_hash_table_lookup (s_vpn->data, NM_PPTP_KEY_REQUIRE_MPPE_40); + if (value && !strcmp (value, "yes")) g_ptr_array_add (args, (gpointer) g_strdup ("require-mppe-40")); - value = g_hash_table_lookup (s_vpn_props->data, NM_PPTP_KEY_REQUIRE_MPPE_128); - if (value && G_VALUE_HOLDS_BOOLEAN (value) && g_value_get_boolean (value)) + value = g_hash_table_lookup (s_vpn->data, NM_PPTP_KEY_REQUIRE_MPPE_128); + if (value && !strcmp (value, "yes")) g_ptr_array_add (args, (gpointer) g_strdup ("require-mppe-128")); - value = g_hash_table_lookup (s_vpn_props->data, NM_PPTP_KEY_MPPE_STATEFUL); - if (value && G_VALUE_HOLDS_BOOLEAN (value) && g_value_get_boolean (value)) + value = g_hash_table_lookup (s_vpn->data, NM_PPTP_KEY_MPPE_STATEFUL); + if (value && !strcmp (value, "yes")) g_ptr_array_add (args, (gpointer) g_strdup ("mppe-stateful")); - value = g_hash_table_lookup (s_vpn_props->data, NM_PPTP_KEY_NOBSDCOMP); - if (value && G_VALUE_HOLDS_BOOLEAN (value) && g_value_get_boolean (value)) + value = g_hash_table_lookup (s_vpn->data, NM_PPTP_KEY_NOBSDCOMP); + if (value && !strcmp (value, "yes")) g_ptr_array_add (args, (gpointer) g_strdup ("nobsdcomp")); - value = g_hash_table_lookup (s_vpn_props->data, NM_PPTP_KEY_NODEFLATE); - if (value && G_VALUE_HOLDS_BOOLEAN (value) && g_value_get_boolean (value)) + value = g_hash_table_lookup (s_vpn->data, NM_PPTP_KEY_NODEFLATE); + if (value && !strcmp (value, "yes")) g_ptr_array_add (args, (gpointer) g_strdup ("nodeflate")); - value = g_hash_table_lookup (s_vpn_props->data, NM_PPTP_KEY_NO_VJ_COMP); - if (value && G_VALUE_HOLDS_BOOLEAN (value) && g_value_get_boolean (value)) + value = g_hash_table_lookup (s_vpn->data, NM_PPTP_KEY_NO_VJ_COMP); + if (value && !strcmp (value, "yes")) g_ptr_array_add (args, (gpointer) g_strdup ("novj")); - value = g_hash_table_lookup (s_vpn_props->data, NM_PPTP_KEY_LCP_ECHO_FAILURE); - if (value && G_VALUE_HOLDS_UINT (value) && g_value_get_uint (value)) { - g_ptr_array_add (args, (gpointer) g_strdup ("lcp-echo-failure")); - tmp = g_strdup_printf ("%d", g_value_get_uint (value)); - g_ptr_array_add (args, (gpointer) tmp); + value = g_hash_table_lookup (s_vpn->data, NM_PPTP_KEY_LCP_ECHO_FAILURE); + if (value && strlen (value)) { + long int tmp_int; + + /* Convert to integer and then back to string for security's sake + * because strtol ignores some leading and trailing characters. + */ + errno = 0; + tmp_int = strtol (value, NULL, 10); + if (errno == 0) { + g_ptr_array_add (args, (gpointer) g_strdup ("lcp-echo-failure")); + g_ptr_array_add (args, (gpointer) g_strdup_printf ("%ld", tmp_int)); + } } - value = g_hash_table_lookup (s_vpn_props->data, NM_PPTP_KEY_LCP_ECHO_INTERVAL); - if (value && G_VALUE_HOLDS_UINT (value) && g_value_get_uint (value)) { - g_ptr_array_add (args, (gpointer) g_strdup ("lcp-echo-interval")); - tmp = g_strdup_printf ("%d", g_value_get_uint (value)); - g_ptr_array_add (args, (gpointer) tmp); + value = g_hash_table_lookup (s_vpn->data, NM_PPTP_KEY_LCP_ECHO_INTERVAL); + if (value && strlen (value)) { + long int tmp_int; + + /* Convert to integer and then back to string for security's sake + * because strtol ignores some leading and trailing characters. + */ + errno = 0; + tmp_int = strtol (value, NULL, 10); + if (errno == 0) { + g_ptr_array_add (args, (gpointer) g_strdup ("lcp-echo-interval")); + g_ptr_array_add (args, (gpointer) g_strdup_printf ("%ld", tmp_int)); + } } g_ptr_array_add (args, (gpointer) g_strdup ("plugin")); @@ -728,29 +769,30 @@ error: static gboolean nm_pptp_start_pppd_binary (NMPptpPlugin *plugin, NMSettingVPN *s_vpn, - NMSettingVPNProperties *s_vpn_props) + GError **error) { NMPptpPluginPrivate *priv = NM_PPTP_PLUGIN_GET_PRIVATE (plugin); GPid pid; const char *pppd_binary; GPtrArray *pppd_argv; - GError *err = NULL; pppd_binary = nm_find_pppd (); if (!pppd_binary) { - nm_info ("Could not find pppd binary."); + g_set_error (error, + NM_VPN_PLUGIN_ERROR, + NM_VPN_PLUGIN_ERROR_LAUNCH_FAILED, + "%s", + "Could not find the pppd binary."); return FALSE; } - pppd_argv = construct_pppd_args (plugin, s_vpn, s_vpn_props, pppd_binary, &err); + pppd_argv = construct_pppd_args (plugin, s_vpn, pppd_binary, error); if (!pppd_argv) return FALSE; if (!g_spawn_async (NULL, (char **) pppd_argv->pdata, NULL, - G_SPAWN_DO_NOT_REAP_CHILD, NULL, NULL, &pid, &err)) { + G_SPAWN_DO_NOT_REAP_CHILD, NULL, NULL, &pid, error)) { g_ptr_array_free (pppd_argv, TRUE); - nm_warning ("pppd failed to start. error: '%s'", err->message); - g_error_free (err); return FALSE; } free_pppd_args (pppd_argv); @@ -814,24 +856,15 @@ service_ip4_config_cb (NMPptpPppService *service, static gboolean real_connect (NMVPNPlugin *plugin, NMConnection *connection, - GError **err) + GError **error) { NMPptpPluginPrivate *priv = NM_PPTP_PLUGIN_GET_PRIVATE (plugin); NMSettingVPN *s_vpn; - NMSettingVPNProperties *s_vpn_props; - - s_vpn_props = NM_SETTING_VPN_PROPERTIES (nm_connection_get_setting (connection, NM_TYPE_SETTING_VPN_PROPERTIES)); - if (!s_vpn_props || !nm_pptp_properties_validate (s_vpn_props->data)) { - g_set_error (err, - NM_VPN_PLUGIN_ERROR, - NM_VPN_PLUGIN_ERROR_BAD_ARGUMENTS, - "%s", - "Invalid arguments."); - return FALSE; - } s_vpn = NM_SETTING_VPN (nm_connection_get_setting (connection, NM_TYPE_SETTING_VPN)); g_assert (s_vpn); + if (!nm_pptp_properties_validate (s_vpn->data, error)) + return FALSE; /* Start our pppd plugin helper service */ if (priv->service) @@ -839,7 +872,7 @@ real_connect (NMVPNPlugin *plugin, priv->service = nm_pptp_ppp_service_new (); if (!priv->service) { - g_set_error (err, + g_set_error (error, NM_VPN_PLUGIN_ERROR, NM_VPN_PLUGIN_ERROR_LAUNCH_FAILED, "%s", @@ -853,17 +886,11 @@ real_connect (NMVPNPlugin *plugin, /* Cache the username and password so we can relay the secrets to the pppd * plugin when it asks for them. */ - if (!nm_pptp_ppp_service_cache_credentials (priv->service, connection, err)) + if (!nm_pptp_ppp_service_cache_credentials (priv->service, connection, error)) return FALSE; - if (!nm_pptp_start_pppd_binary (NM_PPTP_PLUGIN (plugin), s_vpn, s_vpn_props)) { - g_set_error (err, - NM_VPN_PLUGIN_ERROR, - NM_VPN_PLUGIN_ERROR_LAUNCH_FAILED, - "%s", - "Could not start pppd binary."); + if (!nm_pptp_start_pppd_binary (NM_PPTP_PLUGIN (plugin), s_vpn, error)) return FALSE; - } return TRUE; } @@ -874,13 +901,13 @@ real_need_secrets (NMVPNPlugin *plugin, char **setting_name, GError **error) { - NMSettingVPNProperties *s_vpn_props; + NMSettingVPN *s_vpn; g_return_val_if_fail (NM_IS_VPN_PLUGIN (plugin), FALSE); g_return_val_if_fail (NM_IS_CONNECTION (connection), FALSE); - s_vpn_props = NM_SETTING_VPN_PROPERTIES (nm_connection_get_setting (connection, NM_TYPE_SETTING_VPN_PROPERTIES)); - if (!s_vpn_props) { + s_vpn = NM_SETTING_VPN (nm_connection_get_setting (connection, NM_TYPE_SETTING_VPN)); + if (!s_vpn) { g_set_error (error, NM_VPN_PLUGIN_ERROR, NM_VPN_PLUGIN_ERROR_CONNECTION_INVALID, @@ -889,8 +916,8 @@ real_need_secrets (NMVPNPlugin *plugin, return FALSE; } - if (!g_hash_table_lookup (s_vpn_props->data, NM_PPTP_KEY_PASSWORD)) { - *setting_name = NM_SETTING_VPN_PROPERTIES_SETTING_NAME; + if (!g_hash_table_lookup (s_vpn->data, NM_PPTP_KEY_PASSWORD)) { + *setting_name = NM_SETTING_VPN_SETTING_NAME; return TRUE; }