Chromium Code Reviews| 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): |