summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/db/scanner.py12
-rw-r--r--src/routers/scanner.py26
2 files changed, 27 insertions, 11 deletions
diff --git a/src/db/scanner.py b/src/db/scanner.py
index 625fd8e..928ba95 100644
--- a/src/db/scanner.py
+++ b/src/db/scanner.py
@@ -118,6 +118,18 @@ class Scanner(Base):
return None
@classmethod
+ def update(cls, uuid, json_data):
+ with SqlDB.sql_session() as session:
+ scanner: Scanner = session.query(Scanner).filter(
+ Scanner.uuid == uuid).one_or_none()
+ if not scanner:
+ return False
+
+ scanner.scanners = json_data
+
+ return True
+
+ @classmethod
def is_enabled(cls, uuid):
with SqlDB.sql_session() as session:
scanner: Scanner = session.query(Scanner).filter(
diff --git a/src/routers/scanner.py b/src/routers/scanner.py
index 645cd74..3296b83 100644
--- a/src/routers/scanner.py
+++ b/src/routers/scanner.py
@@ -20,18 +20,18 @@ async def scanner(uuid, data: Request, Authorize: AuthJWT = Depends()):
status_code=400)
if 'targets' in json_data:
- if isinstance(json_data['targets'], str):
+ if isinstance(json_data['targets'], list):
Scanner.comment(uuid, json_data['targets'])
else:
return JSONResponse(content={"status": "error",
- "message": "Targets should be a string."},
+ "message": "Targets should be a list."},
status_code=400)
if 'scanner' in json_data:
- if isinstance(json_data['comment'], str):
+ if isinstance(json_data['scanner'], dict):
Scanner.comment(uuid, json_data['scanner'])
else:
return JSONResponse(content={"status": "error",
- "message": "Scanner should be a string."},
+ "message": "Scanner should be a dict."},
status_code=400)
if 'comment' in json_data:
if isinstance(json_data['comment'], str):
@@ -50,18 +50,22 @@ async def scanner(uuid, data: Request, Authorize: AuthJWT = Depends()):
return JSONResponse(content={"status": "error",
"message": "Enabled should be boolean."},
status_code=400)
+ if Scanner.get(uuid=uuid):
+ Scanner.update(uuid, json_data)
+ else:
+ return JSONResponse(content={"status": "error",
+ "message": "Scanner don't exist."},
+ status_code=400)
+
+ return JSONResponse(content={"status": "success",
+ "message": "Scanner updated."},
+ status_code=200)
@router.get('/callhome/{uuid}')
async def callhome(uuid, data: Request, Authorize: AuthJWT = Depends()):
- Authorize.jwt_required()
-
- raw_jwt = Authorize.get_raw_jwt()
- if 'user' not in raw_jwt or raw_jwt['user'] != "scanner":
- return JSONResponse(content={"status": "error",
- "message": "Invalid token type."},
- status_code=400)
+ Authorize.jwt_required()
try:
UUID(uuid).version