[Sugar-devel] [PATCH sugar] sugar-session: export manual Gnome proxy settings as $http_proxy

Sascha Silbe silbe at activitycentral.com
Tue Jan 24 16:31:03 EST 2012


From: Jerry Vonau <jvonau at shaw.ca>

Some applications and tools and even some parts of Sugar will use the
http_proxy environment variable if set, but don't use the Gnome (GConf) proxy
settings.

After changing the GConf proxy settings, Sugar needs to be restarted for the
http_proxy environment variable to be updated.

[factored out into separate function; some clean-ups; added description]
Signed-off-by: Sascha Silbe <silbe at activitycentral.com>
---
 bin/sugar-session |   26 ++++++++++++++++++++++++++
 1 files changed, 26 insertions(+), 0 deletions(-)

diff --git a/bin/sugar-session b/bin/sugar-session
index ee0048d..7eaa8f1 100755
--- a/bin/sugar-session
+++ b/bin/sugar-session
@@ -2,6 +2,7 @@
 # Copyright (C) 2006, Red Hat, Inc.
 # Copyright (C) 2009, One Laptop Per Child Association Inc
 # Copyright (C) 2010, Plan Ceibal <comunidad at plan.ceibal.edu.uy>
+# Copyright (C) 2011, OLPC-AU.
 #
 # 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
@@ -211,6 +212,30 @@ def setup_accessibility_cb():
     accessibility_manager = accessibility.AccessibilityManager()
     accessibility_manager.setup_accessibility()

+
+def export_proxy_settings():
+    """Export manual proxy settings from GConf as environment variables
+
+    Some applications and tools and even some parts of Sugar will use
+    the http_proxy environment variable if set, but don't use the Gnome
+    (GConf) proxy settings.
+    """
+    client = gconf.client_get_default()
+    if client.get_string('/system/proxy/mode') != 'manual':
+        return
+
+    http_host = client.get_string('/system/http_proxy/host')
+    http_port = client.get_int('/system/http_proxy/port')
+    use_auth = client.get_bool('/system/http_proxy/use_authentication')
+    proxy_info = '%s:%d' % (http_host, http_port)
+    if use_auth:
+        user = client.get_string('/system/http_proxy/authentication_user')
+        pword = client.get_string('/system/http_proxy/authentication_password')
+        proxy_info = '%s:%s@%s' % (user, pword, proxy_info)
+
+    os.environ['http_proxy'] = 'http://%s/' % proxy_info
+
+
 def main():
     try:
         from sugar import env
@@ -253,6 +278,7 @@ def main():
     if timezone is not None and timezone:
         os.environ['TZ'] = timezone

+    export_proxy_settings()
     set_fonts()

     # this must be added early, so that it executes and unfreezes the screen
--
1.7.6



More information about the Sugar-devel mailing list