Show More
@@ -7,7 +7,7 b'' | |||||
7 | # This software may be used and distributed according to the terms of the |
|
7 | # This software may be used and distributed according to the terms of the | |
8 | # GNU General Public License version 2 or any later version. |
|
8 | # GNU General Public License version 2 or any later version. | |
9 |
|
9 | |||
10 | import urllib, urllib2, httplib, os, socket, cStringIO |
|
10 | import urllib, urllib2, httplib, os, socket, cStringIO, base64 | |
11 | from i18n import _ |
|
11 | from i18n import _ | |
12 | import keepalive, util, sslutil |
|
12 | import keepalive, util, sslutil | |
13 | import httpconnection as httpconnectionmod |
|
13 | import httpconnection as httpconnectionmod | |
@@ -422,9 +422,22 b' class httpdigestauthhandler(urllib2.HTTP' | |||||
422 |
|
422 | |||
423 | class httpbasicauthhandler(urllib2.HTTPBasicAuthHandler): |
|
423 | class httpbasicauthhandler(urllib2.HTTPBasicAuthHandler): | |
424 | def __init__(self, *args, **kwargs): |
|
424 | def __init__(self, *args, **kwargs): | |
|
425 | self.auth = None | |||
425 | urllib2.HTTPBasicAuthHandler.__init__(self, *args, **kwargs) |
|
426 | urllib2.HTTPBasicAuthHandler.__init__(self, *args, **kwargs) | |
426 | self.retried_req = None |
|
427 | self.retried_req = None | |
427 |
|
428 | |||
|
429 | def http_request(self, request): | |||
|
430 | if self.auth: | |||
|
431 | request.add_unredirected_header(self.auth_header, self.auth) | |||
|
432 | ||||
|
433 | return request | |||
|
434 | ||||
|
435 | def https_request(self, request): | |||
|
436 | if self.auth: | |||
|
437 | request.add_unredirected_header(self.auth_header, self.auth) | |||
|
438 | ||||
|
439 | return request | |||
|
440 | ||||
428 | def reset_retry_count(self): |
|
441 | def reset_retry_count(self): | |
429 | # Python 2.6.5 will call this on 401 or 407 errors and thus loop |
|
442 | # Python 2.6.5 will call this on 401 or 407 errors and thus loop | |
430 | # forever. We disable reset_retry_count completely and reset in |
|
443 | # forever. We disable reset_retry_count completely and reset in | |
@@ -439,6 +452,19 b' class httpbasicauthhandler(urllib2.HTTPB' | |||||
439 | return urllib2.HTTPBasicAuthHandler.http_error_auth_reqed( |
|
452 | return urllib2.HTTPBasicAuthHandler.http_error_auth_reqed( | |
440 | self, auth_header, host, req, headers) |
|
453 | self, auth_header, host, req, headers) | |
441 |
|
454 | |||
|
455 | def retry_http_basic_auth(self, host, req, realm): | |||
|
456 | user, pw = self.passwd.find_user_password(realm, req.get_full_url()) | |||
|
457 | if pw is not None: | |||
|
458 | raw = "%s:%s" % (user, pw) | |||
|
459 | auth = 'Basic %s' % base64.b64encode(raw).strip() | |||
|
460 | if req.headers.get(self.auth_header, None) == auth: | |||
|
461 | return None | |||
|
462 | self.auth = auth | |||
|
463 | req.add_unredirected_header(self.auth_header, auth) | |||
|
464 | return self.parent.open(req) | |||
|
465 | else: | |||
|
466 | return None | |||
|
467 | ||||
442 | handlerfuncs = [] |
|
468 | handlerfuncs = [] | |
443 |
|
469 | |||
444 | def opener(ui, authinfo=None): |
|
470 | def opener(ui, authinfo=None): |
@@ -226,37 +226,31 b' test http authentication' | |||||
226 | "GET /?cmd=lookup HTTP/1.1" 200 - x-hgarg-1:key=tip |
|
226 | "GET /?cmd=lookup HTTP/1.1" 200 - x-hgarg-1:key=tip | |
227 | "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=namespaces |
|
227 | "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=namespaces | |
228 | "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=namespaces |
|
228 | "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=namespaces | |
229 | "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=bookmarks |
|
|||
230 | "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks |
|
229 | "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks | |
231 | "GET /?cmd=capabilities HTTP/1.1" 200 - |
|
230 | "GET /?cmd=capabilities HTTP/1.1" 200 - | |
232 | "GET /?cmd=lookup HTTP/1.1" 200 - x-hgarg-1:key=tip |
|
231 | "GET /?cmd=lookup HTTP/1.1" 200 - x-hgarg-1:key=tip | |
233 | "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=namespaces |
|
232 | "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=namespaces | |
234 | "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=namespaces |
|
233 | "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=namespaces | |
235 | "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=bookmarks |
|
|||
236 | "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks |
|
234 | "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks | |
237 | "GET /?cmd=capabilities HTTP/1.1" 200 - |
|
235 | "GET /?cmd=capabilities HTTP/1.1" 200 - | |
238 | "GET /?cmd=lookup HTTP/1.1" 200 - x-hgarg-1:key=tip |
|
236 | "GET /?cmd=lookup HTTP/1.1" 200 - x-hgarg-1:key=tip | |
239 | "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=namespaces |
|
237 | "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=namespaces | |
240 | "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=namespaces |
|
238 | "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=namespaces | |
241 | "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=bookmarks |
|
|||
242 | "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks |
|
239 | "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks | |
243 | "GET /?cmd=capabilities HTTP/1.1" 200 - |
|
240 | "GET /?cmd=capabilities HTTP/1.1" 200 - | |
244 | "GET /?cmd=lookup HTTP/1.1" 200 - x-hgarg-1:key=tip |
|
241 | "GET /?cmd=lookup HTTP/1.1" 200 - x-hgarg-1:key=tip | |
245 | "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=namespaces |
|
242 | "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=namespaces | |
246 | "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=namespaces |
|
243 | "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=namespaces | |
247 | "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=bookmarks |
|
|||
248 | "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks |
|
244 | "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks | |
249 | "GET /?cmd=capabilities HTTP/1.1" 200 - |
|
245 | "GET /?cmd=capabilities HTTP/1.1" 200 - | |
250 | "GET /?cmd=lookup HTTP/1.1" 200 - x-hgarg-1:key=tip |
|
246 | "GET /?cmd=lookup HTTP/1.1" 200 - x-hgarg-1:key=tip | |
251 | "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=namespaces |
|
247 | "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=namespaces | |
252 | "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=namespaces |
|
248 | "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=namespaces | |
253 | "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=bookmarks |
|
|||
254 | "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks |
|
249 | "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks | |
255 | "GET /?cmd=capabilities HTTP/1.1" 200 - |
|
250 | "GET /?cmd=capabilities HTTP/1.1" 200 - | |
256 | "GET /?cmd=branchmap HTTP/1.1" 200 - |
|
251 | "GET /?cmd=branchmap HTTP/1.1" 200 - | |
257 | "GET /?cmd=stream_out HTTP/1.1" 401 - |
|
252 | "GET /?cmd=stream_out HTTP/1.1" 401 - | |
258 | "GET /?cmd=stream_out HTTP/1.1" 200 - |
|
253 | "GET /?cmd=stream_out HTTP/1.1" 200 - | |
259 | "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=bookmarks |
|
|||
260 | "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks |
|
254 | "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks | |
261 | "GET /?cmd=capabilities HTTP/1.1" 200 - |
|
255 | "GET /?cmd=capabilities HTTP/1.1" 200 - | |
262 | "GET /?cmd=lookup HTTP/1.1" 200 - x-hgarg-1:key=tip |
|
256 | "GET /?cmd=lookup HTTP/1.1" 200 - x-hgarg-1:key=tip | |
@@ -271,13 +265,9 b' test http authentication' | |||||
271 | "GET /?cmd=branchmap HTTP/1.1" 200 - |
|
265 | "GET /?cmd=branchmap HTTP/1.1" 200 - | |
272 | "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=bookmarks |
|
266 | "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=bookmarks | |
273 | "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks |
|
267 | "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks | |
274 | "POST /?cmd=unbundle HTTP/1.1" 401 - x-hgarg-1:heads=686173686564+5eb5abfefeea63c80dd7553bcc3783f37e0c5524 |
|
|||
275 | "POST /?cmd=unbundle HTTP/1.1" 200 - x-hgarg-1:heads=686173686564+5eb5abfefeea63c80dd7553bcc3783f37e0c5524 |
|
268 | "POST /?cmd=unbundle HTTP/1.1" 200 - x-hgarg-1:heads=686173686564+5eb5abfefeea63c80dd7553bcc3783f37e0c5524 | |
276 | "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=phases |
|
|||
277 | "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=phases |
|
269 | "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=phases | |
278 | "POST /?cmd=pushkey HTTP/1.1" 401 - x-hgarg-1:key=7f4e523d01f2cc3765ac8934da3d14db775ff872&namespace=phases&new=0&old=1 |
|
|||
279 | "POST /?cmd=pushkey HTTP/1.1" 200 - x-hgarg-1:key=7f4e523d01f2cc3765ac8934da3d14db775ff872&namespace=phases&new=0&old=1 |
|
270 | "POST /?cmd=pushkey HTTP/1.1" 200 - x-hgarg-1:key=7f4e523d01f2cc3765ac8934da3d14db775ff872&namespace=phases&new=0&old=1 | |
280 | "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=bookmarks |
|
|||
281 | "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks |
|
271 | "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks | |
282 |
|
272 | |||
283 | #endif |
|
273 | #endif |
General Comments 0
You need to be logged in to leave comments.
Login now