1
0
mirror of https://github.com/peeringdb/peeringdb.git synced 2024-05-11 05:55:09 +00:00
Files

138 lines
3.0 KiB
Markdown
Raw Permalink Normal View History

2023-04-12 14:41:30 +03:00
Generated from middleware.py on 2023-04-12 10:09:44.563425
# peeringdb_server.middleware
Custom django middleware.
# Classes
---
Support 202211 (#1304) * Carrier object implementation #909 * API keys: disabling of user account by a PeeringDB admin does not disable access via a User API key. Also no disable mech, only revoke. #1140 * Ops: django needs lightweight healthcheck route that confirms database connectivity #1284 * Ops: various indexes are needed #1285 * API requests with invalid Authentication headers should notify users in some way. #1220 * Allow user to change account username #1130 * UX to remove carriers from facilities more inline the other similar UX * more UX fixes for removing carriers from facilities * Cache hints are needed for optimal CDN use #970 * fixes Commandline tool "Run command" button gone #1278 * RIR status gets deleted when changes are made to the network #1279 * Improve MTU field #658 * CSRF cookie not set error from email confirmation view #1296 * expose CSP_CONNECT_SRC * fix confirm email path checking in session middleware * Ops: Emails to OPERATIONS_EMAIL need to be rate-limited #1282 * add website field to carrier ux * website field on carrier optional with org fallback * linting * add *.google-analytics.com to CSP_CONNECT_SRC * poetry relock * fix issues with confirm-email reverse during session creation validation * fix tests * fix tests * pin django-peeringdb to support_202211 * linting * django ratelimit to <4 * regen docs * fix automated net stats to only include networks with status `ok` #1283 * linting * poetry lock Co-authored-by: Matt Griswold <grizz@20c.com>
2023-01-18 18:32:46 +02:00
## CacheControlMiddleware
```
CacheControlMiddleware(django.utils.deprecation.MiddlewareMixin)
```
Sets the Cache-Control s-maxage header on responses
## CurrentRequestContext
```
CurrentRequestContext(builtins.object)
```
Middleware that sets the current request context.
This allows access to the current request from anywhere.
### Methods
#### \__call__
`def __call__(self, request)`
Call self as a function.
---
#### \__init__
`def __init__(self, get_response)`
Initialize self. See help(type(self)) for accurate signature.
---
## HttpResponseUnauthorized
```
HttpResponseUnauthorized(django.http.response.HttpResponse)
```
An HTTP response class with a string as content.
This content can be read, appended to, or replaced.
## PDBCommonMiddleware
```
PDBCommonMiddleware(django.middleware.common.CommonMiddleware)
```
"Common" middleware for taking care of some basic operations:
- Forbid access to User-Agents in settings.DISALLOWED_USER_AGENTS
- URL rewriting: Based on the APPEND_SLASH and PREPEND_WWW settings,
append missing slashes and/or prepends missing "www."s.
- If APPEND_SLASH is set and the initial URL doesn't end with a
slash, and it is not found in urlpatterns, form a new URL by
appending a slash at the end. If this new URL is found in
urlpatterns, return an HTTP redirect to this new URL; otherwise
process the initial URL as usual.
This behavior can be customized by subclassing CommonMiddleware and
overriding the response_redirect_class attribute.
### Methods
#### process_request
`def process_request(self, request)`
Check for denied User-Agents and rewrite the URL based on
settings.APPEND_SLASH and settings.PREPEND_WWW
---
## PDBPermissionMiddleware
```
PDBPermissionMiddleware(django.utils.deprecation.MiddlewareMixin)
```
Middleware that checks if the current user has the correct permissions
to access the requested resource.
### Methods
#### get_username_and_password
`def get_username_and_password(self, http_auth)`
Get the username and password from the HTTP auth header.
---
#### response_unauthorized
`def response_unauthorized(self, request, status=None, message=None)`
Return a Unauthorized response.
---
## PDBSessionMiddleware
```
PDBSessionMiddleware(django.contrib.sessions.middleware.SessionMiddleware)
```
As PeeringDB gets a lot of repeated anonymous requests that do not
store and re-use session cookies this lead to substantial amount of junk
django session objects.
It was decided in #1205 that new django sessions are only to be established
On the login and registration processes.
### Methods
#### process_response
`def process_response(self, request, response)`
If request.session was modified, or if the configuration is to save the
session every time, save the changes and set a session cookie or delete
the session cookie if the session has been emptied.
---