2015-10-06 4 views
1

Я использую freeradius с mysql и choovachilli для реализации невольного портала. В настоящее время я пытаюсь реализовать ежедневные учетные записи с помощью rlm_sqlcounter, но без успеха. Вот мой конфигурационный файл, который я включаю в глобальную конфигурацию:Freeradius sqlcounter не работает

sqlcounter dailycounter { 
    counter-name = 'Daily-Session-Time' 
    check-name = 'Max-Daily-Session' 
    sql_module_instance = 'sql' 
    key = 'User-Name' 
    reset = daily 
    query = "SELECT SUM(acctsessiontime - GREATEST((%b - UNIX_TIMESTAMP(acctstarttime)), 0)) FROM radacct WHERE username='%{${key}}' AND UNIX_TIMESTAMP(acctstarttime) + acctsessiontime > '%b'" 
} 

authorize { 
    sql 
    dailycounter 
} 

accounting { 
    sql 
} 

В журнале FreeRadius есть только этот выход связан с прилавком:

Tue Oct 6 13:02:22 2015 : Debug: Module: Linked to module rlm_expr 
Tue Oct 6 13:02:22 2015 : Debug: Module: Instantiating module "expr" from file /etc/freeradius/modules/expr 
Tue Oct 6 13:02:22 2015 : Debug:  (Loaded rlm_counter, checking if it's valid) 
Tue Oct 6 13:02:22 2015 : Debug: Module: Linked to module rlm_counter 
Tue Oct 6 13:02:22 2015 : Debug: Module: Instantiating module "daily" from file /etc/freeradius/modules/counter 
Tue Oct 6 13:02:22 2015 : Debug: counter daily { 
Tue Oct 6 13:02:22 2015 : Debug: filename = "/etc/freeradius/db.daily" 
Tue Oct 6 13:02:22 2015 : Debug: key = "User-Name" 
Tue Oct 6 13:02:22 2015 : Debug: reset = "daily" 
Tue Oct 6 13:02:22 2015 : Debug: count-attribute = "Acct-Session-Time" 
Tue Oct 6 13:02:22 2015 : Debug: counter-name = "Daily-Session-Time" 
Tue Oct 6 13:02:22 2015 : Debug: check-name = "Max-Daily-Session" 
Tue Oct 6 13:02:22 2015 : Debug: reply-name = "Session-Timeout" 
Tue Oct 6 13:02:22 2015 : Debug: allowed-servicetype = "Framed-User" 
Tue Oct 6 13:02:22 2015 : Debug: cache-size = 5000 
Tue Oct 6 13:02:22 2015 : Debug: } 
Tue Oct 6 13:02:22 2015 : Debug: rlm_counter: Counter attribute Daily-Session-Time is number 3000 
Tue Oct 6 13:02:22 2015 : Debug: rlm_counter: Current Time: 1444129342 [2015-10-06 13:02:22], Next reset 1444168800 [2015-10-07 00:00:00] 

Я был бы очень признателен, если кто-то может объяснить мне как работает этот счетчик. Мне удалось понять точку проверки и сбросить, но опция запроса смущает меня. Я понимаю синтаксис запроса и что будет возвращать значение, но я не понимаю, когда вызван этот запрос и кто будет использовать его возвращаемое значение и как?

ответ

1

Объяснение ежедневного сеанса-времени.

  1. пользователь может войти в систему и онлайн 3000s в день
  2. с Max-Daily-сессии. вы добавляете значение 3000. Это означает 3000.
  3. Радиус ответит атрибуту Session-Timeout на nas 3000s. это означает, что nas должен отключить пользователя в 3000s
  4. , если пользователь вводит логин и онлайн для 1000-х годов, он выходит из системы. Затем он снова войдет в систему, радиус ответит Session-Timeout на nas 2000s.
  5. после того, как пользователь использует все 3000 человек, он не может войти в систему. Ему нужно подождать до завтра.
Смежные вопросы