我从自由半径 2到自由半径 3并将一些集成点从更改sql
为rest
模块。
事实上我有两个会计点:accounting_start_query
和accounting_start_query
,它们是对程序的调用。
现在,我需要accounting
在 rlm_rest 模块中配置 FreeRadius。
这代码没有提到启动/停止操作。我应该同时实现这两个操作吗?
有人能帮我吗 ?
答案1
rlm_rest
被设计为 AVP 的传输,它实际上并不以相同的方式实现会话管理逻辑rlm_sql
。
当rlm_sql
遇到尚未开始的临时情况时,它会自动为该会话创建一个记录。
所有rlm_rest
这些逻辑都取决于您调用的其余 API。所有rlm_rest
要做的就是序列化 FreeRADIUS 收到的属性,Access-request
并将它们发送到 API 端点。
是否对开始/中间/停止数据包使用不同的端点取决于您。如果您愿意,可以使用%{Acct-Status-Type}
URL 字符串中的扩展来获取数据包的类型。
从高层次来看,RADIUS 计费实际上并不能完美地映射到 RESTfull 设计。您不知道是否需要PUT
或POST
请求,因为您不知道是要创建对象还是更新现有对象。
最强大的设计是使用单个端点作为%{Acct-Unique-Session-ID}
对象标识符,交替接受PUT
或POST
方法,并执行 REST 等效的“upserts”,忽略Event-Timestamp
比上次接收的更旧的请求Event-Timestamp
。