import React, { useState, useEffect } from 'react'; import { PieChart, Pie, Cell, ResponsiveContainer, Tooltip } from 'recharts'; import { Shield, AlertTriangle, Activity, Lock, Globe, Terminal } from 'lucide-react'; import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert'; const ThreatMonitorDashboard = () => { const [highThreatActivities, setHighThreatActivities] = useState([]); const [probeAttempts, setProbeAttempts] = useState([]); const [securityMetrics, setSecurityMetrics] = useState({}); const [selectedIncident, setSelectedIncident] = useState(null); // Simulated real-time data updates useEffect(() => { setHighThreatActivities([ { id: "THR001", type: "PROBE_ATTEMPT", timestamp: Date.now(), riskScore: 0.85, location: "Multiple", patternType: "ERROR_FISHING", attempts: 12, requestPattern: ["error_detail", "stack_trace", "config_query"], status: "ACTIVE" }, { id: "THR002", type: "SYSTEM_PROBE", timestamp: Date.now() - 300000, riskScore: 0.92, location: "Unknown", patternType: "PERMISSION_PROBE", attempts: 8, requestPattern: ["sudo_attempt", "admin_access", "privilege_escalation"], status: "CONTAINED" } ]); setSecurityMetrics({ probeAttempts: 23, highRiskSessions: 3, activeBlocks: 7, averageRiskScore: 0.76 }); }, []); const IncidentDetails = ({ incident }) => (

Incident {incident.id}

{incident.status}

Risk Score

{(incident.riskScore * 100).toFixed(1)}%

Pattern Type

{incident.patternType}

Attempts

{incident.attempts}

Location

{incident.location}

Request Pattern

{incident.requestPattern.map((req, index) => (
{req}
))}
); return (
{/* Header */}

High Threat Monitoring

{highThreatActivities.filter(t => t.status === 'ACTIVE').length} Active Threats
{/* Metrics Grid */}

Probe Attempts

{securityMetrics.probeAttempts}

High Risk Sessions

{securityMetrics.highRiskSessions}

Active Blocks

{securityMetrics.activeBlocks}

Avg Risk Score

{(securityMetrics.averageRiskScore * 100).toFixed(1)}%

{/* Threat List and Details */}

Active Threats

{highThreatActivities.map(threat => (
setSelectedIncident(threat)} >

{threat.type}

ID: {threat.id}

Risk Score

{(threat.riskScore * 100).toFixed(1)}%

))}
{/* Selected Incident Details */} {selectedIncident && }
); }; export default ThreatMonitorDashboard;