mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-25 06:42:49 +00:00
Config (#3502)
* [Update] 修改config * [Update] 移动存储设置到到terminal中 * [Update] 修改permission 查看 * [Update] pre merge * [Update] 录像存储 * [Update] 命令存储 * [Update] 添加存储测试可连接性 * [Update] 修改 meta 值的 key 为大写 * [Update] 修改 Terminal 相关 Storage 配置 * [Update] 删除之前获取录像/命令存储的代码 * [Update] 修改导入失败 * [Update] 迁移文件添加default存储 * [Update] 删除之前代码,添加help_text信息 * [Update] 删除之前代码 * [Update] 删除之前代码 * [Update] 抽象命令/录像存储 APIView * [Update] 抽象命令/录像存储 APIView 1 * [Update] 抽象命令/录像存储 DictField * [Update] 抽象命令/录像存储列表页面 * [Update] 修复CustomDictField的bug * [Update] RemoteApp 页面添加 hidden * [Update] 用户页面添加用户关联授权 * [Update] 修改存储测试可连接性 target * [Update] 修改配置 * [Update] 修改存储前端 Form 渲染逻辑 * [Update] 修改存储细节 * [Update] 统一存储类型到 const 文件 * [Update] 修改迁移文件及Model,创建默认存储 * [Update] 修改迁移文件及Model初始化默认数据 * [Update] 修改迁移文件 * [Update] 修改迁移文件 * [Update] 修改迁移文件 * [Update] 修改迁移文件 * [Update] 修改迁移文件 * [Update] 修改迁移文件 * [Update] 修改迁移文件 * [Update] 限制删除默认存储配置,只允许创建扩展的存储类型 * [Update] 修改ip字段长度 * [Update] 修改ip字段长度 * [Update] 修改一些css * [Update] 修改关联 * [Update] 添加操作日志定时清理 * [Update] 修改记录syslog的instance encoder * [Update] 忽略登录产生的操作日志 * [Update] 限制更新存储时不覆盖原有AK SK 等字段 * [Update] 修改迁移文件添加comment字段 * [Update] 修改迁移文件 * [Update] 添加 comment 字段 * [Update] 修改默认存储no -> null * [Update] 修改细节 * [Update] 更新翻译(存储配置 * [Update] 修改定时任务注册,修改系统用户资产、节点关系api * [Update] 添加监控磁盘任务 * [Update] 修改session * [Update] 拆分serializer * [Update] 还原setting原来的manager
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
from .v1 import *
|
||||
from .terminal import *
|
||||
from .session import *
|
||||
from .storage import *
|
||||
|
24
apps/terminal/serializers/session.py
Normal file
24
apps/terminal/serializers/session.py
Normal file
@@ -0,0 +1,24 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
from orgs.mixins.serializers import BulkOrgResourceModelSerializer
|
||||
from common.serializers import AdaptedBulkListSerializer
|
||||
from ..models import Session
|
||||
|
||||
|
||||
class SessionSerializer(BulkOrgResourceModelSerializer):
|
||||
command_amount = serializers.IntegerField(read_only=True)
|
||||
org_id = serializers.CharField(allow_blank=True)
|
||||
|
||||
class Meta:
|
||||
model = Session
|
||||
list_serializer_class = AdaptedBulkListSerializer
|
||||
fields = [
|
||||
"id", "user", "asset", "system_user", "login_from",
|
||||
"login_from_display", "remote_addr", "is_finished",
|
||||
"has_replay", "can_replay", "protocol", "date_start", "date_end",
|
||||
"terminal", "command_amount",
|
||||
]
|
||||
|
||||
|
||||
class ReplaySerializer(serializers.Serializer):
|
||||
file = serializers.FileField(allow_empty_file=True)
|
73
apps/terminal/serializers/storage.py
Normal file
73
apps/terminal/serializers/storage.py
Normal file
@@ -0,0 +1,73 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
import copy
|
||||
from rest_framework import serializers
|
||||
|
||||
from common.fields.serializer import CustomMetaDictField
|
||||
from ..models import ReplayStorage, CommandStorage
|
||||
from .. import const
|
||||
|
||||
|
||||
class ReplayStorageMetaDictField(CustomMetaDictField):
|
||||
type_map_fields = const.REPLAY_STORAGE_TYPE_MAP_FIELDS
|
||||
default_type = const.REPLAY_STORAGE_TYPE_SERVER
|
||||
need_convert_key = True
|
||||
|
||||
|
||||
class BaseStorageSerializerMixin:
|
||||
type_map_fields = None
|
||||
|
||||
def process_meta(self, instance, validated_data):
|
||||
new_meta = copy.deepcopy(validated_data.get('meta', {}))
|
||||
tp = validated_data.get('type', '')
|
||||
|
||||
if tp != instance.type:
|
||||
return new_meta
|
||||
|
||||
old_meta = instance.meta
|
||||
fields = self.type_map_fields.get(instance.type, [])
|
||||
for field in fields:
|
||||
if not field.get('write_only', False):
|
||||
continue
|
||||
field_name = field['name']
|
||||
new_value = new_meta.get(field_name, '')
|
||||
old_value = old_meta.get(field_name, '')
|
||||
field_value = new_value if new_value else old_value
|
||||
new_meta[field_name] = field_value
|
||||
|
||||
return new_meta
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
meta = self.process_meta(instance, validated_data)
|
||||
validated_data['meta'] = meta
|
||||
return super().update(instance, validated_data)
|
||||
|
||||
|
||||
class ReplayStorageSerializer(BaseStorageSerializerMixin,
|
||||
serializers.ModelSerializer):
|
||||
|
||||
meta = ReplayStorageMetaDictField()
|
||||
|
||||
type_map_fields = const.REPLAY_STORAGE_TYPE_MAP_FIELDS
|
||||
|
||||
class Meta:
|
||||
model = ReplayStorage
|
||||
fields = ['id', 'name', 'type', 'meta', 'comment']
|
||||
|
||||
|
||||
class CommandStorageMetaDictField(CustomMetaDictField):
|
||||
type_map_fields = const.COMMAND_STORAGE_TYPE_MAP_FIELDS
|
||||
default_type = const.COMMAND_STORAGE_TYPE_SERVER
|
||||
need_convert_key = True
|
||||
|
||||
|
||||
class CommandStorageSerializer(BaseStorageSerializerMixin,
|
||||
serializers.ModelSerializer):
|
||||
|
||||
meta = CommandStorageMetaDictField()
|
||||
|
||||
type_map_fields = const.COMMAND_STORAGE_TYPE_MAP_FIELDS
|
||||
|
||||
class Meta:
|
||||
model = CommandStorage
|
||||
fields = ['id', 'name', 'type', 'meta', 'comment']
|
@@ -1,11 +1,10 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
from rest_framework import serializers
|
||||
|
||||
from orgs.mixins.serializers import BulkOrgResourceModelSerializer
|
||||
from common.mixins import BulkSerializerMixin
|
||||
from common.serializers import AdaptedBulkListSerializer
|
||||
from ..models import Terminal, Status, Session, Task
|
||||
from ..models import (
|
||||
Terminal, Status, Session, Task
|
||||
)
|
||||
|
||||
|
||||
class TerminalSerializer(serializers.ModelSerializer):
|
||||
@@ -25,21 +24,6 @@ class TerminalSerializer(serializers.ModelSerializer):
|
||||
return Session.objects.filter(terminal=obj, is_finished=False).count()
|
||||
|
||||
|
||||
class SessionSerializer(BulkOrgResourceModelSerializer):
|
||||
command_amount = serializers.IntegerField(read_only=True)
|
||||
org_id = serializers.CharField(allow_blank=True)
|
||||
|
||||
class Meta:
|
||||
model = Session
|
||||
list_serializer_class = AdaptedBulkListSerializer
|
||||
fields = [
|
||||
"id", "user", "asset", "system_user", "login_from",
|
||||
"login_from_display", "remote_addr", "is_finished",
|
||||
"has_replay", "can_replay", "protocol", "date_start", "date_end",
|
||||
"terminal", "command_amount",
|
||||
]
|
||||
|
||||
|
||||
class StatusSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
fields = ['id', 'terminal']
|
||||
@@ -52,9 +36,3 @@ class TaskSerializer(BulkSerializerMixin, serializers.ModelSerializer):
|
||||
fields = '__all__'
|
||||
model = Task
|
||||
list_serializer_class = AdaptedBulkListSerializer
|
||||
|
||||
|
||||
class ReplaySerializer(serializers.Serializer):
|
||||
file = serializers.FileField(allow_empty_file=True)
|
||||
|
||||
|
Reference in New Issue
Block a user