67 lines
3.0 KiB
Plaintext
67 lines
3.0 KiB
Plaintext
$OpenBSD: patch-lib_ntlmaps_ntlm_auth_py,v 1.1 2010/03/21 10:50:14 jasper Exp $
|
|
|
|
- fix 400 errors when using SVN with NTLMaps
|
|
NTLMaps 0.9.9.0.1 is unable to handle extended HTTP methods that
|
|
include content payload like PROPFIND, REPORT etc. This breaks
|
|
outgoing packets and causes 400 error with SVN.
|
|
|
|
SF Patch #1913554
|
|
svn revision 940
|
|
|
|
- Added unicode translation when using BASIC->NTLM, thanks to
|
|
Nickolay Kondrashov. Closes: Debian #344904
|
|
svn revision 942
|
|
|
|
--- lib/ntlmaps/ntlm_auth.py.orig Wed Feb 3 22:58:21 2010
|
|
+++ lib/ntlmaps/ntlm_auth.py Wed Feb 3 23:03:19 2010
|
|
@@ -64,7 +64,7 @@ class ntlm_auther:
|
|
# If we are POST/PUT-ing a large chunk of data we don't want
|
|
# to do this at this time, so we change the data to 'abc' with
|
|
# lenght = 3.
|
|
- if connection.client_head_obj.get_http_method() in ('POST', 'PUT'):
|
|
+ if connection.client_head_obj.has_param('Content-Length'):
|
|
tmp_client_head_obj.replace_param_value('Content-Length', '3')
|
|
|
|
connection.logger.log('*** Fake NTLM header with Msg1:\n=====\n' + tmp_client_head_obj.__repr__())
|
|
@@ -72,7 +72,7 @@ class ntlm_auther:
|
|
tmp_client_head_obj.send(connection.rserver_socket)
|
|
connection.logger.log('Done.\n')
|
|
|
|
- if connection.client_head_obj.get_http_method() in ('POST', 'PUT'):
|
|
+ if connection.client_head_obj.has_param('Content-Length'):
|
|
try:
|
|
connection.logger.log("*** Sending fake 'abc' bytes body...")
|
|
connection.rserver_socket.send('abc')
|
|
@@ -160,14 +160,14 @@ class ntlm_auther:
|
|
# If we are POST/PUT-ing a large chunk of data we don't want
|
|
# to do this at this time, so we change the data to 'abc' with
|
|
# lenght = 3.
|
|
- if connection.client_head_obj.get_http_method() in ('POST', 'PUT'):
|
|
+ if connection.client_head_obj.has_param('Content-Length'):
|
|
tmp_client_head_obj.replace_param_value('Content-Length', '3')
|
|
|
|
connection.logger.log('*** Fake NTLM header with Msg1:\n=====\n' + tmp_client_head_obj.__repr__())
|
|
connection.logger.log('*** Sending Fake NTLM header (and body) with Msg1...')
|
|
tmp_client_head_obj.send(connection.rserver_socket)
|
|
|
|
- if connection.client_head_obj.get_http_method() in ('POST', 'PUT'):
|
|
+ if connection.client_head_obj.has_param('Content-Length'):
|
|
try:
|
|
connection.rserver_socket.send('abc')
|
|
except:
|
|
@@ -313,7 +313,13 @@ class ntlm_auther:
|
|
user, password = self.get_credentials_from_basic(connection, error_code)
|
|
if user:
|
|
connection.logger.log("*** Found Basic credentials in client's header.\n")
|
|
- environment['USER'] = user
|
|
+
|
|
+ if environment['UNICODE']:
|
|
+ environment['USER'] = utils.str2unicode(string.upper(user))
|
|
+ else:
|
|
+ environment['USER'] = string.upper(user)
|
|
+
|
|
+
|
|
#environment['PASSWORD'] = password
|
|
connection.logger.log("*** Basic User/Password: %s/%s.\n" % (user, password))
|
|
|