Exemple #1
0
 def do_desc(cls, request):
     rule_id = request.GET.get('id')
     rule = Rule.objects.get(rule_id=rule_id)
     record= {'name':rule.rule_name, 'description':rule.description, 'solution':rule.solution }
     for k, v in record.iteritems():
         record[k] = escape(v).replace('\r\n','<br />')
     return HttpResponse(json_success(record))
Exemple #2
0
 def do_basic(cls, request):
     task_id = request.GET.get('task_id')
     task = Task.objects.get(id=task_id)
     pro = task.progress.split('|')
     if pro[-1] == '':
         progress = '0%'
         if task.reachable:
             rule_name = '扫描引擎初始化'
         else:
             rule_name = '请确认目标网站是否可以访问'
     elif pro[-1] != 'END':
         rules_count = Rule.objects.count()
         progress = "%d%%" % (float(len(pro)) / (rules_count + 2) * 100)
         rule = Rule.objects.get(rule_id=pro[-1])
         rule_name = rule.rule_name
     else:
         progress = '100%'
         rule_name = ''
     result = {
         'progress': progress,
         'rule_name': rule_name,
         'spider_flag': task.spider_flag,
         'task_status': task.status
     }
     return HttpResponse(json_success(result))
Exemple #3
0
    def do_start(cls, request):
        task_id = request.POST.get("task_id")
        try:
            int(task_id)
        except ValueError:
            return HttpResponse(json_error('任务id格式有误'))
        try:
            task = Task.objects.get(id=task_id)
            if task.status == TASK.RUNNING:
                return HttpResponse(json_error('该任务正在运行,请先停止'))
        except Exception:
            return HttpResponse(json_error('该任务已不存在,请刷新重试'))
        else:
            cmd = {'action':'start','task_ids':task_id}
            res = send_request(cls.MODULE_NAME, cmd)
            if res['success']:
                task.status = TASK.RUNNING
                task.progress = ''
                task.spider_flag = TASK.WAIT
                task.start_time = datetime.now()
                task.end_time = None
                task.save()
                msg = json_success('start')
            else:
                msg = json_error('命令执行失败')

            return HttpResponse(msg)
Exemple #4
0
    def do_start(cls, request):
        task_id = request.POST.get("task_id")
        try:
            int(task_id)
        except ValueError:
            return HttpResponse(json_error('任务id格式有误'))
        try:
            task = Task.objects.get(id=task_id)
            if task.status == TASK.RUNNING:
                return HttpResponse(json_error('该任务正在运行,请先停止'))
        except Exception:
            return HttpResponse(json_error('该任务已不存在,请刷新重试'))
        else:
            cmd = {'action': 'start', 'task_ids': task_id}
            res = send_request(cls.MODULE_NAME, cmd)
            if res['success']:
                task.status = TASK.RUNNING
                task.progress = ''
                task.spider_flag = TASK.WAIT
                task.start_time = datetime.now()
                task.end_time = None
                task.save()
                msg = json_success('start')
            else:
                msg = json_error('命令执行失败')

            return HttpResponse(msg)
Exemple #5
0
 def do_get(cls,request):
     task_id = request.POST.get("task_id")
     task = Task.objects.get(id=task_id)
     _ = copy.deepcopy(task.__dict__)
     _.pop('_state')
     _.pop('start_time')
     _.pop('end_time')
     return HttpResponse(json_success(_))
Exemple #6
0
 def do_get(cls, request):
     task_id = request.POST.get("task_id")
     task = Task.objects.get(id=task_id)
     _ = copy.deepcopy(task.__dict__)
     _.pop('_state')
     _.pop('start_time')
     _.pop('end_time')
     return HttpResponse(json_success(_))
Exemple #7
0
 def do_vul(cls, request):
     task_id = request.GET.get('task_id')
     result_id = request.GET.get('id')
     result = Result.objects.get(task_id=task_id, id=result_id)
     record = {'url':result.url, 'detail':result.detail, 'request':result.request, 'response':result.response}
     rule = Rule.objects.get(rule_id=result.rule_id)
     for k, v in record.iteritems():
         record[k] = escape(v).replace('\r\n','<br />')
     return HttpResponse(json_success(record))
Exemple #8
0
 def do_edit(cls,request):
     task_id = request.POST.get("task_id")
     task_name = request.POST.get("task_name")
     task_starturl = request.POST.get("task_starturl")
     task_base = request.POST.get("task_base")
     task_urlcount = request.POST.get("task_urlcount")
     Task.objects.filter(id=task_id).update(name=task_name, start_url=task_starturl,
                             base=task_base, url_count=task_urlcount)
     return HttpResponse(json_success(''))
Exemple #9
0
 def do_delete(cls, request, delete_task=True):
     task_ids = request.POST.get("task_id").split(',')
     if Task.objects.filter(id__in=task_ids).filter(status=TASK.RUNNING).count()>0:
         msg = json_error('任务正在运行,请重新选择!')
     else:
         if delete_task:
             Task.objects.filter(id__in=task_ids).delete()
         Result.objects.filter(task_id__in=task_ids).delete()
         Url.objects.filter(task_id__in=task_ids).delete()
         msg = json_success('success')
     return HttpResponse(msg)
Exemple #10
0
 def do_desc(cls, request):
     rule_id = request.GET.get('id')
     rule = Rule.objects.get(rule_id=rule_id)
     record = {
         'name': rule.rule_name,
         'description': rule.description,
         'solution': rule.solution
     }
     for k, v in record.iteritems():
         record[k] = escape(v).replace('\r\n', '<br />')
     return HttpResponse(json_success(record))
Exemple #11
0
 def do_edit(cls, request):
     task_id = request.POST.get("task_id")
     task_name = request.POST.get("task_name")
     task_starturl = request.POST.get("task_starturl")
     task_base = request.POST.get("task_base")
     task_urlcount = request.POST.get("task_urlcount")
     Task.objects.filter(id=task_id).update(name=task_name,
                                            start_url=task_starturl,
                                            base=task_base,
                                            url_count=task_urlcount)
     return HttpResponse(json_success(''))
Exemple #12
0
 def do_delete(cls, request, delete_task=True):
     task_ids = request.POST.get("task_id").split(',')
     if Task.objects.filter(id__in=task_ids).filter(
             status=TASK.RUNNING).count() > 0:
         msg = json_error('任务正在运行,请重新选择!')
     else:
         if delete_task:
             Task.objects.filter(id__in=task_ids).delete()
         Result.objects.filter(task_id__in=task_ids).delete()
         Url.objects.filter(task_id__in=task_ids).delete()
         msg = json_success('success')
     return HttpResponse(msg)
Exemple #13
0
 def do_vul(cls, request):
     task_id = request.GET.get('task_id')
     result_id = request.GET.get('id')
     result = Result.objects.get(task_id=task_id, id=result_id)
     record = {
         'url': result.url,
         'detail': result.detail,
         'request': result.request,
         'response': result.response
     }
     rule = Rule.objects.get(rule_id=result.rule_id)
     for k, v in record.iteritems():
         record[k] = escape(v).replace('\r\n', '<br />')
     return HttpResponse(json_success(record))
Exemple #14
0
 def do_basic(cls, request):
     task_id = request.GET.get('task_id')
     task = Task.objects.get(id=task_id)
     pro = task.progress.split('|')
     if pro[-1] == '':
         progress = '0%'
         if task.reachable:
             rule_name = '扫描引擎初始化'
         else:
             rule_name = '请确认目标网站是否可以访问'
     elif pro[-1] != 'END':
         rules_count = Rule.objects.count()
         progress = "%d%%" % (float(len(pro))/(rules_count+2)*100)
         rule = Rule.objects.get(rule_id=pro[-1])
         rule_name = rule.rule_name
     else:
         progress = '100%'
         rule_name = ''
     result = {'progress':progress, 'rule_name':rule_name, 'spider_flag':task.spider_flag,
             'task_status':task.status
         }
     return HttpResponse(json_success(result))
Exemple #15
0
    def do_stop(cls, request):
        task_id = request.POST.get("task_id")
        try:
            int(task_id)
        except ValueError:
            return HttpResponse(json_error('任务id格式有误'))
        try:
            task = Task.objects.get(id=task_id)
            if task.status != TASK.RUNNING:
                return HttpResponse(json_error('该任务已经停止'))
        except Exception:
            return HttpResponse(json_error('该任务已不存在,请刷新重试'))
        else:
            cmd = {'action':'stop','task_ids':task_id}
            res = send_request(cls.MODULE_NAME, cmd)
            if res['success']:
                task.status = TASK.STOP
                task.save()
                msg = json_success('stop')
            else:
                msg = json_error('命令执行失败')

            return HttpResponse(msg)
Exemple #16
0
    def do_stop(cls, request):
        task_id = request.POST.get("task_id")
        try:
            int(task_id)
        except ValueError:
            return HttpResponse(json_error('任务id格式有误'))
        try:
            task = Task.objects.get(id=task_id)
            if task.status != TASK.RUNNING:
                return HttpResponse(json_error('该任务已经停止'))
        except Exception:
            return HttpResponse(json_error('该任务已不存在,请刷新重试'))
        else:
            cmd = {'action': 'stop', 'task_ids': task_id}
            res = send_request(cls.MODULE_NAME, cmd)
            if res['success']:
                task.status = TASK.STOP
                task.save()
                msg = json_success('stop')
            else:
                msg = json_error('命令执行失败')

            return HttpResponse(msg)