mirror of https://github.com/jumpserver/jumpserver
perf: applet host tips
parent
7973239424
commit
cf1dc79c68
|
@ -9,9 +9,9 @@ from rest_framework.decorators import action
|
||||||
from rest_framework.request import Request
|
from rest_framework.request import Request
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
|
|
||||||
|
from common.api.mixin import CommonApiMixin
|
||||||
from common.const.http import GET
|
from common.const.http import GET
|
||||||
from common.drf.filters import BaseFilterSet
|
from common.drf.filters import BaseFilterSet
|
||||||
from common.api.mixin import CommonApiMixin
|
|
||||||
from terminal import const
|
from terminal import const
|
||||||
from terminal.filters import CommandStorageFilter, CommandFilter, CommandFilterForStorageTree
|
from terminal.filters import CommandStorageFilter, CommandFilter, CommandFilterForStorageTree
|
||||||
from terminal.models import CommandStorage, ReplayStorage
|
from terminal.models import CommandStorage, ReplayStorage
|
||||||
|
@ -30,8 +30,10 @@ class BaseStorageViewSetMixin(CommonApiMixin):
|
||||||
if instance.type_null_or_server or instance.is_default:
|
if instance.type_null_or_server or instance.is_default:
|
||||||
data = {'msg': _('Deleting the default storage is not allowed')}
|
data = {'msg': _('Deleting the default storage is not allowed')}
|
||||||
return Response(data=data, status=status.HTTP_400_BAD_REQUEST)
|
return Response(data=data, status=status.HTTP_400_BAD_REQUEST)
|
||||||
if instance.is_use():
|
used_by = instance.used_by()
|
||||||
data = {'msg': _('Cannot delete storage that is being used')}
|
if used_by:
|
||||||
|
names = ', '.join(list(used_by.values_list('name', flat=True)))
|
||||||
|
data = {'msg': _('Cannot delete storage that is being used: {}').format(names)}
|
||||||
return Response(data=data, status=status.HTTP_400_BAD_REQUEST)
|
return Response(data=data, status=status.HTTP_400_BAD_REQUEST)
|
||||||
return super().destroy(request, *args, **kwargs)
|
return super().destroy(request, *args, **kwargs)
|
||||||
|
|
||||||
|
|
|
@ -105,10 +105,10 @@ class CommandStorage(CommonStorageModelMixin, JMSBaseModel):
|
||||||
store = engine_mod.CommandStore(self.config)
|
store = engine_mod.CommandStore(self.config)
|
||||||
return store.ping(timeout=3)
|
return store.ping(timeout=3)
|
||||||
|
|
||||||
def is_use(self):
|
def used_by(self):
|
||||||
return Terminal.objects.filter(
|
return Terminal.objects.filter(
|
||||||
command_storage=self.name, is_deleted=False
|
command_storage=self.name, is_deleted=False
|
||||||
).exists()
|
)
|
||||||
|
|
||||||
def get_command_queryset(self):
|
def get_command_queryset(self):
|
||||||
if self.type_null:
|
if self.type_null:
|
||||||
|
|
|
@ -158,7 +158,6 @@ class Terminal(StorageMixin, TerminalStatusMixin, JMSBaseModel):
|
||||||
self.user = None
|
self.user = None
|
||||||
self.is_deleted = True
|
self.is_deleted = True
|
||||||
self.save()
|
self.save()
|
||||||
return
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
status = "Active"
|
status = "Active"
|
||||||
|
|
|
@ -18,11 +18,13 @@ __all__ = [
|
||||||
'AppletHostStartupSerializer', 'AppletSetupSerializer'
|
'AppletHostStartupSerializer', 'AppletSetupSerializer'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
RDS_LICENSE_DOC_URL = 'https://learn.microsoft.com/en-us/windows-server/remote/remote-desktop-services/rds-client-access-license'
|
||||||
|
|
||||||
|
|
||||||
class DeployOptionsSerializer(serializers.Serializer):
|
class DeployOptionsSerializer(serializers.Serializer):
|
||||||
LICENSE_MODE_CHOICES = (
|
LICENSE_MODE_CHOICES = (
|
||||||
(4, _('Per Session')),
|
(2, _('Per Device (Device number limit)')),
|
||||||
(2, _('Per Device')),
|
(4, _('Per User (User number limit)')),
|
||||||
)
|
)
|
||||||
|
|
||||||
# 单用户单会话,
|
# 单用户单会话,
|
||||||
|
@ -44,11 +46,20 @@ class DeployOptionsSerializer(serializers.Serializer):
|
||||||
""")
|
""")
|
||||||
)
|
)
|
||||||
IGNORE_VERIFY_CERTS = serializers.BooleanField(default=True, label=_("Ignore Certificate Verification"))
|
IGNORE_VERIFY_CERTS = serializers.BooleanField(default=True, label=_("Ignore Certificate Verification"))
|
||||||
RDS_Licensing = serializers.BooleanField(default=False, label=_("Existing RDS license"))
|
RDS_Licensing = serializers.BooleanField(
|
||||||
|
default=False, label=_("Existing RDS license"),
|
||||||
|
help_text=_('If not exist, the RDS will be in trial mode, and the trial period is 120 days. '
|
||||||
|
'<a href={}>Detail</a>').format(RDS_LICENSE_DOC_URL)
|
||||||
|
)
|
||||||
RDS_LicenseServer = serializers.CharField(default='127.0.0.1', label=_('RDS License Server'), max_length=1024)
|
RDS_LicenseServer = serializers.CharField(default='127.0.0.1', label=_('RDS License Server'), max_length=1024)
|
||||||
RDS_LicensingMode = serializers.ChoiceField(choices=LICENSE_MODE_CHOICES, default=2, label=_('RDS Licensing Mode'))
|
RDS_LicensingMode = serializers.ChoiceField(
|
||||||
RDS_fSingleSessionPerUser = serializers.ChoiceField(choices=SESSION_PER_USER, default=1,
|
choices=LICENSE_MODE_CHOICES, default=2, label=_('RDS Licensing Mode'),
|
||||||
label=_("RDS Single Session Per User"))
|
)
|
||||||
|
RDS_fSingleSessionPerUser = serializers.ChoiceField(
|
||||||
|
choices=SESSION_PER_USER, default=1, label=_("RDS Single Session Per User"),
|
||||||
|
help_text=_('Tips: A RDS user can have only one session at a time. If set, when next login connected, '
|
||||||
|
'previous session will be disconnected.')
|
||||||
|
)
|
||||||
RDS_MaxDisconnectionTime = serializers.IntegerField(
|
RDS_MaxDisconnectionTime = serializers.IntegerField(
|
||||||
default=60000, label=_("RDS Max Disconnection Time (ms)"),
|
default=60000, label=_("RDS Max Disconnection Time (ms)"),
|
||||||
help_text=_(
|
help_text=_(
|
||||||
|
|
Loading…
Reference in New Issue