From 8c74d878efe5d0e36fc274e42ba5d108c5f0747c Mon Sep 17 00:00:00 2001 From: Kristofer Hallin Date: Tue, 18 Jan 2022 15:17:51 +0100 Subject: More scanner stuff. --- src/db/scanner.py | 12 ++++++++++++ src/routers/scanner.py | 26 +++++++++++++++----------- 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 -- cgit v1.1