[Phonehome-commits] r64 - trunk/frontend/src

pamadio at garage.maemo.org pamadio at garage.maemo.org
Sat Oct 18 23:33:40 EEST 2008


Author: pamadio
Date: 2008-10-18 23:33:39 +0300 (Sat, 18 Oct 2008)
New Revision: 64

Modified:
   trunk/frontend/src/phonehome-gui
Log:
front end works with http manual proxy

Modified: trunk/frontend/src/phonehome-gui
===================================================================
--- trunk/frontend/src/phonehome-gui	2008-10-18 19:45:43 UTC (rev 63)
+++ trunk/frontend/src/phonehome-gui	2008-10-18 20:33:39 UTC (rev 64)
@@ -27,10 +27,22 @@
 import xmlrpclib
 import conic
 import dbus
+import httplib
 _ = gettext.gettext
 
+class ProxiedTransport(xmlrpclib.Transport):
+    def set_proxy(self, proxy):
+        self.proxy = proxy
+    def make_connection(self, host):
+        self.realhost = host
+        h = httplib.HTTP(self.proxy)
+        return h
+    def send_request(self, connection, handler, request_body):
+        connection.putrequest("POST", 'http://%s%s' % (self.realhost, handler))
+    def send_host(self, connection, host):
+        connection.putheader('Host', self.realhost)
+                                                
 
-
 class phonehome_frontend(hildon.Program):
     def __init__(self):
         self.program=hildon.Program()
@@ -42,8 +54,11 @@
         self.connection = conic.Connection()
         self.connection.connect("connection-event", self.connection_cb)
         self.connection.set_property("automatic-connection-events", True)
-        self.http_proxy=None
-        self.https_proxy=None
+        self.proxy_mode=conic.PROXY_MODE_NONE
+        self.http_proxy=False
+        self.https_proxy=False
+        self.http_proxy_port=0
+        self.https_proxy_port=0
         
         self.gconf_default=gconf.client_get_default()
         self.gconf_root="/apps/osso/phonehome"
@@ -114,8 +129,20 @@
         passw=self.password_entry.get_text()
         server_url=self.server_entry.get_text()
         print id,passw,server_url
-        try:
+        print "proxy_mode=",self.proxy_mode
+        
+
+        if self.proxy_mode==conic.PROXY_MODE_NONE:
             server=xmlrpclib.ServerProxy(server_url)
+        elif self.proxy_mode==conic.PROXY_MODE_MANUAL:
+            p = ProxiedTransport()
+            p.set_proxy("%s:%s"%(self.http_proxy,self.http_proxy_port))
+            server=xmlrpclib.ServerProxy(server_url,transport=p)
+        else:
+            sysnote.system_note_infoprint(_("Automatic proxy mode not supported"))
+            return
+
+        try:                
             sysnote=osso.SystemNote(self.osso_context)
             if(server.test_login(id,passw)):
                 msg=_("Connection successfull")
@@ -125,15 +152,27 @@
             msg=_("Connection failed")
         sysnote.system_note_infoprint(msg)
 
+
     def connection_cb(self,connection, event):
         status = event.get_status()
 
         if status == conic.STATUS_CONNECTED:
+            self.proxy_mode=self.connection.get_proxy_mode()
+            
             print "on est connecte"
-            self.http_proxy=self.connection.get_proxy_host(conic.PROXY_PROTOCOL_HTTP)
-            self.https_proxy=self.connection.get_proxy_host(conic.PROXY_PROTOCOL_HTTPS)
+            if self.proxy_mode==conic.PROXY_MODE_MANUAL:
+                self.http_proxy=self.connection.get_proxy_host(conic.PROXY_PROTOCOL_HTTP)
+                self.http_proxy_port=self.connection.get_proxy_port(conic.PROXY_PROTOCOL_HTTP)
+                self.https_proxy=self.connection.get_proxy_host(conic.PROXY_PROTOCOL_HTTPS)
+                self.https_proxy_port=self.connection.get_proxy_port(conic.PROXY_PROTOCOL_HTTPS)
+            else:
+                self.http_proxy=False
+                self.https_proxy=False
+                self.http_proxy_port=0
+                self.https_proxy=0
+
             print "proxy=",self.http_proxy
-
+            print "port=",self.http_proxy_port
 """
 locale.setlocale(locale.LC_ALL, "fr_FR")
 os.environ["LANGUAGE"]="fr_FR"



More information about the Phonehome-commits mailing list