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