From 3a7830097196f3206ceda606d86d551b86e6c59c Mon Sep 17 00:00:00 2001 From: Valentin Lorentz Date: Sat, 20 Oct 2012 20:23:32 +0200 Subject: [PATCH] Add support for authentication scheme. This commit closes http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=690879 --- src/utils/web.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/utils/web.py b/src/utils/web.py index 85d607087..b3fc560df 100644 --- a/src/utils/web.py +++ b/src/utils/web.py @@ -30,6 +30,7 @@ import re import sys +import base64 import socket import urllib import urllib2 @@ -61,9 +62,9 @@ _ipAddr = r'%s(?:\.%s){3}' % (_octet, _octet) # Base domain regex off RFC 1034 and 1738 _label = r'[0-9a-z][-0-9a-z]*[0-9a-z]?' _domain = r'%s(?:\.%s)*\.[0-9a-z][-0-9a-z]+' % (_label, _label) -_urlRe = r'(\w+://(?:%s|%s)(?::\d+)?(?:/[^\])>\s]*)?)' % (_domain, _ipAddr) +_urlRe = r'(\w+://(?:\S+@)?(?:%s|%s)(?::\d+)?(?:/[^\])>\s]*)?)' % (_domain, _ipAddr) urlRe = re.compile(_urlRe, re.I) -_httpUrlRe = r'(https?://(?:%s|%s)(?::\d+)?(?:/[^\])>\s]*)?)' % (_domain, +_httpUrlRe = r'(https?://(?:\S+@)?(?:%s|%s)(?::\d+)?(?:/[^\])>\s]*)?)' % (_domain, _ipAddr) httpUrlRe = re.compile(_httpUrlRe, re.I) @@ -110,7 +111,13 @@ def getUrlFd(url, headers=None, data=None): if not isinstance(url, urllib2.Request): if '#' in url: url = url[:url.index('#')] + if '@' in url: + scheme, url = url.split('://', 2) + auth, url = url.split('@') + url = scheme + '://' + url request = urllib2.Request(url, headers=headers, data=data) + request.add_header('Authorization', + 'Basic ' + base64.b64encode(auth)) else: request = url request.add_data(data)