From 189bc9d74a75b3e04c78dd701238d3218b591738 Mon Sep 17 00:00:00 2001 From: Bai Date: Mon, 17 May 2021 14:46:40 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E6=B7=BB=E5=8A=A0lion=E7=BB=88?= =?UTF-8?q?=E7=AB=AF=E7=B1=BB=E5=9E=8B;=20=E4=BF=AE=E6=94=B9=E5=8A=A0?= =?UTF-8?q?=E5=85=A5=E4=BC=9A=E8=AF=9D=E6=A0=A1=E9=AA=8C=E9=80=BB=E8=BE=91?= =?UTF-8?q?(vnc/rdp)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/jumpserver/settings/base.py | 2 +- apps/terminal/api/session.py | 8 ++------ apps/terminal/api/status.py | 5 ----- apps/terminal/const.py | 1 + apps/terminal/models/session.py | 4 +++- 5 files changed, 7 insertions(+), 13 deletions(-) diff --git a/apps/jumpserver/settings/base.py b/apps/jumpserver/settings/base.py index d4a8ce27a..4a2e59062 100644 --- a/apps/jumpserver/settings/base.py +++ b/apps/jumpserver/settings/base.py @@ -16,7 +16,7 @@ PROJECT_DIR = const.PROJECT_DIR # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = CONFIG.SECRET_KEY -# SECURITY WARNING: keep the token secret, remove it if all coco, guacamole ok +# SECURITY WARNING: keep the token secret, remove it if all koko, lion ok BOOTSTRAP_TOKEN = CONFIG.BOOTSTRAP_TOKEN # SECURITY WARNING: don't run with debug turned on in production! diff --git a/apps/terminal/api/session.py b/apps/terminal/api/session.py index 2a749aac5..359ecffc2 100644 --- a/apps/terminal/api/session.py +++ b/apps/terminal/api/session.py @@ -90,7 +90,7 @@ class SessionViewSet(OrgBulkModelViewSet): def filter_queryset(self, queryset): queryset = super().filter_queryset(queryset) - # 解决guacamole更新session时并发导致幽灵会话的问题 + # 解决guacamole更新session时并发导致幽灵会话的问题,暂不处理 if self.request.method in ('PATCH',): queryset = queryset.select_for_update() return queryset @@ -98,11 +98,6 @@ class SessionViewSet(OrgBulkModelViewSet): def perform_create(self, serializer): if hasattr(self.request.user, 'terminal'): serializer.validated_data["terminal"] = self.request.user.terminal - sid = serializer.validated_data["system_user"] - # guacamole提交的是id - if is_uuid(sid): - _system_user = get_object_or_404(SystemUser, id=sid) - serializer.validated_data["system_user"] = _system_user.name return super().perform_create(serializer) def get_permissions(self): @@ -140,6 +135,7 @@ class SessionReplayViewSet(AsyncApiMixin, viewsets.ViewSet): def get_replay_data(session, url): tp = 'json' if session.protocol in ('rdp', 'vnc'): + # 需要考虑录像播放和离线播放器的约定,暂时不处理 tp = 'guacamole' download_url = reverse('api-terminal:session-replay-download', kwargs={'pk': session.id}) diff --git a/apps/terminal/api/status.py b/apps/terminal/api/status.py index b39e13ba7..fdf3ef1f1 100644 --- a/apps/terminal/api/status.py +++ b/apps/terminal/api/status.py @@ -39,11 +39,6 @@ class StatusViewSet(viewsets.ModelViewSet): def handle_sessions(self): session_ids = self.request.data.get('sessions', []) - # guacamole 上报的 session 是字符串 - # "[53cd3e47-210f-41d8-b3c6-a184f3, 53cd3e47-210f-41d8-b3c6-a184f4]" - if isinstance(session_ids, str): - session_ids = session_ids[1:-1].split(',') - session_ids = [sid.strip() for sid in session_ids if sid.strip()] Session.set_sessions_active(session_ids) def get_queryset(self): diff --git a/apps/terminal/const.py b/apps/terminal/const.py index 830913e28..ff638325d 100644 --- a/apps/terminal/const.py +++ b/apps/terminal/const.py @@ -43,6 +43,7 @@ class TerminalTypeChoices(TextChoices): guacamole = 'guacamole', 'Guacamole' omnidb = 'omnidb', 'OmniDB' xrdp = 'xrdp', 'Xrdp' + lion = 'lion', 'Lion' @classmethod def types(cls): diff --git a/apps/terminal/models/session.py b/apps/terminal/models/session.py index 6d85759af..86843433e 100644 --- a/apps/terminal/models/session.py +++ b/apps/terminal/models/session.py @@ -109,7 +109,9 @@ class Session(OrgModelMixin): _PROTOCOL = self.PROTOCOL if self.is_finished: return False - if self.protocol in [_PROTOCOL.SSH, _PROTOCOL.TELNET, _PROTOCOL.K8S]: + if self.protocol in [ + _PROTOCOL.SSH, _PROTOCOL.VNC, _PROTOCOL.RDP, _PROTOCOL.TELNET, _PROTOCOL.K8S + ]: return True else: return False