diff --git a/apps/terminal/models.py b/apps/terminal/models.py index 216386e50..5998ad81f 100644 --- a/apps/terminal/models.py +++ b/apps/terminal/models.py @@ -257,9 +257,25 @@ class Session(OrgModelMixin): _PROTOCOL = self.PROTOCOL if self.is_finished: return False - if self.protocol not in [_PROTOCOL.SSH, _PROTOCOL.TELNET, _PROTOCOL.MYSQL, _PROTOCOL.K8S]: + if self.protocol in [_PROTOCOL.SSH, _PROTOCOL.TELNET, _PROTOCOL.K8S]: + return True + else: return False - return True + + @property + def db_protocols(self): + _PROTOCOL = self.PROTOCOL + return [_PROTOCOL.MYSQL, _PROTOCOL.MARIADB, _PROTOCOL.ORACLE, _PROTOCOL.POSTGRESQL] + + @property + def can_termination(self): + _PROTOCOL = self.PROTOCOL + if self.is_finished: + return False + if self.protocol in self.db_protocols: + return False + else: + return True def save_replay_to_storage(self, f): local_path = self.get_local_path() diff --git a/apps/terminal/serializers/session.py b/apps/terminal/serializers/session.py index 65f933351..38de6eff6 100644 --- a/apps/terminal/serializers/session.py +++ b/apps/terminal/serializers/session.py @@ -22,7 +22,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", - "can_join", "protocol", "date_start", "date_end", + "can_join", "can_termination", "protocol", "date_start", "date_end", "terminal", ] extra_kwargs = {