#服务器-客户端 #异步 #异步-await

radius

为Rust实现的异步/await原生的RADIUS服务器和客户端

9个不稳定版本

0.4.0 2024年1月15日
0.3.1 2022年5月18日
0.2.1 2021年5月31日
0.2.0 2021年2月3日
0.0.3 2020年12月12日

#1167网络编程

Download history 55/week @ 2024-03-28 31/week @ 2024-04-04 51/week @ 2024-04-11 32/week @ 2024-04-18 49/week @ 2024-04-25 84/week @ 2024-05-02 46/week @ 2024-05-09 118/week @ 2024-05-16 81/week @ 2024-05-23 94/week @ 2024-05-30 164/week @ 2024-06-06 163/week @ 2024-06-13 110/week @ 2024-06-20 112/week @ 2024-06-27 106/week @ 2024-07-04 93/week @ 2024-07-11

每月489次下载

MIT 许可证

325KB
5.5K SLoC

radius-rs 检查 crates.io

为Rust实现的异步/await原生的RADIUS服务器和客户端。同时也可以作为RADIUS库用于解析/构造(即解码/编码)目的。

描述

此RADIUS服务器和客户端实现使用tokio来支持原生的异步操作。此实现满足了RFC2865中描述的基本功能。

使用

这里有一些简单的示例实现

这些示例实现了一个非常简单的Access-Request处理器。您可以使用以下命令尝试这些示例。

$ RUST_LOG=debug cargo run --example server
$ RUST_LOG=debug cargo run --example client # in another shell

支持的字典

目前支持以下RFC字典

为您的RADIUS应用程序提供的实现指南

常用

  • Packet结构体表示请求包和响应包。
    • 该结构体包含一个AVP列表。
    • 您可以通过RFC字典模块获取特定的AVP。
      • 例如,rfc2865::lookup_user_name(packet)
        • 此方法如果包包含User-Name属性,则返回Some(Result<String, AVPError>)
        • 另一方面,如果包不包含该属性,则返回None
    • 您可以使用RFC字典模块来构建数据包。
      • 例如:rfc2865::add_user_name(&mut packet, "user")
        • 此方法将一个 User-Name AVP 添加到数据包中。
    • 请参阅rustdoc以了解每个RFC字典模块的详细信息。

服务器

  • 必须实现 RequestHandler<T, E> 接口。
    • 此接口方法是您需要的服务器应用程序的核心功能。
  • 请参阅示例实现:[服务器](https://github.com/moznion/radius-rs/blob/afd1abf2f48dac83fedc22427f4eeaf0921502a7/radius/examples/server.rs)

客户端

  • 请参阅示例实现:[客户端](https://github.com/moznion/radius-rs/blob/afd1abf2f48dac83fedc22427f4eeaf0921502a7/radius/examples/client.rs)

开发路线图

  • 支持以下RFC字典:
    • rfc4679
    • rfc5447
    • rfc5580
    • rfc6929
    • rfc6930
    • rfc7268
    • rfc7499
    • rfc7930
    • rfc8045
    • rfc8559

此库的开发指南

如何从字典生成代码

$ make gen

code-generator 子项目负责根据给定的RFC字典文件生成Rust代码。字典文件位于 dicts 目录中。

字典文件的格式遵循FreeRADIUS项目的格式。

注意

此项目的原始实现和设计受到了layeh/radius的启发。

作者

moznion ([email protected])

依赖项

~4–11MB
~109K SLoC