- Phinx миграции: network_ranges, scan_jobs, discovered_hosts, audit_log - Models: NetworkRange, ScanJob, DiscoveredHost - Repositories с CRUD для всех сущностей - NetworkScanner: ping sweep + TCP connect + ARP table + reverse DNS - PingScanner, TcpPortScanner (curl_multi для параллелизма), ArpTableReader - HostFingerprintService: vendor detection + confidence scoring - ScanJobRunner + CLI worker (bin/run-scan-worker.php) - Discovery UI: управление диапазонами, запуск скана, таблица находок - NetworkRangeController с валидацией CIDR - Обновлён public/index.php с DI конфигурацией для новых сервисов
23 lines
579 B
PHP
23 lines
579 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Domovoy\Services\Discovery;
|
|
|
|
class PingScanner
|
|
{
|
|
/**
|
|
* Check if host is alive via ICMP ping.
|
|
* Requires ping command in container.
|
|
*/
|
|
public function ping(string $ip, int $timeoutMs = 500): bool
|
|
{
|
|
// Use ping with timeout (Linux: -W in seconds)
|
|
$timeoutSec = max(1, (int)ceil($timeoutMs / 1000));
|
|
$output = [];
|
|
$exitCode = 0;
|
|
exec(sprintf('ping -c 1 -W %d %s 2>/dev/null', $timeoutSec, escapeshellarg($ip)), $output, $exitCode);
|
|
return $exitCode === 0;
|
|
}
|
|
}
|