diff --git a/apps/terminal/const.py b/apps/terminal/const.py index a38d026b4..40adb4e82 100644 --- a/apps/terminal/const.py +++ b/apps/terminal/const.py @@ -59,3 +59,9 @@ class PublishStatus(TextChoices): success = 'success', _("Success") failed = 'failed', _("Failed") mismatch = 'mismatch', _("Mismatch") + + +class SessionType(TextChoices): + normal = 'normal', _('Normal') + tunnel = 'tunnel', _('Tunnel') + command = 'command', _('Command') diff --git a/apps/terminal/models/session/session.py b/apps/terminal/models/session/session.py index fd5b2b243..f170b0e33 100644 --- a/apps/terminal/models/session/session.py +++ b/apps/terminal/models/session/session.py @@ -15,6 +15,7 @@ from assets.models import Asset from common.utils import get_object_or_none, lazyproperty from orgs.mixins.models import OrgModelMixin from terminal.backends import get_multi_command_storage +from terminal.const import SessionType from users.models import User @@ -124,6 +125,9 @@ class Session(OrgModelMixin): return False if self.login_from == self.LOGIN_FROM.RT: return False + if self.type != SessionType.normal: + # 会话监控仅支持 normal,不支持 tunnel 和 command + return False if self.protocol in [ Protocol.ssh, Protocol.vnc, Protocol.rdp, Protocol.telnet, Protocol.k8s @@ -153,7 +157,7 @@ class Session(OrgModelMixin): return None, e if settings.SERVER_REPLAY_STORAGE: - from ..tasks import upload_session_replay_to_external_storage + from terminal.tasks import upload_session_replay_to_external_storage upload_session_replay_to_external_storage.delay(str(self.id)) return name, None diff --git a/apps/terminal/serializers/session.py b/apps/terminal/serializers/session.py index 32ff8061e..572c1ecc3 100644 --- a/apps/terminal/serializers/session.py +++ b/apps/terminal/serializers/session.py @@ -1,10 +1,10 @@ -from django.db import models from django.utils.translation import ugettext_lazy as _ from rest_framework import serializers from assets.const import Protocol from common.serializers.fields import LabeledChoiceField from orgs.mixins.serializers import BulkOrgResourceModelSerializer +from ..const import SessionType from ..models import Session __all__ = [ @@ -13,10 +13,6 @@ __all__ = [ ] -class SessionType(models.TextChoices): - normal = 'normal', _('Normal') - tunnel = 'tunnel', _('Tunnel') - command = 'command', _('Command') class SessionSerializer(BulkOrgResourceModelSerializer):