##// END OF EJS Templates
url: move [auth] parsing out into a utility function...
Steve Borho -
r13371:c691cfdc default
parent child Browse files
Show More
@@ -71,6 +71,38 b' def netlocunsplit(host, port, user=None,'
71 return userpass + '@' + hostport
71 return userpass + '@' + hostport
72 return hostport
72 return hostport
73
73
74 def readauthforuri(ui, uri):
75 # Read configuration
76 config = dict()
77 for key, val in ui.configitems('auth'):
78 if '.' not in key:
79 ui.warn(_("ignoring invalid [auth] key '%s'\n") % key)
80 continue
81 group, setting = key.rsplit('.', 1)
82 gdict = config.setdefault(group, dict())
83 if setting in ('username', 'cert', 'key'):
84 val = util.expandpath(val)
85 gdict[setting] = val
86
87 # Find the best match
88 scheme, hostpath = uri.split('://', 1)
89 bestlen = 0
90 bestauth = None
91 for auth in config.itervalues():
92 prefix = auth.get('prefix')
93 if not prefix:
94 continue
95 p = prefix.split('://', 1)
96 if len(p) > 1:
97 schemes, prefix = [p[0]], p[1]
98 else:
99 schemes = (auth.get('schemes') or 'https').split()
100 if (prefix == '*' or hostpath.startswith(prefix)) and \
101 len(prefix) > bestlen and scheme in schemes:
102 bestlen = len(prefix)
103 bestauth = auth
104 return bestauth
105
74 _safe = ('abcdefghijklmnopqrstuvwxyz'
106 _safe = ('abcdefghijklmnopqrstuvwxyz'
75 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
107 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
76 '0123456789' '_.-/')
108 '0123456789' '_.-/')
@@ -149,36 +181,7 b' class passwordmgr(urllib2.HTTPPasswordMg'
149 self.ui.debug(msg % (user, passwd and '*' * len(passwd) or 'not set'))
181 self.ui.debug(msg % (user, passwd and '*' * len(passwd) or 'not set'))
150
182
151 def readauthtoken(self, uri):
183 def readauthtoken(self, uri):
152 # Read configuration
184 return readauthforuri(self.ui, uri)
153 config = dict()
154 for key, val in self.ui.configitems('auth'):
155 if '.' not in key:
156 self.ui.warn(_("ignoring invalid [auth] key '%s'\n") % key)
157 continue
158 group, setting = key.rsplit('.', 1)
159 gdict = config.setdefault(group, dict())
160 if setting in ('username', 'cert', 'key'):
161 val = util.expandpath(val)
162 gdict[setting] = val
163
164 # Find the best match
165 scheme, hostpath = uri.split('://', 1)
166 bestlen = 0
167 bestauth = None
168 for auth in config.itervalues():
169 prefix = auth.get('prefix')
170 if not prefix:
171 continue
172 p = prefix.split('://', 1)
173 if len(p) > 1:
174 schemes, prefix = [p[0]], p[1]
175 else:
176 schemes = (auth.get('schemes') or 'https').split()
177 if (prefix == '*' or hostpath.startswith(prefix)) and \
178 len(prefix) > bestlen and scheme in schemes:
179 bestlen = len(prefix)
180 bestauth = auth
181 return bestauth
182
185
183 class proxyhandler(urllib2.ProxyHandler):
186 class proxyhandler(urllib2.ProxyHandler):
184 def __init__(self, ui):
187 def __init__(self, ui):
General Comments 0
You need to be logged in to leave comments. Login now