Perforce Helix Core Server (p4d)
Запускает p4 -Ztag -p <address> info — единственная проба в этом
проекте, которая обращается к внешнему бинарнику, а не говорит по
wire-протоколу или HTTP напрямую. Почему — см.
ниже.
targets: - id: p4d-main product: p4d address: p4d.example.com:1666Требует CLI p4 на машине, где запущена enodia
Заголовок раздела «Требует CLI p4 на машине, где запущена enodia»Это не про credential и не про сеть — на той же машине, где работает
сама enodia, должен быть установлен настоящий бинарник (собственный
консольный клиент Perforce, свободно скачиваемый). Отсутствующий
бинарник понятно и явно отказывает, а не маскируется под сетевую
проблему. Переопределите путь через options.binary, если p4 не в
$PATH (работает одинаково и на Windows, указывая на p4.exe):
targets: - id: p4d-main product: p4d address: p4d.example.com:1666 options: binary: /opt/perforce/bin/p4Почему CLI, а не клиент wire-протокола
Заголовок раздела «Почему CLI, а не клиент wire-протокола»Собственный RPC-протокол Perforce был полностью реверс-инжинирен вживую
(захват пакетов плюс настоящий бинарник p4 против реального
продакшн-прокси), и написанный вручную клиент корректно воспроизвёл всё
рукопожатие — подтверждено побайтово против захвата. Но это же самое,
подтверждённо корректное рукопожатие молча отбрасывается реальными
прямыми серверами p4d (обязательный TLS и рейт-лимит оба исключены
вживую: ни ошибки, ни сброса, просто нет ответа), тогда как настоящий
бинарник p4 подключается к тем же самым адресам вообще без проблем.
Вместо того чтобы поставлять пробу, работающую только с прокси, и эта
проба, и Perforce Proxy обращаются к
собственному CLI p4 оператора.
Таймаут
Заголовок раздела «Таймаут»timeout (для конкретного таргета, либо defaults.timeout по
умолчанию) применяется к подпроцессу p4 так же, как и к транспорту
любой другой пробы. Это имеет конкретное значение именно здесь:
процесс p4, застрявший при попытке достучаться до недоступного
прямого сервера, зависает без какого-либо ответа и без сброса
соединения на уровне TCP — ровно то поведение, что описано выше — так
что без таймаута это остановило бы весь прогон сбора данных целиком, а
не просто провалило бы один этот таргет. (Исправлено в 1.2.1 — более
ранняя версия вообще не передавала таймаут в подпроцесс.)
Аутентификация
Заголовок раздела «Аутентификация»Отсутствует — подтверждено вживую, что info отвечает полностью
анонимно на реальных продакшн-серверах.
Проверка личности вендора
Заголовок раздела «Проверка личности вендора»Ответ с полем proxyVersion означает, что по этому адресу на самом
деле находится Perforce Proxy, а не
прямой сервер — эта проба откажет вместо того, чтобы сообщить версию не
того продукта, точно так же, как p4p в обратную сторону отклоняет
ответ прямого сервера.
Это не тот же продукт, что Perforce Helix Swarm
Заголовок раздела «Это не тот же продукт, что Perforce Helix Swarm»perforce-swarm — это
веб-интерфейс Perforce для код-ревью, опрашиваемый по HTTP — другой
продукт, отличный от самого сервера p4d, который описывает эта
страница.
Записываемые поля
Заголовок раздела «Записываемые поля»version— например,2024.2, разобрано из формыserverVersion:P4D/LINUX26X86_64/2024.2/2726408 (2025/02/27)extra.raw— полная неразобранная строкаserverVersionextra.serverID,extra.serverServices, если присутствуют
Сопоставление с CVE
Заголовок раздела «Сопоставление с CVE»Сверяется с NVD и БДУ ФСТЭК, если настроен блок cve:.
Резолвер жизненного цикла
Заголовок раздела «Резолвер жизненного цикла»Отсутствует — Perforce проприетарен, у endoflife.date нет страницы ни под одним из опробованных слагов (подтверждено 404), и нет публичных релизов на GitHub, на которые можно было бы опереться. Пока только инвентаризация — так же, как у Gentoo/ Kali Linux.