freeradius unlang отключить выход - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть следующий список VLAN, которые я хочу проверить с помощью ldap.

Tmp-String-0 = "CN=vlan10,CN=Users,DC=aaa,DC=local;CN=vlan20,CN=Users,DC=aaa,DC=local"

С помощью ulang я разрываю их и перебираю через них

 if ("%{explode:&control:Tmp-String-0 ;}" > 0) {
           foreach &control:Tmp-String-0 {

Затем я пытаюсь выполнить проверкус

Tmp-String-1 := "%{ldap_aaa.local:ldapi://192.168.0.199:389/cn=Users,dc=aaa,dc=local?memberof?sub?(&(objectCategory=User)(sAMAccountName=%{%{Stripped-User-Name}:-%{User-Name}})(memberOf=%{Foreach-Variable-0}))}"

Однако %{Foreach-Variable-0} получает экранированную версию строки:

CN3dvlan202cCN3dUsers2cDC3daaa2cDC3dlocal

Экранированная версия не работает, если я заменю ее жестко закодированнойunesced версия, она работает.

CN=vlan20,CN=Users,DC=aaa,DC=local

Как предотвратить unlang для экранирования переменной?

1 Ответ

0 голосов
/ 07 ноября 2019

Вы не можете предотвратить уход в v3. В версии 4 существует концепция «испорченных» и «незапятнанных» значений, причем испорченные значения экранируются, а «неопрятные» значения вставляются дословно, но я не уверен, что это еще реализовано в расширениях модуля LDAP.

Вы можете использовать проверки членства в группах в модуле LDAP, чтобы сделать то, что вы пытаетесь реализовать с расширением xlat?

например

 if ("%{explode:&control:Tmp-String-0 ;}" > 0) {
           foreach &control:Tmp-String-0 {
                      if (LDAP-Group == "%{control:Tmp-String-0}") {
                                 update reply {
                                            # VLAN-Attrs
                                 }
                      }
           }
}
...