diff options
-rw-r--r-- | e-util/ChangeLog | 5 | ||||
-rw-r--r-- | e-util/Makefile.am | 2 | ||||
-rw-r--r-- | e-util/e-proxy.c | 96 | ||||
-rw-r--r-- | e-util/e-proxy.h | 38 | ||||
-rw-r--r-- | e-util/ename/Makefile.am | 1 |
5 files changed, 142 insertions, 0 deletions
diff --git a/e-util/ChangeLog b/e-util/ChangeLog index fcfbb86bcc..1491972331 100644 --- a/e-util/ChangeLog +++ b/e-util/ChangeLog @@ -1,3 +1,8 @@ +2002-08-28 Jeffrey Stedfast <fejj@ximian.com> + + * e-proxy.[c,h] (e_proxy_init): New convenience function to + initialise the proxy settings for soup to use. + 2002-08-27 Rodrigo Moya <rodrigo@ximian.com> * e-config-listener.c[ch] (e_config_listener_get_float_with_default, diff --git a/e-util/Makefile.am b/e-util/Makefile.am index 75481cdfcf..00b7db92e2 100644 --- a/e-util/Makefile.am +++ b/e-util/Makefile.am @@ -40,6 +40,7 @@ eutilinclude_HEADERS = \ e-msgport.h \ e-passwords.h \ e-path.h \ + e-proxy.h \ e-request.h \ e-sexp.h \ e-time-utils.h \ @@ -69,6 +70,7 @@ libeutil_la_SOURCES = \ e-msgport.c \ e-passwords.c \ e-path.c \ + e-proxy.c \ e-request.c \ e-sexp.c \ e-time-utils.c \ diff --git a/e-util/e-proxy.c b/e-util/e-proxy.c new file mode 100644 index 0000000000..469db70ba3 --- /dev/null +++ b/e-util/e-proxy.c @@ -0,0 +1,96 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * Authors: Jeffrey Stedfast <fejj@ximian.com> + * + * Copyright 2002 Ximian, Inc. (www.ximian.com) + * + * 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., 59 Temple Street #330, Boston, MA 02111-1307, USA. + * + */ + + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <glib.h> + +#include <gconf/gconf.h> +#include <gconf/gconf-client.h> + +#include <libsoup/soup.h> + +#include "e-proxy.h" + +static void +set_proxy (GConfClient *client) +{ + SoupContext *context; + char *proxy_server, *proxy_user, *proxy_pw, *uri; + gboolean use_auth, use_proxy; + int proxy_port; + + use_proxy = gconf_client_get_bool (client, "/system/gnome-vfs/use-http-proxy", NULL); + if (use_proxy == FALSE) { + return; + } + + proxy_server = gconf_client_get_string (client, "/system/gnome-vfs/http-proxy-host", NULL); + proxy_port = gconf_client_get_int (client, "/system/gnome-vfs/http-proxy-port", NULL); + + use_auth = gconf_client_get_bool (client, "/system/gnome-vfs/use-http-proxy-authorization", NULL); + if (use_auth == TRUE) { + proxy_user = gconf_client_get_string (client, "/system/gnome-vfs/http-proxy-authorization-user", NULL); + proxy_pw = gconf_client_get_string (client, "/system/gnome-vfs/http-proxy-authorization-password", NULL); + + uri = g_strdup_printf ("http://%s:%s@%s:%d", proxy_user, proxy_pw, proxy_server, proxy_port); + } else { + uri = g_strdup_printf ("http://%s:%d", proxy_server, proxy_port); + } + + context = soup_context_get (uri); + soup_set_proxy (context); + soup_context_unref (context); + g_free (uri); +} + +static void +proxy_setting_changed (GConfClient *client, guint32 cnxn_id, + GConfEntry *entry, gpointer user_data) +{ + set_proxy (client); +} + +void +e_proxy_init () +{ + GConfClient *client; + + /* We get the gnome-vfs proxy keys here + set soup up to use the proxy, + and listen to any changes */ + + if (!(client = gconf_client_get_default ())) + return; + + /* Listen to the changes in the gnome-vfs path */ + gconf_client_add_dir (client, "/system/gnome-vfs", + GCONF_CLIENT_PRELOAD_ONELEVEL, NULL); + + gconf_client_notify_add (client, "/system/gnome-vfs/", + proxy_setting_changed, NULL, NULL, NULL); + + set_proxy (client); +} diff --git a/e-util/e-proxy.h b/e-util/e-proxy.h new file mode 100644 index 0000000000..915592cef1 --- /dev/null +++ b/e-util/e-proxy.h @@ -0,0 +1,38 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * Authors: Jeffrey Stedfast <fejj@ximian.com> + * + * Copyright 2002 Ximian, Inc. (www.ximian.com) + * + * 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., 59 Temple Street #330, Boston, MA 02111-1307, USA. + * + */ + + +#ifndef __E_PROXY_H__ +#define __E_PROXY_H__ + +#ifdef __cplusplus +extern "C" { +#pragma } +#endif /* __cplusplus */ + +void e_proxy_init (void); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __E_PROXY_H__ */ diff --git a/e-util/ename/Makefile.am b/e-util/ename/Makefile.am index 551399bc9f..480502141e 100644 --- a/e-util/ename/Makefile.am +++ b/e-util/ename/Makefile.am @@ -47,4 +47,5 @@ test_ename_western_gtk_SOURCES = \ test_ename_western_gtk_LDADD = \ $(ename_libs) \ + $(E_UTIL_LIBS) \ $(top_builddir)/e-util/libeutil.la |