mirror of
https://github.com/mblanke/StrikePackageGPT.git
synced 2026-03-01 14:20:21 -05:00
Address code review feedback: improve security, error handling, and documentation
Co-authored-by: mblanke <9078342+mblanke@users.noreply.github.com>
This commit is contained in:
@@ -39,11 +39,18 @@ const NetworkMap = ({ scanId, onNodeClick }) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const initializeNetwork = () => {
|
const initializeNetwork = () => {
|
||||||
// NOTE: This requires cytoscape.js to be installed: npm install cytoscape
|
// NOTE: This component is a template for network visualization.
|
||||||
// import cytoscape from 'cytoscape';
|
// To use it, you must:
|
||||||
|
// 1. Install cytoscape: npm install cytoscape
|
||||||
|
// 2. Uncomment the code below and add the import at the top
|
||||||
|
// 3. Build your React application with a bundler (webpack, vite, etc.)
|
||||||
|
//
|
||||||
|
// For a simpler integration without React build system, see INTEGRATION_EXAMPLE.md
|
||||||
|
|
||||||
// Example initialization (requires actual cytoscape import)
|
// Example initialization (requires actual cytoscape import)
|
||||||
/*
|
/*
|
||||||
|
import cytoscape from 'cytoscape';
|
||||||
|
|
||||||
const cy = cytoscape({
|
const cy = cytoscape({
|
||||||
container: containerRef.current,
|
container: containerRef.current,
|
||||||
elements: buildGraphElements(hosts),
|
elements: buildGraphElements(hosts),
|
||||||
|
|||||||
@@ -195,8 +195,21 @@ def _check_common_issues(config_data: Dict[str, Any]) -> Tuple[List[str], List[s
|
|||||||
errors = []
|
errors = []
|
||||||
warnings = []
|
warnings = []
|
||||||
|
|
||||||
|
# Validate that config_data is a dict and not too large
|
||||||
|
if not isinstance(config_data, dict):
|
||||||
|
errors.append("Configuration must be a dictionary")
|
||||||
|
return errors, warnings
|
||||||
|
|
||||||
|
if len(config_data) > 1000:
|
||||||
|
warnings.append("Configuration has unusually large number of keys (>1000)")
|
||||||
|
|
||||||
# Check for null/undefined values
|
# Check for null/undefined values
|
||||||
for key, value in config_data.items():
|
for key, value in config_data.items():
|
||||||
|
# Validate key is a string
|
||||||
|
if not isinstance(key, str):
|
||||||
|
warnings.append(f"Configuration key {key} is not a string")
|
||||||
|
continue
|
||||||
|
|
||||||
if value is None:
|
if value is None:
|
||||||
warnings.append(f"Value for '{key}' is null - will use default")
|
warnings.append(f"Value for '{key}' is null - will use default")
|
||||||
|
|
||||||
|
|||||||
@@ -1057,14 +1057,14 @@ async def get_nmap_hosts(scan_id: Optional[str] = None):
|
|||||||
# ============== Voice Control Endpoints ==============
|
# ============== Voice Control Endpoints ==============
|
||||||
|
|
||||||
@app.post("/api/voice/transcribe")
|
@app.post("/api/voice/transcribe")
|
||||||
async def transcribe_audio(audio: bytes = None):
|
async def transcribe_audio(audio_data: Optional[bytes] = None):
|
||||||
"""Transcribe audio to text using Whisper"""
|
"""Transcribe audio to text using Whisper"""
|
||||||
if not audio:
|
if not audio_data:
|
||||||
raise HTTPException(status_code=400, detail="No audio data provided")
|
raise HTTPException(status_code=400, detail="No audio data provided")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from . import voice
|
from . import voice
|
||||||
result = voice.transcribe_audio(audio)
|
result = voice.transcribe_audio(audio_data)
|
||||||
return result
|
return result
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise HTTPException(status_code=500, detail=f"Transcription error: {str(e)}")
|
raise HTTPException(status_code=500, detail=f"Transcription error: {str(e)}")
|
||||||
|
|||||||
Reference in New Issue
Block a user