Ticket #8128: t8128-tracd-unquote-r7943.patch
| File t8128-tracd-unquote-r7943.patch, 1.9 KB (added by cboos, 3 years ago) |
|---|
-
trac/web/standalone.py
23 23 import os 24 24 import sys 25 25 from SocketServer import ThreadingMixIn 26 import urllib 26 27 27 28 from trac import __version__ as VERSION 28 29 from trac.util import autoreload, daemon … … 70 71 return self.application(environ, start_response) 71 72 72 73 74 class FlupMiddleware(object): 75 76 def __init__(self, application): 77 self.application = application 78 79 def __call__(self, environ, start_response): 80 environ['PATH_INFO'] = urllib.unquote(environ.get('PATH_INFO', '')) 81 return self.application(environ, start_response) 82 83 73 84 class TracEnvironMiddleware(object): 74 85 75 86 def __init__(self, application, env_parent_dir, env_paths, single_env): … … 147 158 dest='protocol', callback=_validate_callback, 148 159 callback_args=(('http', 'scgi', 'ajp'),), 149 160 help='http|scgi|ajp') 161 parser.add_option('-q', '--unquote', action='store_true', 162 dest='unquote', 163 help='unquote PATH_INFO (may be needed when using ajp') 150 164 parser.add_option('-e', '--env-parent-dir', action='store', 151 165 dest='env_parent_dir', metavar='PARENTDIR', 152 166 help='parent directory of the project environments') … … 236 250 def serve(): 237 251 server_cls = __import__('flup.server.%s' % options.protocol, 238 252 None, None, ['']).WSGIServer 239 ret = server_cls(wsgi_app, bindAddress=server_address).run() 253 flup_app = wsgi_app 254 if options.unquote: 255 flup_app = FlupMiddleware(flup_app) 256 ret = server_cls(flup_app, bindAddress=server_address).run() 240 257 sys.exit(ret and 42 or 0) # if SIGHUP exit with status 42 241 258 242 259 try:
