[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