diff options
-rw-r--r-- | Makefile.am | 11 | ||||
-rw-r--r-- | auth-dialog/Makefile.am | 8 | ||||
-rw-r--r-- | auth-dialog/main.c | 12 | ||||
-rw-r--r-- | configure.ac | 27 | ||||
-rw-r--r-- | nm-iodine-service.name.in | 3 | ||||
-rw-r--r-- | properties/Makefile.am | 43 | ||||
-rw-r--r-- | properties/nm-iodine.c | 227 | ||||
-rw-r--r-- | properties/nm-iodine.h | 58 | ||||
-rw-r--r-- | src/Makefile.am | 4 | ||||
-rw-r--r-- | src/nm-iodine-service.c | 195 | ||||
-rw-r--r-- | src/nm-iodine-service.h | 7 |
11 files changed, 295 insertions, 300 deletions
diff --git a/Makefile.am b/Makefile.am index 9b35207..24174e0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -13,11 +13,18 @@ endif dbusservicedir = $(sysconfdir)/dbus-1/system.d dbusservice_DATA = nm-iodine-service.conf -nmvpnservicedir = $(sysconfdir)/NetworkManager/VPN +nmvpnservicedir = $(NM_VPN_SERVICE_DIR) nmvpnservice_DATA = nm-iodine-service.name +if WITH_LIBNM_GLIB +nmvpnoldservicedir = $(sysconfdir)/NetworkManager/VPN +nmvpnoldservice_DATA = nm-iodine-service.name +endif + nm-iodine-service.name: $(srcdir)/nm-iodine-service.name.in - sed -e 's|[@]LIBEXECDIR[@]|$(libexecdir)|g' $< >$@ + sed -e 's|[@]LIBEXECDIR[@]|$(libexecdir)|g' \ + -e 's|[@]PLUGINDIR[@]|$(libdir)/NetworkManager|g' \ + $< >$@ DISTCHECK_CONFIGURE_FLAGS = --enable-more-warnings=yes diff --git a/auth-dialog/Makefile.am b/auth-dialog/Makefile.am index 08f9e20..b9404c5 100644 --- a/auth-dialog/Makefile.am +++ b/auth-dialog/Makefile.am @@ -1,10 +1,10 @@ libexec_PROGRAMS = nm-iodine-auth-dialog nm_iodine_auth_dialog_CPPFLAGS = \ - $(NM_CFLAGS) \ $(GTK_CFLAGS) \ $(LIBSECRET_CFLAGS) \ - $(NMGTK_CFLAGS) \ + $(LIBNM_CFLAGS) \ + $(LIBNMA_CFLAGS) \ -DICONDIR=\""$(datadir)/pixmaps"\" \ -DBINDIR=\""$(bindir)"\" \ -DG_DISABLE_DEPRECATED \ @@ -19,8 +19,8 @@ nm_iodine_auth_dialog_SOURCES = \ nm_iodine_auth_dialog_LDADD = \ $(GTK_LIBS) \ - $(NM_LIBS) \ - $(NMGTK_LIBS) \ + $(LIBNM_LIBS) \ + $(LIBNMA_LIBS) \ $(LIBSECRET_LIBS) CLEANFILES = *~ diff --git a/auth-dialog/main.c b/auth-dialog/main.c index f482cf0..56d26dc 100644 --- a/auth-dialog/main.c +++ b/auth-dialog/main.c @@ -34,11 +34,11 @@ #define SECRET_API_SUBJECT_TO_CHANGE #include <libsecret/secret.h> -#include <nm-setting-vpn.h> -#include <nm-vpn-plugin-utils.h> -#include <nm-vpn-password-dialog.h> +#include <NetworkManager.h> +#include <nm-vpn-service-plugin.h> +#include <nma-vpn-password-dialog.h> -#include "src/nm-iodine-service.h" +#include "../src/nm-iodine-service-defines.h" #define KEYRING_UUID_TAG "connection-uuid" #define KEYRING_SN_TAG "setting-name" @@ -292,13 +292,13 @@ main (int argc, char *argv[]) g_option_context_parse (context, &argc, &argv, NULL); g_option_context_free (context); - if (!nm_vpn_plugin_utils_read_vpn_details (0, &data, &secrets)) { + if (!nm_vpn_service_plugin_read_vpn_details (0, &data, &secrets)) { fprintf (stderr, "Failed to read '%s' (%s) data and secrets from stdin.\n", vpn_name, vpn_uuid); return 1; } - nm_vpn_plugin_utils_get_secret_flags (secrets, NM_IODINE_KEY_PASSWORD, &pw_flags); + nm_vpn_service_plugin_get_secret_flags (secrets, NM_IODINE_KEY_PASSWORD, &pw_flags); if (!get_secrets (vpn_uuid, vpn_name, retry, allow_interaction, external_ui_mode, g_hash_table_lookup (secrets, NM_IODINE_KEY_PASSWORD), diff --git a/configure.ac b/configure.ac index 972b7b3..8596102 100644 --- a/configure.ac +++ b/configure.ac @@ -1,6 +1,6 @@ AC_PREREQ(2.52) -AC_INIT(NetworkManager-iodine, 0.0.5, agx@sigxcpu.org, NetworkManager-iodine) +AC_INIT(NetworkManager-iodine, 1.1.0, agx@sigxcpu.org, NetworkManager-iodine) AM_INIT_AUTOMAKE([subdir-objects no-dist-gzip dist-xz]) AM_MAINTAINER_MODE @@ -45,6 +45,9 @@ AM_CONDITIONAL(WITH_GNOME, test x"$with_gnome" != xno) AC_ARG_WITH(authdlg, AS_HELP_STRING([--without-authdlg], [Build NetworkManager-iodine without authentication dialog])) AM_CONDITIONAL(WITH_AUTHDLG, test x"$with_authdlg" != xno) +AC_ARG_WITH(libnm-glib, AS_HELP_STRING([--without-libnm-glib], [Build NetworkManager-iodine without libnm-glib comatibility])) +AM_CONDITIONAL(WITH_LIBNM_GLIB, test x"$with_libnm_glib" != xno) + GETTEXT_PACKAGE=NetworkManager-iodine AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Gettext package]) @@ -57,16 +60,26 @@ if test x"$with_gnome" != xno; then PKG_CHECK_MODULES(GTK, gtk+-3.0 > $gtk3_req, , [PKG_CHECK_MODULES(GTK, gtk+-2.0 > $gtk2_req)]) + PKG_CHECK_MODULES(LIBNMA, libnma >= 1.1.0) PKG_CHECK_MODULES(LIBSECRET, libsecret-1) + + if test x"$with_libnm_glib" != xno; then + PKG_CHECK_MODULES(LIBNM_GTK, libnm-gtk >= 0.9.9.0) + PKG_CHECK_MODULES(LIBNM_GLIB, + NetworkManager >= 1.1.0 + libnm-util >= 1.1.0 + libnm-glib >= 1.1.0 + libnm-glib-vpn >= 1.1.0) + fi + fi -PKG_CHECK_MODULES(NM, - NetworkManager >= 0.9.2 - libnm-util >= 0.9.2 - libnm-glib >= 0.9.2 - libnm-glib-vpn >= 0.9.2) +PKG_CHECK_MODULES(LIBNM, libnm >= 1.1.0) +LIBNM_CFLAGS="$LIBNM_CFLAGS -DNM_VERSION_MIN_REQUIRED=NM_VERSION_1_2" +LIBNM_CFLAGS="$LIBNM_CFLAGS -DNM_VERSION_MAX_ALLOWED=NM_VERSION_1_2" -PKG_CHECK_MODULES(NMGTK, libnm-gtk >= 0.9.9.0) +NM_VPN_SERVICE_DIR=`$PKG_CONFIG pkg-config --define-variable prefix='\${prefix}' --variable vpnservicedir libnm` +AC_SUBST(NM_VPN_SERVICE_DIR) NM_COMPILER_WARNINGS diff --git a/nm-iodine-service.name.in b/nm-iodine-service.name.in index e17f938..4061b43 100644 --- a/nm-iodine-service.name.in +++ b/nm-iodine-service.name.in @@ -3,6 +3,9 @@ name=iodine service=org.freedesktop.NetworkManager.iodine program=@LIBEXECDIR@/nm-iodine-service +[libnm] +plugin=@PLUGINDIR@/libnm-vpn-plugin-iodine.so + [GNOME] auth-dialog=nm-iodine-auth-dialog properties=libnm-iodine-properties diff --git a/properties/Makefile.am b/properties/Makefile.am index ab4cd44..6edc5bc 100644 --- a/properties/Makefile.am +++ b/properties/Makefile.am @@ -1,16 +1,21 @@ plugindir = $(libdir)/NetworkManager -plugin_LTLIBRARIES = libnm-iodine-properties.la +plugin_LTLIBRARIES = libnm-vpn-plugin-iodine.la +if WITH_LIBNM_GLIB +plugin_LTLIBRARIES += libnm-iodine-properties.la +endif -libnm_iodine_properties_la_SOURCES = \ - nm-iodine.c \ - nm-iodine.h +libnm_vpn_plugin_iodine_la_SOURCES = \ + nm-iodine.c \ + nm-iodine.h + +libnm_iodine_properties_la_SOURCES = \ + $(libnm_vpn_plugin_iodine_la_SOURCES) uidir = $(datadir)/gnome-vpn-properties/iodine ui_DATA = nm-iodine-dialog.ui -libnm_iodine_properties_la_CFLAGS = \ +common_CFLAGS = \ $(GTK_CFLAGS) \ - $(NM_CFLAGS) \ -I$(top_srcdir)/src \ -DICONDIR=\""$(datadir)/pixmaps"\" \ -DUIDIR=\""$(uidir)"\" \ @@ -20,13 +25,31 @@ libnm_iodine_properties_la_CFLAGS = \ -DGNOMELOCALEDIR=\"$(datadir)/locale\" \ -DVERSION=\"$(VERSION)\" -libnm_iodine_properties_la_LIBADD = \ - $(GTK_LIBS) \ - $(NM_LIBS) +libnm_vpn_plugin_iodine_la_CFLAGS = \ + $(LIBNM_CFLAGS) \ + $(LIBNMA_CFLAGS) \ + $(common_CFLAGS) + +libnm_iodine_properties_la_CFLAGS = \ + -DNM_IODINE_OLD \ + $(LIBNM_GLIB_CFLAGS) \ + $(common_CFLAGS) + +libnm_vpn_plugin_iodine_la_LIBADD = \ + $(GTK_LIBS) \ + $(LIBNMA_LIBS) \ + $(LIBNM_LIBS) -libnm_iodine_properties_la_LDFLAGS = \ +libnm_iodine_properties_la_LIBADD = \ + $(GTK_LIBS) \ + $(LIBNM_GLIB_LIBS) + +libnm_vpn_plugin_iodine_la_LDFLAGS = \ -avoid-version +libnm_iodine_properties_la_LDFLAGS = \ + $(libnm_vpn_plugin_iodine_la_LDFLAGS) + CLEANFILES = *.bak *~ EXTRA_DIST = \ diff --git a/properties/nm-iodine.c b/properties/nm-iodine.c index b3c9498..a0a51de 100644 --- a/properties/nm-iodine.c +++ b/properties/nm-iodine.c @@ -33,11 +33,27 @@ #include <string.h> #include <gtk/gtk.h> +#ifdef NM_IODINE_OLD +#define NM_VPN_LIBNM_COMPAT #include <nm-vpn-plugin-ui-interface.h> #include <nm-setting-vpn.h> #include <nm-setting-connection.h> #include <nm-setting-ip4-config.h> +#define nm_simple_connection_new nm_connection_new + +#define IODINE_EDITOR_PLUGIN_ERROR NM_SETTING_VPN_ERROR +#define IODINE_EDITOR_PLUGIN_ERROR_INVALID_PROPERTY NM_SETTING_VPN_ERROR_INVALID_PROPERTY + +#else /* !NM_IODINE_OLD */ + +#include <NetworkManager.h> +#include <nma-ui-utils.h> + +#define IODINE_EDITOR_PLUGIN_ERROR NM_CONNECTION_ERROR +#define IODINE_EDITOR_PLUGIN_ERROR_INVALID_PROPERTY NM_CONNECTION_ERROR_INVALID_PROPERTY +#endif + #include "nm-iodine-service-defines.h" #include "nm-iodine.h" @@ -51,28 +67,35 @@ /************** plugin class **************/ -static void iodine_plugin_ui_interface_init (NMVpnPluginUiInterface *iface_class); +enum { + PROP_0, + PROP_NAME, + PROP_DESC, + PROP_SERVICE +}; + +static void iodine_editor_plugin_interface_init (NMVpnEditorPluginInterface *iface_class); -G_DEFINE_TYPE_EXTENDED (IodinePluginUi, iodine_plugin_ui, G_TYPE_OBJECT, 0, - G_IMPLEMENT_INTERFACE (NM_TYPE_VPN_PLUGIN_UI_INTERFACE, - iodine_plugin_ui_interface_init)) +G_DEFINE_TYPE_EXTENDED (IodineEditorPlugin, iodine_editor_plugin, G_TYPE_OBJECT, 0, + G_IMPLEMENT_INTERFACE (NM_TYPE_VPN_EDITOR_PLUGIN, + iodine_editor_plugin_interface_init)) /************** UI widget class **************/ -static void iodine_plugin_ui_widget_interface_init (NMVpnPluginUiWidgetInterface *iface_class); +static void iodine_editor_interface_init (NMVpnEditorInterface *iface_class); -G_DEFINE_TYPE_EXTENDED (IodinePluginUiWidget, iodine_plugin_ui_widget,G_TYPE_OBJECT, 0, - G_IMPLEMENT_INTERFACE (NM_TYPE_VPN_PLUGIN_UI_WIDGET_INTERFACE, - iodine_plugin_ui_widget_interface_init)) +G_DEFINE_TYPE_EXTENDED (IodineEditor, iodine_editor,G_TYPE_OBJECT, 0, + G_IMPLEMENT_INTERFACE (NM_TYPE_VPN_EDITOR, + iodine_editor_interface_init)) -#define IODINE_PLUGIN_UI_WIDGET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), IODINE_TYPE_PLUGIN_UI_WIDGET, IodinePluginUiWidgetPrivate)) +#define IODINE_EDITOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), IODINE_TYPE_EDITOR, IodineEditorPrivate)) typedef struct { GtkBuilder *builder; GtkWidget *widget; GtkSizeGroup *group; gboolean window_added; -} IodinePluginUiWidgetPrivate; +} IodineEditorPrivate; typedef enum { NM_IODINE_IMPORT_EXPORT_ERROR_UNKNOWN = 0, @@ -93,11 +116,11 @@ nm_iodine_import_export_error_quark (void) } static NMConnection * -import (NMVpnPluginUiInterface *iface, const char *path, GError **error) +import (NMVpnEditorPlugin *iface, const char *path, GError **error) { NMConnection *connection; NMSettingConnection *s_con; - NMSettingVPN *s_vpn; + NMSettingVpn *s_vpn; NMSettingIP4Config *s_ip4; GKeyFile *keyfile; GKeyFileFlags flags; @@ -115,7 +138,7 @@ import (NMVpnPluginUiInterface *iface, const char *path, GError **error) return NULL; } - connection = nm_connection_new (); + connection = nm_simple_connection_new (); s_con = NM_SETTING_CONNECTION (nm_setting_connection_new ()); nm_connection_add_setting (connection, NM_SETTING (s_con)); @@ -164,12 +187,12 @@ import (NMVpnPluginUiInterface *iface, const char *path, GError **error) } static gboolean -export (NMVpnPluginUiInterface *iface, +export (NMVpnEditorPlugin *iface, const char *path, NMConnection *connection, GError **error) { - NMSettingVPN *s_vpn; + NMSettingVpn *s_vpn; const char *value; const char *topdomain = NULL; const char *nameserver = NULL; @@ -225,48 +248,11 @@ done: return success; } -GQuark -iodine_plugin_ui_error_quark (void) -{ - static GQuark error_quark = 0; - - if (G_UNLIKELY (error_quark == 0)) - error_quark = g_quark_from_static_string ("iodine-plugin-ui-error-quark"); - - return error_quark; -} - -/* This should really be standard. */ -#define ENUM_ENTRY(NAME, DESC) { NAME, "" #NAME "", DESC } - -GType -iodine_plugin_ui_error_get_type (void) -{ - static GType etype = 0; - - if (etype == 0) { - static const GEnumValue values[] = { - /* Unknown error. */ - ENUM_ENTRY (IODINE_PLUGIN_UI_ERROR_UNKNOWN, - "UnknownError"), - /* The specified property was invalid. */ - ENUM_ENTRY (IODINE_PLUGIN_UI_ERROR_INVALID_PROPERTY, - "InvalidProperty"), - /* The specified property was missing and is required. */ - ENUM_ENTRY (IODINE_PLUGIN_UI_ERROR_MISSING_PROPERTY, - "MissingProperty"), - { 0, 0, 0 } - }; - etype = g_enum_register_static ("IodinePluginUiError", values); - } - return etype; -} - static gboolean -check_validity (IodinePluginUiWidget *self, GError **error) +check_validity (IodineEditor *self, GError **error) { - IodinePluginUiWidgetPrivate *priv = \ - IODINE_PLUGIN_UI_WIDGET_GET_PRIVATE (self); + IodineEditorPrivate *priv = \ + IODINE_EDITOR_GET_PRIVATE (self); GtkWidget *widget; const char *str; @@ -274,8 +260,8 @@ check_validity (IodinePluginUiWidget *self, GError **error) str = gtk_entry_get_text (GTK_ENTRY (widget)); if (!str || !strlen (str)) { g_set_error (error, - IODINE_PLUGIN_UI_ERROR, - IODINE_PLUGIN_UI_ERROR_INVALID_PROPERTY, + IODINE_EDITOR_PLUGIN_ERROR, + IODINE_EDITOR_PLUGIN_ERROR_INVALID_PROPERTY, NM_IODINE_KEY_TOPDOMAIN); return FALSE; } @@ -286,17 +272,17 @@ check_validity (IodinePluginUiWidget *self, GError **error) static void stuff_changed_cb (GtkWidget *widget, gpointer user_data) { - g_signal_emit_by_name (IODINE_PLUGIN_UI_WIDGET (user_data), "changed"); + g_signal_emit_by_name (IODINE_EDITOR (user_data), "changed"); } static void -setup_password_widget (IodinePluginUiWidget *self, +setup_password_widget (IodineEditor *self, const char *entry_name, - NMSettingVPN *s_vpn, + NMSettingVpn *s_vpn, const char *secret_name) { - IodinePluginUiWidgetPrivate *priv = \ - IODINE_PLUGIN_UI_WIDGET_GET_PRIVATE (self); + IodineEditorPrivate *priv = \ + IODINE_EDITOR_GET_PRIVATE (self); NMSettingSecretFlags secret_flags = NM_SETTING_SECRET_FLAG_NONE; GtkWidget *widget; @@ -329,9 +315,9 @@ setup_password_widget (IodinePluginUiWidget *self, } static void -show_toggled_cb (GtkCheckButton *button, IodinePluginUiWidget *self) +show_toggled_cb (GtkCheckButton *button, IodineEditor *self) { - IodinePluginUiWidgetPrivate *priv = IODINE_PLUGIN_UI_WIDGET_GET_PRIVATE (self); + IodineEditorPrivate *priv = IODINE_EDITOR_GET_PRIVATE (self); GtkWidget *widget; gboolean visible; @@ -345,8 +331,8 @@ show_toggled_cb (GtkCheckButton *button, IodinePluginUiWidget *self) static void pw_type_combo_changed_cb (GtkWidget *combo, gpointer user_data) { - IodinePluginUiWidget *self = IODINE_PLUGIN_UI_WIDGET (user_data); - IodinePluginUiWidgetPrivate *priv = IODINE_PLUGIN_UI_WIDGET_GET_PRIVATE (self); + IodineEditor *self = IODINE_EDITOR (user_data); + IodineEditorPrivate *priv = IODINE_EDITOR_GET_PRIVATE (self); GtkWidget *entry; entry = GTK_WIDGET (gtk_builder_get_object (priv->builder, "password_entry")); @@ -370,13 +356,13 @@ pw_type_combo_changed_cb (GtkWidget *combo, gpointer user_data) } static void -init_one_pw_combo (IodinePluginUiWidget *self, - NMSettingVPN *s_vpn, +init_one_pw_combo (IodineEditor *self, + NMSettingVpn *s_vpn, const char *combo_name, const char *secret_key, const char *entry_name) { - IodinePluginUiWidgetPrivate *priv = IODINE_PLUGIN_UI_WIDGET_GET_PRIVATE (self); + IodineEditorPrivate *priv = IODINE_EDITOR_GET_PRIVATE (self); int active = -1; GtkWidget *widget; GtkListStore *store; @@ -425,12 +411,12 @@ init_one_pw_combo (IodinePluginUiWidget *self, } static gboolean -init_plugin_ui (IodinePluginUiWidget *self, +init_editor_plugin (IodineEditor *self, NMConnection *connection, GError **error) { - IodinePluginUiWidgetPrivate *priv = IODINE_PLUGIN_UI_WIDGET_GET_PRIVATE (self); - NMSettingVPN *s_vpn; + IodineEditorPrivate *priv = IODINE_EDITOR_GET_PRIVATE (self); + NMSettingVpn *s_vpn; GtkWidget *widget; const char *value; @@ -495,16 +481,16 @@ init_plugin_ui (IodinePluginUiWidget *self, } static GObject * -get_widget (NMVpnPluginUiWidgetInterface *iface) +get_widget (NMVpnEditor *iface) { - IodinePluginUiWidget *self = IODINE_PLUGIN_UI_WIDGET (iface); - IodinePluginUiWidgetPrivate *priv = IODINE_PLUGIN_UI_WIDGET_GET_PRIVATE (self); + IodineEditor *self = IODINE_EDITOR (iface); + IodineEditorPrivate *priv = IODINE_EDITOR_GET_PRIVATE (self); return G_OBJECT (priv->widget); } static void -save_password_and_flags (NMSettingVPN *s_vpn, +save_password_and_flags (NMSettingVpn *s_vpn, GtkBuilder *builder, const char *entry_name, const char *combo_name, @@ -542,13 +528,13 @@ save_password_and_flags (NMSettingVPN *s_vpn, } static gboolean -update_connection (NMVpnPluginUiWidgetInterface *iface, +update_connection (NMVpnEditor *iface, NMConnection *connection, GError **error) { - IodinePluginUiWidget *self = IODINE_PLUGIN_UI_WIDGET (iface); - IodinePluginUiWidgetPrivate *priv = IODINE_PLUGIN_UI_WIDGET_GET_PRIVATE (self); - NMSettingVPN *s_vpn; + IodineEditor *self = IODINE_EDITOR (iface); + IodineEditorPrivate *priv = IODINE_EDITOR_GET_PRIVATE (self); + NMSettingVpn *s_vpn; GtkWidget *widget; char *str; @@ -589,26 +575,25 @@ update_connection (NMVpnPluginUiWidgetInterface *iface, return TRUE; } -static NMVpnPluginUiWidgetInterface * -nm_vpn_plugin_ui_widget_interface_new (NMConnection *connection, GError **error) +static NMVpnEditor * +nm_vpn_editor_interface_new (NMConnection *connection, GError **error) { - NMVpnPluginUiWidgetInterface *object; - IodinePluginUiWidgetPrivate *priv; + NMVpnEditor *object; + IodineEditorPrivate *priv; char *ui_file; if (error) g_return_val_if_fail (*error == NULL, NULL); - object = NM_VPN_PLUGIN_UI_WIDGET_INTERFACE \ - (g_object_new (IODINE_TYPE_PLUGIN_UI_WIDGET, NULL)); + object = g_object_new (IODINE_TYPE_EDITOR, NULL); if (!object) { - g_set_error (error, IODINE_PLUGIN_UI_ERROR, 0, + g_set_error (error, IODINE_EDITOR_PLUGIN_ERROR, 0, "could not create iodine object"); return NULL; } - priv = IODINE_PLUGIN_UI_WIDGET_GET_PRIVATE (object); + priv = IODINE_EDITOR_GET_PRIVATE (object); ui_file = g_strdup_printf ("%s/%s", UIDIR, "nm-iodine-dialog.ui"); priv->builder = gtk_builder_new (); @@ -617,7 +602,7 @@ nm_vpn_plugin_ui_widget_interface_new (NMConnection *connection, GError **error) g_warning ("Couldn't load builder file: %s", error && *error ? (*error)->message : "(unknown)"); g_clear_error (error); - g_set_error (error, IODINE_PLUGIN_UI_ERROR, 0, + g_set_error (error, IODINE_EDITOR_PLUGIN_ERROR, 0, "could not load required resources at %s", ui_file); g_free (ui_file); g_object_unref (object); @@ -627,14 +612,14 @@ nm_vpn_plugin_ui_widget_interface_new (NMConnection *connection, GError **error) priv->widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "iodine-vbox")); if (!priv->widget) { - g_set_error (error, IODINE_PLUGIN_UI_ERROR, 0, + g_set_error (error, IODINE_EDITOR_PLUGIN_ERROR, 0, "could not load UI widget"); g_object_unref (object); return NULL; } g_object_ref_sink (priv->widget); - if (!init_plugin_ui (IODINE_PLUGIN_UI_WIDGET (object), connection, error)) { + if (!init_editor_plugin (IODINE_EDITOR (object), connection, error)) { g_object_unref (object); return NULL; } @@ -645,9 +630,9 @@ nm_vpn_plugin_ui_widget_interface_new (NMConnection *connection, GError **error) static void dispose (GObject *object) { - IodinePluginUiWidget *plugin = IODINE_PLUGIN_UI_WIDGET (object); - IodinePluginUiWidgetPrivate *priv = \ - IODINE_PLUGIN_UI_WIDGET_GET_PRIVATE (plugin); + IodineEditor *plugin = IODINE_EDITOR (object); + IodineEditorPrivate *priv = \ + IODINE_EDITOR_GET_PRIVATE (plugin); if (priv->group) g_object_unref (priv->group); @@ -658,26 +643,26 @@ dispose (GObject *object) if (priv->builder) g_object_unref (priv->builder); - G_OBJECT_CLASS (iodine_plugin_ui_widget_parent_class)->dispose (object); + G_OBJECT_CLASS (iodine_editor_parent_class)->dispose (object); } static void -iodine_plugin_ui_widget_class_init (IodinePluginUiWidgetClass *req_class) +iodine_editor_class_init (IodineEditorClass *req_class) { GObjectClass *object_class = G_OBJECT_CLASS (req_class); - g_type_class_add_private (req_class, sizeof (IodinePluginUiWidgetPrivate)); + g_type_class_add_private (req_class, sizeof (IodineEditorPrivate)); object_class->dispose = dispose; } static void -iodine_plugin_ui_widget_init (IodinePluginUiWidget *plugin) +iodine_editor_init (IodineEditor *plugin) { } static void -iodine_plugin_ui_widget_interface_init (NMVpnPluginUiWidgetInterface *iface_class) +iodine_editor_interface_init (NMVpnEditorInterface *iface_class) { /* interface implementation */ iface_class->get_widget = get_widget; @@ -685,18 +670,18 @@ iodine_plugin_ui_widget_interface_init (NMVpnPluginUiWidgetInterface *iface_clas } static guint32 -get_capabilities (NMVpnPluginUiInterface *iface) +get_capabilities (NMVpnEditorPlugin *iface) { - return (NM_VPN_PLUGIN_UI_CAPABILITY_IMPORT | - NM_VPN_PLUGIN_UI_CAPABILITY_EXPORT); + return (NM_VPN_EDITOR_PLUGIN_CAPABILITY_IMPORT | + NM_VPN_EDITOR_PLUGIN_CAPABILITY_EXPORT); } -static NMVpnPluginUiWidgetInterface * -ui_factory (NMVpnPluginUiInterface *iface, +static NMVpnEditor * +get_editor (NMVpnEditorPlugin *iface, NMConnection *connection, GError **error) { - return nm_vpn_plugin_ui_widget_interface_new (connection, error); + return nm_vpn_editor_interface_new (connection, error); } static void @@ -704,13 +689,13 @@ get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { switch (prop_id) { - case NM_VPN_PLUGIN_UI_INTERFACE_PROP_NAME: + case PROP_NAME: g_value_set_string (value, IODINE_PLUGIN_NAME); break; - case NM_VPN_PLUGIN_UI_INTERFACE_PROP_DESC: + case PROP_DESC: g_value_set_string (value, IODINE_PLUGIN_DESC); break; - case NM_VPN_PLUGIN_UI_INTERFACE_PROP_SERVICE: + case PROP_SERVICE: g_value_set_string (value, IODINE_PLUGIN_SERVICE); break; default: @@ -720,45 +705,45 @@ get_property (GObject *object, guint prop_id, } static void -iodine_plugin_ui_class_init (IodinePluginUiClass *req_class) +iodine_editor_plugin_class_init (IodineEditorPluginClass *req_class) { GObjectClass *object_class = G_OBJECT_CLASS (req_class); object_class->get_property = get_property; g_object_class_override_property (object_class, - NM_VPN_PLUGIN_UI_INTERFACE_PROP_NAME, - NM_VPN_PLUGIN_UI_INTERFACE_NAME); + PROP_NAME, + NM_VPN_EDITOR_PLUGIN_NAME); g_object_class_override_property (object_class, - NM_VPN_PLUGIN_UI_INTERFACE_PROP_DESC, - NM_VPN_PLUGIN_UI_INTERFACE_DESC); + PROP_DESC, + NM_VPN_EDITOR_PLUGIN_DESCRIPTION); g_object_class_override_property (object_class, - NM_VPN_PLUGIN_UI_INTERFACE_PROP_SERVICE, - NM_VPN_PLUGIN_UI_INTERFACE_SERVICE); + PROP_SERVICE, + NM_VPN_EDITOR_PLUGIN_SERVICE); } static void -iodine_plugin_ui_init (IodinePluginUi *plugin) +iodine_editor_plugin_init (IodineEditorPlugin *plugin) { } static void -iodine_plugin_ui_interface_init (NMVpnPluginUiInterface *iface_class) +iodine_editor_plugin_interface_init (NMVpnEditorPluginInterface *iface_class) { /* interface implementation */ - iface_class->ui_factory = ui_factory; + iface_class->get_editor = get_editor; iface_class->get_capabilities = get_capabilities; iface_class->import_from_file = import; iface_class->export_to_file = export; } -G_MODULE_EXPORT NMVpnPluginUiInterface * -nm_vpn_plugin_ui_factory (GError **error) +G_MODULE_EXPORT NMVpnEditorPlugin * +nm_vpn_editor_plugin_factory (GError **error) { if (error) g_return_val_if_fail (*error == NULL, NULL); - return NM_VPN_PLUGIN_UI_INTERFACE (g_object_new (IODINE_TYPE_PLUGIN_UI, NULL)); + return g_object_new (IODINE_TYPE_EDITOR_PLUGIN, NULL); } diff --git a/properties/nm-iodine.h b/properties/nm-iodine.h index ee38678..4eeb892 100644 --- a/properties/nm-iodine.h +++ b/properties/nm-iodine.h @@ -24,60 +24,46 @@ #include <glib-object.h> -typedef enum -{ - IODINE_PLUGIN_UI_ERROR_UNKNOWN = 0, - IODINE_PLUGIN_UI_ERROR_INVALID_PROPERTY, - IODINE_PLUGIN_UI_ERROR_MISSING_PROPERTY -} IodinePluginUiError; +#define IODINE_TYPE_EDITOR_PLUGIN (iodine_editor_plugin_get_type ()) +#define IODINE_EDITOR_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IODINE_TYPE_EDITOR_PLUGIN, IodineEditorPlugin)) +#define IODINE_EDITOR_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IODINE_TYPE_EDITOR_PLUGIN, IodineEditorPluginClass)) +#define IODINE_IS_EDITOR_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IODINE_TYPE_EDITOR_PLUGIN)) +#define IODINE_IS_EDITOR_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IODINE_TYPE_EDITOR_PLUGIN)) +#define IODINE_EDITOR_PLUGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IODINE_TYPE_EDITOR_PLUGIN, IodineEditorPluginClass)) +typedef struct _IodineEditorPlugin IodineEditorPlugin; +typedef struct _IodineEditorPluginClass IodineEditorPluginClass; -GQuark iodine_plugin_ui_error_quark (void); -#define IODINE_PLUGIN_UI_ERROR iodine_plugin_ui_error_quark () - -#define IODINE_TYPE_PLUGIN_UI_ERROR (iodine_plugin_ui_error_get_type ()) -GType iodine_plugin_ui_error_get_type (void); - -#define IODINE_TYPE_PLUGIN_UI (iodine_plugin_ui_get_type ()) -#define IODINE_PLUGIN_UI(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IODINE_TYPE_PLUGIN_UI, IodinePluginUi)) -#define IODINE_PLUGIN_UI_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IODINE_TYPE_PLUGIN_UI, IodinePluginUiClass)) -#define IODINE_IS_PLUGIN_UI(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IODINE_TYPE_PLUGIN_UI)) -#define IODINE_IS_PLUGIN_UI_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IODINE_TYPE_PLUGIN_UI)) -#define IODINE_PLUGIN_UI_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IODINE_TYPE_PLUGIN_UI, IodinePluginUiClass)) - -typedef struct _IodinePluginUi IodinePluginUi; -typedef struct _IodinePluginUiClass IodinePluginUiClass; - -struct _IodinePluginUi { +struct _IodineEditorPlugin { GObject parent; }; -struct _IodinePluginUiClass { +struct _IodineEditorPluginClass { GObjectClass parent; }; -GType iodine_plugin_ui_get_type (void); +GType iodine_editor_plugin_get_type (void); -#define IODINE_TYPE_PLUGIN_UI_WIDGET (iodine_plugin_ui_widget_get_type ()) -#define IODINE_PLUGIN_UI_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IODINE_TYPE_PLUGIN_UI_WIDGET, IodinePluginUiWidget)) -#define IODINE_PLUGIN_UI_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IODINE_TYPE_PLUGIN_UI_WIDGET, IodinePluginUiWidgetClass)) -#define IODINE_IS_PLUGIN_UI_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IODINE_TYPE_PLUGIN_UI_WIDGET)) -#define IODINE_IS_PLUGIN_UI_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IODINE_TYPE_PLUGIN_UI_WIDGET)) -#define IODINE_PLUGIN_UI_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IODINE_TYPE_PLUGIN_UI_WIDGET, IodinePluginUiWidgetClass)) +#define IODINE_TYPE_EDITOR (iodine_editor_get_type ()) +#define IODINE_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IODINE_TYPE_EDITOR, IodineEditor)) +#define IODINE_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IODINE_TYPE_EDITOR, IodineEditorClass)) +#define IODINE_IS_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IODINE_TYPE_EDITOR)) +#define IODINE_IS_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IODINE_TYPE_EDITOR)) +#define IODINE_EDITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IODINE_TYPE_EDITOR, IodineEditorClass)) -typedef struct _IodinePluginUiWidget IodinePluginUiWidget; -typedef struct _IodinePluginUiWidgetClass IodinePluginUiWidgetClass; +typedef struct _IodineEditor IodineEditor; +typedef struct _IodineEditorClass IodineEditorClass; -struct _IodinePluginUiWidget { +struct _IodineEditor { GObject parent; }; -struct _IodinePluginUiWidgetClass { +struct _IodineEditorClass { GObjectClass parent; }; -GType iodine_plugin_ui_widget_get_type (void); +GType iodine_editor_get_type (void); #endif /* _NM_IODINE_H_ */ diff --git a/src/Makefile.am b/src/Makefile.am index 8ca103a..d412962 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,5 +1,5 @@ AM_CPPFLAGS = \ - $(NM_CFLAGS) \ + $(LIBNM_CFLAGS) \ -DG_DISABLE_DEPRECATED \ -DBINDIR=\"$(bindir)\" \ -DPREFIX=\""$(prefix)"\" \ @@ -19,6 +19,6 @@ nm_iodine_service_SOURCES = \ nm-iodine-service-defines.h nm_iodine_service_LDADD = \ - $(NM_LIBS) + $(LIBNM_LIBS) CLEANFILES = *~ diff --git a/src/nm-iodine-service.c b/src/nm-iodine-service.c index cd71980..89023d4 100644 --- a/src/nm-iodine-service.c +++ b/src/nm-iodine-service.c @@ -40,20 +40,22 @@ #include <pwd.h> #include <grp.h> #include <glib/gi18n.h> +#include <arpa/inet.h> -#include <nm-setting-vpn.h> +#include <NetworkManager.h> +#include <nm-vpn-service-plugin.h> #include "nm-iodine-service.h" #include "nm-utils.h" #define NM_IODINE_USER "nm-iodine" #define NM_IODINE_RUNDIR LOCALSTATEDIR "/run/" NM_IODINE_USER -G_DEFINE_TYPE (NMIodinePlugin, nm_iodine_plugin, NM_TYPE_VPN_PLUGIN) +G_DEFINE_TYPE (NMIodinePlugin, nm_iodine_plugin, NM_TYPE_VPN_SERVICE_PLUGIN) typedef struct { GPid pid; - NMVPNPluginFailure failure; - GHashTable *ip4config; + NMVpnPluginFailure failure; + GVariantBuilder ip4config; } NMIodinePluginPrivate; #define NM_IODINE_PLUGIN_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_IODINE_PLUGIN, NMIodinePluginPrivate)) @@ -166,7 +168,7 @@ validate_one_property (const char *key, const char *value, gpointer user_data) } static gboolean -nm_iodine_properties_validate (NMSettingVPN *s_vpn, GError **error) +nm_iodine_properties_validate (NMSettingVpn *s_vpn, GError **error) { ValidateInfo info = { &valid_properties[0], error, FALSE }; @@ -185,7 +187,7 @@ nm_iodine_properties_validate (NMSettingVPN *s_vpn, GError **error) static gboolean -nm_iodine_secrets_validate (NMSettingVPN *s_vpn, GError **error) +nm_iodine_secrets_validate (NMSettingVpn *s_vpn, GError **error) { ValidateInfo info = { &valid_secrets[0], error, FALSE }; @@ -202,11 +204,9 @@ nm_iodine_secrets_validate (NMSettingVPN *s_vpn, GError **error) return *error ? FALSE : TRUE; } -static GValue * -str_to_gvalue (const char *str, gboolean try_convert) +static GVariant * +str_to_gvariant (const char *str, gboolean try_convert) { - GValue *val; - /* Empty */ if (!str || strlen (str) < 1) return NULL; @@ -225,29 +225,11 @@ str_to_gvalue (const char *str, gboolean try_convert) return NULL; } - val = g_slice_new0 (GValue); - g_value_init (val, G_TYPE_STRING); - g_value_set_string (val, str); - return val; -} - -static GValue * -uint_to_gvalue (guint32 num) -{ - GValue *val; - - if (num == 0) - return NULL; - - val = g_slice_new0 (GValue); - g_value_init (val, G_TYPE_UINT); - g_value_set_uint (val, num); - - return val; + return g_variant_new_string (str); } -static GValue * -addr_to_gvalue (const char *str) +static GVariant * +addr4_to_gvariant (const char *str) { struct in_addr temp_addr; @@ -258,26 +240,16 @@ addr_to_gvalue (const char *str) if (inet_pton (AF_INET, str, &temp_addr) <= 0) return NULL; - return uint_to_gvalue (temp_addr.s_addr); -} - -static void -value_destroy (gpointer data) -{ - GValue *val = (GValue *) data; - - g_value_unset (val); - g_slice_free (GValue, val); + return g_variant_new_uint32 (temp_addr.s_addr); } static gint -iodine_parse_stderr_line (NMVPNPlugin *plugin, - const char* line, - GHashTable *ip4config) +iodine_parse_stderr_line (NMVpnServicePlugin *plugin, + const char* line) { NMIodinePluginPrivate *priv = NM_IODINE_PLUGIN_GET_PRIVATE (plugin); gchar **split = NULL; - GValue *val; + GVariant *val; gint len; gint ret = 1; @@ -295,60 +267,60 @@ iodine_parse_stderr_line (NMVPNPlugin *plugin, if (g_str_has_prefix(line, "Server tunnel IP is ")) { g_message("PTP address: %s", split[len-1]); - val = addr_to_gvalue (split[len-1]); + val = addr4_to_gvariant (split[len-1]); if (val) - g_hash_table_insert (ip4config, - NM_VPN_PLUGIN_IP4_CONFIG_PTP, - val); - val = addr_to_gvalue (split[len-1]); + g_variant_builder_add (&priv->ip4config, "{sv}", + NM_VPN_PLUGIN_IP4_CONFIG_PTP, + val); + val = addr4_to_gvariant (split[len-1]); if (val) - g_hash_table_insert (ip4config, - NM_VPN_PLUGIN_IP4_CONFIG_INT_GATEWAY, - val); + g_variant_builder_add (&priv->ip4config, "{sv}", + NM_VPN_PLUGIN_IP4_CONFIG_INT_GATEWAY, + val); } else if (g_str_has_prefix(line, "Sending DNS queries for ")) { g_message("External gw: %s", split[len-1]); - val = addr_to_gvalue (split[len-1]); + val = addr4_to_gvariant (split[len-1]); if (val) - g_hash_table_insert (ip4config, - NM_VPN_PLUGIN_IP4_CONFIG_EXT_GATEWAY, - val); + g_variant_builder_add (&priv->ip4config, "{sv}", + NM_VPN_PLUGIN_IP4_CONFIG_EXT_GATEWAY, + val); } else if (g_str_has_prefix(line, "Sending raw traffic directly to ")) { /* If the DNS server is directly reachable we need to set it as external gateway overwriting the above valus */ g_message("Overwrite ext. gw. address: %s", split[len-1]); - val = addr_to_gvalue (split[len-1]); + val = addr4_to_gvariant (split[len-1]); if (val) - g_hash_table_insert (ip4config, - NM_VPN_PLUGIN_IP4_CONFIG_EXT_GATEWAY, - val); + g_variant_builder_add (&priv->ip4config, "{sv}", + NM_VPN_PLUGIN_IP4_CONFIG_EXT_GATEWAY, + val); } else if (g_str_has_prefix(line, "Setting IP of dns")) { g_message("Address: %s", split[len-1]); - val = addr_to_gvalue (split[len-1]); + val = addr4_to_gvariant (split[len-1]); if (val) - g_hash_table_insert (ip4config, - NM_VPN_PLUGIN_IP4_CONFIG_ADDRESS, - val); + g_variant_builder_add (&priv->ip4config, "{sv}", + NM_VPN_PLUGIN_IP4_CONFIG_ADDRESS, + val); } else if (g_str_has_prefix(line, "Setting MTU of ")) { g_message("MTU: %s", split[len-1]); - val = addr_to_gvalue (split[len-1]); + val = addr4_to_gvariant (split[len-1]); if (val) - g_hash_table_insert (ip4config, - NM_VPN_PLUGIN_IP4_CONFIG_MTU, - val); + g_variant_builder_add (&priv->ip4config, "{sv}", + NM_VPN_PLUGIN_IP4_CONFIG_MTU, + val); } else if (g_str_has_prefix(line, "Opened dns")) { g_message("Interface: %s", split[len-1]); - val = str_to_gvalue (split[len-1], FALSE); + val = str_to_gvariant (split[len-1], FALSE); if (val) - g_hash_table_insert (ip4config, - NM_VPN_PLUGIN_IP4_CONFIG_TUNDEV, - val); + g_variant_builder_add (&priv->ip4config, "{sv}", + NM_VPN_PLUGIN_IP4_CONFIG_TUNDEV, + val); } else if (g_str_has_prefix(line, "Connection setup complete, " "transmitting data.")) { - val = uint_to_gvalue(27); - g_hash_table_insert (ip4config, - NM_VPN_PLUGIN_IP4_CONFIG_PREFIX, - val); + val = g_variant_new_uint32 (27); + g_variant_builder_add (&priv->ip4config, "{sv}", + NM_VPN_PLUGIN_IP4_CONFIG_PREFIX, + val); ret = 0; /* success */ } else g_message("%s", line); @@ -378,13 +350,11 @@ iodine_stderr_cb (GIOChannel *source, GIOCondition condition, gpointer plugin) if (l) line[l-1] = '\0'; - ret = iodine_parse_stderr_line(plugin, line, priv->ip4config); + ret = iodine_parse_stderr_line(plugin, line); if (!ret) { g_message("Parsing done, sending IP4 config"); - nm_vpn_plugin_set_ip4_config(plugin, priv->ip4config); - - g_hash_table_destroy (priv->ip4config); - priv->ip4config = NULL; + nm_vpn_service_plugin_set_ip4_config(plugin, + g_variant_builder_end (&priv->ip4config)); } g_free (line); return TRUE; @@ -416,12 +386,12 @@ iodine_watch_cb (GPid pid, gint status, gpointer user_data) priv->pid = 0; if (priv->failure >= 0) { - nm_vpn_plugin_failure (NM_VPN_PLUGIN (plugin), priv->failure); + nm_vpn_service_plugin_failure (NM_VPN_SERVICE_PLUGIN (plugin), priv->failure); } else if (error) { - nm_vpn_plugin_failure (NM_VPN_PLUGIN (plugin), NM_VPN_PLUGIN_FAILURE_CONNECT_FAILED); + nm_vpn_service_plugin_failure (NM_VPN_SERVICE_PLUGIN (plugin), NM_VPN_PLUGIN_FAILURE_CONNECT_FAILED); + } else { + nm_vpn_service_plugin_disconnect (NM_VPN_SERVICE_PLUGIN (plugin), NULL); } - - nm_vpn_plugin_set_state (NM_VPN_PLUGIN (plugin), NM_VPN_SERVICE_STATE_STOPPED); } static gboolean @@ -432,7 +402,7 @@ has_user(const char* user) static void -send_password(gint fd, NMSettingVPN *s_vpn) +send_password(gint fd, NMSettingVpn *s_vpn) { const char *passwd; ssize_t ret; @@ -453,7 +423,7 @@ send_password(gint fd, NMSettingVPN *s_vpn) static gint nm_iodine_start_iodine_binary (NMIodinePlugin *plugin, - NMSettingVPN *s_vpn, + NMSettingVpn *s_vpn, GError **error) { GPid pid; @@ -548,11 +518,11 @@ nm_iodine_start_iodine_binary (NMIodinePlugin *plugin, } static gboolean -real_connect (NMVPNPlugin *plugin, - NMConnection *connection, - GError **error) +real_connect (NMVpnServicePlugin *plugin, + NMConnection *connection, + GError **error) { - NMSettingVPN *s_vpn; + NMSettingVpn *s_vpn; gint ret = -1; s_vpn = nm_connection_get_setting_vpn (connection); @@ -572,21 +542,21 @@ real_connect (NMVPNPlugin *plugin, } static gboolean -real_need_secrets (NMVPNPlugin *plugin, - NMConnection *connection, - char **setting_name, - GError **error) +real_need_secrets (NMVpnServicePlugin *plugin, + NMConnection *connection, + const char **setting_name, + GError **error) { - NMSettingVPN *s_vpn; + NMSettingVpn *s_vpn; - g_return_val_if_fail (NM_IS_VPN_PLUGIN (plugin), FALSE); + g_return_val_if_fail (NM_IS_VPN_SERVICE_PLUGIN (plugin), FALSE); g_return_val_if_fail (NM_IS_CONNECTION (connection), FALSE); s_vpn = nm_connection_get_setting_vpn (connection); if (!s_vpn) { g_set_error (error, NM_VPN_PLUGIN_ERROR, - NM_VPN_PLUGIN_ERROR_CONNECTION_INVALID, + NM_VPN_PLUGIN_ERROR_INVALID_CONNECTION, "%s", "Could not process the request because the VPN " "connection settings were invalid."); @@ -613,7 +583,7 @@ ensure_killed (gpointer data) } static gboolean -real_disconnect (NMVPNPlugin *plugin, GError **err) +real_disconnect (NMVpnServicePlugin *plugin, GError **err) { NMIodinePluginPrivate *priv = NM_IODINE_PLUGIN_GET_PRIVATE (plugin); @@ -635,10 +605,7 @@ nm_iodine_plugin_init (NMIodinePlugin *plugin) { NMIodinePluginPrivate *priv = NM_IODINE_PLUGIN_GET_PRIVATE (plugin); - priv->ip4config = g_hash_table_new_full (g_str_hash, - g_str_equal, - NULL, - value_destroy); + g_variant_builder_init (&priv->ip4config, G_VARIANT_TYPE_VARDICT); priv->failure = -1; } @@ -646,7 +613,7 @@ static void nm_iodine_plugin_class_init (NMIodinePluginClass *iodine_class) { GObjectClass *object_class = G_OBJECT_CLASS (iodine_class); - NMVPNPluginClass *parent_class = NM_VPN_PLUGIN_CLASS (iodine_class); + NMVpnServicePluginClass *parent_class = NM_VPN_SERVICE_PLUGIN_CLASS (iodine_class); g_type_class_add_private (object_class, sizeof (NMIodinePluginPrivate)); @@ -659,10 +626,20 @@ nm_iodine_plugin_class_init (NMIodinePluginClass *iodine_class) NMIodinePlugin * nm_iodine_plugin_new (void) { - return (NMIodinePlugin *) g_object_new (NM_TYPE_IODINE_PLUGIN, - NM_VPN_PLUGIN_DBUS_SERVICE_NAME, - NM_DBUS_SERVICE_IODINE, - NULL); + NMIodinePlugin *plugin; + GError *error = NULL; + + plugin = (NMIodinePlugin *) g_initable_new (NM_TYPE_IODINE_PLUGIN, NULL, &error, + NM_VPN_SERVICE_PLUGIN_DBUS_SERVICE_NAME, + NM_DBUS_SERVICE_IODINE, + NULL); + + if (!plugin) { + g_warning ("Failed to initialize a plugin instance: %s", error->message); + g_error_free (error); + } + + return plugin; } static void diff --git a/src/nm-iodine-service.h b/src/nm-iodine-service.h index 4a5604c..1102cc0 100644 --- a/src/nm-iodine-service.h +++ b/src/nm-iodine-service.h @@ -22,7 +22,8 @@ #define NM_IODINE_PLUGIN_H #include <glib.h> -#include <nm-vpn-plugin.h> +#include <NetworkManager.h> +#include <nm-vpn-service-plugin.h> #include "nm-iodine-service-defines.h" @@ -34,11 +35,11 @@ #define NM_IODINE_PLUGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_IODINE_PLUGIN, NMIodinePluginClass)) typedef struct { - NMVPNPlugin parent; + NMVpnServicePlugin parent; } NMIodinePlugin; typedef struct { - NMVPNPluginClass parent; + NMVpnServicePluginClass parent; } NMIodinePluginClass; GType nm_iodine_plugin_get_type (void); |