forum.bitel.ru
http://forum.bitel.ru/

Закрытие сессии из скрипта RADIUS-аутентификации
http://forum.bitel.ru/viewtopic.php?f=19&t=5190
Страница 1 из 1

Автор:  jommys [ 25 фев 2011, 16:08 ]
Заголовок сообщения:  Закрытие сессии из скрипта RADIUS-аутентификации

При различных нештатных ситуациях хотелось бы динамически закрывать повисшие сессии.
Определить их достаточно легко по совпадающему маку, но вот скидывать не выходит.

В модуле PPPoE "BillingEventBus.publish(new DialupSessionBreakEvent ..." недоступно,
но и при упавшем NAS'е оно не поможет, нужно именно закрывать сессии, а не сбрасывать.

Есть решение дергать "radius.sh kill" через класс SSHSessionExec, но это не очень красиво. (:

Сервер 4.6 сборка 686

Автор:  Kazrarr [ 15 апр 2011, 20:44 ]
Заголовок сообщения:  Re: Закрытие сессии из скрипта RADIUS-аутентификации

Если я верно понял... то как вариант:

Сессии хранятся в базе, по идее можно скриптом предобработки проверять и закрывать.. Точно сказать не смогу, давно думал реализовать подобное у себя, но пока руки не доходили..

Автор:  snark [ 15 апр 2011, 20:52 ]
Заголовок сообщения:  Re: Закрытие сессии из скрипта RADIUS-аутентификации

закроете в базе
Код:
UPDATE log_session_<mid>_<yyyymm> SET status = 1 WHERE ...

а БГБ ее откроет по приходу апдейта и финита ля комедия

Автор:  Kazrarr [ 15 апр 2011, 23:57 ]
Заголовок сообщения:  Re: Закрытие сессии из скрипта RADIUS-аутентификации

Как может прийти апдейт на мертвую сессию?

Т.е. я так понимаю мертвая сессия в данном случае это как раз та самая сессия которая "висит" не обновляется, но и не закрывается, обычно помогает в мониторе закрыть сессию.. Сбрасывать не вижу смысла потому что тот же самый например mpd в подобных моментах о ней не знает, но бгб считает ее живой и активной... А клиента в данном случае просто реджектит с превышением кол-ва сессий.. Но на сколько я могу судить подобного уже не происходит, т.е. мертвых сессий в 5.1 я уже почти не видел.. Да и те которые бывает появляются не отбрасывают клиента в ошибкой =)

То же самое должно быть применимо и к клиентам которых выкинуло из сети по каким либо причинам, например клиент выдернул у себя шнурок не отключившись от сервера, и он ждет таймаута прежде чем сможет зайти. В подобном случае опять же апдейт пакеты не ходят, иначе по апдейт пакетам менялась бы инфа о сессии... Но т.к. тунеля уже нет, то и слать уже нечего.. имхо..

Автор:  snark [ 16 апр 2011, 00:10 ]
Заголовок сообщения:  Re: Закрытие сессии из скрипта RADIUS-аутентификации

я думаю определение того что сессия зависла лучше отдать на откуп БГБ

Автор:  Kazrarr [ 16 апр 2011, 21:50 ]
Заголовок сообщения:  Re: Закрытие сессии из скрипта RADIUS-аутентификации

Не совсем понял, каким образом?

Автор:  skyb [ 17 апр 2011, 05:09 ]
Заголовок сообщения:  Re: Закрытие сессии из скрипта RADIUS-аутентификации

Kazrarr писал(а):
Не совсем понял, каким образом?

drop.sleep.timeout=3600
наверное таким

Автор:  Kazrarr [ 19 апр 2011, 09:42 ]
Заголовок сообщения:  Re: Закрытие сессии из скрипта RADIUS-аутентификации

skyb писал(а):
Kazrarr писал(а):
Не совсем понял, каким образом?

drop.sleep.timeout=3600
наверное таким


В 5.1 это работает лучше, но в предыдущих версиях как минимум в 4.5-4.6, если сессия завершалась в момент остановки бгб, то она висела до тех пор пока ее не закроешь в мониторе модуля dialup.. :)

Автор:  jommys [ 05 окт 2012, 13:29 ]
Заголовок сообщения:  Re: Закрытие сессии из скрипта RADIUS-аутентификации

обновился до 5.2, таблица billing_event_bus пропала. как теперь скидывать сессии из скриптов?

Автор:  stark [ 05 окт 2012, 15:43 ]
Заголовок сообщения:  Re: Закрытие сессии из скрипта RADIUS-аутентификации

jommys писал(а):
обновился до 5.2, таблица billing_event_bus пропала. как теперь скидывать сессии из скриптов?

А зачем вам таблица нужна была? если нужно событие бросить, то
Код:
EventProcessor.getInstance().publish( new DialupSessionBreakEvent( mid, recordId ) );

Автор:  jommys [ 05 окт 2012, 16:58 ]
Заголовок сообщения:  Re: Закрытие сессии из скрипта RADIUS-аутентификации

stark писал(а):
jommys писал(а):
обновился до 5.2, таблица billing_event_bus пропала. как теперь скидывать сессии из скриптов?

А зачем вам таблица нужна была? если нужно событие бросить, то
Код:
EventProcessor.getInstance().publish( new DialupSessionBreakEvent( mid, recordId ) );


спасибо! (: я сам сериализовал объект и записывал в таблицу.

Автор:  stark [ 10 окт 2012, 17:32 ]
Заголовок сообщения:  Re: Закрытие сессии из скрипта RADIUS-аутентификации

jommys писал(а):
stark писал(а):
jommys писал(а):
обновился до 5.2, таблица billing_event_bus пропала. как теперь скидывать сессии из скриптов?

А зачем вам таблица нужна была? если нужно событие бросить, то
Код:
EventProcessor.getInstance().publish( new DialupSessionBreakEvent( mid, recordId ) );


спасибо! (: я сам сериализовал объект и записывал в таблицу.


ну это незачем и раньше было делать.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/