openbsd-ports/www/ntlmaps/patches/patch-lib_ntlmaps_ntlm_auth_py
2010-03-21 10:50:14 +00:00

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))