Merge pull request #10394 from jumpserver/pr@dev@perf_replay_mp4

perf: 支持 mp4 录像文件上传和新增 video worker 类型
pull/10400/head
Eric_Lee 2023-05-07 09:06:18 +08:00 committed by GitHub
commit ccd6b8c48a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 6 additions and 3 deletions

View File

@ -186,6 +186,8 @@ class SessionReplayViewSet(AsyncApiMixin, viewsets.ViewSet):
tp = 'guacamole' tp = 'guacamole'
if url.endswith('.cast.gz'): if url.endswith('.cast.gz'):
tp = 'asciicast' tp = 'asciicast'
if url.endswith('.replay.mp4'):
tp = 'mp4'
download_url = reverse('api-terminal:session-replay-download', kwargs={'pk': session.id}) download_url = reverse('api-terminal:session-replay-download', kwargs={'pk': session.id})
data = { data = {

View File

@ -48,6 +48,7 @@ class TerminalType(TextChoices):
magnus = 'magnus', 'Magnus' magnus = 'magnus', 'Magnus'
razor = 'razor', 'Razor' razor = 'razor', 'Razor'
tinker = 'tinker', 'Tinker' tinker = 'tinker', 'Tinker'
video_worker = 'video_worker', 'Video Worker'
@classmethod @classmethod
def types(cls): def types(cls):

View File

@ -48,8 +48,8 @@ class Session(OrgModelMixin):
upload_to = 'replay' upload_to = 'replay'
ACTIVE_CACHE_KEY_PREFIX = 'SESSION_ACTIVE_{}' ACTIVE_CACHE_KEY_PREFIX = 'SESSION_ACTIVE_{}'
SUFFIX_MAP = {1: '.gz', 2: '.replay.gz', 3: '.cast.gz'} SUFFIX_MAP = {1: '.gz', 2: '.replay.gz', 3: '.cast.gz', 4: '.replay.mp4'}
DEFAULT_SUFFIXES = ['.replay.gz', '.cast.gz', '.gz'] DEFAULT_SUFFIXES = ['.replay.gz', '.cast.gz', '.gz', '.replay.mp4']
# Todo: 将来干掉 local_path, 使用 default storage 实现 # Todo: 将来干掉 local_path, 使用 default storage 实现
def get_all_possible_local_path(self): def get_all_possible_local_path(self):

View File

@ -61,7 +61,7 @@ class SessionDisplaySerializer(SessionSerializer):
class ReplaySerializer(serializers.Serializer): class ReplaySerializer(serializers.Serializer):
file = serializers.FileField(allow_empty_file=True) file = serializers.FileField(allow_empty_file=True)
version = serializers.IntegerField(write_only=True, required=False, min_value=2, max_value=3) version = serializers.IntegerField(write_only=True, required=False, min_value=2, max_value=4)
class SessionJoinValidateSerializer(serializers.Serializer): class SessionJoinValidateSerializer(serializers.Serializer):