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 }) => (
Risk Score
{(incident.riskScore * 100).toFixed(1)}%
Pattern Type
{incident.patternType}
Attempts
{incident.attempts}
Location
{incident.location}
Request Pattern
{req}
Probe Attempts
{securityMetrics.probeAttempts}
High Risk Sessions
{securityMetrics.highRiskSessions}
Active Blocks
{securityMetrics.activeBlocks}
Avg Risk Score
{(securityMetrics.averageRiskScore * 100).toFixed(1)}%
{threat.type}
ID: {threat.id}
Risk Score
{(threat.riskScore * 100).toFixed(1)}%