Можно ли получить удаленный IP-адрес в ocaml Cohttp или в кабелепроводе?

Можно ли получить удаленный IP-адрес на уровне канала или cohttp? Я пробовал копать хотя и исходный код, но, похоже, он скрыт под несколькими уровнями абстракции. Я пишу остальные службы, которые планирую развернуть как unikernels, и регистрация IP-адреса запрашивающей стороны является требованием безопасности.

Я использую cohttp и хотел бы иметь возможность сделать это как в Unix (для тестирования), так и в XEN (для развертывания). Я мог бы поставить условный код для двух сред при необходимости.

1 ответ

Я изменил пример в файле readme для cohttp:

open Sexplib
[...]

  let callback (flow, _connection_id) req body =
    Conduit_lwt_unix.sexp_of_flow flow |> Sexp.to_string |> print_endline;

Когда я подключился с localhost, он напечатал:

(TCP((fd <opaque>)(ip(V4 127.0.0.1))(port 62168)))

(выяснить это не слишком очевидно; я просто заменил _conn в примере с () и следовал за ошибками типа...)

Другие вопросы по тегам