# session timeout eval random only during night hours

Sat Mar 16 02:47:33 CET 2019

> On Mar 15, 2019, at 6:26 AM, Matthew Newton <mcn at freeradius.org> wrote:
>
> On Thu, 2019-03-14 at 16:02 -0400, Alan DeKok wrote:
>> On Mar 14, 2019, at 3:35 PM, Krzysztof Drewicz <
>> krzysztofdrewicz at gmail.com> wrote:
>>>
>>> basically what i have is:
>>>
>>> Session-Timeout = 24*60*60 (secons so = one day)
>>>
>>> what i whould like to eval this timeout every time user gets ack/ok
>>> to be (randomly) in hours let's say 0200 - 0600 hours.
>>
>>  That's a little unusual, and therefore a bit more difficult.
>>
>>  There are a few things going on here.  What do you want to do
>> *during* that time?  i.e. what happens if the user logs in between
>> 0200-0600?
>>
>>  If there's outside of that time, it's a bit simpler.  Just
>> calculate how far away 0200 is, and then add 0-(4*3600) random
>> seconds.
>
> This may work, if I understood the question correctly:
>
>    &Session-Timeout := "%{expr:((%l / 86400) * 86400) + 93600 + %{rand:14400} - %l}"
>  }
>
> Request time (%l) / 86400 * 86400 in integer arithmetic gets midnight
> of last night.
>
> "+ 93600" adds on 26 hours (2am tomorrow)
>
> "+ %{rand:14400}" adds on between 0-4 hours (i.e. 2am-6am)
>
> "- %l" takes current time off, to get seconds remaining.

or

&Session-Time := "%{expr:%{nexttime:1d} + 7200 + %{rand:14400}}"
}

- %{nexttime:1d} - Number of seconds until tomorrow.
- + 7200 - Plus two hours
- + %{rand:14400} random value between 0-4 hours.

-Arran
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: Message signed with OpenPGP