mirror of https://github.com/jumpserver/jumpserver
fix: 解决 swagger api 报错的问题
parent
2b29ce69f4
commit
1035e27201
|
@ -312,7 +312,7 @@ class DatesLoginMetricMixin:
|
||||||
|
|
||||||
@lazyproperty
|
@lazyproperty
|
||||||
def commands_danger_amount(self):
|
def commands_danger_amount(self):
|
||||||
return self.command_queryset.filter(risk_level=Command.RISK_LEVEL_DANGEROUS).count()
|
return self.command_queryset.filter(risk_level=Command.RiskLevelChoices.dangerous).count()
|
||||||
|
|
||||||
@lazyproperty
|
@lazyproperty
|
||||||
def job_logs_running_amount(self):
|
def job_logs_running_amount(self):
|
||||||
|
|
|
@ -10,12 +10,10 @@ from orgs.mixins.models import OrgModelMixin
|
||||||
|
|
||||||
|
|
||||||
class AbstractSessionCommand(OrgModelMixin):
|
class AbstractSessionCommand(OrgModelMixin):
|
||||||
RISK_LEVEL_ORDINARY = 0
|
class RiskLevelChoices(models.IntegerChoices):
|
||||||
RISK_LEVEL_DANGEROUS = 5
|
ordinary = 0, _('Ordinary')
|
||||||
RISK_LEVEL_CHOICES = (
|
dangerous = 5, _('Dangerous')
|
||||||
(RISK_LEVEL_ORDINARY, _('Ordinary')),
|
|
||||||
(RISK_LEVEL_DANGEROUS, _('Dangerous')),
|
|
||||||
)
|
|
||||||
id = models.UUIDField(default=uuid.uuid4, primary_key=True)
|
id = models.UUIDField(default=uuid.uuid4, primary_key=True)
|
||||||
user = models.CharField(max_length=64, db_index=True, verbose_name=_("User"))
|
user = models.CharField(max_length=64, db_index=True, verbose_name=_("User"))
|
||||||
asset = models.CharField(max_length=128, db_index=True, verbose_name=_("Asset"))
|
asset = models.CharField(max_length=128, db_index=True, verbose_name=_("Asset"))
|
||||||
|
@ -23,7 +21,10 @@ class AbstractSessionCommand(OrgModelMixin):
|
||||||
input = models.CharField(max_length=128, db_index=True, verbose_name=_("Input"))
|
input = models.CharField(max_length=128, db_index=True, verbose_name=_("Input"))
|
||||||
output = models.CharField(max_length=1024, blank=True, verbose_name=_("Output"))
|
output = models.CharField(max_length=1024, blank=True, verbose_name=_("Output"))
|
||||||
session = models.CharField(max_length=36, db_index=True, verbose_name=_("Session"))
|
session = models.CharField(max_length=36, db_index=True, verbose_name=_("Session"))
|
||||||
risk_level = models.SmallIntegerField(default=RISK_LEVEL_ORDINARY, choices=RISK_LEVEL_CHOICES, db_index=True, verbose_name=_("Risk level"))
|
risk_level = models.SmallIntegerField(
|
||||||
|
default=RiskLevelChoices.ordinary, choices=RiskLevelChoices.choices, db_index=True,
|
||||||
|
verbose_name=_("Risk level")
|
||||||
|
)
|
||||||
timestamp = models.IntegerField(db_index=True)
|
timestamp = models.IntegerField(db_index=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
@ -44,7 +45,7 @@ class AbstractSessionCommand(OrgModelMixin):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_risk_level_str(cls, risk_level):
|
def get_risk_level_str(cls, risk_level):
|
||||||
risk_mapper = dict(cls.RISK_LEVEL_CHOICES)
|
risk_mapper = dict(cls.RiskLevelChoices.choices)
|
||||||
return risk_mapper.get(risk_level)
|
return risk_mapper.get(risk_level)
|
||||||
|
|
||||||
def to_dict(self):
|
def to_dict(self):
|
||||||
|
|
|
@ -5,11 +5,12 @@ from rest_framework import serializers
|
||||||
from common.utils import pretty_string
|
from common.utils import pretty_string
|
||||||
from common.serializers.fields import LabeledChoiceField
|
from common.serializers.fields import LabeledChoiceField
|
||||||
from terminal.backends.command.models import AbstractSessionCommand
|
from terminal.backends.command.models import AbstractSessionCommand
|
||||||
|
from terminal.models import Command
|
||||||
|
|
||||||
__all__ = ['SessionCommandSerializer', 'InsecureCommandAlertSerializer']
|
__all__ = ['SessionCommandSerializer', 'InsecureCommandAlertSerializer']
|
||||||
|
|
||||||
|
|
||||||
class SimpleSessionCommandSerializer(serializers.Serializer):
|
class SimpleSessionCommandSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
""" 简单Session命令序列类, 用来提取公共字段 """
|
""" 简单Session命令序列类, 用来提取公共字段 """
|
||||||
user = serializers.CharField(label=_("User")) # 限制 64 字符,见 validate_user
|
user = serializers.CharField(label=_("User")) # 限制 64 字符,见 validate_user
|
||||||
|
@ -17,12 +18,18 @@ class SimpleSessionCommandSerializer(serializers.Serializer):
|
||||||
input = serializers.CharField(max_length=2048, label=_("Command"))
|
input = serializers.CharField(max_length=2048, label=_("Command"))
|
||||||
session = serializers.CharField(max_length=36, label=_("Session ID"))
|
session = serializers.CharField(max_length=36, label=_("Session ID"))
|
||||||
risk_level = LabeledChoiceField(
|
risk_level = LabeledChoiceField(
|
||||||
required=False, label=_("Risk level"), choices=AbstractSessionCommand.RISK_LEVEL_CHOICES
|
choices=AbstractSessionCommand.RiskLevelChoices.choices,
|
||||||
|
required=False, label=_("Risk level"),
|
||||||
)
|
)
|
||||||
org_id = serializers.CharField(
|
org_id = serializers.CharField(
|
||||||
max_length=36, required=False, default='', allow_null=True, allow_blank=True
|
max_length=36, required=False, default='', allow_null=True, allow_blank=True
|
||||||
)
|
)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
# 继承 ModelSerializer 解决 swagger risk_level type 为 object 的问题
|
||||||
|
model = Command
|
||||||
|
fields = ['user', 'asset', 'input', 'session', 'risk_level', 'org_id']
|
||||||
|
|
||||||
def validate_user(self, value):
|
def validate_user(self, value):
|
||||||
if len(value) > 64:
|
if len(value) > 64:
|
||||||
value = value[:32] + value[-32:]
|
value = value[:32] + value[-32:]
|
||||||
|
@ -51,5 +58,9 @@ class SessionCommandSerializerMixin(serializers.Serializer):
|
||||||
|
|
||||||
class SessionCommandSerializer(SessionCommandSerializerMixin, SimpleSessionCommandSerializer):
|
class SessionCommandSerializer(SessionCommandSerializerMixin, SimpleSessionCommandSerializer):
|
||||||
""" 字段排序序列类 """
|
""" 字段排序序列类 """
|
||||||
pass
|
|
||||||
|
class Meta(SimpleSessionCommandSerializer.Meta):
|
||||||
|
fields = SimpleSessionCommandSerializer.Meta.fields + [
|
||||||
|
'id', 'account', 'output', 'timestamp', 'timestamp_display', 'remote_addr'
|
||||||
|
]
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue