0002-Set-a-request-id-on-all-requests-6922.patch
src/authentic2/middleware.py | ||
---|---|---|
1 | 1 |
import logging |
2 | 2 |
import datetime |
3 |
import random |
|
4 |
import struct |
|
3 | 5 |
try: |
4 | 6 |
import threading |
5 | 7 |
except ImportError: |
6 | 8 |
threading = None |
7 | 9 | |
8 | 10 |
from django.conf import settings |
9 | 11 |
from django.contrib import messages |
10 | 12 |
from django.utils.translation import ugettext as _ |
... | ... | |
103 | 105 |
max_age=None, |
104 | 106 |
domain=app_settings.A2_OPENED_SESSION_COOKIE_DOMAIN) |
105 | 107 |
elif app_settings.A2_OPENED_SESSION_COOKIE_NAME in request.COOKIES: |
106 | 108 |
response.delete_cookie( |
107 | 109 |
app_settings.A2_OPENED_SESSION_COOKIE_NAME, |
108 | 110 |
domain=app_settings.A2_OPENED_SESSION_COOKIE_DOMAIN) |
109 | 111 |
return response |
110 | 112 | |
113 |
class RequestIdMiddleware(object): |
|
114 |
def process_request(self, request): |
|
115 |
if not hasattr(request, 'request_id'): |
|
116 |
request_id_header = getattr(settings, 'REQUEST_ID_HEADER', None) |
|
117 |
if request_id_header and request.META.get(request_id_header): |
|
118 |
request.request_id = request.META[request_id_header] |
|
119 |
else: |
|
120 |
# Use Mersennes Twister rng, no need for a cryptographic grade |
|
121 |
# rng in this case |
|
122 |
random_id = random.getrandbits(32) |
|
123 |
request.request_id = struct.pack('I', random_id).encode('hex') |
|
124 | ||
111 | 125 |
class StoreRequestMiddleware(object): |
112 | 126 |
collection = {} |
113 | 127 | |
114 | 128 |
def process_request(self, request): |
115 | 129 |
StoreRequestMiddleware.collection[threading.currentThread()] = request |
116 | 130 | |
117 | 131 |
def process_response(self, request, response): |
118 | 132 |
StoreRequestMiddleware.collection.pop(threading.currentThread(), None) |
src/authentic2/settings.py | ||
---|---|---|
49 | 49 |
'django.core.context_processors.request', |
50 | 50 |
'django.contrib.messages.context_processors.messages', |
51 | 51 |
'django.core.context_processors.static', |
52 | 52 |
'authentic2.context_processors.a2_processor', |
53 | 53 |
'sekizai.context_processors.sekizai', |
54 | 54 |
) |
55 | 55 | |
56 | 56 |
MIDDLEWARE_CLASSES = ( |
57 |
'authentic2.middleware.RequestIdMiddleware', |
|
57 | 58 |
'authentic2.middleware.LoggingCollectorMiddleware', |
58 | 59 |
'django.middleware.common.CommonMiddleware', |
59 | 60 |
'django.middleware.http.ConditionalGetMiddleware', |
60 | 61 |
'django.contrib.sessions.middleware.SessionMiddleware', |
61 | 62 |
'django.middleware.csrf.CsrfViewMiddleware', |
62 | 63 |
'django.middleware.locale.LocaleMiddleware', |
63 | 64 |
'django.contrib.auth.middleware.AuthenticationMiddleware', |
64 | 65 |
'django.contrib.messages.middleware.MessageMiddleware', |
65 |
- |