FreeRadius 配置 (radiusd.conf) - 正则表达式问题 unlang
FreeRadius Configuration (radiusd.conf) - Regex-Problem unlang
我目前在我的 Radius 配置中遇到问题,想向您寻求帮助。
我正在使用 FreeRadius-Version 3.0.23
在 radiusd.conf
的 authorize
部分中,我正在尝试创建以下 unlang 表达式。
我有以下格式的用户:
super1
super2
...
user1
user2
NAS 标识符:
SUP-A
SUP-B
SUP-C
SUP-D
我想使用正则表达式从 NAS 标识符中提取一些内容并附加到用户。
=> super1-A
=> super2-D
但是,它不适用于以下表达式,因为提取的值在第二个 IF 语句中不再可用。
if ( NAS-Identifier =~ /^SUP\-([ABCD])/ ) {
=> The extracted value is only available at this point
=> Or is it possible to define a local variable with the value?
if ( "%{User-Name}" !~ /^super\d+/ )
update request {
User-Name := "%{User-Name}-%{1}" (However, I need the value here)
}
}
}
这是我的解决方法:
if ( "%{User-Name}" !~ /^super\d+/ && NAS-Identifier =~ /^SUP\-([ABCD])/ ) {
update request {
User-Name := "%{User-Name}-%{1}"
}
}
非常感谢您的帮助,因为我在 FreeRadius 文档中找不到任何内容。
提前致谢。
Every time a regular expression is evaluated, whether it matches or not, the capture group values will be cleared.
因此,对于您的情况,您可以颠倒条件的顺序:
if ( "%{User-Name}" !~ /^super\d+/ ) {
if ( NAS-Identifier =~ /^SUP-([ABCD])/ ) {
update request {
User-Name := "%{User-Name}-%{1}"
}
}
}
注意 -
字符在字符 类 之外使用时不是任何特殊的正则表达式元字符,这里不需要转义它。
我目前在我的 Radius 配置中遇到问题,想向您寻求帮助。
我正在使用 FreeRadius-Version 3.0.23
在 radiusd.conf
的 authorize
部分中,我正在尝试创建以下 unlang 表达式。
我有以下格式的用户:
super1
super2
...
user1
user2
NAS 标识符:
SUP-A
SUP-B
SUP-C
SUP-D
我想使用正则表达式从 NAS 标识符中提取一些内容并附加到用户。
=> super1-A
=> super2-D
但是,它不适用于以下表达式,因为提取的值在第二个 IF 语句中不再可用。
if ( NAS-Identifier =~ /^SUP\-([ABCD])/ ) {
=> The extracted value is only available at this point
=> Or is it possible to define a local variable with the value?
if ( "%{User-Name}" !~ /^super\d+/ )
update request {
User-Name := "%{User-Name}-%{1}" (However, I need the value here)
}
}
}
这是我的解决方法:
if ( "%{User-Name}" !~ /^super\d+/ && NAS-Identifier =~ /^SUP\-([ABCD])/ ) {
update request {
User-Name := "%{User-Name}-%{1}"
}
}
非常感谢您的帮助,因为我在 FreeRadius 文档中找不到任何内容。
提前致谢。
Every time a regular expression is evaluated, whether it matches or not, the capture group values will be cleared.
因此,对于您的情况,您可以颠倒条件的顺序:
if ( "%{User-Name}" !~ /^super\d+/ ) {
if ( NAS-Identifier =~ /^SUP-([ABCD])/ ) {
update request {
User-Name := "%{User-Name}-%{1}"
}
}
}
注意 -
字符在字符 类 之外使用时不是任何特殊的正则表达式元字符,这里不需要转义它。