Skip to content

Commit

Permalink
precommit fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
taylorwalton committed Jun 7, 2024
1 parent 8d34a4e commit 17813dd
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 30 deletions.
46 changes: 29 additions & 17 deletions backend/app/integrations/scoutsuite/routes/scoutsuite.py
Original file line number Diff line number Diff line change
@@ -1,21 +1,30 @@
from fastapi import APIRouter
from fastapi import Depends
from sqlalchemy.ext.asyncio import AsyncSession
from fastapi import BackgroundTasks, HTTPException
import os
from loguru import logger
from app.integrations.scoutsuite.schema.scoutsuite import ScoutSuiteReportOptionsResponse, ScoutSuiteReportResponse, AWSScoutSuiteReportRequest, ScoutSuiteReportOptions, AvailableScoutSuiteReportsResponse
from app.integrations.scoutsuite.services.scoutsuite import generate_aws_report_background

from app.db.db_session import get_db
from fastapi import APIRouter
from fastapi import BackgroundTasks
from fastapi import HTTPException
from loguru import logger

from app.integrations.scoutsuite.schema.scoutsuite import (
AvailableScoutSuiteReportsResponse,
)
from app.integrations.scoutsuite.schema.scoutsuite import AWSScoutSuiteReportRequest
from app.integrations.scoutsuite.schema.scoutsuite import ScoutSuiteReportOptions
from app.integrations.scoutsuite.schema.scoutsuite import (
ScoutSuiteReportOptionsResponse,
)
from app.integrations.scoutsuite.schema.scoutsuite import ScoutSuiteReportResponse
from app.integrations.scoutsuite.services.scoutsuite import (
generate_aws_report_background,
)

integration_scoutsuite_router = APIRouter()


@integration_scoutsuite_router.get(
"/report-generation-options",
response_model=ScoutSuiteReportOptionsResponse,
description="Get the available report generation options.",
"/report-generation-options",
response_model=ScoutSuiteReportOptionsResponse,
description="Get the available report generation options.",
)
async def get_report_generation_options():
"""
Expand All @@ -30,10 +39,11 @@ async def get_report_generation_options():
message="ScoutSuite Report generation options retrieved successfully",
)


@integration_scoutsuite_router.get(
"/available-reports",
response_model=AvailableScoutSuiteReportsResponse,
description="Get the available ScoutSuite reports.",
"/available-reports",
response_model=AvailableScoutSuiteReportsResponse,
description="Get the available ScoutSuite reports.",
)
async def get_available_reports():
"""
Expand All @@ -53,7 +63,7 @@ async def get_available_reports():
raise HTTPException(status_code=404, detail="Directory does not exist")

files = os.listdir(directory)
html_files = [file for file in files if file.endswith('.html')]
html_files = [file for file in files if file.endswith(".html")]

return AvailableScoutSuiteReportsResponse(
available_reports=html_files,
Expand All @@ -62,7 +72,6 @@ async def get_available_reports():
)



@integration_scoutsuite_router.post(
"/generate-aws-report",
response_model=ScoutSuiteReportResponse,
Expand All @@ -80,7 +89,10 @@ async def generate_aws_report(
session (AsyncSession): The async session object for database operations.
"""
background_tasks.add_task(generate_aws_report_background, request)
return ScoutSuiteReportResponse(success=True, message="AWS ScoutSuite report generation started successfully. This will take a few minutes to complete. Check back in shortly.")
return ScoutSuiteReportResponse(
success=True,
message="AWS ScoutSuite report generation started successfully. This will take a few minutes to complete. Check back in shortly.",
)


@integration_scoutsuite_router.delete(
Expand Down
18 changes: 14 additions & 4 deletions backend/app/integrations/scoutsuite/schema/scoutsuite.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,28 @@
from pydantic import BaseModel, root_validator, Field
from enum import Enum
from fastapi import HTTPException
from typing import List

from fastapi import HTTPException
from pydantic import BaseModel
from pydantic import Field
from pydantic import root_validator


class ScoutSuiteReportOptions(str, Enum):
aws = "aws"
azure = "azure"
gcp = "gcp"


class ScoutSuiteReportOptionsResponse(BaseModel):
options: List[ScoutSuiteReportOptions] = Field(..., description="The available report generation options", example=["aws", "azure", "gcp"])
options: List[ScoutSuiteReportOptions] = Field(
...,
description="The available report generation options",
example=["aws", "azure", "gcp"],
)
success: bool
message: str


class AWSScoutSuiteReportRequest(BaseModel):
report_type: str = Field(..., description="The type of report to generate", example="aws")
access_key_id: str = Field(..., description="The AWS access key ID", example="AKIAIOSFODNN7EXAMPLE")
Expand All @@ -27,11 +37,11 @@ def validate_report_type(cls, values):
return values



class ScoutSuiteReportResponse(BaseModel):
success: bool
message: str


class AvailableScoutSuiteReportsResponse(BaseModel):
success: bool
message: str
Expand Down
6 changes: 4 additions & 2 deletions backend/app/integrations/scoutsuite/services/scoutsuite.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
from loguru import logger
import subprocess
import asyncio
import subprocess
from concurrent.futures import ThreadPoolExecutor

from loguru import logger

from app.integrations.scoutsuite.schema.scoutsuite import AWSScoutSuiteReportRequest


Expand Down
10 changes: 4 additions & 6 deletions backend/copilot.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
from dotenv import load_dotenv
from fastapi import APIRouter
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
from fastapi import HTTPException
from fastapi.exceptions import RequestValidationError
from fastapi.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles
from loguru import logger

from app.auth.utils import AuthHandler
Expand Down Expand Up @@ -50,13 +50,13 @@
from app.routers import license
from app.routers import logs
from app.routers import mimecast
from app.routers import scoutsuite
from app.routers import modules
from app.routers import monitoring_alert
from app.routers import network_connectors
from app.routers import office365
from app.routers import sap_siem
from app.routers import scheduler
from app.routers import scoutsuite
from app.routers import shuffle
from app.routers import smtp
from app.routers import stack_provisioning
Expand Down Expand Up @@ -170,14 +170,12 @@ async def init_db():
logger.info("Scheduler is not running, starting now...")
scheduler.start()


# Create `scoutsuite-report` directory if it doesnt exist
if not os.path.exists("scoutsuite-report"):
os.makedirs("scoutsuite-report")

app.mount("/scoutsuite-report",
StaticFiles(directory="scoutsuite-report"),
name="scoutsuite-report"
)
app.mount("/scoutsuite-report", StaticFiles(directory="scoutsuite-report"), name="scoutsuite-report")


@app.get("/")
Expand Down
2 changes: 1 addition & 1 deletion frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -126,4 +126,4 @@
"engines": {
"node": ">=18.0.0"
}
}
}

0 comments on commit 17813dd

Please sign in to comment.