Что потом происходит с пользователем, чей статус =5?
-
- Site Admin
- Сообщения: 5749
- Зарегистрирован: Пт янв 28, 2005 3:11 pm
- Контактная информация:
-
- Site Admin
- Сообщения: 5749
- Зарегистрирован: Пт янв 28, 2005 3:11 pm
- Контактная информация:
-
- Site Admin
- Сообщения: 5749
- Зарегистрирован: Пт янв 28, 2005 3:11 pm
- Контактная информация:
-
- Site Admin
- Сообщения: 5749
- Зарегистрирован: Пт янв 28, 2005 3:11 pm
- Контактная информация:
-
- Site Admin
- Сообщения: 5749
- Зарегистрирован: Пт янв 28, 2005 3:11 pm
- Контактная информация:
-
- Сообщения: 192
- Зарегистрирован: Ср янв 31, 2007 7:21 am
- Откуда: г. Вологда
- Контактная информация:
По идее так и должно быть, но не работает.
1. Пользователь может долго висеть со статусом 5 и он не понижается, пока он не выйдет. И при этом сессия записывается нормально.
2. После нескольких запусков billd -all даже если отдачи нет - пользователь продолжает висеть, правда со статусом 5.
И еще. Бывают пользователи, когда он реально есть, но у него статус 5 и не записываются данные полученные по snmp.
1. Пользователь может долго висеть со статусом 5 и он не понижается, пока он не выйдет. И при этом сессия записывается нормально.
2. После нескольких запусков billd -all даже если отдачи нет - пользователь продолжает висеть, правда со статусом 5.
И еще. Бывают пользователи, когда он реально есть, но у него статус 5 и не записываются данные полученные по snmp.
Последний раз редактировалось mnk Пт апр 20, 2007 1:26 pm, всего редактировалось 1 раз.
-
- Сообщения: 192
- Зарегистрирован: Ср янв 31, 2007 7:21 am
- Откуда: г. Вологда
- Контактная информация:
Поправил в файле billd строка ~202
По первому пункту - заработало. Вернуло статус 1 при нормальном чтении.
Но повторюсь, что нормального чтения иногда не происходит, хотя пользователь реально есть(данные с тотал контрол полученные по snmp скриптом bash)
Код: Выделить всё
elsif (defined($external_stats->{in})) {
$sessions->online_update({ USER_NAME => $line->[0],
ACCT_SESSION_ID => $acct_session_id,
STATUS => 1,
%$external_stats
});
Но повторюсь, что нормального чтения иногда не происходит, хотя пользователь реально есть(данные с тотал контрол полученные по snmp скриптом bash)
-
- Сообщения: 192
- Зарегистрирован: Ср янв 31, 2007 7:21 am
- Откуда: г. Вологда
- Контактная информация:
Мне кажется, что в случае, когда нет alive пакетов алгоритм должен быть следующий.
1. Когда при коннекте радиус возвращает номер порта, его надо сразу до записи в таблицу dv_calls, проверить -есть ли такой номер в таблице dv_calls и если он там есть, то сбосить соединение из таблицы с этим портом и записать его в базу.
2. При запуске скрипта billd -all , если при выполнении подпрограммы get_stats возвращается ошибка 1 раз, то этому соединению присваивается статус 5.
Если после 2го считывания ошибки нет, то статус меняется на 1, а если ошибка, то соединение сбрасывается (ZAP)
Если я не прав, то пусть меня поправит разработчик.
А если прав, то поможет реализовать данный алгоритм.
1. Когда при коннекте радиус возвращает номер порта, его надо сразу до записи в таблицу dv_calls, проверить -есть ли такой номер в таблице dv_calls и если он там есть, то сбосить соединение из таблицы с этим портом и записать его в базу.
2. При запуске скрипта billd -all , если при выполнении подпрограммы get_stats возвращается ошибка 1 раз, то этому соединению присваивается статус 5.
Если после 2го считывания ошибки нет, то статус меняется на 1, а если ошибка, то соединение сбрасывается (ZAP)
Если я не прав, то пусть меня поправит разработчик.
А если прав, то поможет реализовать данный алгоритм.
-
- Site Admin
- Сообщения: 5749
- Зарегистрирован: Пт янв 28, 2005 3:11 pm
- Контактная информация:
-
- Сообщения: 192
- Зарегистрирован: Ср янв 31, 2007 7:21 am
- Откуда: г. Вологда
- Контактная информация:
Вы напишите в форуме, когда это добавите?
И по второму пункту -тоже пока не работает. У меня сегодня сессия одна висела 22 часа, хотя пользователя на линии не было и статус был 5 (может другой статус надо присваивать?). И хотя после сброса (ZAP), сессия записалась в базу нормально, проблема была в том, а что у пользователя за эти 22 часа баланс стал < 0 и постоянно в почту шли сообщения об этом.
Те желательно, чтобы после n (можно использовать ERROR_ALIVE_COUNT) ошибок биллинг сбрасывал это соединение.
И по второму пункту -тоже пока не работает. У меня сегодня сессия одна висела 22 часа, хотя пользователя на линии не было и статус был 5 (может другой статус надо присваивать?). И хотя после сброса (ZAP), сессия записалась в базу нормально, проблема была в том, а что у пользователя за эти 22 часа баланс стал < 0 и постоянно в почту шли сообщения об этом.
Те желательно, чтобы после n (можно использовать ERROR_ALIVE_COUNT) ошибок биллинг сбрасывал это соединение.