[evolution-data-server] Migrate proxy settings from Evolution.



commit 94c7b94561908485f8e667135ab9aa24ec1fdf76
Author: Matthew Barnes <mbarnes redhat com>
Date:   Tue Oct 8 08:46:53 2013 -0400

    Migrate proxy settings from Evolution.
    
    Populate a ~/.config/evolution/sources/system-proxy.source file from
    the old "org.gnome.evolution.shell.network-config" schema on startup,
    and tag the schema keys as deprecated in their description fields.

 libedataserver/Makefile.am                         |   26 +---
 libedataserver/libedataserver.convert              |   14 --
 ...e.evolution.shell.network-config.gschema.xml.in |   69 ----------
 services/evolution-source-registry/Makefile.am     |   11 ++
 .../evolution-source-registry-migrate-proxies.c    |  137 ++++++++++++++++++++
 .../evolution-source-registry.c                    |    5 +
 ...e.evolution.shell.network-config.gschema.xml.in |   75 +++++++++++
 7 files changed, 235 insertions(+), 102 deletions(-)
---
diff --git a/libedataserver/Makefile.am b/libedataserver/Makefile.am
index dea2640..e672443 100644
--- a/libedataserver/Makefile.am
+++ b/libedataserver/Makefile.am
@@ -189,27 +189,15 @@ libedataserver_1_2_la_LIBADD += @predeps_CXX@ libedataserver-private.la @postdep
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = libedataserver-$(API_VERSION).pc
 
-gsettings_SCHEMAS =                                                    \
-       org.gnome.evolution.shell.network-config.gschema.xml
+EXTRA_DIST = \
+       $(pkgconfig_DATA:-$(API_VERSION).pc=.pc.in) \
+       eds-version.h.in
 
- INTLTOOL_XML_NOMERGE_RULE@
+CLEANFILES = $(BUILT_SOURCES)
 
- GSETTINGS_RULES@
-
-convertdir = $(datadir)/GConf/gsettings
-convert_DATA = libedataserver.convert
-
-EXTRA_DIST =                                           \
-       $(pkgconfig_DATA:-$(API_VERSION).pc=.pc.in)     \
-       eds-version.h.in                                \
-       $(convert_DATA)                                 \
-       $(gsettings_SCHEMAS:.xml=.xml.in)
-
-CLEANFILES = $(BUILT_SOURCES) $(gsettings_SCHEMAS:.xml=.valid)
-
-DISTCLEANFILES = eds-version.h                         \
-       $(pkgconfig_DATA)                               \
-       $(gsettings_SCHEMAS)
+DISTCLEANFILES = \
+       eds-version.h \
+       $(pkgconfig_DATA)
 
 -include $(INTROSPECTION_MAKEFILE)
 INTROSPECTION_GIRS =
diff --git a/services/evolution-source-registry/Makefile.am b/services/evolution-source-registry/Makefile.am
index 65d8dd7..e9fdb09 100644
--- a/services/evolution-source-registry/Makefile.am
+++ b/services/evolution-source-registry/Makefile.am
@@ -24,20 +24,30 @@ builtin_sources = $(builtin_sources_in_files:.source.in=.source)
 %.source: %.source.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po)
        $(AM_V_GEN) $(MKDIR_P) builtin && LC_ALL=C $(INTLTOOL_MERGE) -d -u -c 
$(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
 
+gsettings_SCHEMAS = org.gnome.evolution.shell.network-config.gschema.xml
+ INTLTOOL_XML_NOMERGE_RULE@
+ GSETTINGS_RULES@
+
 service_in_files = org.gnome.evolution.dataserver.Sources.service.in
 servicedir = $(datadir)/dbus-1/services
 service_DATA = $(service_in_files:.service.in=.service)
 @EVO_SUBST_SERVICE_RULE@
 
+DISTCLEANFILES = \
+       $(gsettings_SCHEMAS) \
+       $(NULL)
+
 CLEANFILES = \
        $(BUILT_SOURCES) \
        $(builtin_sources) \
+       $(gsettings_SCHEMAS:.xml=.valid) \
        $(service_DATA) \
        $(NULL)
 
 EXTRA_DIST = \
        evolution-source-registry-resource.xml \
        $(builtin_sources_in_files) \
+       $(gsettings_SCHEMAS:.xml=.xml.in) \
        $(service_in_files) \
        $(NULL)
 
@@ -60,6 +70,7 @@ evolution_source_registry_SOURCES = \
        $(BUILT_SOURCES) \
        evolution-source-registry.c \
        evolution-source-registry-migrate-basedir.c \
+       evolution-source-registry-migrate-proxies.c \
        evolution-source-registry-migrate-sources.c \
        evolution-source-registry-migrate-imap-to-imapx.c \
        $(NULL)
diff --git a/services/evolution-source-registry/evolution-source-registry-migrate-proxies.c 
b/services/evolution-source-registry/evolution-source-registry-migrate-proxies.c
new file mode 100644
index 0000000..4647085
--- /dev/null
+++ b/services/evolution-source-registry/evolution-source-registry-migrate-proxies.c
@@ -0,0 +1,137 @@
+/*
+ * evolution-source-registry-migrate-proxies.c
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+#include <config.h>
+#include <glib/gi18n-lib.h>
+
+#include <libebackend/libebackend.h>
+
+#define NETWORK_CONFIG_SCHEMA_ID "org.gnome.evolution.shell.network-config"
+
+/* Forward Declarations */
+void evolution_source_registry_migrate_proxies (ESourceRegistryServer *server);
+
+void
+evolution_source_registry_migrate_proxies (ESourceRegistryServer *server)
+{
+       GSettings *settings;
+       ESource *source;
+       ESourceProxy *extension;
+       EProxyMethod method;
+       const gchar *extension_name;
+       const gchar *user_dir;
+       gboolean system_proxy_exists;
+       gboolean v_bool;
+       gchar *filename;
+       gchar *string;
+       gchar **strv;
+       gint v_int;
+
+       g_return_if_fail (E_IS_SOURCE_REGISTRY_SERVER (server));
+
+       /* If a 'system-proxy.source' file already exists, leave it alone.
+        * Otherwise, populate the built-in proxy profile from Evolution's
+        * so-called "network-config" in GSettings. */
+
+       user_dir = e_server_side_source_get_user_dir ();
+       filename = g_build_filename (user_dir, "system-proxy.source", NULL);
+       system_proxy_exists = g_file_test (filename, G_FILE_TEST_IS_REGULAR);
+       g_free (filename);
+
+       if (system_proxy_exists)
+               return;
+
+       source = e_source_registry_server_ref_source (server, "system-proxy");
+       g_return_if_fail (source != NULL);
+
+       extension_name = E_SOURCE_EXTENSION_PROXY;
+       extension = e_source_get_extension (source, extension_name);
+
+       settings = g_settings_new (NETWORK_CONFIG_SCHEMA_ID);
+
+       switch (g_settings_get_int (settings, "proxy-type")) {
+               case 1:
+                       method = E_PROXY_METHOD_NONE;
+                       break;
+               case 2:
+                       method = E_PROXY_METHOD_MANUAL;
+                       break;
+               default:
+                       method = E_PROXY_METHOD_DEFAULT;
+                       break;
+       }
+
+       e_source_proxy_set_method (extension, method);
+
+       /* Skip empty strings / zero values from GSettings and
+        * defer to the default values defined by ESourceProxy. */
+
+       string = g_settings_get_string (settings, "autoconfig-url");
+       if (string != NULL && *string != '\0')
+               e_source_proxy_set_autoconfig_url (extension, string);
+       g_free (string);
+
+       strv = g_settings_get_strv (settings, "ignore-hosts");
+       if (strv != NULL && *strv != NULL)
+               e_source_proxy_set_ignore_hosts (
+                       extension, (const gchar * const *) strv);
+       g_strfreev (strv);
+
+       string = g_settings_get_string (settings, "http-host");
+       if (string != NULL && *string != '\0')
+               e_source_proxy_set_http_host (extension, string);
+       g_free (string);
+
+       v_int = g_settings_get_int (settings, "http-port");
+       if (v_int > 0)
+               e_source_proxy_set_http_port (extension, (guint16) v_int);
+
+       v_bool = g_settings_get_boolean (settings, "use-authentication");
+       e_source_proxy_set_http_use_auth (extension, v_bool);
+
+       string = g_settings_get_string (settings, "authentication-user");
+       if (string != NULL && *string != '\0')
+               e_source_proxy_set_http_auth_user (extension, string);
+       g_free (string);
+
+       string = g_settings_get_string (settings, "authentication-password");
+       if (string != NULL && *string != '\0')
+               e_source_proxy_set_http_auth_password (extension, string);
+       g_free (string);
+
+       string = g_settings_get_string (settings, "secure-host");
+       if (string != NULL && *string != '\0')
+               e_source_proxy_set_https_host (extension, string);
+       g_free (string);
+
+       v_int = g_settings_get_int (settings, "secure-port");
+       if (v_int > 0)
+               e_source_proxy_set_https_port (extension, (guint16) v_int);
+
+       string = g_settings_get_string (settings, "socks-host");
+       if (string != NULL && *string != '\0')
+               e_source_proxy_set_socks_host (extension, string);
+       g_free (string);
+
+       v_int = g_settings_get_int (settings, "socks-port");
+       if (v_int > 0)
+               e_source_proxy_set_socks_port (extension, (guint16) v_int);
+
+       g_object_unref (settings);
+}
+
diff --git a/services/evolution-source-registry/evolution-source-registry.c 
b/services/evolution-source-registry/evolution-source-registry.c
index b0d040f..6aeced4 100644
--- a/services/evolution-source-registry/evolution-source-registry.c
+++ b/services/evolution-source-registry/evolution-source-registry.c
@@ -40,6 +40,8 @@ gboolean      evolution_source_registry_migrate_imap_to_imapx
                                                (ESourceRegistryServer *server,
                                                 GKeyFile *key_file,
                                                 const gchar *uid);
+void           evolution_source_registry_migrate_proxies
+                                               (ESourceRegistryServer *server);
 
 static void
 evolution_source_registry_load_error (ESourceRegistryServer *server,
@@ -100,6 +102,9 @@ evolution_source_registry_load_all (ESourceRegistryServer *server,
        if (!success)
                return FALSE;
 
+       /* Migrate proxy settings from Evolution. */
+       evolution_source_registry_migrate_proxies (server);
+
        /* Signal that all files are now loaded.  One thing this
         * does is tell the cache-reaper module to start scanning
         * for orphaned cache directories. */
diff --git a/services/evolution-source-registry/org.gnome.evolution.shell.network-config.gschema.xml.in 
b/services/evolution-source-registry/org.gnome.evolution.shell.network-config.gschema.xml.in
new file mode 100644
index 0000000..2651582
--- /dev/null
+++ b/services/evolution-source-registry/org.gnome.evolution.shell.network-config.gschema.xml.in
@@ -0,0 +1,75 @@
+<schemalist>
+  <schema gettext-domain="evolution-data-server" id="org.gnome.evolution.shell.network-config" 
path="/org/gnome/evolution/shell/network-config/">
+
+    <!-- This entire schema is deprecated.  Network proxy settings are
+         integrated into the ESource framework and are written to disk
+         as plain text key files.
+    -->
+
+    <key name="proxy-type" type="i">
+      <default>0</default>
+      <_summary>(Deprecated) Proxy type to use</_summary>
+      <_description>This key was deprecated in version 3.12 and should no longer be used.  Proxy settings 
are now integrated into Evolution-Data-Server's account system.  See the ESourceProxy API documentation for 
details.</_description>
+    </key>
+    <key name="use-http-proxy" type="b">
+      <default>false</default>
+      <_summary>(Deprecated) Whether to use http-proxy</_summary>
+      <_description>This key was deprecated in version 3.12 and should no longer be used.  Proxy settings 
are now integrated into Evolution-Data-Server's account system.  See the ESourceProxy API documentation for 
details.</_description>
+    </key>
+    <key name="use-authentication" type="b">
+      <default>false</default>
+      <_summary>(Deprecated) Whether proxy server requires authentication</_summary>
+      <_description>This key was deprecated in version 3.12 and should no longer be used.  Proxy settings 
are now integrated into Evolution-Data-Server's account system.  See the ESourceProxy API documentation for 
details.</_description>
+    </key>
+    <key name="http-host" type="s">
+      <default>''</default>
+      <_summary>(Deprecated) Host name for HTTP requests</_summary>
+      <_description>This key was deprecated in version 3.12 and should no longer be used.  Proxy settings 
are now integrated into Evolution-Data-Server's account system.  See the ESourceProxy API documentation for 
details.</_description>
+    </key>
+    <key name="http-port" type="i">
+      <default>0</default>
+      <_summary>(Deprecated) Port number for HTTP requests</_summary>
+      <_description>This key was deprecated in version 3.12 and should no longer be used.  Proxy settings 
are now integrated into Evolution-Data-Server's account system.  See the ESourceProxy API documentation for 
details.</_description>
+    </key>
+    <key name="authentication-user" type="s">
+      <default>''</default>
+      <_summary>(Deprecated) Proxy authentication user name</_summary>
+      <_description>This key was deprecated in version 3.12 and should no longer be used.  Proxy settings 
are now integrated into Evolution-Data-Server's account system.  See the ESourceProxy API documentation for 
details.</_description>
+    </key>
+    <key name="authentication-password" type="s">
+      <default>''</default>
+      <_summary>(Deprecated) Proxy authentication password</_summary>
+      <_description>This key was deprecated in version 3.12 and should no longer be used.  Proxy settings 
are now integrated into Evolution-Data-Server's account system.  See the ESourceProxy API documentation for 
details.</_description>
+    </key>
+    <key name="ignore-hosts" type="as">
+      <default>[]</default>
+      <_summary>(Deprecated) List of hosts to connect to without proxy</_summary>
+      <_description>This key was deprecated in version 3.12 and should no longer be used.  Proxy settings 
are now integrated into Evolution-Data-Server's account system.  See the ESourceProxy API documentation for 
details.</_description>
+    </key>
+    <key name="secure-host" type="s">
+      <default>''</default>
+      <_summary>(Deprecated) Host name for HTTPS requests</_summary>
+      <_description>This key was deprecated in version 3.12 and should no longer be used.  Proxy settings 
are now integrated into Evolution-Data-Server's account system.  See the ESourceProxy API documentation for 
details.</_description>
+    </key>
+    <key name="secure-port" type="i">
+      <default>0</default>
+      <_summary>(Deprecated) Port number for HTTPS requests</_summary>
+      <_description>This key was deprecated in version 3.12 and should no longer be used.  Proxy settings 
are now integrated into Evolution-Data-Server's account system.  See the ESourceProxy API documentation for 
details.</_description>
+    </key>
+    <key name="socks-host" type="s">
+      <default>''</default>
+      <_summary>(Deprecated) Host name for SOCKS requests</_summary>
+      <_description>This key was deprecated in version 3.12 and should no longer be used.  Proxy settings 
are now integrated into Evolution-Data-Server's account system.  See the ESourceProxy API documentation for 
details.</_description>
+    </key>
+    <key name="socks-port" type="i">
+      <default>0</default>
+      <_summary>(Deprecated) Port number for SOCKS requests</_summary>
+      <_description>This key was deprecated in version 3.12 and should no longer be used.  Proxy settings 
are now integrated into Evolution-Data-Server's account system.  See the ESourceProxy API documentation for 
details.</_description>
+    </key>
+    <key name="autoconfig-url" type="s">
+      <default>''</default>
+      <_summary>(Deprecated) Automatic proxy configuration URL</_summary>
+      <_description>This key was deprecated in version 3.12 and should no longer be used.  Proxy settings 
are now integrated into Evolution-Data-Server's account system.  See the ESourceProxy API documentation for 
details.</_description>
+    </key>
+  </schema>
+</schemalist>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]