mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Closes #4502: Enable configuration of proxies for outbound HTTP requests
This commit is contained in:
@ -165,6 +165,21 @@ Enforcement of unique IP space can be toggled on a per-VRF basis. To enforce uni
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## HTTP_PROXIES
|
||||||
|
|
||||||
|
Default: None
|
||||||
|
|
||||||
|
A dictionary of HTTP proxies to use for outbound requests originating from NetBox (e.g. when sending webhooks). Proxies should be specified by schema as per the [Python requests library documentation](https://2.python-requests.org/en/master/user/advanced/). For example:
|
||||||
|
|
||||||
|
```python
|
||||||
|
HTTP_PROXIES = {
|
||||||
|
'http': 'http://10.10.1.10:3128',
|
||||||
|
'https': 'http://10.10.1.10:1080',
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## LOGGING
|
## LOGGING
|
||||||
|
|
||||||
By default, all messages of INFO severity or higher will be logged to the console. Additionally, if `DEBUG` is False and email access has been configured, ERROR and CRITICAL messages will be emailed to the users defined in `ADMINS`.
|
By default, all messages of INFO severity or higher will be logged to the console. Additionally, if `DEBUG` is False and email access has been configured, ERROR and CRITICAL messages will be emailed to the users defined in `ADMINS`.
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
* [#3294](https://github.com/netbox-community/netbox/issues/3294) - Implement mechanism for storing user preferences
|
* [#3294](https://github.com/netbox-community/netbox/issues/3294) - Implement mechanism for storing user preferences
|
||||||
* [#4421](https://github.com/netbox-community/netbox/issues/4421) - Retain user's preference for config context format
|
* [#4421](https://github.com/netbox-community/netbox/issues/4421) - Retain user's preference for config context format
|
||||||
|
* [#4502](https://github.com/netbox-community/netbox/issues/4502) - Enable configuration of proxies for outbound HTTP requests
|
||||||
* [#4531](https://github.com/netbox-community/netbox/issues/4531) - Retain user's preference for page length
|
* [#4531](https://github.com/netbox-community/netbox/issues/4531) - Retain user's preference for page length
|
||||||
* [#4554](https://github.com/netbox-community/netbox/issues/4554) - Add ServerTech's HDOT Cx power outlet type
|
* [#4554](https://github.com/netbox-community/netbox/issues/4554) - Add ServerTech's HDOT Cx power outlet type
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
|
from django.conf import settings
|
||||||
from django_rq import job
|
from django_rq import job
|
||||||
from jinja2.exceptions import TemplateError
|
from jinja2.exceptions import TemplateError
|
||||||
|
|
||||||
@ -69,7 +70,7 @@ def process_webhook(webhook, data, model_name, event, timestamp, username, reque
|
|||||||
session.verify = webhook.ssl_verification
|
session.verify = webhook.ssl_verification
|
||||||
if webhook.ca_file_path:
|
if webhook.ca_file_path:
|
||||||
session.verify = webhook.ca_file_path
|
session.verify = webhook.ca_file_path
|
||||||
response = session.send(prepared_request)
|
response = session.send(prepared_request, proxies=settings.HTTP_PROXIES)
|
||||||
|
|
||||||
if 200 <= response.status_code <= 299:
|
if 200 <= response.status_code <= 299:
|
||||||
logger.info("Request succeeded; response status {}".format(response.status_code))
|
logger.info("Request succeeded; response status {}".format(response.status_code))
|
||||||
|
@ -124,6 +124,12 @@ EXEMPT_VIEW_PERMISSIONS = [
|
|||||||
# 'ipam.prefix',
|
# 'ipam.prefix',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# HTTP proxies NetBox should use when sending outbound HTTP requests (e.g. for webhooks).
|
||||||
|
# HTTP_PROXIES = {
|
||||||
|
# 'http': 'http://10.10.1.10:3128',
|
||||||
|
# 'https': 'http://10.10.1.10:1080',
|
||||||
|
# }
|
||||||
|
|
||||||
# Enable custom logging. Please see the Django documentation for detailed guidance on configuring custom logs:
|
# Enable custom logging. Please see the Django documentation for detailed guidance on configuring custom logs:
|
||||||
# https://docs.djangoproject.com/en/stable/topics/logging/
|
# https://docs.djangoproject.com/en/stable/topics/logging/
|
||||||
LOGGING = {}
|
LOGGING = {}
|
||||||
|
@ -77,6 +77,7 @@ DOCS_ROOT = getattr(configuration, 'DOCS_ROOT', os.path.join(os.path.dirname(BAS
|
|||||||
EMAIL = getattr(configuration, 'EMAIL', {})
|
EMAIL = getattr(configuration, 'EMAIL', {})
|
||||||
ENFORCE_GLOBAL_UNIQUE = getattr(configuration, 'ENFORCE_GLOBAL_UNIQUE', False)
|
ENFORCE_GLOBAL_UNIQUE = getattr(configuration, 'ENFORCE_GLOBAL_UNIQUE', False)
|
||||||
EXEMPT_VIEW_PERMISSIONS = getattr(configuration, 'EXEMPT_VIEW_PERMISSIONS', [])
|
EXEMPT_VIEW_PERMISSIONS = getattr(configuration, 'EXEMPT_VIEW_PERMISSIONS', [])
|
||||||
|
HTTP_PROXIES = getattr(configuration, 'HTTP_PROXIES', None)
|
||||||
LOGGING = getattr(configuration, 'LOGGING', {})
|
LOGGING = getattr(configuration, 'LOGGING', {})
|
||||||
LOGIN_REQUIRED = getattr(configuration, 'LOGIN_REQUIRED', False)
|
LOGIN_REQUIRED = getattr(configuration, 'LOGIN_REQUIRED', False)
|
||||||
LOGIN_TIMEOUT = getattr(configuration, 'LOGIN_TIMEOUT', None)
|
LOGIN_TIMEOUT = getattr(configuration, 'LOGIN_TIMEOUT', None)
|
||||||
|
@ -28,7 +28,7 @@ def get_releases(pre_releases=False):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
logger.debug("Fetching new releases from {}".format(url))
|
logger.debug("Fetching new releases from {}".format(url))
|
||||||
response = requests.get(url, headers=headers)
|
response = requests.get(url, headers=headers, proxies=settings.HTTP_PROXIES)
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
total_releases = len(response.json())
|
total_releases = len(response.json())
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user