def show_scan_records(): try: current_user_name = session.get('user_name') current_user = RedisService.get_user(current_user_name) tasks = TaskService.get_tasks_url_vuln_num(user_id=current_user.id) response_data = list() for task in tasks: risk_level = VulnerabilityService.get_risk_level(task) response_data.append({ "task_name": task.task_name, "created_time": task.created_time.strftime("%Y-%m-%d %H:%M"), "task_id": task.id, "urls_num": task.urls_num, "vulns_num": task.vulns_num, "risk_level": risk_level }) response_data.reverse() return jsonify(status=200, message="查询成功", data=response_data) except Exception: logger.exception("show_current_tasks rasie error") return jsonify(status=500, message="未知异常", data={"extra_info": "创建任务时出现未知异常,请联系管理员查看异常日志"})
def list_scan_record(): """ 根据task_id查询扫描记录 :return: """ try: user_id = request.args.get("user_id") tasks = TaskService.get_tasks_url_vuln_num(user_id=user_id) response_data = list() for task in tasks: risk_level = VulnerabilityService.get_risk_level(task) response_data.append({ "task_name": task.task_name, "created_time": task.created_time.strftime("%Y-%m-%d %H:%M"), "task_id": task.id, "urls_num": task.urls_num, "vulns_num": task.vulns_num, "risk_level": risk_level }) response_data.reverse() return jsonify(status=200, message="查询成功", data=response_data) except Exception as e: logger.exception("list_scan_record raise error") if isinstance(e, KeyError): return jsonify(status=400, message="查询失败", data={"extra_info": "未传递taskid"}) return jsonify(status=500, message="未知异常", data={"extra_info": "发生未知异常,请联系管理员查看异常日志"})
def testGetTasksUrlVulnNum(self): from model.task import TaskService from model.hunter_model import OrmModelJsonSerializer import logging logger = logging.getLogger('peewee') logger.addHandler(logging.StreamHandler()) logger.setLevel(logging.DEBUG) tasks = TaskService.get_tasks_url_vuln_num(user_id=1) response_data = [{ "task_name": task.task_name, "created_time": task.created_time.strftime("%Y-%m-%d %H:%M"), "task_id": task.id, "urls_num": task.urls_num, "vulns_num": task.vulns_num } for task in tasks] for response in response_data: print(response)
def show_current_tasks(): """ 显示当前所有的任务列表,在响应中返回的结果为task_list和已经扫描的和未扫描的任务数目 :return: """ try: working_tasks = list() completed_tasks = list() working_task_info_list = list() current_user_name = session["user_name"] current_user = RedisService.get_user(current_user_name) tasks = TaskService.get_tasks_url_vuln_num(user_id=current_user.id) for task in tasks: if task.task_status <= TaskStatus.WORKING: working_tasks.append(task) if task.task_status == TaskStatus.DONE: completed_tasks.append(task) for working_task in working_tasks: hook_rule = RedisService.get_task(working_task.id)["hook_rule"] unscaned_url_num = working_task.unscaned_urls_num scaned_url_num = working_task.scaned_urls_num total_url_num = unscaned_url_num + scaned_url_num if working_task.task_status in [ TaskStatus.KILLED, TaskStatus.DONE ]: percent = 100 else: percent = 0 if total_url_num == 0 else int( (scaned_url_num / total_url_num) * 100) working_task_info_list.append({ 'receiver_emails': working_task.receivers_email, 'task_name': working_task.task_name, 'create_time': working_task.created_time.strftime("%Y-%m-%d %H:%M"), 'percent': percent, 'unscaned_url_num': unscaned_url_num, 'scaned_url_num': scaned_url_num, 'total_url_num': total_url_num, 'hook_rule': hook_rule, 'task_id': working_task.id, "task_access_key": working_task.access_key, 'task_status': working_task.task_status }) response = jsonify(status=200, message="查询成功", data={ "working_task_info_list": working_task_info_list, "working_task_num": len(working_tasks) - 1 if len(working_tasks) > 0 else 0, "completed_task_num": len(completed_tasks) }) return response except Exception: logger.exception("show_current_tasks rasie error") return jsonify(status=500, message="未知异常", data={"extra_info": "创建任务时出现未知异常,请联系管理员查看异常日志"})