freeradius之unlang语法学习

背景

最近用到freeradius做认证, 其中涉及到"unlang"语法, 整理一下.
参考: https://freeradius.org/radiusd/man/unlang.html

关于FreeRadius本人也不是很熟悉, 只因用到才学了其中一部分, 如有问题请指出, 共同学习.
重要部分会加粗显示, 如有错误请指出, 非常感谢.

“unlang”

名称

unlang - FreeRADIUS 处理的"非语言"(“un-language”)

概述

FreeRADIUS 在它的配置文件中支持一种简单的处理语言. 我们称之为"非语言"(“un-language”), 因为并不是想创造另一种编程语言.
如果你需要比这里描述的更复杂的功能, 我们建议你使用Perl或者Python模块: rlm_perl或者rlm_python.
这个语言的目标是容易书写简单的策略. 当一个请求被处理时这些策略会被应用.
在"授权"(authorize), “认证”(authenticate), “认证后”(post-auth), 计费前(preacct), “计费中”(accounting), “代理前”(pre-proxy), “代理后”(post-proxy), 和"会话"(session)这些部分, 请求通过虚拟服务器处理(包括默认的那个).

这些策略不能被用在配置文件的其他部分, 比如模块(module)或者客户端配置.

关键字

if (condition) {
} elsif (condition) {
} else {
}
// Foreach-Variable-#
// 其中#是循环的深度, 从0开始, 如Foreach-Variable-0, Foreach-Variable-1等
foreach &Attribute-Reference {
	Foreach-Variable-#
}
switch <argument> {
	case <argument> {
	}
	case <argument> {
	}
	
	// default
	case {
	}
}

update可以修改某个list中的属性(key),
list可以为: “request”, “reply”, “proxy-request”, “proxy-reply”, “coa”, “disconnect”, “session-state”, 或者 “control”.
在版本3中, 可以省略, 此时它为"request"

update <list> {
	&Attribute-Reference = value
}
return

(未完待续)

参考:

发布了231 篇原创文章 · 获赞 77 · 访问量 52万+

猜你喜欢

转载自blog.csdn.net/butterfly5211314/article/details/103360702
今日推荐