Show More
@@ -509,7 +509,7 b' def get_auth_cache_manager(custom_ttl=No' | |||||
509 |
|
509 | |||
510 |
|
510 | |||
511 | def authenticate(username, password, environ=None, auth_type=None, |
|
511 | def authenticate(username, password, environ=None, auth_type=None, | |
512 | skip_missing=False): |
|
512 | skip_missing=False, registry=None): | |
513 | """ |
|
513 | """ | |
514 | Authentication function used for access control, |
|
514 | Authentication function used for access control, | |
515 | It tries to authenticate based on enabled authentication modules. |
|
515 | It tries to authenticate based on enabled authentication modules. | |
@@ -526,7 +526,7 b' def authenticate(username, password, env' | |||||
526 | % auth_type) |
|
526 | % auth_type) | |
527 | headers_only = environ and not (username and password) |
|
527 | headers_only = environ and not (username and password) | |
528 |
|
528 | |||
529 | authn_registry = get_authn_registry() |
|
529 | authn_registry = get_authn_registry(registry) | |
530 | for plugin in authn_registry.get_plugins_for_authentication(): |
|
530 | for plugin in authn_registry.get_plugins_for_authentication(): | |
531 | plugin.set_auth_type(auth_type) |
|
531 | plugin.set_auth_type(auth_type) | |
532 | user = plugin.get_user(username) |
|
532 | user = plugin.get_user(username) |
@@ -205,11 +205,12 b' def vcs_operation_context(' | |||||
205 |
|
205 | |||
206 | class BasicAuth(AuthBasicAuthenticator): |
|
206 | class BasicAuth(AuthBasicAuthenticator): | |
207 |
|
207 | |||
208 | def __init__(self, realm, authfunc, auth_http_code=None, |
|
208 | def __init__(self, realm, authfunc, registry, auth_http_code=None, | |
209 | initial_call_detection=False): |
|
209 | initial_call_detection=False): | |
210 | self.realm = realm |
|
210 | self.realm = realm | |
211 | self.initial_call = initial_call_detection |
|
211 | self.initial_call = initial_call_detection | |
212 | self.authfunc = authfunc |
|
212 | self.authfunc = authfunc | |
|
213 | self.registry = registry | |||
213 | self._rc_auth_http_code = auth_http_code |
|
214 | self._rc_auth_http_code = auth_http_code | |
214 |
|
215 | |||
215 | def _get_response_from_code(self, http_code): |
|
216 | def _get_response_from_code(self, http_code): | |
@@ -242,7 +243,8 b' class BasicAuth(AuthBasicAuthenticator):' | |||||
242 | if len(_parts) == 2: |
|
243 | if len(_parts) == 2: | |
243 | username, password = _parts |
|
244 | username, password = _parts | |
244 | if self.authfunc( |
|
245 | if self.authfunc( | |
245 |
username, password, environ, VCS_TYPE |
|
246 | username, password, environ, VCS_TYPE, | |
|
247 | registry=self.registry): | |||
246 | return username |
|
248 | return username | |
247 | if username and password: |
|
249 | if username and password: | |
248 | # we mark that we actually executed authentication once, at |
|
250 | # we mark that we actually executed authentication once, at |
@@ -82,7 +82,8 b' class SimpleVCS(object):' | |||||
82 |
|
82 | |||
83 | SCM = 'unknown' |
|
83 | SCM = 'unknown' | |
84 |
|
84 | |||
85 | def __init__(self, application, config): |
|
85 | def __init__(self, application, config, registry): | |
|
86 | self.registry = registry | |||
86 | self.application = application |
|
87 | self.application = application | |
87 | self.config = config |
|
88 | self.config = config | |
88 | # base path of repo locations |
|
89 | # base path of repo locations | |
@@ -90,9 +91,9 b' class SimpleVCS(object):' | |||||
90 | # authenticate this VCS request using authfunc |
|
91 | # authenticate this VCS request using authfunc | |
91 | auth_ret_code_detection = \ |
|
92 | auth_ret_code_detection = \ | |
92 | str2bool(self.config.get('auth_ret_code_detection', False)) |
|
93 | str2bool(self.config.get('auth_ret_code_detection', False)) | |
93 |
self.authenticate = BasicAuth( |
|
94 | self.authenticate = BasicAuth( | |
94 |
|
|
95 | '', authenticate, registry, config.get('auth_ret_code'), | |
95 |
|
|
96 | auth_ret_code_detection) | |
96 | self.ip_addr = '0.0.0.0' |
|
97 | self.ip_addr = '0.0.0.0' | |
97 |
|
98 | |||
98 | @property |
|
99 | @property | |
@@ -284,7 +285,8 b' class SimpleVCS(object):' | |||||
284 |
|
285 | |||
285 | # try to auth based on environ, container auth methods |
|
286 | # try to auth based on environ, container auth methods | |
286 | log.debug('Running PRE-AUTH for container based authentication') |
|
287 | log.debug('Running PRE-AUTH for container based authentication') | |
287 |
pre_auth = authenticate( |
|
288 | pre_auth = authenticate( | |
|
289 | '', '', environ, VCS_TYPE, registry=self.registry) | |||
288 | if pre_auth and pre_auth.get('username'): |
|
290 | if pre_auth and pre_auth.get('username'): | |
289 | username = pre_auth['username'] |
|
291 | username = pre_auth['username'] | |
290 | log.debug('PRE-AUTH got %s as username', username) |
|
292 | log.debug('PRE-AUTH got %s as username', username) |
@@ -126,23 +126,24 b' class GunzipMiddleware(object):' | |||||
126 |
|
126 | |||
127 | class VCSMiddleware(object): |
|
127 | class VCSMiddleware(object): | |
128 |
|
128 | |||
129 | def __init__(self, app, config, appenlight_client): |
|
129 | def __init__(self, app, config, appenlight_client, registry): | |
130 | self.application = app |
|
130 | self.application = app | |
131 | self.config = config |
|
131 | self.config = config | |
132 | self.appenlight_client = appenlight_client |
|
132 | self.appenlight_client = appenlight_client | |
|
133 | self.registry = registry | |||
133 |
|
134 | |||
134 | def _get_handler_app(self, environ): |
|
135 | def _get_handler_app(self, environ): | |
135 | app = None |
|
136 | app = None | |
136 | if is_hg(environ): |
|
137 | if is_hg(environ): | |
137 | app = SimpleHg(self.application, self.config) |
|
138 | app = SimpleHg(self.application, self.config, self.registry) | |
138 |
|
139 | |||
139 | if is_git(environ): |
|
140 | if is_git(environ): | |
140 | app = SimpleGit(self.application, self.config) |
|
141 | app = SimpleGit(self.application, self.config, self.registry) | |
141 |
|
142 | |||
142 | proxy_svn = rhodecode.CONFIG.get( |
|
143 | proxy_svn = rhodecode.CONFIG.get( | |
143 | 'rhodecode_proxy_subversion_http_requests', False) |
|
144 | 'rhodecode_proxy_subversion_http_requests', False) | |
144 | if proxy_svn and is_svn(environ): |
|
145 | if proxy_svn and is_svn(environ): | |
145 | app = SimpleSvn(self.application, self.config) |
|
146 | app = SimpleSvn(self.application, self.config, self.registry) | |
146 |
|
147 | |||
147 | if app: |
|
148 | if app: | |
148 | app = GunzipMiddleware(app) |
|
149 | app = GunzipMiddleware(app) |
General Comments 0
You need to be logged in to leave comments.
Login now