class AddHostAccountSerializer(serializers.Serializer): # 堡垒机IP jumper_ip = serializers.IPAddressField( required=True, error_messages=serializers.CommonErrorMessages(_(u"堡垒机IP"))) # 主机ID host_id = serializers.IntegerField( required=True, error_messages=serializers.CommonErrorMessages(_(u"主机ID"))) # 账户名 account_name = serializers.CharField( required=True, error_messages=serializers.CommonErrorMessages(_(u"账户名"))) # 账户密码 account_password = serializers.CharField(required=False, default="") # 登录方式 auth_mode = serializers.ChoiceField( choices=["autoLogin", "manualLogin"], required=True, error_messages=serializers.CommonErrorMessages(_(u"登录方式"))) # 用户协议 protocol = serializers.ChoiceField( choices=["RDP", "SSH"], required=True, error_messages=serializers.CommonErrorMessages(_(u"用户协议")))
class ChangeCellPhoneValidator(CodeVerifyValidatorBase): """ """ def __init__(self, request, redis_conn, *args, **kwargs): self.request = request self._redis = redis_conn self._code_type = "verify_code" super(ChangeCellPhoneValidator, self).__init__(*args, **kwargs) # 用户手机号 cell_phone = serializers.CharField( required=True, max_length=100, validators=[cell_phone_validator], error_messages=serializers.CommonErrorMessages(_(u"手机号"))) # 验证码 code = serializers.CharField( required=True, max_length=10, validators=[verify_code_validator], error_messages=serializers.CommonErrorMessages(_(u"验证码"))) def validate(self, attrs): cell_phone = attrs["cell_phone"] code = attrs["code"] status, error = self._check_code(cell_phone=cell_phone, code=code) if not status: raise serializers.ValidationError(error) return attrs
class BindJumperPubIpSerializer(serializers.Serializer): owner = serializers.CharField( required=True, max_length=100, error_messages=serializers.CommonErrorMessages(_(u"用户"))) zone = serializers.ChoiceField( required=True, choices=["dev", "test", "prod"], error_messages=serializers.CommonErrorMessages(_(u"区域"))) jumper_id = serializers.CharField( required=True, max_length=200, error_messages=serializers.CommonErrorMessages(_(u"主机ID"))) ip_id = serializers.CharField( required=True, max_length=100, error_messages=serializers.CommonErrorMessages(_(u"IP_ID"))) # TODO: 二期需修改 pub_ip_type = serializers.CharField( required=False, max_length=100, default="virtual", error_messages=serializers.CommonErrorMessages(_(u"IP类型")))
class PhysServValidator(serializers.Serializer): id = serializers.IntegerField( required=False, error_messages=serializers.CommonErrorMessages('id')) cfg_id = serializers.CharField( max_length=100, error_messages=serializers.CommonErrorMessages(_(u'编号'))) name = serializers.CharField( max_length=100, error_messages=serializers.CommonErrorMessages(_(u'名称'))) cpu = serializers.IntegerField( error_messages=serializers.CommonErrorMessages(_(u'CPU 数'))) memory = serializers.IntegerField( error_messages=serializers.CommonErrorMessages(_(u'内存数'))) cabinet = serializers.CharField( max_length=100, error_messages=serializers.CommonErrorMessages(_(u'所在机柜'))) gbe = serializers.IntegerField( error_messages=serializers.CommonErrorMessages(_(u'千兆网卡接口'))) gbex10 = serializers.IntegerField( error_messages=serializers.CommonErrorMessages(_(u'万兆网卡接口'))) lan_ip = serializers.RegexField( regex=REGEXP_IPS, max_length=100, error_messages=serializers.CommonErrorMessages(_(u'内网 IP'))) wan_ip = serializers.RegexField( regex=REGEXP_IPS, max_length=100, error_messages=serializers.CommonErrorMessages(_(u'外网 IP')))
class UpdateCmdbValidator(serializers.Serializer): type = serializers.ChoiceField( choices=CFG_TYPE_CHOICES, error_messages=serializers.CommonErrorMessages('type')) cfg_items = serializers.ListField( error_messages=serializers.CommonErrorMessages('cfg_items'))
class WafBaseSerializer(serializers.Serializer): """ 每秒查询频率、HTTP连接数、CPU使用率、内存使用率 请求次数统计、响应时间统计、安全防护日志 基础防护、HTTP协议防护、防错误信息泄露、WAF规则 url白名单 系统信息 """ owner = serializers.CharField( required=True, error_messages=serializers.CommonErrorMessages(u"用户")) zone = serializers.ChoiceField( required=True, choices=["dev", "prod", "test"], error_messages=serializers.CommonErrorMessages(u"分区")) waf_id = serializers.CharField( required=True, error_messages=serializers.CommonErrorMessages(u"waf_id")) smc_ip = serializers.IPAddressField( required=True, error_messages=serializers.CommonErrorMessages(u"smc_ip")) page_index = serializers.IntegerField(default=1, required=False) page_size = serializers.IntegerField(default=0, required=False)
class AppstoreBaseSerializer(serializers.Serializer): owner = serializers.CharField( required=True, error_messages=serializers.CommonErrorMessages(u"用户")) zone = serializers.ChoiceField( required=True, choices=["dev", "prod", "test", "all", "bj"], error_messages=serializers.CommonErrorMessages(u"分区"))
class AdjustStorageResourcePoolsValidator(serializers.Serializer): """ 校验调整存储资源池接口输入 """ owner = serializers.CharField( max_length=20, default="cloudin", error_messages=serializers.CommonErrorMessages(_(u"所有者")) ) zone = serializers.CharField( max_length=20, default="yz", error_messages=serializers.CommonErrorMessages(_(u"区信息")) ) name = serializers.CharField( max_length=20, required=True, error_messages=serializers.CommonErrorMessages(_(u"存储池名称")) ) new_name = serializers.CharField( max_length=20, required=False, error_messages=serializers.CommonErrorMessages(_(u"存储池新名称")) ) adjust_size = serializers.IntegerField( min_value=-1, required=False, error_messages=serializers.CommonErrorMessages(_(u"存储池调整大小")) )
class CreateStorageResourcePoolsValidator(serializers.Serializer): """ 校验创建存储资源池接口输入 """ owner = serializers.CharField( max_length=20, default="cloudin", error_messages=serializers.CommonErrorMessages(_(u"所有者")) ) zone = serializers.CharField( max_length=20, default="yz", error_messages=serializers.CommonErrorMessages(_(u"区信息")) ) name = serializers.CharField( max_length=20, error_messages=serializers.CommonErrorMessages(_(u"存储池名称")) ) kind = serializers.ChoiceField( choices=['ssd', 'sata'], error_messages=serializers.CommonErrorMessages(_(u"存储池类型")) ) size = serializers.IntegerField( min_value=2, error_messages=serializers.CommonErrorMessages(_(u"存储池名称")) )
class MigrateVirtualMachineValidator(serializers.Serializer): instance_id = serializers.CharField( max_length=20, error_messages=serializers.CommonErrorMessages(_(u"云主机 ID"))) dst_physical_machine = serializers.CharField( max_length=20, error_messages=serializers.CommonErrorMessages(_(u"目的物理机")))
class DeleteCmdbValidator(serializers.Serializer): type = serializers.ChoiceField( choices=CFG_TYPE_CHOICES, error_messages=serializers.CommonErrorMessages('type')) ids = serializers.ListField( error_messages=serializers.CommonErrorMessages('ids'))
class NewHostSerializer(serializers.Serializer): # 所有者 owner = serializers.CharField( required=True, max_length=30, error_messages=serializers.CommonErrorMessages(_(u"用户"))) # zone zone = serializers.ChoiceField( required=True, choices=["dev", "test", "prod"], error_messages=serializers.CommonErrorMessages(_(u"区域"))) # 堡垒机IP jumper_ip = serializers.IPAddressField( required=True, error_messages=serializers.CommonErrorMessages(_(u"堡垒机IP"))) # 主机ID instance_id = serializers.CharField( required=True, max_length=30, error_messages=serializers.CommonErrorMessages(_(u"主机ID"))) # 主机名 instance_name = serializers.CharField( required=True, error_messages=serializers.CommonErrorMessages(_(u"主机名称"))) # 子网ID # net_id = serializers.ListField( # required=True, # error_messages=serializers.CommonErrorMessages(_(u"子网ID")) # ) # rdp端口 rdp_port = serializers.IntegerField( required=True, max_value=65536, error_messages=serializers.CommonErrorMessages(_(u"rdp端口号"))) # ssh端口 ssh_port = serializers.IntegerField( required=True, max_value=65536, error_messages=serializers.CommonErrorMessages(_(u"ssh端口号"))) # rdp键盘记录 enable_keyboard_record = serializers.BooleanField( required=True, error_messages=serializers.CommonErrorMessages(_(u"是否启用rdp键盘记录"))) # rdp打印机/驱动器映射 enable_disk_redirection = serializers.BooleanField( required=True, error_messages=serializers.CommonErrorMessages(_(u"是否启用rdp打印机/驱动器映射"))) # rdp剪切板 enable_clipboard = serializers.BooleanField( required=True, error_messages=serializers.CommonErrorMessages(_(u"是否启用rdp剪切板")))
class UpdateBoardValidator(ValidatorBase): owner = serializers.CharField( max_length=32, error_messages=serializers.CommonErrorMessages('owner') ) zone = serializers.CharField( max_length=20, error_messages=serializers.CommonErrorMessages('zone') ) board_id = serializers.CharField( max_length=32, error_messages=serializers.CommonErrorMessages('board') ) name = serializers.CharField( max_length=64, error_messages=serializers.CommonErrorMessages('name') ) background = serializers.CharField( max_length=32, error_messages=serializers.CommonErrorMessages('background') ) def handler(self, validated_data): board = BoardModel.objects.update_board( validated_data['owner'], validated_data['zone'], validated_data['board_id'], validated_data['name'], validated_data['background'] ) serializer = BoardSerializer(board) return ConsoleResponse(ret_set=serializer.data)
class DescribeBoardValidator(ValidatorBase): owner = serializers.CharField( max_length=32, error_messages=serializers.CommonErrorMessages('owner') ) zone = serializers.CharField( max_length=20, error_messages=serializers.CommonErrorMessages('zone') ) location = serializers.CharField( max_length=64, error_messages=serializers.CommonErrorMessages('location') ) def handler(self, validated_data): board_list = BoardModel.objects.describe_board( validated_data['owner'], validated_data['zone'], validated_data['location'] ) serializer = BoardListSerializer(board_list) return ConsoleResponse(total_count=len(serializer.data), ret_set=serializer.data)
class UpdateRouterValidator(serializers.Serializer): action = serializers.CharField( max_length=40, required=True, error_messages=serializers.CommonErrorMessages(_(u"执行动作")) ) owner = serializers.CharField( max_length=40, required=True, error_messages=serializers.CommonErrorMessages(_(u"owner")) ) zone = serializers.CharField( max_length=40, required=True, error_messages=serializers.CommonErrorMessages(_(u"zone")) ) router_id = serializers.CharField( max_length=40, required=True, error_messages=serializers.CommonErrorMessages(_(u"路由旧名字")) ) name = serializers.CharField( max_length=40, required=True, error_messages=serializers.CommonErrorMessages(_(u"路由新名字")) )
class ArrangeBoardFrameValidator(ValidatorBase): owner = serializers.CharField( max_length=32, error_messages=serializers.CommonErrorMessages('owner') ) frame_id = serializers.CharField( max_length=32, error_messages=serializers.CommonErrorMessages('frame_id') ) direction = serializers.CharField( max_length=32, error_messages=serializers.CommonErrorMessages('direction') ) step = serializers.IntegerField( max_value=MAX_FRAME_NUM, error_messages=serializers.CommonErrorMessages('step') ) def handler(self, validated_data): ret = FrameModel.objects.arrange_frame( validated_data['owner'], validated_data['frame_id'], validated_data['direction'], validated_data['step'], ) return ConsoleResponse(code=ret)
class DeleteBoardFrameValidator(ValidatorBase): owner = serializers.CharField( max_length=32, error_messages=serializers.CommonErrorMessages('owner') ) frame_ids = serializers.ListField( error_messages=serializers.CommonErrorMessages('frame_id') ) def handler(self, validated_data): direction = 'down' ret = True # (删除模块相当于每次下移一步,直到无法下移时将其删除) frame_ids = validated_data['frame_ids'], logger.debug("%s", frame_ids) for frame_id in frame_ids[0]: while ret: ret = FrameModel.objects.arrange_frame( validated_data['owner'], frame_id, direction ) FrameModel.objects.delete_frame( validated_data['owner'], frame_id ) ret = True return ConsoleResponse(code=ret) pass
class CreateBoardValidator(ValidatorBase): owner = serializers.CharField( max_length=32, error_messages=serializers.CommonErrorMessages('owner') ) zone = serializers.CharField( max_length=20, error_messages=serializers.CommonErrorMessages('zone') ) name = serializers.CharField( max_length=128, error_messages=serializers.CommonErrorMessages('name') ) # 背景颜色 background = serializers.CharField( max_length=32, error_messages=serializers.CommonErrorMessages('background') ) # 显示位置 location = serializers.CharField( max_length=128, error_messages=serializers.CommonErrorMessages('location') ) def handler(self, validated_data): board = BoardModel.objects.create_board( validated_data['owner'], validated_data['zone'], validated_data['name'], validated_data['background'], validated_data['location'], ) serializer = BoardSerializer(board) return ConsoleResponse(ret_set=serializer.data)
class CreateBoardFrameValidator(ValidatorBase): owner = serializers.CharField( max_length=32, error_messages=serializers.CommonErrorMessages('owner') ) board_id = serializers.CharField( max_length=32, error_messages=serializers.CommonErrorMessages('board_id') ) frame_infos = serializers.ListField( error_messages=serializers.CommonErrorMessages('frame_infos') ) def handler(self, validated_data): board = BoardModel.objects.get_board(validated_data['board_id']) frame_infos = validated_data['frame_infos'] result_set = list() for frame_info in frame_infos: ref_action = frame_info.get("ref_action") meta_data = frame_info.get("meta_data") frame = FrameModel.objects.create_frame( board, ref_action, meta_data, ) serializer = FrameSerializer(frame) result_set.append(serializer.data) return ConsoleResponse(ret_set=result_set)
class DescribeMonitorVMInfoValidator(serializers.Serializer): num = serializers.IntegerField( required=False, min_value=0, error_messages=serializers.CommonErrorMessages('num')) sort = serializers.ChoiceField( required=False, choices=SORT_METHOD, error_messages=serializers.CommonErrorMessages('sort')) format = serializers.ChoiceField( required=False, choices=PERIOD_CHOICE, error_messages=serializers.CommonErrorMessages('format')) poolname = serializers.CharField( required=False, error_messages=serializers.CommonErrorMessages('poolname')) items = serializers.ListField( required=False, child=serializers.ChoiceField(required=False, choices=VM_ITEM), error_messages=serializers.CommonErrorMessages('items')) timestamp = serializers.IntegerField(required=False, validators=[]) point_num = serializers.IntegerField(required=False, validators=[]) VM_type = serializers.ChoiceField( required=False, choices=('KVM', 'VMWARE'), )
class ChangeBoardValidator(ValidatorBase): owner = serializers.CharField( max_length=32, error_messages=serializers.CommonErrorMessages('owner') ) zone = serializers.CharField( max_length=20, error_messages=serializers.CommonErrorMessages('zone') ) board_id = serializers.CharField( max_length=32, error_messages=serializers.CommonErrorMessages('board_id') ) def handler(self, validated_data): ret = True try: board = BoardModel.objects.get_board( validated_data['board_id'] ) if not board.current: curr_board = BoardModel.objects.current_board( validated_data['owner'], validated_data['zone'], board.location ) curr_board.current = False curr_board.save() board.current = True board.save() except Exception as exp: logger.error(exp) ret = False return ConsoleResponse(code=ret)
class JoinRouterValidator(serializers.Serializer): action = serializers.CharField( max_length=40, required=True, error_messages=serializers.CommonErrorMessages(_(u"执行动作")) ) owner = serializers.CharField( max_length=40, required=True, error_messages=serializers.CommonErrorMessages(_(u"owner")) ) zone = serializers.CharField( max_length=40, required=True, error_messages=serializers.CommonErrorMessages(_(u"zone")) ) router_id = serializers.CharField( max_length=40, required=True, error_messages=serializers.CommonErrorMessages(_(u"路由号")) ) subnet_list = serializers.ListField( child=serializers.CharField(max_length=50, error_messages=serializers.CommonErrorMessages(_(u"子网号")) ) )
class DescribeMonitorPMInfoValidator(serializers.Serializer): num = serializers.IntegerField( required=False, min_value=0, error_messages=serializers.CommonErrorMessages('num')) itemname = serializers.ChoiceField( required=True, choices=PM_ITEM, error_messages=serializers.CommonErrorMessages('item_name')) format = serializers.ChoiceField( required=True, choices=PERIOD_CHOICE, error_messages=serializers.CommonErrorMessages('format')) poolname = serializers.CharField( required=False, error_messages=serializers.CommonErrorMessages('poolname')) sort = serializers.ChoiceField( required=False, choices=SORT_METHOD, error_messages=serializers.CommonErrorMessages('sort'))
class SetRouterSwitchValidator(serializers.Serializer): action = serializers.CharField( max_length=40, required=True, error_messages=serializers.CommonErrorMessages(_(u"执行动作")) ) owner = serializers.CharField( max_length=40, required=True, error_messages=serializers.CommonErrorMessages(_(u"owner")) ) zone = serializers.CharField( max_length=40, required=True, error_messages=serializers.CommonErrorMessages(_(u"zone")) ) router_id = serializers.CharField( max_length=40, required=True, error_messages=serializers.CommonErrorMessages(_(u"路由名字")) ) enable_snat = serializers.CharField( max_length=40, required=False, error_messages=serializers.CommonErrorMessages(_(u"允许地址转换")) )
class CreateNoticeValidator(serializers.Serializer): title = serializers.CharField( error_messages=serializers.CommonErrorMessages('title')) content = serializers.CharField( error_messages=serializers.CommonErrorMessages('content')) notice_list = serializers.ListField( error_messages=serializers.CommonErrorMessages('notice_list'))
class ChangePasswordValidator(serializers.Serializer): def __init__(self, user, *args, **kwargs): self.user = user super(ChangePasswordValidator, self).__init__(*args, **kwargs) # 原密码 old_password = serializers.CharField( max_length=128, required=False, error_messages=serializers.CommonErrorMessages(_(u"原密码"))) # 新密码 new_password = serializers.CharField( max_length=128, required=True, error_messages=serializers.CommonErrorMessages(_(u"新密码"))) # 确认密码 confirm_password = serializers.CharField( max_length=128, required=True, error_messages=serializers.CommonErrorMessages(_(u"确认密码"))) def validate(self, attrs): if authenticate(username=self.user.username, password=attrs["old_password"]) is None: raise serializers.ValidationError(_(u"原密码不正确")) if attrs["new_password"] != attrs["confirm_password"]: raise serializers.ValidationError(_(u"两次密码输入不一致")) if attrs["old_password"] == attrs["new_password"]: raise serializers.ValidationError(_(u"新密码不能和原密码相同")) return attrs
class ShowJumperEventDetailSerializer(serializers.Serializer): jumper_ip = serializers.IPAddressField( required=True, error_messages=serializers.CommonErrorMessages(_(u"堡垒机IP"))) event_id = serializers.CharField( required=True, error_messages=serializers.CommonErrorMessages(_(u"事件ID")))
class UpdateRdsConfigValidator(serializers.Serializer): config_id = serializers.CharField( required=True, validators=[config_id_validator], error_messages=serializers.CommonErrorMessages('config_id')) configurations = serializers.DictField( required=True, error_messages=serializers.CommonErrorMessages('configurations'))
class PlayJumperSessionAddressSerianlizer(serializers.Serializer): jumper_ip = serializers.IPAddressField( required=True, error_messages=serializers.CommonErrorMessages(_(u"堡垒机IP"))) session_id = serializers.CharField( required=True, error_messages=serializers.CommonErrorMessages(_(u"会话ID")))
class CreateSecurityGroupRuleSerializer(serializers.Serializer): type = serializers.ChoiceField( default='instance', choices=SECURITY_GROUP_TYPE_CHOICES, error_messages=serializers.CommonErrorMessages('type')) rules = serializers.ListField( required=True, validators=[], error_messages=serializers.CommonErrorMessages('rules'))