Commit 4b663dd7 authored by lipalani@chromium.org's avatar lipalani@chromium.org

Sending auth error from python server. After posting a request to the...

Sending auth error from python server. After posting a request to the /chromiumsync/cred url with the parameter valid=false the server starts sending auth errors repeatedly . To stop the auth errors we have to navigate to the same url with valid=True.


BUG=
TEST=


Review URL: http://codereview.chromium.org/7978043

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@102417 0039d316-1c4b-4281-b951-d872f2087c98
parent 24fa1597
...@@ -132,6 +132,7 @@ class SyncHTTPServer(StoppableHTTPServer): ...@@ -132,6 +132,7 @@ class SyncHTTPServer(StoppableHTTPServer):
self._xmpp_server = xmppserver.XmppServer( self._xmpp_server = xmppserver.XmppServer(
self._xmpp_socket_map, ('localhost', 0)) self._xmpp_socket_map, ('localhost', 0))
self.xmpp_port = self._xmpp_server.getsockname()[1] self.xmpp_port = self._xmpp_server.getsockname()[1]
self.authenticated = True
def GetXmppServer(self): def GetXmppServer(self):
return self._xmpp_server return self._xmpp_server
...@@ -155,6 +156,12 @@ class SyncHTTPServer(StoppableHTTPServer): ...@@ -155,6 +156,12 @@ class SyncHTTPServer(StoppableHTTPServer):
self.handle_error(request, client_address) self.handle_error(request, client_address)
self.close_request(request) self.close_request(request)
def SetAuthenticated(self, auth_valid):
self.authenticated = auth_valid
def GetAuthenticated(self):
return self.authenticated
def serve_forever(self): def serve_forever(self):
"""This is a merge of asyncore.loop() and SocketServer.serve_forever(). """This is a merge of asyncore.loop() and SocketServer.serve_forever().
""" """
...@@ -1415,7 +1422,8 @@ class SyncPageHandler(BasePageHandler): ...@@ -1415,7 +1422,8 @@ class SyncPageHandler(BasePageHandler):
self.ChromiumSyncBirthdayErrorOpHandler, self.ChromiumSyncBirthdayErrorOpHandler,
self.ChromiumSyncTransientErrorOpHandler, self.ChromiumSyncTransientErrorOpHandler,
self.ChromiumSyncSyncTabsOpHandler, self.ChromiumSyncSyncTabsOpHandler,
self.ChromiumSyncErrorOpHandler] self.ChromiumSyncErrorOpHandler,
self.ChromiumSyncCredHandler]
post_handlers = [self.ChromiumSyncCommandHandler, post_handlers = [self.ChromiumSyncCommandHandler,
self.ChromiumSyncTimeHandler] self.ChromiumSyncTimeHandler]
...@@ -1423,6 +1431,7 @@ class SyncPageHandler(BasePageHandler): ...@@ -1423,6 +1431,7 @@ class SyncPageHandler(BasePageHandler):
sync_http_server, [], get_handlers, sync_http_server, [], get_handlers,
post_handlers, []) post_handlers, [])
def ChromiumSyncTimeHandler(self): def ChromiumSyncTimeHandler(self):
"""Handle Chromium sync .../time requests. """Handle Chromium sync .../time requests.
...@@ -1455,10 +1464,19 @@ class SyncPageHandler(BasePageHandler): ...@@ -1455,10 +1464,19 @@ class SyncPageHandler(BasePageHandler):
length = int(self.headers.getheader('content-length')) length = int(self.headers.getheader('content-length'))
raw_request = self.rfile.read(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( ### Now send the response to the client. ###
self.path, raw_request)
self.send_response(http_response) self.send_response(http_response)
if http_response == 401:
self.send_header('www-Authenticate', challenge)
self.end_headers() self.end_headers()
self.wfile.write(raw_reply) self.wfile.write(raw_reply)
return True return True
...@@ -1477,6 +1495,29 @@ class SyncPageHandler(BasePageHandler): ...@@ -1477,6 +1495,29 @@ class SyncPageHandler(BasePageHandler):
self.wfile.write(raw_reply) self.wfile.write(raw_reply)
return True 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 = 'Authenticated: %s ' % self.server.GetAuthenticated()
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): def ChromiumSyncDisableNotificationsOpHandler(self):
test_name = "/chromiumsync/disablenotifications" test_name = "/chromiumsync/disablenotifications"
if not self._ShouldHandleRequest(test_name): if not self._ShouldHandleRequest(test_name):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment