6f6b822f16
Add scan dropdown selectors and highlight new/missing hosts directly on topology graph from diff results. Made-with: Cursor
4.2 KiB
4.2 KiB
Техническое задание (v1)
Цель
Создать кроссплатформенное веб-приложение на Go для:
- обнаружения устройств в сети;
- базовой идентификации устройств;
- получения LLDP-соседей;
- построения карты связей между устройствами.
Платформы и запуск
- Backend: Go 1.22+
- ОС: Linux и Windows
- Запуск: стандартными средствами (без Docker)
- Reverse proxy: Nginx (Linux) или IIS (Windows, опционально)
Функциональные требования v1
- ручной запуск скана по заданным CIDR;
- ping sweep по диапазонам;
- проверка базовых TCP-портов (
22, 80, 443, 161); - SNMP v2c:
sysName,sysDescr,sysObjectID; - сбор LLDP соседей по SNMP;
- сохранение результатов скана в БД;
- построение базового графа связей устройств (
/links,/topology); - история сканов и сравнение изменений (
/api/scans/diff?from=&to=).
Нефункциональные требования
- кроссплатформенная сборка (Linux/Windows);
- устойчивость к частичным ошибкам в сети;
- конфигурируемые таймауты и параллелизм;
- разграничение прав (
admin,viewer); - логирование ошибок и действий.
Архитектура
cmd/server— запуск HTTP APIinternal/api— обработчики и роутыinternal/scans— логика создания/ведения scan jobsinternal/scanner/*— ping, ports, snmp, lldp (поэтапно)internal/store— миграции PostgreSQLweb— интерфейс (следующий этап)
Текущее состояние реализации
- готов API-каркас (
health, создание и чтение scan jobs); - реализован выбор хранилища:
memoryилиpostgresчерез env; - добавлены автоматические миграции таблиц при старте;
- добавлены endpoints результатов: hosts, ports, snmp, lldp, links, topology;
- подготовлены конфиги для запуска как сервис на Linux и за IIS на Windows.
- UI позволяет выбрать последний scan и выполнить diff двух сканов.
- UI позволяет выбирать scan из списка и подсвечивать изменения на графе.
Минимальные API
GET /healthPOST /api/scansGET /api/scans/{id}GET /api/scans/{id}/topologyGET /api/scans/diff?from=&to=
Модель данных (минимум)
userssnmp_credentialsscan_jobsdevicesopen_portslldp_neighborslinks
SNMP OID минимум
1.3.6.1.2.1.1.5.0(sysName)1.3.6.1.2.1.1.1.0(sysDescr)1.3.6.1.2.1.1.2.0(sysObjectID)1.0.8802.1.1.2.1.4.1.1.5(lldpRemChassisId)1.0.8802.1.1.2.1.4.1.1.7(lldpRemPortId)1.0.8802.1.1.2.1.4.1.1.9(lldpRemSysName)
Этапы
- Каркас API и scan jobs
- PostgreSQL и миграции
- Ping + port scan
- SNMP system + LLDP
- Граф топологии в UI (минимальная web-страница
/) - История и diff
Критерии приемки v1
- скан по CIDR создается и завершается;
- живые узлы фиксируются в результатах;
- SNMP-доступные устройства читаются;
- LLDP-связи строятся минимум на тестовой сети;
- топология отображается в интерфейсе;
- приложение запускается на Linux и Windows (нужна ваша проверка на 2 ОС).