unlang 'check'
Alexander Clouter
alex at digriz.org.uk
Wed Sep 15 13:10:08 CEST 2010
Hi,
Not a show stopper, but it seems doing a comparision on 'check:...' in
unlang does not work (however using 'control:...' does):
----
ldap-lanwarden
if (ok) {
if (check:LanWarden-Host-State != "enable") {
update reply {
Reply-Message := "LW: disabled"
}
reject
}
....
}
----
The above results in:
----
[ldap_lanwarden2] No default NMAS login sequence
[ldap_lanwarden2] looking for check items in directory...
[ldap_lanwarden2] owner -> LanWarden-Host-Owner == "cn=ac56,ou=Staff,ou=Active,ou=Accounts,o=soas"
[ldap_lanwarden2] lanwardenHostAuthenticateMethod -> LanWarden-Host-Auth-Method == "none"
[ldap_lanwarden2] lanwardenHostState -> LanWarden-Host-State == "enable"
[ldap_lanwarden2] looking for reply items in directory...
WARNING: No "known good" password was found in LDAP. Are you sure that
the user is configured correctly?
[ldap_lanwarden2] user authorized to use remote access
[ldap_lanwarden2] ldap_release_conn: Release Id: 0
++++[ldap_lanwarden2] returns ok
+++- redundant-load-balance group redundant-load-balance returns ok
++- policy ldap-lanwarden returns ok
++? if (ok)
? Evaluating (ok) -> TRUE
++? if (ok) -> TRUE
++- entering if (ok) {...}
+++? if (check:LanWarden-Host-State != "enable")
? Evaluating (check:LanWarden-Host-State != "enable") -> TRUE <--- WTF?
+++? if (check:LanWarden-Host-State != "enable") -> TRUE
+++- entering if (check:LanWarden-Host-State != "enable") {...}
++++[reply] returns ok
++++[reject] returns reject
+++- if (check:LanWarden-Host-State != "enable") returns reject
++- if (ok) returns reject
} # server lanwarden
----
Turns out that it is actually doing is saying the *string*
"check:LanWarden-Host-State" does not compare, rather than the
*variable* 'check:LanWarden-Host-State'.
Replacing it with "%{check:LanWarden-Host-State}" (or
'control:LanWarden-Host-State') works around the problem however I was
say that either that phrase 'looking for check items...' needs amending,
or the code to be tweaked to align the behaviour of unlang to treat
control/check equally. I vaguely recall that 'check' is depreated in
favour 'control' however in it's current state the logic leads to
madness...as I found out this morning :-/
Cheers
--
Alexander Clouter
.sigmonster says: Satire does not look pretty upon a tombstone.
More information about the Freeradius-Devel
mailing list