diff -Nru network-manager-ssh-0.9.4/appdata/network-manager-ssh.appdata.xml.in network-manager-ssh-1.2.0/appdata/network-manager-ssh.appdata.xml.in --- network-manager-ssh-0.9.4/appdata/network-manager-ssh.appdata.xml.in 1970-01-01 00:00:00.000000000 +0000 +++ network-manager-ssh-1.2.0/appdata/network-manager-ssh.appdata.xml.in 2016-04-23 14:06:26.000000000 +0000 @@ -0,0 +1,42 @@ + + + + network-manager-ssh + GPL-2.0+ + CC0-1.0 + nm-connection-editor.desktop + gnome-control-center.desktop + <_name>SSH VPN Tunnel + <_summary>SSH VPN integration for NetworkManager + + + network + manager + NetworkManager + connection + VPN + SSH + + + + <_p>Support for tunnelling IP traffic via SSH connections. + <_p>This is useful to establish a VPN using tunnel capabilities of OpenSSH. + + + + + https://raw.githubusercontent.com/danfruehauf/NetworkManager-ssh/master/appdata/ssh.png + + + + <_caption>The advanced options dialog + https://raw.githubusercontent.com/danfruehauf/NetworkManager-ssh/master/appdata/ssh-advanced.png + + + + https://github.com/danfruehauf/NetworkManager-ssh + https://github.com/danfruehauf/NetworkManager-ssh/issues + malkodan@gmail.com + NetworkManager-ssh + <_developer_name>Dan Fruehauf + Binary files /tmp/tmpeB1RKS/u8HTgHL1M2/network-manager-ssh-0.9.4/appdata/ssh-advanced.png and /tmp/tmpeB1RKS/o8SMWaAFlj/network-manager-ssh-1.2.0/appdata/ssh-advanced.png differ Binary files /tmp/tmpeB1RKS/u8HTgHL1M2/network-manager-ssh-0.9.4/appdata/ssh.png and /tmp/tmpeB1RKS/o8SMWaAFlj/network-manager-ssh-1.2.0/appdata/ssh.png differ diff -Nru network-manager-ssh-0.9.4/auth-dialog/main.c network-manager-ssh-1.2.0/auth-dialog/main.c --- network-manager-ssh-0.9.4/auth-dialog/main.c 2015-07-13 12:31:26.000000000 +0000 +++ network-manager-ssh-1.2.0/auth-dialog/main.c 2016-04-23 14:06:26.000000000 +0000 @@ -32,11 +32,11 @@ #include -#include -#include -#include +#include +#include +#include -#include "src/nm-ssh-service.h" +#include "src/nm-ssh-service-defines.h" #define KEYRING_UUID_TAG "connection-uuid" #define KEYRING_SN_TAG "setting-name" @@ -273,7 +273,7 @@ return 1; } - 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; @@ -290,7 +290,7 @@ /* Depending on auth type see if we need a password */ if (strncmp (auth_type, NM_SSH_AUTH_TYPE_PASSWORD, strlen(NM_SSH_AUTH_TYPE_PASSWORD)) == 0) { /* FIXME one day... */ - nm_vpn_plugin_utils_get_secret_flags (secrets, NM_SSH_KEY_PASSWORD, &pw_flags); + nm_vpn_service_plugin_get_secret_flags (secrets, NM_SSH_KEY_PASSWORD, &pw_flags); password_key = NM_SSH_KEY_PASSWORD; if (!get_secrets (vpn_uuid, vpn_name, retry, allow_interaction, external_ui_mode, g_hash_table_lookup (secrets, NM_SSH_KEY_PASSWORD), diff -Nru network-manager-ssh-0.9.4/auth-dialog/Makefile.am network-manager-ssh-1.2.0/auth-dialog/Makefile.am --- network-manager-ssh-0.9.4/auth-dialog/Makefile.am 2015-07-13 12:31:26.000000000 +0000 +++ network-manager-ssh-1.2.0/auth-dialog/Makefile.am 2016-04-23 14:06:26.000000000 +0000 @@ -2,26 +2,22 @@ nm_ssh_auth_dialog_CPPFLAGS = \ $(GTK_CFLAGS) \ - $(NM_CFLAGS) \ $(LIBSECRET_CFLAGS) \ - $(NMGTK_CFLAGS) \ + $(LIBNM_CFLAGS) \ + $(LIBNMA_CFLAGS) \ -I$(top_srcdir)/ -DICONDIR=\""$(datadir)/pixmaps"\" \ -DUIDIR=\""$(uidir)"\" \ -DBINDIR=\""$(bindir)"\" \ - -DG_DISABLE_DEPRECATED \ - -DGDK_DISABLE_DEPRECATED \ - -DGNOME_DISABLE_DEPRECATED \ - -DGNOMELOCALEDIR=\"$(datadir)/locale\" \ - -DVERSION=\"$(VERSION)\" + -DGNOMELOCALEDIR=\"$(datadir)/locale\" nm_ssh_auth_dialog_SOURCES = \ main.c nm_ssh_auth_dialog_LDADD = \ $(GTK_LIBS) \ - $(NM_LIBS) \ $(LIBSECRET_LIBS) \ - $(NMGTK_LIBS) + $(LIBNM_LIBS) \ + $(LIBNMA_LIBS) CLEANFILES = *~ diff -Nru network-manager-ssh-0.9.4/configure.ac network-manager-ssh-1.2.0/configure.ac --- network-manager-ssh-0.9.4/configure.ac 2015-07-13 12:31:26.000000000 +0000 +++ network-manager-ssh-1.2.0/configure.ac 2016-04-23 14:06:26.000000000 +0000 @@ -1,7 +1,7 @@ AC_PREREQ(2.52) -AC_INIT(NetworkManager-ssh, 0.9.4, malkodan@gmail.com, NetworkManager-ssh) -AM_INIT_AUTOMAKE([1.9 subdir-objects tar-ustar no-dist-gzip dist-bzip2]) +AC_INIT(NetworkManager-ssh, 1.2.0, malkodan@gmail.com, NetworkManager-ssh) +AM_INIT_AUTOMAKE([1.9 subdir-objects tar-ustar no-dist-gzip dist-xz]) AM_MAINTAINER_MODE AC_CONFIG_MACRO_DIR([m4]) @@ -49,6 +49,9 @@ dnl AC_ARG_WITH(gnome, AS_HELP_STRING([--without-gnome], [Build NetworkManager-ssh without GNOME support, e.g. vpn service only])) AM_CONDITIONAL(WITH_GNOME, test x"$with_gnome" != xno) +AC_ARG_WITH(libnm-glib, AS_HELP_STRING([--without-libnm-glib], [Build NetworkManager-ssh without libnm-glib comatibility])) +AM_CONDITIONAL(WITH_LIBNM_GLIB, test x"$with_libnm_glib" != xno) +AC_ARG_ENABLE(absolute-paths, AS_HELP_STRING([--enable-absolute-paths], [Use absolute paths to in .name files. Useful for development. (default is no)])) GETTEXT_PACKAGE=NetworkManager-ssh AC_SUBST(GETTEXT_PACKAGE) @@ -61,24 +64,37 @@ AC_SUBST(GIO_CFLAGS) AC_SUBST(GIO_LIBS) -PKG_CHECK_MODULES(NM, - NetworkManager >= 0.9.10 - libnm-util >= 0.9.10 - libnm-glib >= 0.9.10 - libnm-glib-vpn >= 0.9.10) -NM_CFLAGS="$NM_CFLAGS -DNM_VERSION_MIN_REQUIRED=NM_VERSION_0_9_10" -NM_CFLAGS="$NM_CFLAGS -DNM_VERSION_MAX_ALLOWED=NM_VERSION_1_1_0" - if test x"$with_gnome" != xno; then PKG_CHECK_MODULES(GTK, gtk+-3.0 >= 3.4) GTK_CFLAGS="$GTK_CFLAGS -DGDK_VERSION_MIN_REQUIRED=GDK_VERSION_3_4" - PKG_CHECK_MODULES(NMGTK, libnm-gtk >= 0.9.10) + 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 >= 1.1.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) + LIBNM_GLIB_CFLAGS="$LIBNM_GLIB_CFLAGS -DNM_VERSION_MIN_REQUIRED=NM_VERSION_1_2" + LIBNM_GLIB_CFLAGS="$LIBNM_GLIB_CFLAGS -DNM_VERSION_MAX_ALLOWED=NM_VERSION_1_2" + fi fi +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" + +NM_VPN_SERVICE_DIR=`$PKG_CONFIG pkg-config --define-variable prefix='\${prefix}' --variable vpnservicedir libnm` +AC_SUBST(NM_VPN_SERVICE_DIR) + NM_COMPILER_WARNINGS +test x"$enable_absolute_paths" = x"yes" && NM_PLUGIN_DIR='$(libdir)/NetworkManager/' +AC_SUBST(NM_PLUGIN_DIR) + dnl dnl Constants dnl ifconfig should usually be at /sbin/ifconfig diff -Nru network-manager-ssh-0.9.4/debian/changelog network-manager-ssh-1.2.0/debian/changelog --- network-manager-ssh-0.9.4/debian/changelog 2015-12-08 12:35:37.000000000 +0000 +++ network-manager-ssh-1.2.0/debian/changelog 2016-05-27 10:38:22.000000000 +0000 @@ -1,3 +1,9 @@ +network-manager-ssh (1.2.0-0ubuntu0.16.04.1) xenial; urgency=medium + + * SRU to 1.2.0 release to match nm update (LP: #1576726) + + -- Aron Xu Fri, 27 May 2016 18:37:39 +0800 + network-manager-ssh (0.9.4-1) unstable; urgency=low * Initial release. (Closes: #725396) diff -Nru network-manager-ssh-0.9.4/debian/control network-manager-ssh-1.2.0/debian/control --- network-manager-ssh-0.9.4/debian/control 2015-12-08 12:35:37.000000000 +0000 +++ network-manager-ssh-1.2.0/debian/control 2016-06-07 09:32:06.000000000 +0000 @@ -1,7 +1,8 @@ Source: network-manager-ssh Section: net Priority: optional -Maintainer: Lennart Weller +Maintainer: Ubuntu Developers +XSBC-Original-Maintainer: Lennart Weller Build-Depends: debhelper (>= 9), dh-autoreconf, dpkg-dev (>= 1.16.1~), @@ -10,12 +11,13 @@ libglib2.0-dev, libgnome-keyring-dev, libgtk-3-dev, - libnm-glib-dev (>= 0.9.4), - libnm-glib-vpn-dev (>= 0.9.4), + libnm-glib-dev (>= 1.1.0), + libnm-glib-vpn-dev (>= 1.1.0), libnm-gtk-dev, - libnm-util-dev (>= 0.9.4), + libnm-util-dev (>= 1.1.0), + libnma-dev (>= 1.1.0), libsecret-1-dev, - network-manager-dev (>= 0.9.4) + network-manager-dev (>= 1.1.0) Standards-Version: 3.9.6 Vcs-Git: https://git.ring0.de/lhw/network-manager-ssh.git Vcs-Browser: https://git.ring0.de/lhw/network-manager-ssh diff -Nru network-manager-ssh-0.9.4/.gitignore network-manager-ssh-1.2.0/.gitignore --- network-manager-ssh-0.9.4/.gitignore 2015-07-13 12:31:26.000000000 +0000 +++ network-manager-ssh-1.2.0/.gitignore 2016-04-23 14:06:26.000000000 +0000 @@ -21,13 +21,17 @@ Makefile.in aclocal.m4 +po/NetworkManager-ssh.pot compile config.* configure depcomp install-sh libtool +network-manager-ssh.appdata.xml ltmain.sh missing nm-ssh-service.name stamp-h1 + +/NetworkManager-ssh-*.tar* diff -Nru network-manager-ssh-0.9.4/Makefile.am network-manager-ssh-1.2.0/Makefile.am --- network-manager-ssh-0.9.4/Makefile.am 2015-07-13 12:31:26.000000000 +0000 +++ network-manager-ssh-1.2.0/Makefile.am 2016-04-23 14:06:26.000000000 +0000 @@ -9,9 +9,24 @@ dbusservicedir = $(sysconfdir)/dbus-1/system.d dbusservice_DATA = nm-ssh-service.conf -nmvpnservicedir = $(sysconfdir)/NetworkManager/VPN +nmvpnservicedir = $(NM_VPN_SERVICE_DIR) nmvpnservice_DATA = nm-ssh-service.name +if WITH_LIBNM_GLIB +# Install a file with full path to plugins for an old gnome-shell +# https://bugzilla.gnome.org/show_bug.cgi?id=693590 +install-data-hook: + mkdir -p $(DESTDIR)$(sysconfdir)/NetworkManager/VPN + sed -e "1s|^|# This file is obsoleted by a file in $(NM_VPN_SERVICE_DIR)\n\n|" \ + -e 's|[@]LIBEXECDIR[@]|$(libexecdir)|g' \ + -e 's|[@]PLUGINDIR[@]|$(libdir)/NetworkManager|g' \ + <$(srcdir)/nm-ssh-service.name.in \ + >$(DESTDIR)$(sysconfdir)/NetworkManager/VPN/nm-ssh-service.name + +uninstall-hook: + rm -f $(DESTDIR)$(sysconfdir)/NetworkManager/VPN/nm-ssh-service.name +endif + desktopfile = nm-ssh.desktop.in iconfile = gnome-mime-application-x-ssh-settings.png @@ -26,8 +41,15 @@ #icon_DATA = $(iconfile) endif +appdatadir = $(datadir)/appdata +appdata_DATA = $(appdata_in_files:.xml.in=.xml) +appdata_in_files = appdata/network-manager-ssh.appdata.xml.in +@INTLTOOL_XML_RULE@ + nm-ssh-service.name: $(srcdir)/nm-ssh-service.name.in - sed -e 's|[@]LIBEXECDIR[@]|$(libexecdir)|g' $< >$@ + sed -e 's|[@]LIBEXECDIR[@]|$(libexecdir)|g' \ + -e 's|[@]PLUGINDIR[@]/|@NM_PLUGIN_DIR@|g' \ + $< >$@ DISTCHECK_CONFIGURE_FLAGS = --with-tests=yes @@ -35,11 +57,16 @@ $(dbusservice_DATA) \ $(desktopfile) \ $(iconfile) \ + $(appdata_in_files) \ + $(appdata_DATA) \ intltool-extract.in \ intltool-merge.in \ intltool-update.in -CLEANFILES = $(nmvpnservice_DATA) $(desktop_DATA) *~ +CLEANFILES = $(nmvpnservice_DATA) \ + $(desktop_DATA) \ + $(appdata_DATA) + DISTCLEANFILES = intltool-extract intltool-merge intltool-update ACLOCAL_AMFLAGS = -I m4 diff -Nru network-manager-ssh-0.9.4/NetworkManager-ssh.spec network-manager-ssh-1.2.0/NetworkManager-ssh.spec --- network-manager-ssh-0.9.4/NetworkManager-ssh.spec 2015-07-13 12:31:26.000000000 +0000 +++ network-manager-ssh-1.2.0/NetworkManager-ssh.spec 2016-04-23 14:06:26.000000000 +0000 @@ -13,7 +13,6 @@ BuildRequires: autoconf BuildRequires: gtk3-devel -BuildRequires: dbus-devel BuildRequires: NetworkManager-devel BuildRequires: NetworkManager-glib-devel BuildRequires: glib2-devel diff -Nru network-manager-ssh-0.9.4/nm-ssh-service.name.in network-manager-ssh-1.2.0/nm-ssh-service.name.in --- network-manager-ssh-0.9.4/nm-ssh-service.name.in 2015-07-13 12:31:26.000000000 +0000 +++ network-manager-ssh-1.2.0/nm-ssh-service.name.in 2016-04-23 14:06:26.000000000 +0000 @@ -3,7 +3,10 @@ service=org.freedesktop.NetworkManager.ssh program=@LIBEXECDIR@/nm-ssh-service +[libnm] +plugin=@PLUGINDIR@/libnm-vpn-plugin-ssh.so + [GNOME] auth-dialog=@LIBEXECDIR@/nm-ssh-auth-dialog -properties=libnm-ssh-properties +properties=@PLUGINDIR@/libnm-ssh-properties diff -Nru network-manager-ssh-0.9.4/po/POTFILES.in network-manager-ssh-1.2.0/po/POTFILES.in --- network-manager-ssh-0.9.4/po/POTFILES.in 2015-07-13 12:31:26.000000000 +0000 +++ network-manager-ssh-1.2.0/po/POTFILES.in 2016-04-23 14:06:26.000000000 +0000 @@ -1,5 +1,6 @@ # List of source files containing translatable strings. # Please keep this file sorted alphabetically. +appdata/network-manager-ssh.appdata.xml.in nm-ssh.desktop.in auth-dialog/main.c properties/advanced-dialog.c diff -Nru network-manager-ssh-0.9.4/properties/advanced-dialog.c network-manager-ssh-1.2.0/properties/advanced-dialog.c --- network-manager-ssh-0.9.4/properties/advanced-dialog.c 2015-07-13 12:31:26.000000000 +0000 +++ network-manager-ssh-1.2.0/properties/advanced-dialog.c 2016-04-23 14:06:26.000000000 +0000 @@ -33,12 +33,20 @@ #include #include + +#ifdef NM_SSH_OLD +#define NM_VPN_LIBNM_COMPAT #include #include +#else /* !NM_SSH_OLD */ + +#include +#endif + #include "advanced-dialog.h" #include "nm-ssh.h" -#include "src/nm-ssh-service.h" +#include "src/nm-ssh-service-defines.h" static const char *advanced_keys[] = { NM_SSH_KEY_PORT, @@ -70,11 +78,11 @@ GError **error) { GHashTable *hash; - NMSettingVPN *s_vpn; + NMSettingVpn *s_vpn; hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); - s_vpn = (NMSettingVPN *) nm_connection_get_setting (connection, NM_TYPE_SETTING_VPN); + s_vpn = (NMSettingVpn *) nm_connection_get_setting (connection, NM_TYPE_SETTING_VPN); nm_setting_vpn_foreach_data_item (s_vpn, copy_values, hash); return hash; diff -Nru network-manager-ssh-0.9.4/properties/Makefile.am network-manager-ssh-1.2.0/properties/Makefile.am --- network-manager-ssh-0.9.4/properties/Makefile.am 2015-07-13 12:31:26.000000000 +0000 +++ network-manager-ssh-1.2.0/properties/Makefile.am 2016-04-23 14:06:26.000000000 +0000 @@ -1,38 +1,54 @@ SUBDIRS = . plugindir = $(libdir)/NetworkManager -plugin_LTLIBRARIES = libnm-ssh-properties.la +plugin_LTLIBRARIES = libnm-vpn-plugin-ssh.la +if WITH_LIBNM_GLIB +plugin_LTLIBRARIES += libnm-ssh-properties.la +endif -libnm_ssh_properties_la_SOURCES = \ +libnm_vpn_plugin_ssh_la_SOURCES = \ nm-ssh.c \ nm-ssh.h \ advanced-dialog.c \ advanced-dialog.h +libnm_ssh_properties_la_SOURCES = \ + $(libnm_vpn_plugin_ssh_la_SOURCES) + uidir = $(datadir)/gnome-vpn-properties/ssh ui_DATA = nm-ssh-dialog.ui -libnm_ssh_properties_la_CFLAGS = \ +common_CFLAGS = \ $(GTK_CFLAGS) \ - $(NM_CFLAGS) \ $(GNOMEKEYRING_CFLAGS) \ - $(DISABLE_DEPRECATED) \ -I$(top_srcdir)/ \ -DICONDIR=\""$(datadir)/pixmaps"\" \ -DUIDIR=\""$(uidir)"\" \ - -DG_DISABLE_DEPRECATED \ - -DGDK_DISABLE_DEPRECATED \ - -DGNOME_DISABLE_DEPRECATED \ - -DGNOMELOCALEDIR=\"$(datadir)/locale\" \ - -DVERSION=\"$(VERSION)\" + -DGNOMELOCALEDIR=\"$(datadir)/locale\" + +libnm_vpn_plugin_ssh_la_CFLAGS = \ + $(common_CFLAGS) \ + $(LIBNM_CFLAGS) + +libnm_ssh_properties_la_CFLAGS = \ + -DNM_SSH_OLD \ + $(common_CFLAGS) \ + $(LIBNM_GLIB_CFLAGS) + +libnm_vpn_plugin_ssh_la_LIBADD = \ + $(GTK_LIBS) \ + $(LIBNM_LIBS) libnm_ssh_properties_la_LIBADD = \ $(GTK_LIBS) \ - $(NM_LIBS) + $(LIBNM_GLIB_LIBS) -libnm_ssh_properties_la_LDFLAGS = \ +libnm_vpn_plugin_ssh_la_LDFLAGS = \ -avoid-version +libnm_ssh_properties_la_LDFLAGS = \ + $(libnm_vpn_plugin_ssh_la_LDFLAGS) + CLEANFILES = *.bak *~ EXTRA_DIST = \ diff -Nru network-manager-ssh-0.9.4/properties/nm-ssh.c network-manager-ssh-1.2.0/properties/nm-ssh.c --- network-manager-ssh-0.9.4/properties/nm-ssh.c 2015-07-13 12:31:26.000000000 +0000 +++ network-manager-ssh-1.2.0/properties/nm-ssh.c 2016-04-23 14:06:26.000000000 +0000 @@ -37,12 +37,29 @@ #define NM_VPN_API_SUBJECT_TO_CHANGE +#ifdef NM_SSH_OLD +#define NM_VPN_LIBNM_COMPAT #include #include #include #include -#include "src/nm-ssh-service.h" +#define SSH_EDITOR_PLUGIN_ERROR NM_SETTING_VPN_ERROR +#define SSH_EDITOR_PLUGIN_ERROR_INVALID_PROPERTY NM_SETTING_VPN_ERROR_INVALID_PROPERTY +#define SSH_EDITOR_PLUGIN_ERROR_FAILED NM_SETTING_VPN_ERROR_UNKNOWN + +#define nm_simple_connection_new nm_connection_new + +#else /* !NM_SSH_OLD */ + +#include + +#define SSH_EDITOR_PLUGIN_ERROR NM_CONNECTION_ERROR +#define SSH_EDITOR_PLUGIN_ERROR_INVALID_PROPERTY NM_CONNECTION_ERROR_INVALID_PROPERTY +#define SSH_EDITOR_PLUGIN_ERROR_FAILED NM_CONNECTION_ERROR_FAILED +#endif + +#include "src/nm-ssh-service-defines.h" #include "nm-ssh.h" #include "advanced-dialog.h" @@ -91,21 +108,28 @@ /************** plugin class **************/ -static void ssh_plugin_ui_interface_init (NMVpnPluginUiInterface *iface_class); - -G_DEFINE_TYPE_EXTENDED (SshPluginUi, ssh_plugin_ui, G_TYPE_OBJECT, 0, - G_IMPLEMENT_INTERFACE (NM_TYPE_VPN_PLUGIN_UI_INTERFACE, - ssh_plugin_ui_interface_init)) +enum { + PROP_0, + PROP_NAME, + PROP_DESC, + PROP_SERVICE +}; + +static void ssh_editor_plugin_interface_init (NMVpnEditorPluginInterface *iface_class); + +G_DEFINE_TYPE_EXTENDED (SshEditorPlugin, ssh_editor_plugin, G_TYPE_OBJECT, 0, + G_IMPLEMENT_INTERFACE (NM_TYPE_VPN_EDITOR_PLUGIN, + ssh_editor_plugin_interface_init)) /************** UI widget class **************/ -static void ssh_plugin_ui_widget_interface_init (NMVpnPluginUiWidgetInterface *iface_class); +static void ssh_editor_interface_init (NMVpnEditorInterface *iface_class); -G_DEFINE_TYPE_EXTENDED (SshPluginUiWidget, ssh_plugin_ui_widget, G_TYPE_OBJECT, 0, - G_IMPLEMENT_INTERFACE (NM_TYPE_VPN_PLUGIN_UI_WIDGET_INTERFACE, - ssh_plugin_ui_widget_interface_init)) +G_DEFINE_TYPE_EXTENDED (SshEditor, ssh_editor, G_TYPE_OBJECT, 0, + G_IMPLEMENT_INTERFACE (NM_TYPE_VPN_EDITOR, + ssh_editor_interface_init)) -#define SSH_PLUGIN_UI_WIDGET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), SSH_TYPE_PLUGIN_UI_WIDGET, SshPluginUiWidgetPrivate)) +#define SSH_EDITOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), SSH_TYPE_EDITOR, SshEditorPrivate)) typedef struct { GtkBuilder *builder; @@ -115,57 +139,17 @@ gboolean window_added; GHashTable *advanced; gboolean new_connection; -} SshPluginUiWidgetPrivate; +} SshEditorPrivate; #define COL_AUTH_NAME 0 #define COL_AUTH_PAGE 1 #define COL_AUTH_TYPE 2 -GQuark -ssh_plugin_ui_error_quark (void) -{ - static GQuark error_quark = 0; - - if (G_UNLIKELY (error_quark == 0)) - error_quark = g_quark_from_static_string ("ssh-plugin-ui-error-quark"); - - return error_quark; -} - -/* This should really be standard. */ -#define ENUM_ENTRY(NAME, DESC) { NAME, "" #NAME "", DESC } - -GType -ssh_plugin_ui_error_get_type (void) -{ - static GType etype = 0; - - if (etype == 0) { - static const GEnumValue values[] = { - /* Unknown error. */ - ENUM_ENTRY (SSH_PLUGIN_UI_ERROR_UNKNOWN, "UnknownError"), - /* The connection was missing invalid. */ - ENUM_ENTRY (SSH_PLUGIN_UI_ERROR_INVALID_CONNECTION, "InvalidConnection"), - /* The specified property was invalid. */ - ENUM_ENTRY (SSH_PLUGIN_UI_ERROR_INVALID_PROPERTY, "InvalidProperty"), - /* The specified property was missing and is required. */ - ENUM_ENTRY (SSH_PLUGIN_UI_ERROR_MISSING_PROPERTY, "MissingProperty"), - /* The file to import could not be read. */ - ENUM_ENTRY (SSH_PLUGIN_UI_ERROR_FILE_NOT_READABLE, "FileNotReadable"), - /* The file to import could was not an SSH client file. */ - ENUM_ENTRY (SSH_PLUGIN_UI_ERROR_FILE_NOT_SSH, "FileNotSSH"), - { 0, 0, 0 } - }; - etype = g_enum_register_static ("SshPluginUiError", values); - } - return etype; -} - static gboolean -check_validity (SshPluginUiWidget *self, GError **error) +check_validity (SshEditor *self, GError **error) { - SshPluginUiWidgetPrivate *priv = SSH_PLUGIN_UI_WIDGET_GET_PRIVATE (self); + SshEditorPrivate *priv = SSH_EDITOR_GET_PRIVATE (self); GtkWidget *widget; const char *str; @@ -173,8 +157,8 @@ str = gtk_entry_get_text (GTK_ENTRY (widget)); if (!str || !strlen (str)) { g_set_error (error, - SSH_PLUGIN_UI_ERROR, - SSH_PLUGIN_UI_ERROR_INVALID_PROPERTY, + SSH_EDITOR_PLUGIN_ERROR, + SSH_EDITOR_PLUGIN_ERROR_INVALID_PROPERTY, NM_SSH_KEY_REMOTE); return FALSE; } @@ -183,8 +167,8 @@ str = gtk_entry_get_text (GTK_ENTRY (widget)); if (!str || !strlen (str)) { g_set_error (error, - SSH_PLUGIN_UI_ERROR, - SSH_PLUGIN_UI_ERROR_INVALID_PROPERTY, + SSH_EDITOR_PLUGIN_ERROR, + SSH_EDITOR_PLUGIN_ERROR_INVALID_PROPERTY, NM_SSH_KEY_REMOTE_IP); return FALSE; } @@ -193,8 +177,8 @@ str = gtk_entry_get_text (GTK_ENTRY (widget)); if (!str || !strlen (str)) { g_set_error (error, - SSH_PLUGIN_UI_ERROR, - SSH_PLUGIN_UI_ERROR_INVALID_PROPERTY, + SSH_EDITOR_PLUGIN_ERROR, + SSH_EDITOR_PLUGIN_ERROR_INVALID_PROPERTY, NM_SSH_KEY_LOCAL_IP); return FALSE; } @@ -203,8 +187,8 @@ str = gtk_entry_get_text (GTK_ENTRY (widget)); if (!str || !strlen (str)) { g_set_error (error, - SSH_PLUGIN_UI_ERROR, - SSH_PLUGIN_UI_ERROR_INVALID_PROPERTY, + SSH_EDITOR_PLUGIN_ERROR, + SSH_EDITOR_PLUGIN_ERROR_INVALID_PROPERTY, NM_SSH_KEY_NETMASK); return FALSE; } @@ -221,14 +205,14 @@ static void stuff_changed_cb (GtkWidget *widget, gpointer user_data) { - g_signal_emit_by_name (SSH_PLUGIN_UI_WIDGET (user_data), "changed"); + g_signal_emit_by_name (SSH_EDITOR (user_data), "changed"); } static void auth_combo_changed_cb (GtkWidget *combo, gpointer user_data) { - SshPluginUiWidget *self = SSH_PLUGIN_UI_WIDGET (user_data); - SshPluginUiWidgetPrivate *priv = SSH_PLUGIN_UI_WIDGET_GET_PRIVATE (self); + SshEditor *self = SSH_EDITOR (user_data); + SshEditorPrivate *priv = SSH_EDITOR_GET_PRIVATE (self); GtkWidget *auth_notebook; GtkWidget *show_password; GtkWidget *file_chooser; @@ -271,8 +255,8 @@ static void advanced_dialog_response_cb (GtkWidget *dialog, gint response, gpointer user_data) { - SshPluginUiWidget *self = SSH_PLUGIN_UI_WIDGET (user_data); - SshPluginUiWidgetPrivate *priv = SSH_PLUGIN_UI_WIDGET_GET_PRIVATE (self); + SshEditor *self = SSH_EDITOR (user_data); + SshEditorPrivate *priv = SSH_EDITOR_GET_PRIVATE (self); GError *error = NULL; if (response != GTK_RESPONSE_OK) { @@ -295,8 +279,8 @@ static void advanced_button_clicked_cb (GtkWidget *button, gpointer user_data) { - SshPluginUiWidget *self = SSH_PLUGIN_UI_WIDGET (user_data); - SshPluginUiWidgetPrivate *priv = SSH_PLUGIN_UI_WIDGET_GET_PRIVATE (self); + SshEditor *self = SSH_EDITOR (user_data); + SshEditorPrivate *priv = SSH_EDITOR_GET_PRIVATE (self); GtkWidget *dialog, *toplevel; toplevel = gtk_widget_get_toplevel (priv->widget); @@ -340,7 +324,7 @@ void init_auth_widget (GtkBuilder *builder, GtkSizeGroup *group, - NMSettingVPN *s_vpn, + NMSettingVpn *s_vpn, const char *contype, const char *prefix, ChangedCallback changed_cb, @@ -400,8 +384,8 @@ static void pw_type_combo_changed_cb (GtkWidget *combo, gpointer user_data) { - SshPluginUiWidget *self = SSH_PLUGIN_UI_WIDGET (user_data); - SshPluginUiWidgetPrivate *priv = SSH_PLUGIN_UI_WIDGET_GET_PRIVATE (self); + SshEditor *self = SSH_EDITOR (user_data); + SshEditorPrivate *priv = SSH_EDITOR_GET_PRIVATE (self); GtkWidget *entry; entry = GTK_WIDGET (gtk_builder_get_object (priv->builder, "auth_password_entry")); @@ -425,13 +409,13 @@ static void init_one_pw_combo ( - SshPluginUiWidget *self, - NMSettingVPN *s_vpn, + SshEditor *self, + NMSettingVpn *s_vpn, const char *combo_name, const char *secret_key, const char *entry_name) { - SshPluginUiWidgetPrivate *priv = SSH_PLUGIN_UI_WIDGET_GET_PRIVATE (self); + SshEditorPrivate *priv = SSH_EDITOR_GET_PRIVATE (self); int active = -1; GtkWidget *widget; GtkListStore *store; @@ -477,10 +461,10 @@ /* FIXME break into smaller functions */ static gboolean -init_plugin_ui (SshPluginUiWidget *self, NMConnection *connection, GError **error) +init_editor_plugin (SshEditor *self, NMConnection *connection, GError **error) { - SshPluginUiWidgetPrivate *priv = SSH_PLUGIN_UI_WIDGET_GET_PRIVATE (self); - NMSettingVPN *s_vpn; + SshEditorPrivate *priv = SSH_EDITOR_GET_PRIVATE (self); + NMSettingVpn *s_vpn; GtkWidget *widget; GtkListStore *store; GtkTreeIter iter; @@ -669,10 +653,10 @@ } static GObject * -get_widget (NMVpnPluginUiWidgetInterface *iface) +get_widget (NMVpnEditor *iface) { - SshPluginUiWidget *self = SSH_PLUGIN_UI_WIDGET (iface); - SshPluginUiWidgetPrivate *priv = SSH_PLUGIN_UI_WIDGET_GET_PRIVATE (self); + SshEditor *self = SSH_EDITOR (iface); + SshEditorPrivate *priv = SSH_EDITOR_GET_PRIVATE (self); return G_OBJECT (priv->widget); } @@ -680,7 +664,7 @@ static void hash_copy_advanced (gpointer key, gpointer data, gpointer user_data) { - NMSettingVPN *s_vpn = NM_SETTING_VPN (user_data); + NMSettingVpn *s_vpn = NM_SETTING_VPN (user_data); const char *value = (const char *) data; g_return_if_fail (value && strlen (value)); @@ -690,7 +674,7 @@ static gboolean auth_widget_update_connection ( GtkBuilder *builder, - NMSettingVPN *s_vpn) + NMSettingVpn *s_vpn) { /* This function populates s_vpn with the auth properties */ GtkWidget *widget; @@ -761,13 +745,13 @@ } static gboolean -update_connection (NMVpnPluginUiWidgetInterface *iface, +update_connection (NMVpnEditor *iface, NMConnection *connection, GError **error) { - SshPluginUiWidget *self = SSH_PLUGIN_UI_WIDGET (iface); - SshPluginUiWidgetPrivate *priv = SSH_PLUGIN_UI_WIDGET_GET_PRIVATE (self); - NMSettingVPN *s_vpn; + SshEditor *self = SSH_EDITOR (iface); + SshEditorPrivate *priv = SSH_EDITOR_GET_PRIVATE (self); + NMSettingVpn *s_vpn; GtkWidget *widget; const char *str; gboolean valid = FALSE; @@ -847,25 +831,25 @@ *is_new = FALSE; } -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; - SshPluginUiWidgetPrivate *priv; + NMVpnEditor *object; + SshEditorPrivate *priv; char *ui_file; gboolean new = TRUE; - NMSettingVPN *s_vpn; + NMSettingVpn *s_vpn; if (error) g_return_val_if_fail (*error == NULL, NULL); - object = NM_VPN_PLUGIN_UI_WIDGET_INTERFACE (g_object_new (SSH_TYPE_PLUGIN_UI_WIDGET, NULL)); + object = g_object_new (SSH_TYPE_EDITOR, NULL); if (!object) { - g_set_error (error, SSH_PLUGIN_UI_ERROR, 0, "could not create ssh object"); + g_set_error (error, SSH_EDITOR_PLUGIN_ERROR, 0, "could not create ssh object"); return NULL; } - priv = SSH_PLUGIN_UI_WIDGET_GET_PRIVATE (object); + priv = SSH_EDITOR_GET_PRIVATE (object); ui_file = g_strdup_printf ("%s/%s", UIDIR, "nm-ssh-dialog.ui"); priv->builder = gtk_builder_new (); @@ -876,7 +860,7 @@ g_warning ("Couldn't load builder file: %s", error && *error ? (*error)->message : "(unknown)"); g_clear_error (error); - g_set_error (error, SSH_PLUGIN_UI_ERROR, 0, + g_set_error (error, SSH_EDITOR_PLUGIN_ERROR, 0, "could not load required resources from %s", ui_file); g_free (ui_file); g_object_unref (object); @@ -887,7 +871,7 @@ priv->widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "ssh_main_vbox")); if (!priv->widget) { - g_set_error (error, SSH_PLUGIN_UI_ERROR, 0, "could not load UI widget"); + g_set_error (error, SSH_EDITOR_PLUGIN_ERROR, 0, "could not load UI widget"); g_object_unref (object); return NULL; } @@ -900,7 +884,7 @@ nm_setting_vpn_foreach_data_item (s_vpn, is_new_func, &new); priv->new_connection = new; - if (!init_plugin_ui (SSH_PLUGIN_UI_WIDGET (object), connection, error)) { + if (!init_editor_plugin (SSH_EDITOR (object), connection, error)) { g_object_unref (object); return NULL; } @@ -917,8 +901,8 @@ static void dispose (GObject *object) { - SshPluginUiWidget *plugin = SSH_PLUGIN_UI_WIDGET (object); - SshPluginUiWidgetPrivate *priv = SSH_PLUGIN_UI_WIDGET_GET_PRIVATE (plugin); + SshEditor *plugin = SSH_EDITOR (object); + SshEditorPrivate *priv = SSH_EDITOR_GET_PRIVATE (plugin); if (priv->group) g_object_unref (priv->group); @@ -935,26 +919,26 @@ if (priv->advanced) g_hash_table_destroy (priv->advanced); - G_OBJECT_CLASS (ssh_plugin_ui_widget_parent_class)->dispose (object); + G_OBJECT_CLASS (ssh_editor_parent_class)->dispose (object); } static void -ssh_plugin_ui_widget_class_init (SshPluginUiWidgetClass *req_class) +ssh_editor_class_init (SshEditorClass *req_class) { GObjectClass *object_class = G_OBJECT_CLASS (req_class); - g_type_class_add_private (req_class, sizeof (SshPluginUiWidgetPrivate)); + g_type_class_add_private (req_class, sizeof (SshEditorPrivate)); object_class->dispose = dispose; } static void -ssh_plugin_ui_widget_init (SshPluginUiWidget *plugin) +ssh_editor_init (SshEditor *plugin) { } static void -ssh_plugin_ui_widget_interface_init (NMVpnPluginUiWidgetInterface *iface_class) +ssh_editor_interface_init (NMVpnEditorInterface *iface_class) { /* interface implementation */ iface_class->get_widget = get_widget; @@ -962,11 +946,11 @@ } static NMConnection * -import (NMVpnPluginUiInterface *iface, const char *path, GError **error) +import (NMVpnEditorPlugin *iface, const char *path, GError **error) { NMConnection *connection = NULL; NMSettingConnection *s_con; - NMSettingVPN *s_vpn; + NMSettingVpn *s_vpn; char *contents = NULL; char **lines = NULL; char *ext; @@ -975,16 +959,16 @@ ext = strrchr (path, '.'); if (!ext) { g_set_error (error, - SSH_PLUGIN_UI_ERROR, - SSH_PLUGIN_UI_ERROR_FILE_NOT_SSH, + SSH_EDITOR_PLUGIN_ERROR, + SSH_EDITOR_PLUGIN_ERROR_FAILED, "unknown OpenVPN file extension, should be .sh"); goto out; } if (strncmp (ext, ".sh", strlen(".sh"))) { g_set_error (error, - SSH_PLUGIN_UI_ERROR, - SSH_PLUGIN_UI_ERROR_FILE_NOT_SSH, + SSH_EDITOR_PLUGIN_ERROR, + SSH_EDITOR_PLUGIN_ERROR_FAILED, "unknown SSH file extension, should be .sh"); goto out; } @@ -1011,13 +995,13 @@ lines = g_strsplit_set (contents, "\r\n", 0); if (g_strv_length (lines) <= 1) { g_set_error (error, - SSH_PLUGIN_UI_ERROR, - SSH_PLUGIN_UI_ERROR_FILE_NOT_READABLE, + SSH_EDITOR_PLUGIN_ERROR, + SSH_EDITOR_PLUGIN_ERROR_FAILED, "not a valid OpenVPN configuration file"); goto out; } - 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)); @@ -1102,13 +1086,13 @@ } static gboolean -export (NMVpnPluginUiInterface *iface, +export (NMVpnEditorPlugin *iface, const char *path, NMConnection *connection, GError **error) { NMSettingConnection *s_con; - NMSettingVPN *s_vpn; + NMSettingVpn *s_vpn; FILE *f; const char *value; const char *auth_type = NULL; @@ -1138,7 +1122,7 @@ s_con = NM_SETTING_CONNECTION (nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION)); g_assert (s_con); - s_vpn = (NMSettingVPN *) nm_connection_get_setting (connection, NM_TYPE_SETTING_VPN); + s_vpn = (NMSettingVpn *) nm_connection_get_setting (connection, NM_TYPE_SETTING_VPN); f = fopen (path, "w"); if (!f) { @@ -1333,7 +1317,7 @@ } static char * -get_suggested_name (NMVpnPluginUiInterface *iface, NMConnection *connection) +get_suggested_filename (NMVpnEditorPlugin *iface, NMConnection *connection) { NMSettingConnection *s_con; const char *id; @@ -1350,15 +1334,15 @@ } static guint32 -get_capabilities (NMVpnPluginUiInterface *iface) +get_capabilities (NMVpnEditorPlugin *iface) { - return (NM_VPN_PLUGIN_UI_CAPABILITY_IMPORT | NM_VPN_PLUGIN_UI_CAPABILITY_EXPORT | NM_VPN_PLUGIN_UI_CAPABILITY_IPV6); + return (NM_VPN_EDITOR_PLUGIN_CAPABILITY_IMPORT | NM_VPN_EDITOR_PLUGIN_CAPABILITY_EXPORT | NM_VPN_EDITOR_PLUGIN_CAPABILITY_IPV6); } -static NMVpnPluginUiWidgetInterface * -ui_factory (NMVpnPluginUiInterface *iface, NMConnection *connection, GError **error) +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 @@ -1366,13 +1350,13 @@ GValue *value, GParamSpec *pspec) { switch (prop_id) { - case NM_VPN_PLUGIN_UI_INTERFACE_PROP_NAME: + case PROP_NAME: g_value_set_string (value, SSH_PLUGIN_NAME); break; - case NM_VPN_PLUGIN_UI_INTERFACE_PROP_DESC: + case PROP_DESC: g_value_set_string (value, SSH_PLUGIN_DESC); break; - case NM_VPN_PLUGIN_UI_INTERFACE_PROP_SERVICE: + case PROP_SERVICE: g_value_set_string (value, SSH_PLUGIN_SERVICE); break; default: @@ -1382,47 +1366,47 @@ } static void -ssh_plugin_ui_class_init (SshPluginUiClass *req_class) +ssh_editor_plugin_class_init (SshEditorPluginClass *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 -ssh_plugin_ui_init (SshPluginUi *plugin) +ssh_editor_plugin_init (SshEditorPlugin *plugin) { } static void -ssh_plugin_ui_interface_init (NMVpnPluginUiInterface *iface_class) +ssh_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; - iface_class->get_suggested_name = get_suggested_name; + iface_class->get_suggested_filename = get_suggested_filename; } -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 (SSH_TYPE_PLUGIN_UI, NULL)); + return g_object_new (SSH_TYPE_EDITOR_PLUGIN, NULL); } diff -Nru network-manager-ssh-0.9.4/properties/nm-ssh.h network-manager-ssh-1.2.0/properties/nm-ssh.h --- network-manager-ssh-0.9.4/properties/nm-ssh.h 2015-07-13 12:31:26.000000000 +0000 +++ network-manager-ssh-1.2.0/properties/nm-ssh.h 2016-04-23 14:06:26.000000000 +0000 @@ -26,69 +26,52 @@ #include -typedef enum -{ - SSH_PLUGIN_UI_ERROR_UNKNOWN = 0, - SSH_PLUGIN_UI_ERROR_INVALID_CONNECTION, - SSH_PLUGIN_UI_ERROR_INVALID_PROPERTY, - SSH_PLUGIN_UI_ERROR_MISSING_PROPERTY, - SSH_PLUGIN_UI_ERROR_FILE_NOT_READABLE, - SSH_PLUGIN_UI_ERROR_FILE_NOT_SSH -} SshPluginUiError; - -#define SSH_TYPE_PLUGIN_UI_ERROR (ssh_plugin_ui_error_get_type ()) -GType ssh_plugin_ui_error_get_type (void); - -#define SSH_PLUGIN_UI_ERROR (ssh_plugin_ui_error_quark ()) -GQuark ssh_plugin_ui_error_quark (void); - - -#define SSH_TYPE_PLUGIN_UI (ssh_plugin_ui_get_type ()) -#define SSH_PLUGIN_UI(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SSH_TYPE_PLUGIN_UI, SshPluginUi)) -#define SSH_PLUGIN_UI_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SSH_TYPE_PLUGIN_UI, SshPluginUiClass)) -#define SSH_IS_PLUGIN_UI(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SSH_TYPE_PLUGIN_UI)) -#define SSH_IS_PLUGIN_UI_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SSH_TYPE_PLUGIN_UI)) -#define SSH_PLUGIN_UI_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SSH_TYPE_PLUGIN_UI, SshPluginUiClass)) +#define SSH_TYPE_EDITOR_PLUGIN (ssh_editor_plugin_get_type ()) +#define SSH_EDITOR_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SSH_TYPE_EDITOR_PLUGIN, SshEditorPlugin)) +#define SSH_EDITOR_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SSH_TYPE_EDITOR_PLUGIN, SshEditorPluginClass)) +#define SSH_IS_EDITOR_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SSH_TYPE_EDITOR_PLUGIN)) +#define SSH_IS_EDITOR_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SSH_TYPE_EDITOR_PLUGIN)) +#define SSH_EDITOR_PLUGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SSH_TYPE_EDITOR_PLUGIN, SshEditorPluginClass)) -typedef struct _SshPluginUi SshPluginUi; -typedef struct _SshPluginUiClass SshPluginUiClass; +typedef struct _SshEditorPlugin SshEditorPlugin; +typedef struct _SshEditorPluginClass SshEditorPluginClass; -struct _SshPluginUi { +struct _SshEditorPlugin { GObject parent; }; -struct _SshPluginUiClass { +struct _SshEditorPluginClass { GObjectClass parent; }; -GType ssh_plugin_ui_get_type (void); +GType ssh_editor_plugin_get_type (void); -#define SSH_TYPE_PLUGIN_UI_WIDGET (ssh_plugin_ui_widget_get_type ()) -#define SSH_PLUGIN_UI_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SSH_TYPE_PLUGIN_UI_WIDGET, SshPluginUiWidget)) -#define SSH_PLUGIN_UI_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SSH_TYPE_PLUGIN_UI_WIDGET, SshPluginUiWidgetClass)) -#define SSH_IS_PLUGIN_UI_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SSH_TYPE_PLUGIN_UI_WIDGET)) -#define SSH_IS_PLUGIN_UI_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SSH_TYPE_PLUGIN_UI_WIDGET)) -#define SSH_PLUGIN_UI_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SSH_TYPE_PLUGIN_UI_WIDGET, SshPluginUiWidgetClass)) +#define SSH_TYPE_EDITOR (ssh_editor_get_type ()) +#define SSH_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SSH_TYPE_EDITOR, SshEditor)) +#define SSH_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SSH_TYPE_EDITOR, SshEditorClass)) +#define SSH_IS_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SSH_TYPE_EDITOR)) +#define SSH_IS_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SSH_TYPE_EDITOR)) +#define SSH_EDITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SSH_TYPE_EDITOR, SshEditorClass)) -typedef struct _SshPluginUiWidget SshPluginUiWidget; -typedef struct _SshPluginUiWidgetClass SshPluginUiWidgetClass; +typedef struct _SshEditor SshEditor; +typedef struct _SshEditorClass SshEditorClass; -struct _SshPluginUiWidget { +struct _SshEditor { GObject parent; }; -struct _SshPluginUiWidgetClass { +struct _SshEditorClass { GObjectClass parent; }; -GType ssh_plugin_ui_widget_get_type (void); +GType ssh_editor_get_type (void); typedef void (*ChangedCallback) (GtkWidget *widget, gpointer user_data); void init_auth_widget (GtkBuilder *builder, GtkSizeGroup *group, - NMSettingVPN *s_vpn, + NMSettingVpn *s_vpn, const char *contype, const char *prefix, ChangedCallback changed_cb, diff -Nru network-manager-ssh-0.9.4/README.md network-manager-ssh-1.2.0/README.md --- network-manager-ssh-0.9.4/README.md 2015-07-13 12:31:26.000000000 +0000 +++ network-manager-ssh-1.2.0/README.md 2016-04-23 14:06:26.000000000 +0000 @@ -22,9 +22,9 @@ ### Fedora/CentOS -If you're using Fedora 18 or later, you can simply run: +If you're using Fedora 22 or later, you can simply run: ``` -# yum install NetworkManager-ssh-gnome +# dnf install NetworkManager-ssh-gnome ``` That will set you up with NetworkManager and the traditional GNOME interface. I am the current maintainer of the package for Fedora. @@ -38,12 +38,13 @@ ### Ubuntu/Debian -Building a .deb should be straight forward with (Tested on Ubuntu 15.04): +Building a .deb should be straight forward with: ``` +# apt-get install libnm-glib-dev libnm-glib-vpn-dev libnm-util-dev libnm-dev libnma-dev libgnome-keyring-dev dh-autoreconf libgtk-3-dev sshpass $ autoreconf -fvi && ./configure && make deb ``` -Enjoy your new .deb. +Enjoy your new .deb. (It should show up in the directory you `git clone`d from.) I am still looking for someone to maintain this package for Ubuntu as it seems like there is a demand. diff -Nru network-manager-ssh-0.9.4/src/Makefile.am network-manager-ssh-1.2.0/src/Makefile.am --- network-manager-ssh-0.9.4/src/Makefile.am 2015-07-13 12:31:26.000000000 +0000 +++ network-manager-ssh-1.2.0/src/Makefile.am 2016-04-23 14:06:26.000000000 +0000 @@ -1,11 +1,9 @@ AM_CPPFLAGS = \ - $(NM_CFLAGS) \ + $(LIBNM_CFLAGS) \ $(GIO_CFLAGS) \ - -DG_DISABLE_DEPRECATED \ -DBINDIR=\"$(bindir)\" \ -DPREFIX=\""$(prefix)"\" \ -DSYSCONFDIR=\""$(sysconfdir)"\" \ - -DVERSION="\"$(VERSION)\"" \ -DLIBDIR=\""$(libdir)"\" \ -DLIBEXECDIR=\""$(libexecdir)"\" \ -DLOCALSTATEDIR=\""$(localstatedir)"\" \ @@ -17,9 +15,10 @@ nm_ssh_service_SOURCES = \ nm-ssh-service.c \ - nm-ssh-service.h + nm-ssh-service.h \ + nm-ssh-service-defines.h nm_ssh_service_LDADD = \ - $(NM_LIBS) $(GIO_LIBS) + $(LIBNM_LIBS) $(GIO_LIBS) CLEANFILES = *~ diff -Nru network-manager-ssh-0.9.4/src/nm-ssh-service.c network-manager-ssh-1.2.0/src/nm-ssh-service.c --- network-manager-ssh-0.9.4/src/nm-ssh-service.c 2015-07-13 12:31:26.000000000 +0000 +++ network-manager-ssh-1.2.0/src/nm-ssh-service.c 2016-04-23 14:06:26.000000000 +0000 @@ -28,9 +28,6 @@ #include #include -#include -#include -#include #include #include #include @@ -50,8 +47,6 @@ #include #include -#include -#include #include "nm-ssh-service.h" #include "nm-utils.h" @@ -63,7 +58,7 @@ static gboolean debug = FALSE; static GMainLoop *loop = NULL; -G_DEFINE_TYPE (NMSshPlugin, nm_ssh_plugin, NM_TYPE_VPN_PLUGIN) +G_DEFINE_TYPE (NMSshPlugin, nm_ssh_plugin, NM_TYPE_VPN_SERVICE_PLUGIN) #define NM_SSH_PLUGIN_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SSH_PLUGIN, NMSshPluginPrivate)) @@ -239,7 +234,7 @@ } static gboolean -nm_ssh_properties_validate (NMSettingVPN *s_vpn, GError **error) +nm_ssh_properties_validate (NMSettingVpn *s_vpn, GError **error) { GError *validate_error = NULL; ValidateInfo info = { &valid_properties[0], &validate_error, FALSE }; @@ -261,27 +256,12 @@ return TRUE; } -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; -} - -static GValue * -addr6_to_gvalue (const char *str) +static GVariant * +addr6_to_gvariant (const char *str) { struct in6_addr temp_addr; - GValue *val; - GByteArray *ba; + GVariantBuilder builder; + int i; /* Empty */ if (!str || strlen (str) < 1) @@ -290,30 +270,15 @@ if (inet_pton (AF_INET6, str, &temp_addr) <= 0) return NULL; - val = g_slice_new0 (GValue); - g_value_init (val, DBUS_TYPE_G_UCHAR_ARRAY); - ba = g_byte_array_new (); - g_byte_array_append (ba, (guint8 *) &temp_addr, sizeof (temp_addr)); - g_value_take_boxed (val, ba); - return val; -} - -static GValue * -bool_to_gvalue (gboolean b) -{ - GValue *val; - - val = g_slice_new0 (GValue); - g_value_init (val, G_TYPE_BOOLEAN); - g_value_set_boolean (val, b); - return val; + g_variant_builder_init (&builder, G_VARIANT_TYPE ("ay")); + for (i = 0; i < sizeof (temp_addr); i++) + g_variant_builder_add (&builder, "y", ((guint8 *) &temp_addr)[i]); + return g_variant_builder_end (&builder); } -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; @@ -327,18 +292,13 @@ return NULL; } - val = g_slice_new0 (GValue); - g_value_init (val, G_TYPE_STRING); - g_value_set_string (val, str); - - 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; - GValue *val; /* Empty */ if (!str || strlen (str) < 1) @@ -347,11 +307,7 @@ if (inet_pton (AF_INET, str, &temp_addr) <= 0) return NULL; - val = g_slice_new0 (GValue); - g_value_init (val, G_TYPE_UINT); - g_value_set_uint (val, temp_addr.s_addr); - - return val; + return g_variant_new_uint32 (temp_addr.s_addr); } static char * @@ -424,24 +380,14 @@ { NMSshPluginPrivate *priv = NM_SSH_PLUGIN_GET_PRIVATE (plugin); NMSshPluginIOData *io_data = priv->io_data; - DBusGConnection *connection; - DBusGProxy *proxy; - GHashTable *config, *ip4config, *ip6config; - GValue *val; - GError *err = NULL; + GVariantBuilder config, ip4config, ip6config; + GVariant *val; char *device; char *resolved_hostname; - connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, &err); - if (!connection) { - g_warning ("Could not get the system bus: %s", err->message); - nm_vpn_plugin_set_state ((NMVPNPlugin*)plugin, NM_VPN_SERVICE_STATE_STOPPED); - return FALSE; - } - - config = g_hash_table_new (g_str_hash, g_str_equal); - ip4config = g_hash_table_new (g_str_hash, g_str_equal); - ip6config = g_hash_table_new (g_str_hash, g_str_equal); + g_variant_builder_init (&config, G_VARIANT_TYPE_VARDICT); + g_variant_builder_init (&ip4config, G_VARIANT_TYPE_VARDICT); + g_variant_builder_init (&ip6config, G_VARIANT_TYPE_VARDICT); if (debug) { g_message ("Local device: '%s%d'", io_data->dev_type, io_data->local_dev_number); @@ -464,8 +410,8 @@ /* We might have to resolve that */ resolved_hostname = resolve_hostname (io_data->remote_gw); if (resolved_hostname) { - val = addr_to_gvalue (resolved_hostname); - g_hash_table_insert (config, NM_VPN_PLUGIN_CONFIG_EXT_GATEWAY, val); + val = addr4_to_gvariant (resolved_hostname); + g_variant_builder_add (&config, "{sv}", NM_VPN_PLUGIN_CONFIG_EXT_GATEWAY, val); g_free (resolved_hostname); } else { g_warning ("Could not resolve remote_gw."); @@ -479,9 +425,9 @@ { device = (gpointer) g_strdup_printf ("%s%d", io_data->dev_type, io_data->local_dev_number); - val = str_to_gvalue (device, FALSE); + val = str_to_gvariant (device, FALSE); g_free(device); - g_hash_table_insert (config, NM_VPN_PLUGIN_CONFIG_TUNDEV, val); + g_variant_builder_add (&config, "{sv}", NM_VPN_PLUGIN_CONFIG_TUNDEV, val); } else g_warning ("local_dev_number unset."); @@ -489,8 +435,8 @@ /* mtu */ if (io_data->mtu > 0) { - val = str_to_gvalue (g_strdup_printf("%d", io_data->mtu), FALSE); - g_hash_table_insert (config, NM_VPN_PLUGIN_CONFIG_MTU, val); + val = str_to_gvariant (g_strdup_printf("%d", io_data->mtu), FALSE); + g_variant_builder_add (&config, "{sv}", NM_VPN_PLUGIN_CONFIG_MTU, val); } else g_warning ("local_dev_number unset."); @@ -500,18 +446,18 @@ /* ---------------------------------------------------- */ /* IPv4 specific (local_addr, remote_addr, netmask) */ - g_hash_table_insert (config, NM_VPN_PLUGIN_CONFIG_HAS_IP4, bool_to_gvalue (TRUE)); + g_variant_builder_add (&config, "{sv}", NM_VPN_PLUGIN_CONFIG_HAS_IP4, g_variant_new_boolean (TRUE)); /* replace default route? */ if (io_data->no_default_route) { - g_hash_table_insert (config, NM_VPN_PLUGIN_IP4_CONFIG_NEVER_DEFAULT, bool_to_gvalue (TRUE)); + g_variant_builder_add (&config, "{sv}", NM_VPN_PLUGIN_IP4_CONFIG_NEVER_DEFAULT, g_variant_new_boolean (TRUE)); } /* local_address */ if (io_data->local_addr) { - val = addr_to_gvalue (io_data->local_addr); - g_hash_table_insert (ip4config, NM_VPN_PLUGIN_IP4_CONFIG_ADDRESS, val); + val = addr4_to_gvariant (io_data->local_addr); + g_variant_builder_add (&ip4config, "{sv}", NM_VPN_PLUGIN_IP4_CONFIG_ADDRESS, val); } else g_warning ("local_addr unset."); @@ -519,9 +465,9 @@ /* remote_addr */ if (io_data->remote_addr) { - val = addr_to_gvalue (io_data->remote_addr); - g_hash_table_insert (ip4config, NM_VPN_PLUGIN_IP4_CONFIG_INT_GATEWAY, val); - g_hash_table_insert (ip4config, NM_VPN_PLUGIN_IP4_CONFIG_PTP, val); + val = addr4_to_gvariant (io_data->remote_addr); + g_variant_builder_add (&ip4config, "{sv}", NM_VPN_PLUGIN_IP4_CONFIG_INT_GATEWAY, val); + g_variant_builder_add (&ip4config, "{sv}", NM_VPN_PLUGIN_IP4_CONFIG_PTP, val); } else g_warning ("remote_addr unset."); @@ -529,10 +475,11 @@ /* netmask */ if (io_data->netmask && g_str_has_prefix (io_data->netmask, "255.")) { guint32 addr; - val = addr_to_gvalue(io_data->netmask); - addr = g_value_get_uint (val); - g_value_set_uint (val, nm_utils_ip4_netmask_to_prefix (addr)); - g_hash_table_insert (ip4config, NM_VPN_PLUGIN_IP4_CONFIG_PREFIX, val); + val = addr4_to_gvariant(io_data->netmask); + addr = g_variant_get_uint32 (val); + g_variant_unref (val); + val = g_variant_new_uint32 (nm_utils_ip4_netmask_to_prefix (addr)); + g_variant_builder_add (&ip4config, "{sv}", NM_VPN_PLUGIN_IP4_CONFIG_PREFIX, val); } else g_warning ("netmask unset."); @@ -542,18 +489,18 @@ /* IPv6 specific (local_addr_6, remote_addr_6, netmask_6) */ if (io_data->ipv6) { - g_hash_table_insert (config, NM_VPN_PLUGIN_CONFIG_HAS_IP6, bool_to_gvalue (TRUE)); + g_variant_builder_add (&config, "{sv}", NM_VPN_PLUGIN_CONFIG_HAS_IP6, g_variant_new_boolean (TRUE)); /* replace default route? */ if (io_data->no_default_route) { - g_hash_table_insert (config, NM_VPN_PLUGIN_IP6_CONFIG_NEVER_DEFAULT, bool_to_gvalue (TRUE)); + g_variant_builder_add (&config, "{sv}", NM_VPN_PLUGIN_IP6_CONFIG_NEVER_DEFAULT, g_variant_new_boolean (TRUE)); } /* local_addr_6 */ if (io_data->local_addr_6) { - val = addr6_to_gvalue (io_data->local_addr_6); - g_hash_table_insert (ip6config, NM_VPN_PLUGIN_IP6_CONFIG_ADDRESS, val); + val = addr6_to_gvariant (io_data->local_addr_6); + g_variant_builder_add (&ip6config, "{sv}", NM_VPN_PLUGIN_IP6_CONFIG_ADDRESS, val); } else g_warning ("local_addr_6 unset."); @@ -561,17 +508,17 @@ /* remote_addr_6 */ if (io_data->remote_addr_6) { - val = addr6_to_gvalue (io_data->remote_addr_6); - g_hash_table_insert (ip6config, NM_VPN_PLUGIN_IP6_CONFIG_INT_GATEWAY, val); - g_hash_table_insert (ip6config, NM_VPN_PLUGIN_IP6_CONFIG_PTP, val); + val = addr6_to_gvariant (io_data->remote_addr_6); + g_variant_builder_add (&ip6config, "{sv}", NM_VPN_PLUGIN_IP6_CONFIG_INT_GATEWAY, val); + g_variant_builder_add (&ip6config, "{sv}", NM_VPN_PLUGIN_IP6_CONFIG_PTP, val); } else g_warning ("remote_addr_6 unset."); /* netmask_6 */ if (io_data->netmask_6) { - val = uint_to_gvalue (strtol (io_data->netmask_6, NULL, 10)); - g_hash_table_insert (ip6config, NM_VPN_PLUGIN_IP6_CONFIG_PREFIX, val); + val = g_variant_new_uint32 (strtol (io_data->netmask_6, NULL, 10)); + g_variant_builder_add (&ip6config, "{sv}", NM_VPN_PLUGIN_IP6_CONFIG_PREFIX, val); } else g_warning ("netmask_6 unset."); } @@ -580,40 +527,19 @@ /* ---------------------------------------------------- */ - proxy = dbus_g_proxy_new_for_name ( - connection, - NM_DBUS_SERVICE_SSH, - NM_VPN_DBUS_PLUGIN_PATH, - NM_VPN_DBUS_PLUGIN_INTERFACE); /* Send general config */ - dbus_g_proxy_call_no_reply ( - proxy, "SetConfig", - dbus_g_type_get_map ("GHashTable", G_TYPE_STRING, G_TYPE_VALUE), - config, - G_TYPE_INVALID, - G_TYPE_INVALID); + nm_vpn_service_plugin_set_config ((NMVpnServicePlugin*) plugin, + g_variant_builder_end (&config)); /* Send IPv6 config */ - if (io_data->ipv6) { - dbus_g_proxy_call_no_reply ( - proxy, "SetIp6Config", - dbus_g_type_get_map ("GHashTable", G_TYPE_STRING, G_TYPE_VALUE), - ip6config, - G_TYPE_INVALID, - G_TYPE_INVALID); - } + if (io_data->ipv6) + nm_vpn_service_plugin_set_ip6_config ((NMVpnServicePlugin*) plugin, + g_variant_builder_end (&ip6config)); /* Send IPv4 config */ - dbus_g_proxy_call_no_reply ( - proxy, "SetIp4Config", - dbus_g_type_get_map ("GHashTable", G_TYPE_STRING, G_TYPE_VALUE), - ip4config, - G_TYPE_INVALID, - G_TYPE_INVALID); - - - g_object_unref (proxy); + nm_vpn_service_plugin_set_ip4_config ((NMVpnServicePlugin*) plugin, + g_variant_builder_end (&ip4config)); return TRUE; } @@ -691,7 +617,8 @@ static gboolean nm_ssh_stdout_cb (GIOChannel *source, GIOCondition condition, gpointer user_data) { - NMVPNPlugin *plugin = NM_VPN_PLUGIN (user_data); + NMVpnServicePlugin *plugin = NM_VPN_SERVICE_PLUGIN (user_data); + NMSshPluginPrivate *priv = NM_SSH_PLUGIN_GET_PRIVATE (plugin); char *str = NULL; if (!(condition & G_IO_IN)) @@ -715,12 +642,12 @@ } else if (g_str_has_prefix (str, "Tunnel device open failed.")) { /* Opening of local tun device failed... :( */ g_warning("Tunnel device open failed."); - nm_vpn_plugin_set_state (plugin, NM_VPN_SERVICE_STATE_STOPPED); + nm_vpn_service_plugin_failure (plugin, NM_VPN_PLUGIN_FAILURE_CONNECT_FAILED); } else if (g_str_has_prefix (str, "debug1: Sending command:")) { /* If we got to sending the command, it means that things are * established, we should start the timer to get the local * interface up... */ - if (NM_VPN_SERVICE_STATE_STOPPED != nm_vpn_plugin_get_state (plugin)) + if (priv->pid) nm_ssh_schedule_ifconfig_timer ((NMSshPlugin*)plugin); else if(debug) g_message("Not starting local timer because plugin is in STOPPED state"); @@ -728,16 +655,16 @@ /* Opening of remote tun device failed... :( */ g_warning("Tunnel device open failed on remote server."); g_warning("Make sure you have privileges to open tun/tap devices and that your SSH server is configured with 'PermitTunnel=yes'"); - nm_vpn_plugin_set_state (plugin, NM_VPN_SERVICE_STATE_STOPPED); + nm_vpn_service_plugin_failure (plugin, NM_VPN_PLUGIN_FAILURE_CONNECT_FAILED); } else if (g_str_has_prefix (str, "debug1: Remote: Failed to open the tunnel device.")) { /* Opening of remote tun device failed... device busy? */ g_warning("Tunnel device open failed on remote server."); g_warning("Is this device free on the remote host?"); - nm_vpn_plugin_set_state (plugin, NM_VPN_SERVICE_STATE_STOPPED); + nm_vpn_service_plugin_failure (plugin, NM_VPN_PLUGIN_FAILURE_CONNECT_FAILED); } else if (strncmp (str, "The authenticity of host", 24) == 0) { /* User will have to accept this new host with its fingerprint */ g_warning("It is not a known host, continue connecting?"); - nm_vpn_plugin_set_state (plugin, NM_VPN_SERVICE_STATE_STOPPED); + nm_vpn_service_plugin_failure (plugin, NM_VPN_PLUGIN_FAILURE_CONNECT_FAILED); } g_message("%s", str); @@ -768,9 +695,9 @@ static void ssh_watch_cb (GPid pid, gint status, gpointer user_data) { - NMVPNPlugin *plugin = NM_VPN_PLUGIN (user_data); + NMVpnServicePlugin *plugin = NM_VPN_SERVICE_PLUGIN (user_data); NMSshPluginPrivate *priv = NM_SSH_PLUGIN_GET_PRIVATE (plugin); - NMVPNPluginFailure failure = NM_VPN_PLUGIN_FAILURE_CONNECT_FAILED; + NMVpnPluginFailure failure = NM_VPN_PLUGIN_FAILURE_CONNECT_FAILED; guint error = 0; gboolean good_exit = FALSE; @@ -835,10 +762,10 @@ g_source_remove(priv->io_data->socket_channel_stderr_eventid); close (g_io_channel_unix_get_fd(priv->io_data->ssh_stderr_channel)); - if (!good_exit) - nm_vpn_plugin_failure (plugin, failure); - - nm_vpn_plugin_set_state (plugin, NM_VPN_SERVICE_STATE_STOPPED); + if (good_exit) + nm_vpn_service_plugin_disconnect (plugin, NULL); + else + nm_vpn_service_plugin_failure (plugin, failure); } static const char * @@ -968,7 +895,7 @@ static gboolean nm_ssh_start_ssh_binary (NMSshPlugin *plugin, - NMSettingVPN *s_vpn, + NMSettingVpn *s_vpn, const char *default_username, GError **error) { @@ -1180,7 +1107,7 @@ if (priv->io_data->local_dev_number == -1) { g_warning("Could not assign a free tun/tap device."); - nm_vpn_plugin_set_state ((NMVPNPlugin*)plugin, NM_VPN_SERVICE_STATE_STOPPED); + nm_vpn_service_plugin_failure (NM_VPN_SERVICE_PLUGIN (plugin), NM_VPN_PLUGIN_FAILURE_CONNECT_FAILED); return FALSE; } @@ -1506,18 +1433,18 @@ } static gboolean -real_connect (NMVPNPlugin *plugin, +real_connect (NMVpnServicePlugin *plugin, NMConnection *connection, GError **error) { - NMSettingVPN *s_vpn; + NMSettingVpn *s_vpn; const char *user_name; 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, + NM_VPN_PLUGIN_ERROR_INVALID_CONNECTION, "%s", _("Could not process the request because the VPN connection settings were invalid.")); return FALSE; @@ -1537,17 +1464,17 @@ } static gboolean -real_need_secrets (NMVPNPlugin *plugin, +real_need_secrets (NMVpnServicePlugin *plugin, NMConnection *connection, - char **setting_name, + const char **setting_name, GError **error) { - NMSettingVPN *s_vpn; + NMSettingVpn *s_vpn; gboolean need_secrets = FALSE; const char *auth_type = NULL; NMSettingSecretFlags flags = NM_SETTING_SECRET_FLAG_NONE; - 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); if (debug) { @@ -1559,7 +1486,7 @@ 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.")); return FALSE; @@ -1620,7 +1547,7 @@ } static gboolean -real_disconnect (NMVPNPlugin *plugin, +real_disconnect (NMVpnServicePlugin *plugin, GError **err) { NMSshPluginPrivate *priv = NM_SSH_PLUGIN_GET_PRIVATE (plugin); @@ -1647,7 +1574,7 @@ nm_ssh_plugin_class_init (NMSshPluginClass *plugin_class) { GObjectClass *object_class = G_OBJECT_CLASS (plugin_class); - NMVPNPluginClass *parent_class = NM_VPN_PLUGIN_CLASS (plugin_class); + NMVpnServicePluginClass *parent_class = NM_VPN_SERVICE_PLUGIN_CLASS (plugin_class); g_type_class_add_private (object_class, sizeof (NMSshPluginPrivate)); @@ -1659,7 +1586,7 @@ static void plugin_state_changed (NMSshPlugin *plugin, - NMVPNServiceState state, + NMVpnServiceState state, gpointer user_data) { switch (state) { @@ -1679,7 +1606,7 @@ NMSshPlugin *plugin; plugin = (NMSshPlugin *) g_object_new (NM_TYPE_SSH_PLUGIN, - NM_VPN_PLUGIN_DBUS_SERVICE_NAME, + NM_VPN_SERVICE_PLUGIN_DBUS_SERVICE_NAME, NM_DBUS_SERVICE_SSH, NULL); if (plugin) @@ -1710,7 +1637,7 @@ } static void -quit_mainloop (NMVPNPlugin *plugin, gpointer user_data) +quit_mainloop (NMVpnServicePlugin *plugin, gpointer user_data) { g_main_loop_quit ((GMainLoop *) user_data); } diff -Nru network-manager-ssh-0.9.4/src/nm-ssh-service-defines.h network-manager-ssh-1.2.0/src/nm-ssh-service-defines.h --- network-manager-ssh-0.9.4/src/nm-ssh-service-defines.h 1970-01-01 00:00:00.000000000 +0000 +++ network-manager-ssh-1.2.0/src/nm-ssh-service-defines.h 2016-04-23 14:06:26.000000000 +0000 @@ -0,0 +1,63 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ +/* nm-ssh-service - ssh integration with NetworkManager + * + * Copyright (C) 2013 Dan Fruehauf + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ + +#ifndef NM_SSH_SERVICE_DEFINES_H +#define NM_SSH_SERVICE_DEFINES_H + +#define NM_DBUS_SERVICE_SSH "org.freedesktop.NetworkManager.ssh" +#define NM_DBUS_INTERFACE_SSH "org.freedesktop.NetworkManager.ssh" +#define NM_DBUS_PATH_SSH "/org/freedesktop/NetworkManager/ssh" + +#define YES "yes" +#define NO "no" +#define IS_YES(x) (!strncmp (x, YES, strlen(YES))) + +#define NM_SSH_KEY_REMOTE "remote" +#define NM_SSH_KEY_REMOTE_IP "remote-ip" +#define NM_SSH_KEY_LOCAL_IP "local-ip" +#define NM_SSH_KEY_NETMASK "netmask" +#define NM_SSH_KEY_PORT "port" +#define NM_SSH_KEY_TUNNEL_MTU "tunnel-mtu" +#define NM_SSH_KEY_EXTRA_OPTS "extra-opts" +#define NM_SSH_KEY_REMOTE_DEV "remote-dev" +#define NM_SSH_KEY_SSH_AUTH_SOCK "ssh-auth-sock" +#define NM_SSH_KEY_TAP_DEV "tap-dev" +#define NM_SSH_KEY_REMOTE_USERNAME "remote-username" +#define NM_SSH_KEY_NO_DEFAULT_ROUTE "no-default-route" +#define NM_SSH_KEY_IP_6 "ip-6" +#define NM_SSH_KEY_REMOTE_IP_6 "remote-ip-6" +#define NM_SSH_KEY_LOCAL_IP_6 "local-ip-6" +#define NM_SSH_KEY_NETMASK_6 "netmask-6" +#define NM_SSH_KEY_AUTH_TYPE "auth-type" +#define NM_SSH_KEY_KEY_FILE "key-file" +#define NM_SSH_KEY_PASSWORD "password" + +#define NM_SSH_DEFAULT_PORT 22 +#define NM_SSH_DEFAULT_MTU 1500 +#define NM_SSH_DEFAULT_REMOTE_DEV 100 +#define NM_SSH_DEFAULT_EXTRA_OPTS "-o ServerAliveInterval=10 -o TCPKeepAlive=yes" +#define NM_SSH_DEFAULT_REMOTE_USERNAME "root" + +#define NM_SSH_AUTH_TYPE_SSH_AGENT "ssh-agent" +#define NM_SSH_AUTH_TYPE_PASSWORD "password" +#define NM_SSH_AUTH_TYPE_KEY "key" + +#endif /* NM_SSH_SERVICE_DEFINES_H */ diff -Nru network-manager-ssh-0.9.4/src/nm-ssh-service.h network-manager-ssh-1.2.0/src/nm-ssh-service.h --- network-manager-ssh-0.9.4/src/nm-ssh-service.h 2015-07-13 12:31:26.000000000 +0000 +++ network-manager-ssh-1.2.0/src/nm-ssh-service.h 2016-04-23 14:06:26.000000000 +0000 @@ -24,7 +24,9 @@ #include #include -#include +#include + +#include "nm-ssh-service-defines.h" #define NM_TYPE_SSH_PLUGIN (nm_ssh_plugin_get_type ()) #define NM_SSH_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_SSH_PLUGIN, NMSshPlugin)) @@ -33,64 +35,12 @@ #define NM_IS_SSH_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), NM_TYPE_SSH_PLUGIN)) #define NM_SSH_PLUGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_SSH_PLUGIN, NMSshPluginClass)) -#define NM_DBUS_SERVICE_SSH "org.freedesktop.NetworkManager.ssh" -#define NM_DBUS_INTERFACE_SSH "org.freedesktop.NetworkManager.ssh" -#define NM_DBUS_PATH_SSH "/org/freedesktop/NetworkManager/ssh" - -#define YES "yes" -#define NO "no" -#define IS_YES(x) (!strncmp (x, YES, strlen(YES))) - -#define NM_SSH_KEY_REMOTE "remote" -#define NM_SSH_KEY_REMOTE_IP "remote-ip" -#define NM_SSH_KEY_LOCAL_IP "local-ip" -#define NM_SSH_KEY_NETMASK "netmask" -#define NM_SSH_KEY_PORT "port" -#define NM_SSH_KEY_TUNNEL_MTU "tunnel-mtu" -#define NM_SSH_KEY_EXTRA_OPTS "extra-opts" -#define NM_SSH_KEY_REMOTE_DEV "remote-dev" -#define NM_SSH_KEY_SSH_AUTH_SOCK "ssh-auth-sock" -#define NM_SSH_KEY_TAP_DEV "tap-dev" -#define NM_SSH_KEY_REMOTE_USERNAME "remote-username" -#define NM_SSH_KEY_NO_DEFAULT_ROUTE "no-default-route" -#define NM_SSH_KEY_IP_6 "ip-6" -#define NM_SSH_KEY_REMOTE_IP_6 "remote-ip-6" -#define NM_SSH_KEY_LOCAL_IP_6 "local-ip-6" -#define NM_SSH_KEY_NETMASK_6 "netmask-6" -#define NM_SSH_KEY_AUTH_TYPE "auth-type" -#define NM_SSH_KEY_KEY_FILE "key-file" -#define NM_SSH_KEY_PASSWORD "password" - -#define NM_SSH_DEFAULT_PORT 22 -#define NM_SSH_DEFAULT_MTU 1500 -#define NM_SSH_DEFAULT_REMOTE_DEV 100 -#define NM_SSH_DEFAULT_EXTRA_OPTS "-o ServerAliveInterval=10 -o TCPKeepAlive=yes" -#define NM_SSH_DEFAULT_REMOTE_USERNAME "root" - -#define NM_SSH_AUTH_TYPE_SSH_AGENT "ssh-agent" -#define NM_SSH_AUTH_TYPE_PASSWORD "password" -#define NM_SSH_AUTH_TYPE_KEY "key" - -/* Backward compatibility with NetworkManager < 0.9.6 when no IPv6 is supported */ -#if !defined(NM_VPN_PLUGIN_CONFIG_EXT_GATEWAY) -# define NM_VPN_PLUGIN_CONFIG_EXT_GATEWAY NM_VPN_PLUGIN_IP4_CONFIG_EXT_GATEWAY -#endif - -#if !defined(NM_VPN_PLUGIN_CONFIG_TUNDEV) -# define NM_VPN_PLUGIN_CONFIG_TUNDEV NM_VPN_PLUGIN_IP4_CONFIG_TUNDEV -#endif - -#if !defined(NM_VPN_PLUGIN_CONFIG_MTU) -# define NM_VPN_PLUGIN_CONFIG_MTU NM_VPN_PLUGIN_IP4_CONFIG_MTU -#endif -/* End backward compatibility */ - typedef struct { - NMVPNPlugin parent; + NMVpnServicePlugin parent; } NMSshPlugin; typedef struct { - NMVPNPluginClass parent; + NMVpnServicePluginClass parent; } NMSshPluginClass; GType nm_ssh_plugin_get_type (void);