Beispiel #1
0
 def post(self, request):
     form, error = JsonParser(
         Argument('id', type=int, required=False),
         Argument('name', help='请输入任务名称'),
         Argument('addr', help='请输入监控地址'),
         Argument('type', filter=lambda x: x in dict(Detection.TYPES), help='请选择监控类型'),
         Argument('extra', required=False),
         Argument('desc', required=False),
         Argument('rate', type=int, default=5),
         Argument('threshold', type=int, default=3),
         Argument('quiet', type=int, default=24 * 60),
         Argument('notify_grp', type=list, help='请选择报警联系组'),
         Argument('notify_mode', type=list, help='请选择报警方式'),
     ).parse(request.body)
     if error is None:
         form.notify_grp = json.dumps(form.notify_grp)
         form.notify_mode = json.dumps(form.notify_mode)
         if form.id:
             Detection.objects.filter(pk=form.id).update(
                 updated_at=human_datetime(),
                 updated_by=request.user,
                 **form)
             task = Detection.objects.filter(pk=form.id).first()
             if task and task.is_active:
                 form.action = 'modify'
                 rds_cli = get_redis_connection()
                 rds_cli.rpush(settings.MONITOR_KEY, json.dumps(form))
         else:
             dtt = Detection.objects.create(created_by=request.user, **form)
             form.action = 'add'
             form.id = dtt.id
             rds_cli = get_redis_connection()
             rds_cli.rpush(settings.MONITOR_KEY, json.dumps(form))
     return json_response(error=error)
Beispiel #2
0
    def post(self, request):
        form, error = JsonParser(
            Argument('id', type=int, required=False),
            Argument('name', help='请输入任务名称'),
            Argument('group', help='请选择任务分组'),
            Argument('targets',
                     type=list,
                     filter=lambda x: len(x),
                     help='请输入监控地址'),
            Argument('type',
                     filter=lambda x: x in dict(Detection.TYPES),
                     help='请选择监控类型'),
            Argument('extra', required=False),
            Argument('desc', required=False),
            Argument('rate', type=int, default=5),
            Argument('threshold', type=int, default=3),
            Argument('quiet', type=int, default=24 * 60),
            Argument('notify_grp', type=list, help='请选择报警联系组'),
            Argument('notify_mode', type=list, help='请选择报警方式'),
        ).parse(request.body)
        if error is None:
            if set(form.notify_mode).intersection(['1', '2', '4']):
                if not AppSetting.get_default('spug_key'):
                    return json_response(
                        error='报警方式 微信、短信、邮件需要配置调用凭据(系统设置/基本设置),请配置后再启用该报警方式。')

            form.targets = json.dumps(form.targets)
            form.notify_grp = json.dumps(form.notify_grp)
            form.notify_mode = json.dumps(form.notify_mode)
            if form.id:
                Detection.objects.filter(pk=form.id).update(
                    updated_at=human_datetime(),
                    updated_by=request.user,
                    **form)
                task = Detection.objects.filter(pk=form.id).first()
                if task and task.is_active:
                    form.action = 'modify'
                    rds_cli = get_redis_connection()
                    rds_cli.lpush(settings.MONITOR_KEY, json.dumps(form))
            else:
                dtt = Detection.objects.create(created_by=request.user, **form)
                form.action = 'add'
                form.id = dtt.id
                rds_cli = get_redis_connection()
                rds_cli.lpush(settings.MONITOR_KEY, json.dumps(form))
        return json_response(error=error)