import { useState } from 'react'; import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import { getNetworkScanTargets, createNetworkScanTarget, updateNetworkScanTarget, deleteNetworkScanTarget, triggerNetworkScan, } from '../api/client'; import PageHeader from '../components/PageHeader'; import DataTable from '../components/DataTable'; import type { Column } from '../components/DataTable'; import ErrorState from '../components/ErrorState'; import { formatDateTime } from '../api/utils'; import type { NetworkScanTarget } from '../api/types'; function CreateScanTargetModal({ onClose, onCreate }: { onClose: () => void; onCreate: (data: Partial) => void; }) { const [name, setName] = useState(''); const [cidrs, setCidrs] = useState(''); const [ports, setPorts] = useState('443'); const [interval, setInterval] = useState('6'); const [timeout, setTimeout] = useState('5000'); const handleSubmit = () => { const cidrList = cidrs.split('\n').map(s => s.trim()).filter(Boolean); const portList = ports.split(',').map(s => parseInt(s.trim(), 10)).filter(n => !isNaN(n)); onCreate({ name, cidrs: cidrList, ports: portList, scan_interval_hours: parseInt(interval, 10), timeout_ms: parseInt(timeout, 10), enabled: true, }); }; return (
e.stopPropagation()}>

New Scan Target

Define a network range to scan for TLS certificates

setName(e.target.value)} placeholder="e.g., Production DMZ" className="w-full border border-surface-border rounded px-3 py-2 text-sm text-ink bg-white focus:outline-none focus:ring-2 focus:ring-brand-500" />