Changeset 57:79ae9ca6d617
- Timestamp:
- 12/29/06 10:13:03
(2 years ago)
- Author:
- Allan Saddi <allan@saddi.com>
- branch:
- default
- convert_revision:
- svn:46762da8-4eb7-0310-94e9-d918b60927c8/flup/trunk@2304
- Message:
Deprecate WSGI_SCRIPT_NAME and scriptName in scgi_base.
Modern versions of mod_scgi correctly set SCRIPT_NAME &
PATH_INFO.
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| r56 |
r57 |
|
| 1 | | 2006-12-13 Allan Saddi <asaddi@sahara.flup.org> |
|---|
| | 1 | 2006-12-29 Allan Saddi <allan@saddi.com> |
|---|
| | 2 | |
|---|
| | 3 | * Deprecate WSGI_SCRIPT_NAME and scriptName in scgi_base. |
|---|
| | 4 | Modern versions of mod_scgi correctly set SCRIPT_NAME & |
|---|
| | 5 | PATH_INFO. |
|---|
| | 6 | |
|---|
| | 7 | 2006-12-13 Allan Saddi <allan@saddi.com> |
|---|
| 2 | 8 | |
|---|
| 3 | 9 | * Fix problem in session.py seen when optimization is on. |
|---|
| 4 | 10 | |
|---|
| 5 | | 2006-12-05 Allan Saddi <asaddi@sahara.flup.org> |
|---|
| | 11 | 2006-12-05 Allan Saddi <allan@saddi.com> |
|---|
| 6 | 12 | |
|---|
| 7 | 13 | * Update servers to default to an empty QUERY_STRING if |
|---|
| … | … | |
| 15 | 21 | mime_types. |
|---|
| 16 | 22 | |
|---|
| 17 | | 2006-12-02 Allan Saddi <asaddi@europa.saddi.net> |
|---|
| | 23 | 2006-12-02 Allan Saddi <allan@saddi.com> |
|---|
| 18 | 24 | |
|---|
| 19 | 25 | * Change intra-package imports into absolute imports. |
|---|
| 20 | 26 | |
|---|
| 21 | | 2006-12-02 Allan Saddi <asaddi@sahara.flup.org> |
|---|
| | 27 | 2006-12-02 Allan Saddi <allan@saddi.com> |
|---|
| 22 | 28 | |
|---|
| 23 | 29 | * Add forceCookieOutput attribute to SessionService to |
|---|
| 24 | 30 | force Set-Cookie output for the current request. |
|---|
| 25 | 31 | |
|---|
| 26 | | 2006-12-01 Allan Saddi <asaddi@europa.saddi.net> |
|---|
| | 32 | 2006-12-01 Allan Saddi <allan@saddi.com> |
|---|
| 27 | 33 | |
|---|
| 28 | 34 | * Update setup script. |
|---|
| 29 | 35 | |
|---|
| 30 | | 2006-11-26 Allan Saddi <asaddi@europa.saddi.net> |
|---|
| | 36 | 2006-11-26 Allan Saddi <allan@saddi.com> |
|---|
| 31 | 37 | |
|---|
| 32 | 38 | * Don't attempt to install signal handlers under Windows |
|---|
| 33 | 39 | to improve compatibility. |
|---|
| 34 | 40 | |
|---|
| 35 | | 2006-11-24 Allan Saddi <asaddi@europa.saddi.net> |
|---|
| | 41 | 2006-11-24 Allan Saddi <allan@saddi.com> |
|---|
| 36 | 42 | |
|---|
| 37 | 43 | * Add *_thread egg entry-point aliases. |
|---|
| … | … | |
| 44 | 50 | and SCGI.) |
|---|
| 45 | 51 | |
|---|
| 46 | | 2006-11-19 Allan Saddi <asaddi@europa.saddi.net> |
|---|
| | 52 | 2006-11-19 Allan Saddi <allan@saddi.com> |
|---|
| 47 | 53 | |
|---|
| 48 | 54 | * Change mime-type matching algorithm in GzipMiddleware. |
|---|
| … | … | |
| 50 | 56 | regexps. By default, compress 'text/.*' mime-types. |
|---|
| 51 | 57 | |
|---|
| 52 | | 2006-11-10 Allan Saddi <asaddi@europa.saddi.net> |
|---|
| | 58 | 2006-11-10 Allan Saddi <allan@saddi.com> |
|---|
| 53 | 59 | |
|---|
| 54 | 60 | * Add cookieAttributes to SessionService to make it easier |
|---|
| 55 | 61 | to customize the generated cookie's attributes. |
|---|
| 56 | 62 | |
|---|
| 57 | | 2006-08-28 Allan Saddi <asaddi@sahara.flup.org> |
|---|
| | 63 | 2006-08-28 Allan Saddi <allan@saddi.com> |
|---|
| 58 | 64 | |
|---|
| 59 | 65 | * Add support for FastCGI roles other than FCGI_RESPONDER. |
|---|
| 60 | 66 | Patch provided by Seairth Jacobs. |
|---|
| 61 | 67 | |
|---|
| 62 | | 2006-08-02 Allan Saddi <asaddi@kalahari.flup.org> |
|---|
| | 68 | 2006-08-02 Allan Saddi <allan@saddi.com> |
|---|
| 63 | 69 | |
|---|
| 64 | 70 | * Add cookieExpiration keyword to SessionService / |
|---|
| … | … | |
| 66 | 72 | Thanks to Blaise Laflamme for the suggestion. |
|---|
| 67 | 73 | |
|---|
| 68 | | 2006-06-27 Allan Saddi <asaddi@kalahari.flup.org> |
|---|
| | 74 | 2006-06-27 Allan Saddi <allan@saddi.com> |
|---|
| 69 | 75 | |
|---|
| 70 | 76 | * Set close-on-exec flag on all server sockets. Thanks to |
|---|
| 71 | 77 | Ralf Schmitt for reporting the problem. |
|---|
| 72 | 78 | |
|---|
| 73 | | 2006-06-18 Allan Saddi <asaddi@europa.saddi.net> |
|---|
| | 79 | 2006-06-18 Allan Saddi <allan@saddi.com> |
|---|
| 74 | 80 | |
|---|
| 75 | 81 | * Stop ignoring EPIPE exceptions, as this is probably the |
|---|
| … | … | |
| 82 | 88 | seeing socket.error exceptions... |
|---|
| 83 | 89 | |
|---|
| 84 | | 2006-05-18 Allan Saddi <asaddi@kalahari.flup.org> |
|---|
| | 90 | 2006-05-18 Allan Saddi <allan@saddi.com> |
|---|
| 85 | 91 | |
|---|
| 86 | 92 | * Added umask keyword parameter to fcgi and fcgi_fork, |
|---|
| 87 | 93 | for use when binding to a UNIX socket. |
|---|
| 88 | 94 | |
|---|
| 89 | | 2006-05-03 Allan Saddi <asaddi@kalahari.flup.org> |
|---|
| | 95 | 2006-05-03 Allan Saddi <allan@saddi.com> |
|---|
| 90 | 96 | |
|---|
| 91 | 97 | * Fix illusive problem with AJP implementation. Thanks to |
|---|
| … | … | |
| 93 | 99 | providing a fix. |
|---|
| 94 | 100 | |
|---|
| 95 | | 2006-04-06 Allan Saddi <asaddi@kalahari.flup.org> |
|---|
| | 101 | 2006-04-06 Allan Saddi <allan@saddi.com> |
|---|
| 96 | 102 | |
|---|
| 97 | 103 | * Catch a strange FieldStorage case. Seen in production. |
|---|
| 98 | 104 | Not quite sure what causes it. |
|---|
| 99 | 105 | |
|---|
| 100 | | 2006-03-21 Allan Saddi <asaddi@kalahari.flup.org> |
|---|
| | 106 | 2006-03-21 Allan Saddi <allan@saddi.com> |
|---|
| 101 | 107 | |
|---|
| 102 | 108 | * Add maxRequests option to PreforkServer. Patch provided by |
|---|
| 103 | 109 | Wojtek Sobczuk. |
|---|
| 104 | 110 | |
|---|
| 105 | | 2006-02-23 Allan Saddi <asaddi@kalahari.flup.org> |
|---|
| | 111 | 2006-02-23 Allan Saddi <allan@saddi.com> |
|---|
| 106 | 112 | |
|---|
| 107 | 113 | * Add paste.server_factory-compliant factories and respective |
|---|
| … | … | |
| 111 | 117 | Currently, only server-level error handling is affected. |
|---|
| 112 | 118 | |
|---|
| 113 | | 2006-01-15 Allan Saddi <asaddi@ganymede.saddi.net> |
|---|
| | 119 | 2006-01-15 Allan Saddi <allan@saddi.com> |
|---|
| 114 | 120 | |
|---|
| 115 | 121 | * Change the behavior of ImportingModuleResolver when dealing |
|---|
| … | … | |
| 118 | 124 | level (outer middleware or WSGI). Reported by Scot Doyle. |
|---|
| 119 | 125 | |
|---|
| 120 | | 2006-01-05 Allan Saddi <asaddi@kalahari.flup.org> |
|---|
| | 126 | 2006-01-05 Allan Saddi <allan@saddi.com> |
|---|
| 121 | 127 | |
|---|
| 122 | 128 | * Improve Windows compatibility by conditionally installing |
|---|
| … | … | |
| 124 | 130 | problem and providing a fix. |
|---|
| 125 | 131 | |
|---|
| 126 | | 2005-12-19 Allan Saddi <asaddi@kalahari.flup.org> |
|---|
| | 132 | 2005-12-19 Allan Saddi <allan@saddi.com> |
|---|
| 127 | 133 | |
|---|
| 128 | 134 | * Fix socket leak in eunuchs socketpair() wrapper. Thanks to |
|---|
| 129 | 135 | Georg Bauer for pointing this out. |
|---|
| 130 | 136 | |
|---|
| 131 | | 2005-12-16 Allan Saddi <asaddi@kalahari.flup.org> |
|---|
| | 137 | 2005-12-16 Allan Saddi <allan@saddi.com> |
|---|
| 132 | 138 | |
|---|
| 133 | 139 | * Switch to setuptools for egg support. |
|---|
| … | … | |
| 138 | 144 | calling convention. |
|---|
| 139 | 145 | |
|---|
| 140 | | 2005-11-28 Allan Saddi <asaddi@kalahari.flup.org> |
|---|
| | 146 | 2005-11-28 Allan Saddi <allan@saddi.com> |
|---|
| 141 | 147 | |
|---|
| 142 | 148 | * Fix issue with FCGI_GET_VALUES handling. Thanks to |
|---|
| 143 | 149 | Timothy Wright for pointing this out. |
|---|
| 144 | 150 | |
|---|
| 145 | | 2005-11-18 Allan Saddi <asaddi@kalahari.flup.org> |
|---|
| | 151 | 2005-11-18 Allan Saddi <allan@saddi.com> |
|---|
| 146 | 152 | |
|---|
| 147 | 153 | * When running under Python < 2.4, attempt to use socketpair() |
|---|
| 148 | 154 | from eunuchs module. |
|---|
| 149 | 155 | |
|---|
| 150 | | 2005-09-07 Allan Saddi <asaddi@europa.saddi.net> |
|---|
| | 156 | 2005-09-07 Allan Saddi <allan@saddi.com> |
|---|
| 151 | 157 | |
|---|
| 152 | 158 | * Python 2.3 doesn't define socket.SHUT_WR, which affected |
|---|
| … | … | |
| 156 | 162 | me debug it! |
|---|
| 157 | 163 | |
|---|
| 158 | | 2005-07-03 Allan Saddi <asaddi@europa.saddi.net> |
|---|
| | 164 | 2005-07-03 Allan Saddi <allan@saddi.com> |
|---|
| 159 | 165 | |
|---|
| 160 | 166 | * Ensure session identifiers only contain ASCII characters when |
|---|
| … | … | |
| 162 | 168 | the fix. |
|---|
| 163 | 169 | |
|---|
| 164 | | 2005-06-12 Allan Saddi <asaddi@europa.saddi.net> |
|---|
| | 170 | 2005-06-12 Allan Saddi <allan@saddi.com> |
|---|
| 165 | 171 | |
|---|
| 166 | 172 | * Cleanly close connection socket to avoid sending a TCP RST to |
|---|
| 167 | 173 | the web server. (fcgi_base) Fix suggested by Dima Barsky. |
|---|
| 168 | 174 | |
|---|
| 169 | | 2005-05-31 Allan Saddi <asaddi@ganymede.saddi.net> |
|---|
| | 175 | 2005-05-31 Allan Saddi <allan@saddi.com> |
|---|
| 170 | 176 | |
|---|
| 171 | 177 | * Take scriptName from the WSGI_SCRIPT_NAME environment variable |
|---|
| … | … | |
| 174 | 180 | & PATH_INFO. For better compatibility with cgi2scgi. (scgi_base) |
|---|
| 175 | 181 | |
|---|
| 176 | | 2005-05-18 Allan Saddi <asaddi@ganymede.saddi.net> |
|---|
| | 182 | 2005-05-18 Allan Saddi <allan@saddi.com> |
|---|
| 177 | 183 | |
|---|
| 178 | 184 | * Change default allowedServers for ajp and scgi to ['127.0.0.1']. |
|---|
| … | … | |
| 183 | 189 | * Fix wsgi.multiprocess for scgi_fork. (Set to True.) |
|---|
| 184 | 190 | |
|---|
| 185 | | 2005-05-15 Allan Saddi <asaddi@ganymede.saddi.net> |
|---|
| | 191 | 2005-05-15 Allan Saddi <allan@saddi.com> |
|---|
| 186 | 192 | |
|---|
| 187 | 193 | * Prevent possible deadlock related to DiskSessionStore locking. |
|---|
| … | … | |
| 189 | 195 | check out a Session that's already been checked out. |
|---|
| 190 | 196 | |
|---|
| 191 | | 2005-05-14 Allan Saddi <asaddi@ganymede.saddi.net> |
|---|
| | 197 | 2005-05-14 Allan Saddi <allan@saddi.com> |
|---|
| 192 | 198 | |
|---|
| 193 | 199 | * Convert the use of decorators in session.py to something |
|---|
| 194 | 200 | compatible with Python <2.4. |
|---|
| 195 | 201 | |
|---|
| 196 | | 2005-04-23 Allan Saddi <asaddi@ganymede.saddi.net> |
|---|
| | 202 | 2005-04-23 Allan Saddi <allan@saddi.com> |
|---|
| 197 | 203 | |
|---|
| 198 | 204 | * Ensure that SessionStore.checkOutSession() never returns an |
|---|
| 199 | 205 | invalidated Session. Reported by Rene Dudfield. |
|---|
| 200 | | |
|---|
| 201 | | |
|---|
| r54 |
r57 |
|
| 67 | 67 | import socket |
|---|
| 68 | 68 | |
|---|
| 69 | | from flup.server.scgi_base import BaseSCGIServer, Connection |
|---|
| | 69 | from flup.server.scgi_base import BaseSCGIServer, Connection, NoDefault |
|---|
| 70 | 70 | from flup.server.threadedserver import ThreadedServer |
|---|
| 71 | 71 | |
|---|
| … | … | |
| 88 | 88 | mind running in multiple processes, go use SWAP. ;) |
|---|
| 89 | 89 | """ |
|---|
| 90 | | def __init__(self, application, scriptName='', environ=None, |
|---|
| | 90 | def __init__(self, application, scriptName=NoDefault, environ=None, |
|---|
| 91 | 91 | multithreaded=True, multiprocess=False, |
|---|
| 92 | 92 | bindAddress=('localhost', 4000), umask=None, |
|---|
| r54 |
r57 |
|
| 37 | 37 | import datetime |
|---|
| 38 | 38 | import os |
|---|
| | 39 | import warnings |
|---|
| 39 | 40 | |
|---|
| 40 | 41 | # Threads are required. If you want a non-threaded (forking) version, look at |
|---|
| … | … | |
| 274 | 275 | requestClass = Request |
|---|
| 275 | 276 | |
|---|
| 276 | | def __init__(self, application, scriptName='', environ=None, |
|---|
| | 277 | def __init__(self, application, scriptName=NoDefault, environ=None, |
|---|
| 277 | 278 | multithreaded=True, multiprocess=False, |
|---|
| 278 | 279 | bindAddress=('localhost', 4000), umask=None, |
|---|
| … | … | |
| 472 | 473 | def _sanitizeEnv(self, environ): |
|---|
| 473 | 474 | """Fill-in/deduce missing values in environ.""" |
|---|
| 474 | | # Namely SCRIPT_NAME/PATH_INFO |
|---|
| | 475 | # Ensure QUERY_STRING exists |
|---|
| | 476 | if not environ.has_key('QUERY_STRING'): |
|---|
| | 477 | environ['QUERY_STRING'] = '' |
|---|
| | 478 | |
|---|
| | 479 | # Check WSGI_SCRIPT_NAME |
|---|
| 475 | 480 | scriptName = environ.get('WSGI_SCRIPT_NAME') |
|---|
| 476 | 481 | if scriptName is None: |
|---|
| 477 | 482 | scriptName = self.scriptName |
|---|
| 478 | | elif scriptName.lower() == 'none': |
|---|
| 479 | | scriptName = None |
|---|
| | 483 | else: |
|---|
| | 484 | warnings.warn('WSGI_SCRIPT_NAME environment variable for scgi ' |
|---|
| | 485 | 'servers is deprecated', |
|---|
| | 486 | DeprecationWarning) |
|---|
| | 487 | if scriptName.lower() == 'none': |
|---|
| | 488 | scriptName = None |
|---|
| 480 | 489 | |
|---|
| 481 | 490 | if scriptName is None: |
|---|
| … | … | |
| 483 | 492 | return |
|---|
| 484 | 493 | |
|---|
| 485 | | value = environ['SCRIPT_NAME'] |
|---|
| 486 | | # Pull PATH_INFO from environ, if it exists. (cgi2scgi actually |
|---|
| 487 | | # passes it in.) |
|---|
| 488 | | value += environ.get('PATH_INFO', '') |
|---|
| 489 | | if not value.startswith(scriptName): |
|---|
| 490 | | self.logger.warning('scriptName does not match request URI') |
|---|
| 491 | | |
|---|
| 492 | | environ['PATH_INFO'] = value[len(scriptName):] |
|---|
| 493 | | environ['SCRIPT_NAME'] = scriptName |
|---|
| 494 | | |
|---|
| 495 | | if not environ.has_key('QUERY_STRING'): |
|---|
| 496 | | environ['QUERY_STRING'] = '' |
|---|
| | 494 | if scriptName is NoDefault: |
|---|
| | 495 | # Pull SCRIPT_NAME/PATH_INFO from environment, with empty defaults |
|---|
| | 496 | if not environ.has_key('SCRIPT_NAME'): |
|---|
| | 497 | environ['SCRIPT_INFO'] = '' |
|---|
| | 498 | if not environ.has_key('PATH_INFO'): |
|---|
| | 499 | environ['PATH_INFO'] = '' |
|---|
| | 500 | else: |
|---|
| | 501 | # Configured scriptName |
|---|
| | 502 | warnings.warn('Configured SCRIPT_NAME is deprecated\n' |
|---|
| | 503 | 'Do not use WSGI_SCRIPT_NAME or the scriptName\n' |
|---|
| | 504 | 'keyword parameter -- they will be going away', |
|---|
| | 505 | DeprecationWarning) |
|---|
| | 506 | |
|---|
| | 507 | value = environ['SCRIPT_NAME'] |
|---|
| | 508 | value += environ.get('PATH_INFO', '') |
|---|
| | 509 | if not value.startswith(scriptName): |
|---|
| | 510 | self.logger.warning('scriptName does not match request URI') |
|---|
| | 511 | |
|---|
| | 512 | environ['PATH_INFO'] = value[len(scriptName):] |
|---|
| | 513 | environ['SCRIPT_NAME'] = scriptName |
|---|
| 497 | 514 | |
|---|
| 498 | 515 | def error(self, request): |
|---|
| r54 |
r57 |
|
| 67 | 67 | import socket |
|---|
| 68 | 68 | |
|---|
| 69 | | from flup.server.scgi_base import BaseSCGIServer, Connection |
|---|
| | 69 | from flup.server.scgi_base import BaseSCGIServer, Connection, NoDefault |
|---|
| 70 | 70 | from flup.server.preforkserver import PreforkServer |
|---|
| 71 | 71 | |
|---|
| … | … | |
| 88 | 88 | mind running in multiple processes, go use SWAP. ;) |
|---|
| 89 | 89 | """ |
|---|
| 90 | | def __init__(self, application, scriptName='', environ=None, |
|---|
| | 90 | def __init__(self, application, scriptName=NoDefault, environ=None, |
|---|
| 91 | 91 | bindAddress=('localhost', 4000), umask=None, |
|---|
| 92 | 92 | allowedServers=None, |
|---|