Index: net/tools/testserver/testserver.py |
diff --git a/net/tools/testserver/testserver.py b/net/tools/testserver/testserver.py |
index cc66ffd3aee02960f98bab897898022c4e5e5924..9e2ffbd421b42ad1b427a385e70ebe4b10c64697 100755 |
--- a/net/tools/testserver/testserver.py |
+++ b/net/tools/testserver/testserver.py |
@@ -132,6 +132,7 @@ class SyncHTTPServer(StoppableHTTPServer): |
self._xmpp_server = xmppserver.XmppServer( |
self._xmpp_socket_map, ('localhost', 0)) |
self.xmpp_port = self._xmpp_server.getsockname()[1] |
+ self.authenticated = True |
def GetXmppServer(self): |
return self._xmpp_server |
@@ -155,6 +156,12 @@ class SyncHTTPServer(StoppableHTTPServer): |
self.handle_error(request, client_address) |
self.close_request(request) |
+ def SetAuthenticated(self, auth_valid): |
+ self.authenticated = auth_valid |
+ |
+ def GetAuthenticated(self): |
+ return self.authenticated |
+ |
def serve_forever(self): |
"""This is a merge of asyncore.loop() and SocketServer.serve_forever(). |
""" |
@@ -1414,7 +1421,8 @@ class SyncPageHandler(BasePageHandler): |
self.ChromiumSyncSendNotificationOpHandler, |
self.ChromiumSyncBirthdayErrorOpHandler, |
self.ChromiumSyncTransientErrorOpHandler, |
- self.ChromiumSyncSyncTabsOpHandler] |
+ self.ChromiumSyncSyncTabsOpHandler, |
+ self.ChromiumSyncCredHandler] |
post_handlers = [self.ChromiumSyncCommandHandler, |
self.ChromiumSyncTimeHandler] |
@@ -1422,6 +1430,7 @@ class SyncPageHandler(BasePageHandler): |
sync_http_server, [], get_handlers, |
post_handlers, []) |
+ |
def ChromiumSyncTimeHandler(self): |
"""Handle Chromium sync .../time requests. |
@@ -1454,10 +1463,19 @@ class SyncPageHandler(BasePageHandler): |
length = int(self.headers.getheader('content-length')) |
raw_request = self.rfile.read(length) |
+ http_response = 200 |
+ raw_reply = None |
+ if not self.server.GetAuthenticated(): |
+ http_response = 401 |
+ challenge = 'GoogleLogin realm="http://127.0.0.1", service="chromiumsync"' |
+ else: |
+ http_response, raw_reply = self.server.HandleCommand( |
+ self.path, raw_request) |
- http_response, raw_reply = self.server.HandleCommand( |
- self.path, raw_request) |
+ ### Now send the response to the client. ### |
self.send_response(http_response) |
+ if http_response == 401: |
+ self.send_header('www-Authenticate', challenge) |
self.end_headers() |
self.wfile.write(raw_reply) |
return True |
@@ -1476,6 +1494,29 @@ class SyncPageHandler(BasePageHandler): |
self.wfile.write(raw_reply) |
return True |
+ def ChromiumSyncCredHandler(self): |
+ test_name = "/chromiumsync/cred" |
+ if not self._ShouldHandleRequest(test_name): |
+ return False |
+ try: |
+ query = urlparse.urlparse(self.path)[4] |
+ cred_valid = urlparse.parse_qs(query)['valid'] |
+ if cred_valid[0] == 'True': |
+ self.server.SetAuthenticated(True) |
+ else: |
+ self.server.SetAuthenticated(False) |
+ except: |
+ self.server.SetAuthenticated(False) |
+ |
+ http_response = 200 |
+ raw_reply = 'Authenicated: %s ' % self.server.GetAuthenticated() |
ncarter (slow)
2011/09/22 20:22:19
"Authenicated" -> misspelled.
|
+ self.send_response(http_response) |
+ self.send_header('Content-Type', 'text/html') |
+ self.send_header('Content-Length', len(raw_reply)) |
+ self.end_headers() |
+ self.wfile.write(raw_reply) |
+ return True |
+ |
def ChromiumSyncDisableNotificationsOpHandler(self): |
test_name = "/chromiumsync/disablenotifications" |
if not self._ShouldHandleRequest(test_name): |