7 个不稳定版本

0.4.0 2024年2月29日
0.3.0 2022年5月30日
0.2.0 2021年9月13日
0.1.3 2021年2月8日
0.1.2 2020年11月29日

#596解析器实现

Download history 19/week @ 2024-04-22 162/week @ 2024-05-13 71/week @ 2024-05-27 10/week @ 2024-06-03 5/week @ 2024-06-10 80/week @ 2024-06-17 77/week @ 2024-06-24 13/week @ 2024-07-08 1652/week @ 2024-07-15 3167/week @ 2024-07-22 2545/week @ 2024-07-29 1364/week @ 2024-08-05

8,728 每月下载量

MIT/Apache

75KB
1K SLoC

License: MIT Apache License 2.0 docs.rs crates.io Github CI Minimum rustc version

LDAP 解析器

A Lightweight Directory Access Protocol (LDAP) (RFC4511) 解析器,使用 nom 解析器组合框架实现。

它完全用 Rust 编写,速度快,广泛使用零拷贝。非常注重确保此crate的安全性,包括设计(递归限制,防御性编程)、测试和模糊测试。它还旨在无panic。

代码可在 Github 上找到,并是 Rusticata 项目的一部分。

示例

解析 LDAP 消息(BER 格式)

use ldap_parser::parse_ldap_message;
use ldap_parser::ldap::{MessageID, ProtocolOp, ProtocolOpTag};

static DATA: &[u8] = include_bytes!("../assets/message-search-request-01.bin");

let res = parse_ldap_message(DATA);
match res {
    Ok((rem, msg)) => {
        assert!(rem.is_empty());
        //
        assert_eq!(msg.message_id, MessageID(4));
        assert_eq!(msg.protocol_op.tag(), ProtocolOpTag::SearchRequest);
        match msg.protocol_op {
            ProtocolOp::SearchRequest(req) => {
                assert_eq!(req.base_object.0, "dc=rccad,dc=net");
            },
            _ => panic!("Unexpected message type"),
        }
    },
    _ => panic!("LDAP parsing failed: {:?}", res),
}

变更

CHANGELOG.md

许可证

许可协议为以下之一

任选其一。

贡献

除非您明确声明,否则根据 Apache-2.0 许可证定义的您有意提交的任何贡献,都将如上所述双重许可,没有任何附加条款或条件。

依赖项

~1.6–2.4MB
~47K SLoC