From 29b099efc069cf84246abb82dde80dc1d5c6cfa1 Mon Sep 17 00:00:00 2001 From: Bai Date: Thu, 2 Apr 2020 19:45:56 +0800 Subject: [PATCH] =?UTF-8?q?[Update]=20=E6=B7=BB=E5=8A=A0=E5=8A=A0=E5=85=A5?= =?UTF-8?q?=E4=BC=9A=E8=AF=9D=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/terminal/models.py | 5 +++++ apps/terminal/serializers/session.py | 2 +- apps/terminal/templates/terminal/session_list.html | 12 +++++++++++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/apps/terminal/models.py b/apps/terminal/models.py index f73eada2b..08014a87d 100644 --- a/apps/terminal/models.py +++ b/apps/terminal/models.py @@ -243,6 +243,11 @@ class Session(OrgModelMixin): return True return False + def can_join(self): + if self.protocol in ['ssh', 'telnet', 'mysql']: + return True + return False + def save_to_storage(self, f): local_path = self.get_local_path() try: diff --git a/apps/terminal/serializers/session.py b/apps/terminal/serializers/session.py index 006529b15..85d9241a7 100644 --- a/apps/terminal/serializers/session.py +++ b/apps/terminal/serializers/session.py @@ -21,7 +21,7 @@ class SessionSerializer(BulkOrgResourceModelSerializer): "user_id", "asset_id", "system_user_id", "login_from", "login_from_display", "remote_addr", "is_success", "is_finished", "has_replay", "can_replay", - "protocol", "date_start", "date_end", + "can_join", "protocol", "date_start", "date_end", "terminal", ] diff --git a/apps/terminal/templates/terminal/session_list.html b/apps/terminal/templates/terminal/session_list.html index 7fd8a5a07..ff25a5fbb 100644 --- a/apps/terminal/templates/terminal/session_list.html +++ b/apps/terminal/templates/terminal/session_list.html @@ -146,10 +146,15 @@ function initTable() { .replace("sessionID", cellData) .replace("terminalID", rowData.terminal) } + var joinBtn = ' {% trans "Join" %}'; + joinBtn = joinBtn.replace("sessionID", rowData.id); + if (rowData.can_join){ + joinBtn = joinBtn.replace("disabled", "") + } if (rowData.is_finished) { btnGroup += replayBtn + downloadBtn } else { - btnGroup += termBtn; + btnGroup += termBtn + joinBtn; } $(td).html(btnGroup); }}, @@ -246,6 +251,11 @@ $(document).ready(function() { } window.open(downloadUrl) }) +.on('click', '.btn-join', function () { + var sessionID = $(this).data("session"); + var joinUrl = "/luna/join/?shareroom=" + sessionID; + window.open(joinUrl, "height=600, width=800, top=400, left=400, toolbar=no, menubar=no, scrollbars=no, location=no, status=no"); +}) .on("click", '#session_table_filter input', function (e) { e.preventDefault(); e.stopPropagation();