mirror of https://github.com/jumpserver/jumpserver
perf: 添加加密配置API
parent
606d2c8933
commit
eaa052a380
|
@ -1,24 +1,26 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
import logging
|
import logging
|
||||||
from django.db.models import Q
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
from django.db.models import Q
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
from django_filters import rest_framework as filters
|
||||||
from rest_framework import generics
|
from rest_framework import generics
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from rest_framework.views import APIView, Response
|
from rest_framework.views import APIView, Response
|
||||||
from django_filters import rest_framework as filters
|
|
||||||
|
|
||||||
from common.drf.filters import BaseFilterSet
|
|
||||||
from common.api import JMSBulkModelViewSet
|
from common.api import JMSBulkModelViewSet
|
||||||
|
from common.drf.filters import BaseFilterSet
|
||||||
from common.exceptions import JMSException
|
from common.exceptions import JMSException
|
||||||
from common.permissions import WithBootstrapToken
|
from common.permissions import WithBootstrapToken, IsServiceAccount
|
||||||
|
from jumpserver.conf import ConfigCrypto
|
||||||
from terminal import serializers
|
from terminal import serializers
|
||||||
from terminal.models import Terminal
|
from terminal.models import Terminal
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'TerminalViewSet', 'TerminalConfig',
|
'TerminalViewSet', 'TerminalConfig',
|
||||||
'TerminalRegistrationApi',
|
'TerminalRegistrationApi', 'EncryptedTerminalConfig'
|
||||||
]
|
]
|
||||||
logger = logging.getLogger(__file__)
|
logger = logging.getLogger(__file__)
|
||||||
|
|
||||||
|
@ -89,3 +91,17 @@ class TerminalRegistrationApi(generics.CreateAPIView):
|
||||||
return Response(data=data, status=status.HTTP_400_BAD_REQUEST)
|
return Response(data=data, status=status.HTTP_400_BAD_REQUEST)
|
||||||
return super().create(request, *args, **kwargs)
|
return super().create(request, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
class EncryptedTerminalConfig(generics.CreateAPIView):
|
||||||
|
serializer_class = serializers.EncryptedConfigSerializer
|
||||||
|
permission_classes = [IsServiceAccount]
|
||||||
|
http_method_names = ['post']
|
||||||
|
|
||||||
|
def post(self, request, *args, **kwargs):
|
||||||
|
serializer = self.serializer_class(data=request.data)
|
||||||
|
serializer.is_valid(raise_exception=True)
|
||||||
|
encrypt_key = serializer.validated_data['secret_encrypt_key']
|
||||||
|
encrypted_value = serializer.validated_data['encrypted_value']
|
||||||
|
config_crypto = ConfigCrypto(encrypt_key)
|
||||||
|
value = config_crypto.decrypt(encrypted_value)
|
||||||
|
return Response(data={'value': value}, status=200)
|
||||||
|
|
|
@ -147,3 +147,8 @@ class ConnectMethodSerializer(serializers.Serializer):
|
||||||
type = serializers.CharField(max_length=128)
|
type = serializers.CharField(max_length=128)
|
||||||
endpoint_protocol = serializers.CharField(max_length=128)
|
endpoint_protocol = serializers.CharField(max_length=128)
|
||||||
component = serializers.CharField(max_length=128)
|
component = serializers.CharField(max_length=128)
|
||||||
|
|
||||||
|
|
||||||
|
class EncryptedConfigSerializer(serializers.Serializer):
|
||||||
|
secret_encrypt_key = serializers.CharField(max_length=128)
|
||||||
|
encrypted_value = serializers.CharField(max_length=128)
|
||||||
|
|
|
@ -54,6 +54,7 @@ urlpatterns = [
|
||||||
# components
|
# components
|
||||||
path('components/metrics/', api.ComponentsMetricsAPIView.as_view(), name='components-metrics'),
|
path('components/metrics/', api.ComponentsMetricsAPIView.as_view(), name='components-metrics'),
|
||||||
path('components/connect-methods/', api.ConnectMethodListApi.as_view(), name='connect-methods'),
|
path('components/connect-methods/', api.ConnectMethodListApi.as_view(), name='connect-methods'),
|
||||||
|
path('encrypted_config/', api.EncryptedTerminalConfig.as_view(), name='encrypted-terminal-config'),
|
||||||
]
|
]
|
||||||
|
|
||||||
urlpatterns += router.urls
|
urlpatterns += router.urls
|
||||||
|
|
Loading…
Reference in New Issue