import React, { useEffect, useState } from 'react'; import axios from 'axios'; import { Card, CardContent, CardHeader, CardTitle, CardDescription } from '@/Components/ui/card'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/Components/ui/tabs'; import { Button } from "@/Components/ui/button"; import { Progress } from '@/Components/ui/progress'; import { Alert, AlertDescription, AlertTitle } from '@/Components/ui/alert'; import { ShieldAlert, Globe, Database, ChevronLeft, ChevronRight, Check, Copy } from 'lucide-react'; import Markdown from 'react-markdown'; import { SecuritySummaryReportResultType, SecuritySummaryResponseType, } from '@/types/security-summary'; import NumberOfVulnerabilitiesPieChart from "@/Components/NumberOfVulnerabilitiesPieChart"; import SecurityScoresOverviewBarChart from "@/Components/SecurityScoresOverviewBarChart"; import PortExposureAnalysis from "@/Components/PortExposureAnalysis"; import { useClipboard } from "use-clipboard-copy" import DashboardHeader from "@/Components/DashboardHeader"; export default function Dashboard() { const [securitySummaryResponse, setSecuritySummaryResponse] = useState(null); const [reportData, setReportData] = useState(null); const [currentPage, setCurrentPage] = useState(0); useEffect(() => { axios.get('/api/v1/security/summary') .then(response => { setSecuritySummaryResponse(response.data); // Set initial report data setReportData(response.data.results[0] ?? null); }) .catch(error => { console.error("Error fetching the report data", error); }); }, []); // Handle page changes useEffect(() => { if (securitySummaryResponse) { setReportData(securitySummaryResponse.results[currentPage] ?? null); } }, [currentPage, securitySummaryResponse]); const handlePrevPage = () => { setCurrentPage(prev => Math.max(0, prev - 1)); }; const handleNextPage = () => { if (securitySummaryResponse) { setCurrentPage(prev => Math.min(securitySummaryResponse.results.length - 1, prev + 1)); } }; if (!reportData) return
Loading...
; return (
Overview Vulnerabilities Exposed Services Data Leaks
Vulnerability Score Active and passive vulnerability scores
Active Score
{reportData.vulnerability_score_active}%
Passive Score
{reportData.vulnerability_score_passive}%
Network Assets Total assets and IP addresses
{reportData.n_asset}
IPv4: {reportData.unique_ipv4} IPv6: {reportData.unique_ipv6}
Data Leaks Unresolved data leak incidents
{reportData.n_dataleak.unresolved.potential_stealer}
Including {reportData.n_dataleak.unresolved.domain_stealer} domain stealer and {reportData.n_dataleak.unresolved.other_stealer} other leaks
Security Summary EN IT {reportData.summary_text_en} {reportData.summary_text}
Page {currentPage + 1} of {securitySummaryResponse?.results.length}
); };