是否可以在管道或cohttp级别获取远程IP地址?我尝试过挖掘源代码,但它似乎被隐藏在几层抽象之下。我正在编写我计划作为unikernel部署的休息服务,并记录请求者的IP地址是一项安全要求。
我正在使用cohttp并希望能够在unix(用于测试)和xen(用于部署)中执行此操作。如有必要,我可以为这两个环境添加条件代码。
答案 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
替换了示例中的()
并遵循了类型错误...)