Skip to content

Commit f7dbf67

Browse files
committed
手动创建扫描任务
1 parent 1d47a49 commit f7dbf67

1 file changed

Lines changed: 34 additions & 2 deletions

File tree

app/tasks/sqlmap_worker.py

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,22 @@
1-
import requests
1+
import os
22
from datetime import datetime
3+
4+
import requests
35
from celery import shared_task
6+
from fastapi import HTTPException
7+
48
from app.database.celery_sync_database import SessionLocal
59
from app.models.sqlmap_result import (
610
SqlmapScanPayload,
711
ScanStatus,
812
SqlmapScanResult,
913
)
10-
import os
1114

1215
SQLMAP_API = os.getenv("SQLMAP_API")
1316
AUTH = (os.getenv("SQLMAP_USERNAME"), os.getenv("SQLMAP_PASSWORD")) # Basic Auth
1417

1518

19+
# 展平sqlmap日志
1620
def normalize_sqlmap_result(raw: dict) -> dict:
1721
result = {
1822
"success": raw.get("success", False),
@@ -130,3 +134,31 @@ def poll_single_sqlmap_task(self, task_id: str):
130134
raise
131135
finally:
132136
session.close()
137+
138+
139+
# 用户手动创建扫描任务
140+
@shared_task(
141+
bind=True,
142+
autoretry_for=(Exception,),
143+
retry_backoff=5,
144+
retry_kwargs={"max_retries": 3},
145+
)
146+
def sqlmap_scan_task(self, payload: dict):
147+
session = SessionLocal()
148+
r = requests.get(f"{SQLMAP_API}/task/new", auth=AUTH)
149+
if not r.ok:
150+
raise HTTPException(500, "sqlmap task 创建失败")
151+
152+
taskid = r.json()["taskid"]
153+
154+
# 2. 启动扫描
155+
start = requests.post(
156+
f"{SQLMAP_API}/scan/{taskid}/start",
157+
json=payload, # json转换问题
158+
auth=AUTH,
159+
)
160+
161+
if not start.ok:
162+
raise HTTPException(500, start.text)
163+
164+
return {"taskid": taskid}

0 commit comments

Comments
 (0)