import {Button, Form, Input, InputNumber} from 'antd'; import React, {useState} from 'react'; import {baseUrl, getToken} from "@/api/core/requests"; import {useTranslation} from "react-i18next"; const ToolsPing = () => { let {t} = useTranslation(); const [host, setHost] = useState(""); const [attempts, setAttempts] = useState(4); const [logs, setLogs] = useState([]); const [running, setRunning] = useState(false); let eventSource: EventSource | null = null; const onSearch = (host: string) => { if (running) return; setRunning(true); setLogs([]); eventSource = new EventSource(`${baseUrl()}/admin/tools/ping?X-Auth-Token=${getToken()}&host=${host}&attempts=${attempts}`); eventSource.onmessage = (event) => { setLogs((prevLogs) => [...prevLogs, event.data]); }; eventSource.addEventListener('done', () => { eventSource?.close(); setRunning(false); }); eventSource.onerror = () => { eventSource?.close(); setRunning(false); }; } return (
setHost(e.target.value)} placeholder={t('sysops.tools.target_placeholder')} style={{ width: '200px' }} /> setAttempts(value || 4)} min={1} max={100} style={{width: '100px'}} />
{logs.join("\n")}
); }; export default ToolsPing;