【问题标题】:Is it possible to get the remote IP address in ocaml cohttp or conduit?是否可以在 ocaml cohttp 或管道中获取远程 IP 地址?
【发布时间】:2023-03-08 09:28:01
【问题描述】:

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

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

【问题讨论】:

    标签: ocaml mirage


    【解决方案1】:

    我将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 替换为 () 并遵循类型错误...)

    【讨论】:

    • 这很有帮助,让我更接近,谢谢!我现在正试图弄清楚如何让它在海市蜃楼中工作。在conduit_mirage/cohttp_mirage 中的流似乎委托给V1_LWT.FLOW 实现,我找不到它的sexp 转换。我正在继续挖掘。
    猜你喜欢
    • 2011-05-14
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    相关资源
    最近更新 更多