From d5d84393ab74dfa30a50232608195039ebdde845 Mon Sep 17 00:00:00 2001 From: Tambet Ingo Date: Mon, 30 Oct 2006 11:23:28 +0000 Subject: [PATCH] 2006-10-30 Tambet Ingo vpnc/: * properties/Makefile.am: Include new files pcf-file.[ch] in build. Add NetworkManager to CFLAGS and LDADD. * properties/pcf-file.c: Implement. * properties/pcf-file.h: Ditto. * properties/nm-vpnc.c (import_from_file): Rewrite using new Cisco PCF file parser instead of using GKeyFile (which has slightly different semantics). * src/Makefile.am: Add NetworkManager to CFLAGS and LDADD. * src/nm-vpnc-service.c: Remove the leading NetworkManager directory from NM includes since the NM pkg-config file already adds that. * src/nm-vpnc-service-vpnc-helper.c: Ditto. openvpn/: * properties/Makefile.am: Add NetworkManager to CFLAGS and LDADD. * src/Makefile.am: Ditto. * properties/nm-openvpn.c: Remove the leading NetworkManager directory from NM includes since the NM pkg-config file already adds that. * src/nm-openvpn-service-openvpn-helper.c: Ditto. * src/nm-openvpn-service.c: Ditto. pptp/: * src/nm-pppd-plugin.c: Remove the leading NetworkManager directory from NM includes since the NM pkg-config file already adds that. * properties/vpnui_impl.c: Ditto. * properties/vpnui_impl.h: Ditto. * src/nm-ppp-starter.c: Ditto. * src/Makefile.am: Add NetworkManager to CFLAGS and LDADD. * properties/Makefile.am: Add NetworkManager to CFLAGS and LDADD. git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2093 4912f4e0-d625-0410-9fb7-b9a5a253dbdc --- vpn-daemons/openvpn/ChangeLog | 13 ++ vpn-daemons/openvpn/properties/Makefile.am | 10 +- vpn-daemons/openvpn/properties/nm-openvpn.c | 2 +- vpn-daemons/openvpn/src/Makefile.am | 9 +- .../src/nm-openvpn-service-openvpn-helper.c | 2 +- vpn-daemons/openvpn/src/nm-openvpn-service.c | 4 +- vpn-daemons/pptp/ChangeLog | 15 ++ vpn-daemons/pptp/properties/Makefile.am | 10 +- vpn-daemons/pptp/properties/vpnui_impl.c | 2 +- vpn-daemons/pptp/properties/vpnui_impl.h | 2 +- vpn-daemons/pptp/src/Makefile.am | 12 +- vpn-daemons/pptp/src/nm-ppp-starter.c | 4 +- vpn-daemons/pptp/src/nm-pppd-plugin.c | 2 +- vpn-daemons/vpnc/ChangeLog | 20 +++ vpn-daemons/vpnc/properties/Makefile.am | 3 + vpn-daemons/vpnc/properties/nm-vpnc.c | 133 +++++++-------- vpn-daemons/vpnc/properties/pcf-file.c | 158 ++++++++++++++++++ vpn-daemons/vpnc/properties/pcf-file.h | 23 +++ vpn-daemons/vpnc/src/Makefile.am | 7 +- .../vpnc/src/nm-vpnc-service-vpnc-helper.c | 2 +- vpn-daemons/vpnc/src/nm-vpnc-service.c | 4 +- 21 files changed, 336 insertions(+), 101 deletions(-) create mode 100644 vpn-daemons/vpnc/properties/pcf-file.c create mode 100644 vpn-daemons/vpnc/properties/pcf-file.h diff --git a/vpn-daemons/openvpn/ChangeLog b/vpn-daemons/openvpn/ChangeLog index b9a8a56609..1c01d75620 100644 --- a/vpn-daemons/openvpn/ChangeLog +++ b/vpn-daemons/openvpn/ChangeLog @@ -1,3 +1,16 @@ +2006-10-30 Tambet Ingo + + * properties/Makefile.am: Add NetworkManager to CFLAGS and LDADD. + + * src/Makefile.am: Ditto. + + * properties/nm-openvpn.c: Remove the leading NetworkManager directory + from NM includes since the NM pkg-config file already adds that. + + * src/nm-openvpn-service-openvpn-helper.c: Ditto. + + * src/nm-openvpn-service.c: Ditto. + 2006-10-04 Tambet Ingo * properties/nm-openvpn.c (impl_get_widget, impl_get_properties) diff --git a/vpn-daemons/openvpn/properties/Makefile.am b/vpn-daemons/openvpn/properties/Makefile.am index ff145b4e90..8bd659a41e 100644 --- a/vpn-daemons/openvpn/properties/Makefile.am +++ b/vpn-daemons/openvpn/properties/Makefile.am @@ -8,24 +8,26 @@ libnm_openvpn_properties_la_SOURCES = \ gladedir = $(datadir)/gnome-vpn-properties/openvpn glade_DATA = nm-openvpn-dialog.glade -libnm_openvpn_properties_la_CFLAGS = \ +libnm_openvpn_properties_la_CFLAGS = \ $(GLADE_CFLAGS) \ $(GTK_CFLAGS) \ $(GCONF_CFLAGS) \ $(LIBGNOMEUI_CFLAGS) \ + $(NETWORK_MANAGER_CFLAGS) \ -DICONDIR=\""$(datadir)/pixmaps"\" \ -DGLADEDIR=\""$(gladedir)"\" \ -DG_DISABLE_DEPRECATED \ -DGDK_DISABLE_DEPRECATED \ -DGNOME_DISABLE_DEPRECATED \ - -DGNOMELOCALEDIR=\"$(datadir)/locale\" \ + -DGNOMELOCALEDIR=\"$(datadir)/locale\" \ -DVERSION=\"$(VERSION)\" -libnm_openvpn_properties_la_LIBADD = \ +libnm_openvpn_properties_la_LIBADD = \ $(GLADE_LIBS) \ $(GTK_LIBS) \ $(GCONF_LIBS) \ - $(LIBGNOMEUI_LIBS) + $(LIBGNOMEUI_LIBS) \ + $(NETWORK_MANAGER_LIBS) CLEANFILES = *.bak *.gladep *~ diff --git a/vpn-daemons/openvpn/properties/nm-openvpn.c b/vpn-daemons/openvpn/properties/nm-openvpn.c index 17ee3dba52..30e266152a 100644 --- a/vpn-daemons/openvpn/properties/nm-openvpn.c +++ b/vpn-daemons/openvpn/properties/nm-openvpn.c @@ -31,7 +31,7 @@ #define NM_VPN_API_SUBJECT_TO_CHANGE -#include +#include #include "../src/nm-openvpn-service.h" #include "../src/nm-utils.h" diff --git a/vpn-daemons/openvpn/src/Makefile.am b/vpn-daemons/openvpn/src/Makefile.am index 317dece2e5..16a2354261 100644 --- a/vpn-daemons/openvpn/src/Makefile.am +++ b/vpn-daemons/openvpn/src/Makefile.am @@ -3,6 +3,7 @@ INCLUDES = -I${top_srcdir} -I${top_srcdir}/utils -I${top_srcdir}/vpn-daemons/op AM_CPPFLAGS = \ $(DBUS_CFLAGS) \ $(GTHREAD_CFLAGS) \ + $(NETWORK_MANAGER_CFLAGS) \ -Wall \ -DDBUS_API_SUBJECT_TO_CHANGE \ -DG_DISABLE_DEPRECATED \ @@ -26,14 +27,16 @@ nm_openvpn_service_SOURCES = \ nm_openvpn_service_LDADD = \ $(DBUS_LIBS) \ - $(GTHREAD_LIBS) + $(GTHREAD_LIBS) \ + $(NETWORK_MANAGER_LIBS) nm_openvpn_service_openvpn_helper_SOURCES = \ nm-openvpn-service-openvpn-helper.c -nm_openvpn_service_openvpn_helper_LDADD = \ +nm_openvpn_service_openvpn_helper_LDADD = \ $(DBUS_LIBS) \ - $(GTHREAD_LIBS) + $(GTHREAD_LIBS) \ + $(NETWORK_MANAGER_LIBS) CLEANFILES = *~ diff --git a/vpn-daemons/openvpn/src/nm-openvpn-service-openvpn-helper.c b/vpn-daemons/openvpn/src/nm-openvpn-service-openvpn-helper.c index 59469b6681..f586877d26 100644 --- a/vpn-daemons/openvpn/src/nm-openvpn-service-openvpn-helper.c +++ b/vpn-daemons/openvpn/src/nm-openvpn-service-openvpn-helper.c @@ -37,7 +37,7 @@ #include #include #include -#include +#include #include "nm-openvpn-service.h" #include "nm-utils.h" diff --git a/vpn-daemons/openvpn/src/nm-openvpn-service.c b/vpn-daemons/openvpn/src/nm-openvpn-service.c index e653d925ab..68bd838900 100644 --- a/vpn-daemons/openvpn/src/nm-openvpn-service.c +++ b/vpn-daemons/openvpn/src/nm-openvpn-service.c @@ -44,8 +44,8 @@ #include #include -#include -#include +#include +#include #include "nm-openvpn-service.h" #include "nm-utils.h" diff --git a/vpn-daemons/pptp/ChangeLog b/vpn-daemons/pptp/ChangeLog index 231ede4ea9..4295c35705 100644 --- a/vpn-daemons/pptp/ChangeLog +++ b/vpn-daemons/pptp/ChangeLog @@ -1,3 +1,18 @@ +2006-10-30 Tambet Ingo + + * src/nm-pppd-plugin.c: Remove the leading NetworkManager directory + from NM includes since the NM pkg-config file already adds that. + + * properties/vpnui_impl.c: Ditto. + + * properties/vpnui_impl.h: Ditto. + + * src/nm-ppp-starter.c: Ditto. + + * src/Makefile.am: Add NetworkManager to CFLAGS and LDADD. + + * properties/Makefile.am: Add NetworkManager to CFLAGS and LDADD. + 2006-06-20 Satoru SATOH * configure.in (ALL_LINGUAS): Added ja (Japanese). diff --git a/vpn-daemons/pptp/properties/Makefile.am b/vpn-daemons/pptp/properties/Makefile.am index de27cffc5c..b995e34a0d 100644 --- a/vpn-daemons/pptp/properties/Makefile.am +++ b/vpn-daemons/pptp/properties/Makefile.am @@ -21,24 +21,26 @@ libnm_ppp_properties_la_SOURCES = \ gladedir = $(datadir)/gnome-vpn-properties/ppp glade_DATA = nm-ppp-dialog.glade -libnm_ppp_properties_la_CFLAGS = \ +libnm_ppp_properties_la_CFLAGS = \ $(GLADE_CFLAGS) \ $(GTK_CFLAGS) \ $(GCONF_CFLAGS) \ $(LIBGNOMEUI_CFLAGS) \ + $(NETWORK_MANAGER_CFLAGS) \ -DICONDIR=\""$(datadir)/pixmaps"\" \ -DGLADEDIR=\""$(gladedir)"\" \ -DG_DISABLE_DEPRECATED \ -DGDK_DISABLE_DEPRECATED \ -DGNOME_DISABLE_DEPRECATED \ - -DGNOMELOCALEDIR=\"$(datadir)/locale\" \ + -DGNOMELOCALEDIR=\"$(datadir)/locale\" \ -DVERSION=\"$(VERSION)\" -libnm_ppp_properties_la_LIBADD = \ +libnm_ppp_properties_la_LIBADD = \ $(GLADE_LIBS) \ $(GTK_LIBS) \ $(GCONF_LIBS) \ - $(LIBGNOMEUI_LIBS) + $(LIBGNOMEUI_LIBS) \ + $(NETWORK_MANAGER_LIBS) CLEANFILES = *.bak *.gladep *~ diff --git a/vpn-daemons/pptp/properties/vpnui_impl.c b/vpn-daemons/pptp/properties/vpnui_impl.c index 39b89bce23..66eb7e6006 100644 --- a/vpn-daemons/pptp/properties/vpnui_impl.c +++ b/vpn-daemons/pptp/properties/vpnui_impl.c @@ -7,7 +7,7 @@ #include #define NM_VPN_API_SUBJECT_TO_CHANGE -#include +#include #define NMVPNUI_IMPL_C #include "vpnui_impl.h" diff --git a/vpn-daemons/pptp/properties/vpnui_impl.h b/vpn-daemons/pptp/properties/vpnui_impl.h index d157e0fcfa..09007cb1d9 100644 --- a/vpn-daemons/pptp/properties/vpnui_impl.h +++ b/vpn-daemons/pptp/properties/vpnui_impl.h @@ -4,7 +4,7 @@ #include #define NM_VPN_API_SUBJECT_TO_CHANGE -#include +#include struct impl_config diff --git a/vpn-daemons/pptp/src/Makefile.am b/vpn-daemons/pptp/src/Makefile.am index f7ba61bc56..94cbde592f 100644 --- a/vpn-daemons/pptp/src/Makefile.am +++ b/vpn-daemons/pptp/src/Makefile.am @@ -5,9 +5,10 @@ INCLUDES = -I${top_srcdir} \ AM_CPPFLAGS = \ $(DBUS_CFLAGS) \ $(GTHREAD_CFLAGS) \ - $(PPPD_CFLAGS) \ + $(NETWORK_MANAGER_CFLAGS) \ + $(PPPD_CFLAGS) \ + $(NM_VPN_CFLAGS) \ -Wall \ - $(NM_VPN_CFLAGS) \ -DDBUS_API_SUBJECT_TO_CHANGE \ -DG_DISABLE_DEPRECATED \ -DBINDIR=\"$(bindir)\" \ @@ -17,8 +18,8 @@ AM_CPPFLAGS = \ -DLIBDIR=\""$(libdir)"\" \ -DLIBEXECDIR=\""$(libexecdir)"\" \ -DLOCALSTATEDIR=\""$(localstatedir)"\" \ - -DDATADIR=\"$(datadir)\" \ - -fPIC + -DDATADIR=\"$(datadir)\" \ + -fPIC bin_PROGRAMS = nm-ppp-starter @@ -38,7 +39,8 @@ nm_ppp_starter_SOURCES = \ nm_ppp_starter_LDADD = \ $(DBUS_LIBS) \ - $(GTHREAD_LIBS) + $(GTHREAD_LIBS) \ + $(NETWORK_MANAGER_LIBS) nm_pppd_plugin_so_SOURCES = \ nm-pppd-plugin.c \ diff --git a/vpn-daemons/pptp/src/nm-ppp-starter.c b/vpn-daemons/pptp/src/nm-ppp-starter.c index 057f5342bf..3c0a25c21e 100644 --- a/vpn-daemons/pptp/src/nm-ppp-starter.c +++ b/vpn-daemons/pptp/src/nm-ppp-starter.c @@ -43,8 +43,8 @@ #include #include -#include -#include +#include +#include #include "nm-ppp-starter.h" #include "nm-utils.h" diff --git a/vpn-daemons/pptp/src/nm-pppd-plugin.c b/vpn-daemons/pptp/src/nm-pppd-plugin.c index 34fb4bae69..f4926b3227 100644 --- a/vpn-daemons/pptp/src/nm-pppd-plugin.c +++ b/vpn-daemons/pptp/src/nm-pppd-plugin.c @@ -41,7 +41,7 @@ #include #include #include -#include +#include #include "nm-ppp-starter.h" #include "nm-pppd-plugin.h" diff --git a/vpn-daemons/vpnc/ChangeLog b/vpn-daemons/vpnc/ChangeLog index 013138bf74..1c5377d1f8 100644 --- a/vpn-daemons/vpnc/ChangeLog +++ b/vpn-daemons/vpnc/ChangeLog @@ -1,3 +1,23 @@ +2006-10-30 Tambet Ingo + + * properties/Makefile.am: Include new files pcf-file.[ch] in build. + Add NetworkManager to CFLAGS and LDADD. + + * properties/pcf-file.c: Implement. + + * properties/pcf-file.h: Ditto. + + * properties/nm-vpnc.c (import_from_file): Rewrite using new Cisco PCF + file parser instead of using GKeyFile (which has slightly different + semantics). + + * src/Makefile.am: Add NetworkManager to CFLAGS and LDADD. + + * src/nm-vpnc-service.c: Remove the leading NetworkManager directory + from NM includes since the NM pkg-config file already adds that. + + * src/nm-vpnc-service-vpnc-helper.c: Ditto. + 2006-06-19 Satoru SATOH * configure.in (ALL_LINGUAS): Added ja (Japanese). diff --git a/vpn-daemons/vpnc/properties/Makefile.am b/vpn-daemons/vpnc/properties/Makefile.am index 9171d76237..4f024f5715 100644 --- a/vpn-daemons/vpnc/properties/Makefile.am +++ b/vpn-daemons/vpnc/properties/Makefile.am @@ -3,6 +3,8 @@ lib_LTLIBRARIES = libnm-vpnc-properties.la libnm_vpnc_properties_la_SOURCES = \ + pcf-file.c \ + pcf-file.h \ nm-vpnc.c gladedir = $(datadir)/gnome-vpn-properties/vpnc @@ -13,6 +15,7 @@ libnm_vpnc_properties_la_CFLAGS = \ $(GTK_CFLAGS) \ $(GCONF_CFLAGS) \ $(LIBGNOMEUI_CFLAGS) \ + $(NETWORK_MANAGER_CFLAGS) \ -DICONDIR=\""$(datadir)/pixmaps"\" \ -DGLADEDIR=\""$(gladedir)"\" \ -DG_DISABLE_DEPRECATED \ diff --git a/vpn-daemons/vpnc/properties/nm-vpnc.c b/vpn-daemons/vpnc/properties/nm-vpnc.c index c861fcc892..1b119f7546 100644 --- a/vpn-daemons/vpnc/properties/nm-vpnc.c +++ b/vpn-daemons/vpnc/properties/nm-vpnc.c @@ -31,7 +31,8 @@ #define NM_VPN_API_SUBJECT_TO_CHANGE -#include +#include +#include "pcf-file.h" typedef struct _NetworkManagerVpnUIImpl NetworkManagerVpnUIImpl; @@ -478,95 +479,85 @@ impl_get_confirmation_details (NetworkManagerVpnUI *self, gchar **retval) static gboolean import_from_file (NetworkManagerVpnUIImpl *impl, const char *path) { - char *basename; - GKeyFile *keyfile; - gboolean file_is_good; + GHashTable *pcf; + const char *buf; + gboolean have_value; + char *basename = NULL; + gboolean expand = FALSE; + gboolean success = FALSE; - /*printf ("path='%s'\n", path);*/ + pcf = pcf_file_load (path); + if (pcf == NULL) + return FALSE; - file_is_good = FALSE; - basename = g_path_get_basename (path); + /* Connection name */ + if ((buf = pcf_file_lookup_value (pcf, "main", "Description")) == NULL || strlen (buf) < 1) + goto error; + gtk_entry_set_text (impl->w_connection_name, buf); - keyfile = g_key_file_new (); - if (g_key_file_load_from_file (keyfile, path, 0, NULL)) { - char *connectionname = NULL; - char *gateway = NULL; - char *groupname = NULL; - char *username = NULL; - char *domain = NULL; - char *tunneling_mode = NULL; - char *routes = NULL; - gboolean should_expand; + /* Gateway */ + if ((buf = pcf_file_lookup_value (pcf, "main", "Host")) == NULL || strlen (buf) < 1) + goto error; + gtk_entry_set_text (impl->w_gateway, buf); - if ((connectionname = g_key_file_get_string (keyfile, "main", "Description", NULL)) == NULL) - goto error; - if ((gateway = g_key_file_get_string (keyfile, "main", "Host", NULL)) == NULL) - goto error; - if ((groupname = g_key_file_get_string (keyfile, "main", "GroupName", NULL)) == NULL) - goto error; - if ((username = g_key_file_get_string (keyfile, "main", "Username", NULL)) == NULL) - goto error; - if ((domain = g_key_file_get_string (keyfile, "main", "NTDomain", NULL)) == NULL) - goto error; - if ((tunneling_mode = g_key_file_get_string (keyfile, "main", "TunnelingMode", NULL)) == NULL) - goto error; + /* Group name */ + if ((buf = pcf_file_lookup_value (pcf, "main", "GroupName")) == NULL || strlen (buf) < 1) + goto error; + gtk_entry_set_text (impl->w_group_name, buf); - /* may not exist */ - if ((routes = g_key_file_get_string (keyfile, "main", "X-NM-Routes", NULL)) == NULL) - routes = g_strdup (""); + /* Optional settings */ - /* sanity check data */ - if (! (strlen (gateway) > 0 && - strlen (groupname) > 0)) - goto error; + if ((buf = pcf_file_lookup_value (pcf, "main", "UserName"))) + gtk_entry_set_text (impl->w_username, buf); + have_value = buf == NULL ? FALSE : strlen (buf) > 0; + expand |= have_value; + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (impl->w_use_alternate_username), have_value); + gtk_widget_set_sensitive (GTK_WIDGET (impl->w_username), have_value); + gtk_widget_set_sensitive (GTK_WIDGET (impl->w_domain), have_value); - gtk_entry_set_text (impl->w_connection_name, connectionname); - gtk_entry_set_text (impl->w_gateway, gateway); - gtk_entry_set_text (impl->w_group_name, groupname); + if ((buf = pcf_file_lookup_value (pcf, "main", "NTDomain"))) + gtk_entry_set_text (impl->w_domain, buf); + have_value = buf == NULL ? FALSE : strlen (buf) > 0; + expand |= have_value; + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (impl->w_use_domain), have_value); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (impl->w_use_alternate_username), strlen (username) > 0); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (impl->w_use_routes), strlen (routes) > 0); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (impl->w_use_domain), strlen (domain) > 0); - gtk_entry_set_text (impl->w_username, username); - gtk_entry_set_text (impl->w_routes, routes); - gtk_entry_set_text (impl->w_domain, domain); - gtk_widget_set_sensitive (GTK_WIDGET (impl->w_username), strlen (username) > 0); - gtk_widget_set_sensitive (GTK_WIDGET (impl->w_routes), strlen (routes) > 0); - gtk_widget_set_sensitive (GTK_WIDGET (impl->w_domain), strlen (username) > 0); + if ((buf = pcf_file_lookup_value (pcf, "main", "X-NM-Routes"))) + gtk_entry_set_text (impl->w_routes, buf); + have_value = buf == NULL ? FALSE : strlen (buf) > 0; + expand |= have_value; + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (impl->w_use_routes), have_value); + gtk_widget_set_sensitive (GTK_WIDGET (impl->w_routes), have_value); - should_expand = (strlen (username) > 0) || (strlen (domain) > 0) || (strlen (routes) > 0); - gtk_expander_set_expanded (impl->w_opt_info_expander, should_expand); + gtk_expander_set_expanded (impl->w_opt_info_expander, expand); + if ((buf = pcf_file_lookup_value (pcf, "main", "TunnelingMode"))) { /* If applicable, put up warning that TCP tunneling will be disabled */ - if (strcmp (tunneling_mode, "1") == 0) { + + if (strncmp (buf, "1", 1) == 0) { GtkWidget *dialog; - dialog = gtk_message_dialog_new (NULL, - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_WARNING, - GTK_BUTTONS_CLOSE, - _("TCP tunneling not supported")); + basename = g_path_get_basename (path); + dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE, + _("TCP tunneling not supported")); gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), - _("The VPN settings file '%s' specifies that VPN traffic should be tunneled through TCP which is currently not supported in the vpnc software.\n\nThe connection can still be created, with TCP tunneling disabled, however it may not work as expected."), basename); + _("The VPN settings file '%s' specifies that VPN traffic should be tunneled through TCP which is currently not supported in the vpnc software.\n\nThe connection can still be created, with TCP tunneling disabled, however it may not work as expected."), basename); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } - - file_is_good = TRUE; - - error: - g_free (connectionname); - g_free (gateway); - g_free (groupname); - g_free (username); - g_free (domain); - g_free (tunneling_mode); } - g_key_file_free (keyfile); - if (!file_is_good) { + success = TRUE; + + error: + g_hash_table_destroy (pcf); + + if (!success) { GtkWidget *dialog; - + + if (!basename) + basename = g_path_get_basename (path); + dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_WARNING, @@ -580,7 +571,7 @@ import_from_file (NetworkManagerVpnUIImpl *impl, const char *path) g_free (basename); - return file_is_good; + return success; } static void diff --git a/vpn-daemons/vpnc/properties/pcf-file.c b/vpn-daemons/vpnc/properties/pcf-file.c new file mode 100644 index 0000000000..5f7e0d4fd0 --- /dev/null +++ b/vpn-daemons/vpnc/properties/pcf-file.c @@ -0,0 +1,158 @@ +#include +#include +#include +#include + +#include "pcf-file.h" + +static void +pcf_entry_free (PcfEntry *entry) +{ + if (entry) { + g_free (entry->key); + g_free (entry->value); + g_free (entry); + } +} + +/* + The main reader loop here is based on the simple .ini file + parser from avahi/avahi-daemon/ini-file-parser.c +*/ + +GHashTable * +pcf_file_load (const char *fname) +{ + FILE *fo; + unsigned line; + GHashTable *pcf; + GHashTable *group = NULL; + + g_return_val_if_fail (fname != NULL, NULL); + + if (!(fo = fopen (fname, "r"))) { + g_warning ("Failed to open file '%s': %s", fname, strerror (errno)); + return NULL; + } + + pcf = g_hash_table_new_full (g_str_hash, g_str_equal, + g_free, + (GDestroyNotify) g_hash_table_destroy); + + line = 0; + while (!feof (fo)) { + char ln[256], *s, *e; + + if (!(fgets (ln, sizeof (ln), fo))) + break; + + line++; + + s = ln + strspn (ln, " \t"); + s[strcspn (s, "\r\n")] = 0; + + /* Skip comments and empty lines */ + if (*s == ';' || *s == 0) + continue; + + if (*s == '[') { + /* new group */ + + if (!(e = strchr (s, ']'))) { + g_warning ("Unclosed group header in %s:%u: <%s>", fname, line, s); + goto fail; + } + + *e = 0; + + group = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, + (GDestroyNotify) pcf_entry_free); + + g_hash_table_insert (pcf, g_utf8_strdown (s+1, -1), group); + } else { + PcfEntry *entry; + + /* Normal assignment */ + if (!(e = strchr (s, '='))) { + g_warning ("Missing assignment in %s:%u: <%s>", fname, line, s); + goto fail; + } + + if (!group) { + g_warning ("Assignment outside group in %s:%u <%s>", fname, line, s); + goto fail; + } + + /* Split the key and the value */ + *(e++) = 0; + + entry = g_new (PcfEntry, 1); + entry->value = g_strdup (e); + + if (*s == '!') { + entry->key = g_utf8_strdown (s+1, -1); + entry->read_only = TRUE; + } else { + entry->key = g_utf8_strdown (s, -1); + entry->read_only = FALSE; + } + + g_hash_table_insert (group, entry->key, entry); + } + } + + fclose (fo); + + return pcf; + +fail: + + if (fo) + fclose (fo); + + if (pcf) + g_hash_table_destroy (pcf); + + return NULL; +} + +PcfEntry * +pcf_file_lookup (GHashTable *pcf_file, + const char *group, + const char *key) +{ + gpointer section; + PcfEntry *entry = NULL; + char *group_lower = NULL; + char *key_lower = NULL; + + g_return_val_if_fail (pcf_file != NULL, NULL); + g_return_val_if_fail (group != NULL, NULL); + g_return_val_if_fail (key != NULL, NULL); + + group_lower = g_utf8_strdown (group, -1); + section = g_hash_table_lookup (pcf_file, group_lower); + if (section) { + key_lower = g_utf8_strdown (key, -1); + entry = (PcfEntry *) g_hash_table_lookup ((GHashTable *) section, key_lower); + } + + g_free (group_lower); + g_free (key_lower); + + return entry; +} + +const char * +pcf_file_lookup_value (GHashTable *pcf_file, + const char *group, + const char *key) +{ + PcfEntry *entry; + + entry = pcf_file_lookup (pcf_file, group, key); + if (entry) + return entry->value; + + return NULL; +} diff --git a/vpn-daemons/vpnc/properties/pcf-file.h b/vpn-daemons/vpnc/properties/pcf-file.h new file mode 100644 index 0000000000..a9bdb02fe1 --- /dev/null +++ b/vpn-daemons/vpnc/properties/pcf-file.h @@ -0,0 +1,23 @@ +#ifndef PCF_FILE_H +#define PCF_FILE_H + +#include + +typedef struct PcfEntry PcfEntry; + +struct PcfEntry { + char *key; + char *value; + gboolean read_only; +}; + +GHashTable *pcf_file_load (const char *fname); +PcfEntry *pcf_file_lookup (GHashTable *pcf_file, + const char *group, + const char *key); + +const char *pcf_file_lookup_value (GHashTable *pcf_file, + const char *group, + const char *key); + +#endif /* PCF_FILE_H */ diff --git a/vpn-daemons/vpnc/src/Makefile.am b/vpn-daemons/vpnc/src/Makefile.am index 87160b8a4b..b8cfac4843 100644 --- a/vpn-daemons/vpnc/src/Makefile.am +++ b/vpn-daemons/vpnc/src/Makefile.am @@ -3,6 +3,7 @@ INCLUDES = -I${top_srcdir} -I${top_srcdir}/utils -I${top_srcdir}/vpn-daemons/vpn AM_CPPFLAGS = \ $(DBUS_CFLAGS) \ $(GTHREAD_CFLAGS) \ + $(NETWORK_MANAGER_CFLAGS) \ -Wall \ -DDBUS_API_SUBJECT_TO_CHANGE \ -DG_DISABLE_DEPRECATED \ @@ -26,7 +27,8 @@ nm_vpnc_service_SOURCES = \ nm_vpnc_service_LDADD = \ $(DBUS_LIBS) \ - $(GTHREAD_LIBS) + $(GTHREAD_LIBS) \ + $(NETWORK_MANAGER_LIBS) nm_vpnc_service_vpnc_helper_SOURCES = \ @@ -34,6 +36,7 @@ nm_vpnc_service_vpnc_helper_SOURCES = \ nm_vpnc_service_vpnc_helper_LDADD = \ $(DBUS_LIBS) \ - $(GTHREAD_LIBS) + $(GTHREAD_LIBS) \ + $(NETWORK_MANAGER_LIBS) CLEANFILES = *~ diff --git a/vpn-daemons/vpnc/src/nm-vpnc-service-vpnc-helper.c b/vpn-daemons/vpnc/src/nm-vpnc-service-vpnc-helper.c index 9ee46d62a4..758d55c1e6 100644 --- a/vpn-daemons/vpnc/src/nm-vpnc-service-vpnc-helper.c +++ b/vpn-daemons/vpnc/src/nm-vpnc-service-vpnc-helper.c @@ -29,7 +29,7 @@ #include #include #include -#include +#include #include "nm-vpnc-service.h" #include "nm-utils.h" diff --git a/vpn-daemons/vpnc/src/nm-vpnc-service.c b/vpn-daemons/vpnc/src/nm-vpnc-service.c index fbef9c670c..2b90675c74 100644 --- a/vpn-daemons/vpnc/src/nm-vpnc-service.c +++ b/vpn-daemons/vpnc/src/nm-vpnc-service.c @@ -41,8 +41,8 @@ #include #include -#include -#include +#include +#include #include "nm-vpnc-service.h" #include "nm-utils.h"