是否可以在ocaml cohttp或管道中获取远程IP地址?

时间:2016-09-05 16:26:45

标签: ocaml mirage

是否可以在管道或cohttp级别获取远程IP地址?我尝试过挖掘源代码,但它似乎被隐藏在几层抽象之下。我正在编写我计划作为unikernel部署的休息服务,并记录请求者的IP地址是一项安全要求。

我正在使用cohttp并希望能够在unix(用于测试)和xen(用于部署)中执行此操作。如有必要,我可以为这两个环境添加条件代码。

1 个答案:

答案 0 :(得分:3)

我将the example in cohttp's readme修改为:

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替换了示例中的()并遵循了类型错误...)