1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Move GRAPHQL_ENABLED to dynamic configuration

This commit is contained in:
jeremystretch
2021-11-08 15:31:09 -05:00
parent f8e44c09eb
commit d2391b9c63
8 changed files with 20 additions and 15 deletions

View File

@ -74,6 +74,14 @@ By default, NetBox will permit users to create duplicate prefixes and IP address
--- ---
## GRAPHQL_ENABLED
Default: True
Setting this to False will disable the GraphQL API.
---
## MAINTENANCE_MODE ## MAINTENANCE_MODE
Default: False Default: False

View File

@ -140,14 +140,6 @@ EXEMPT_VIEW_PERMISSIONS = ['*']
--- ---
## GRAPHQL_ENABLED
Default: True
Setting this to False will disable the GraphQL API.
---
## HTTP_PROXIES ## HTTP_PROXIES
Default: None Default: None

View File

@ -34,7 +34,7 @@ class ConfigRevisionAdmin(admin.ModelAdmin):
'fields': ('NAPALM_USERNAME', 'NAPALM_PASSWORD', 'NAPALM_TIMEOUT', 'NAPALM_ARGS'), 'fields': ('NAPALM_USERNAME', 'NAPALM_PASSWORD', 'NAPALM_TIMEOUT', 'NAPALM_ARGS'),
}), }),
('Miscellaneous', { ('Miscellaneous', {
'fields': ('MAINTENANCE_MODE', 'CHANGELOG_RETENTION', 'MAPS_URL'), 'fields': ('MAINTENANCE_MODE', 'GRAPHQL_ENABLED', 'CHANGELOG_RETENTION', 'MAPS_URL'),
}), }),
('Config Revision', { ('Config Revision', {
'fields': ('comment',), 'fields': ('comment',),

View File

@ -139,6 +139,13 @@ PARAMS = (
description="Enable maintenance mode", description="Enable maintenance mode",
field=forms.BooleanField field=forms.BooleanField
), ),
ConfigParam(
name='GRAPHQL_ENABLED',
label='GraphQL enabled',
default=True,
description="Enable the GraphQL API",
field=forms.BooleanField
),
ConfigParam( ConfigParam(
name='CHANGELOG_RETENTION', name='CHANGELOG_RETENTION',
label='Changelog retention', label='Changelog retention',

View File

@ -112,9 +112,6 @@ EXEMPT_VIEW_PERMISSIONS = [
# 'ipam.prefix', # 'ipam.prefix',
] ]
# Enable the GraphQL API
GRAPHQL_ENABLED = True
# HTTP proxies NetBox should use when sending outbound HTTP requests (e.g. for webhooks). # HTTP proxies NetBox should use when sending outbound HTTP requests (e.g. for webhooks).
# HTTP_PROXIES = { # HTTP_PROXIES = {
# 'http': 'http://10.10.1.10:3128', # 'http': 'http://10.10.1.10:3128',

View File

@ -6,6 +6,7 @@ from graphene_django.views import GraphQLView as GraphQLView_
from rest_framework.exceptions import AuthenticationFailed from rest_framework.exceptions import AuthenticationFailed
from netbox.api.authentication import TokenAuthentication from netbox.api.authentication import TokenAuthentication
from netbox.config import get_config
class GraphQLView(GraphQLView_): class GraphQLView(GraphQLView_):
@ -15,9 +16,10 @@ class GraphQLView(GraphQLView_):
graphiql_template = 'graphiql.html' graphiql_template = 'graphiql.html'
def dispatch(self, request, *args, **kwargs): def dispatch(self, request, *args, **kwargs):
config = get_config()
# Enforce GRAPHQL_ENABLED # Enforce GRAPHQL_ENABLED
if not settings.GRAPHQL_ENABLED: if not config.GRAPHQL_ENABLED:
return HttpResponseNotFound("The GraphQL API is not enabled.") return HttpResponseNotFound("The GraphQL API is not enabled.")
# Attempt to authenticate the user using a DRF token, if provided # Attempt to authenticate the user using a DRF token, if provided

View File

@ -90,7 +90,6 @@ DEVELOPER = getattr(configuration, 'DEVELOPER', False)
DOCS_ROOT = getattr(configuration, 'DOCS_ROOT', os.path.join(os.path.dirname(BASE_DIR), 'docs')) DOCS_ROOT = getattr(configuration, 'DOCS_ROOT', os.path.join(os.path.dirname(BASE_DIR), 'docs'))
EMAIL = getattr(configuration, 'EMAIL', {}) EMAIL = getattr(configuration, 'EMAIL', {})
EXEMPT_VIEW_PERMISSIONS = getattr(configuration, 'EXEMPT_VIEW_PERMISSIONS', []) EXEMPT_VIEW_PERMISSIONS = getattr(configuration, 'EXEMPT_VIEW_PERMISSIONS', [])
GRAPHQL_ENABLED = getattr(configuration, 'GRAPHQL_ENABLED', True)
HTTP_PROXIES = getattr(configuration, 'HTTP_PROXIES', None) HTTP_PROXIES = getattr(configuration, 'HTTP_PROXIES', None)
INTERNAL_IPS = getattr(configuration, 'INTERNAL_IPS', ('127.0.0.1', '::1')) INTERNAL_IPS = getattr(configuration, 'INTERNAL_IPS', ('127.0.0.1', '::1'))
LOGGING = getattr(configuration, 'LOGGING', {}) LOGGING = getattr(configuration, 'LOGGING', {})

View File

@ -127,7 +127,7 @@
</a> </a>
{# GraphQL API #} {# GraphQL API #}
{% if settings.GRAPHQL_ENABLED %} {% if config.GRAPHQL_ENABLED %}
<a type="button" class="nav-link" href="{% url 'graphql' %}" target="_blank"> <a type="button" class="nav-link" href="{% url 'graphql' %}" target="_blank">
<i title="GraphQL API" class="mdi mdi-graphql text-primary" data-bs-placement="top" data-bs-toggle="tooltip"></i> <i title="GraphQL API" class="mdi mdi-graphql text-primary" data-bs-placement="top" data-bs-toggle="tooltip"></i>
</a> </a>