On Nov 9, 2018, at 8:30 PM, Sam T <givemesam@gmail.com> wrote:
So if this expression is indeed corrected now, i guess my question lies with how to handle the output? Take a look
if (reply:WISPr-Session-Terminate-Time) { update reply {
Session-Timeout := "%{expr:%{integer:reply:WISPr-Session-Terminate-Time} - %l}"
It turns out that WISPr-Session-Terminate-Time isn't a "date" attribute. It's just a "string". So no, you can't convert a string to an integer. The v3.0.x code in GitHub gives descriptive errors that explain what's going wrong.
... WISPr-Session-Terminate-Time = "2018-12-02T12:22:23+00:00"
Which is a *string* that represents a date, and not actually a date. <sigh> Why can't people design their RADIUS dictionaries correctly? The solution is this: 1) use the v3.0.x branch from GitHub in order to get better error messages, and to fix some "expr" parsing issues 2) edit mods-available/date, and add: date wispr2date { format = "%Y-%m-%dT%H:%M:%S" } 3) use this in the "authorize" section: if (reply:WISPr-Session-Terminate-Time) { update reply { Tmp-Date-0 := "%{wispr2date:&reply:WISPr-Session-Terminate-Time}" } update reply { Session-Timeout = "%{expr:%{integer:reply:Tmp-Date-0} - %l}" } } And that should work. If the WISPr people had used the correct data types, this would be much easier. Alan DeKok.