Автоматический Zap ALL

~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Сообщение ~AsmodeuS~ »

NAS_ID - Сервер доступа
ACTION_EXPR= - Выражение (дикая карта *)
ACTION_COUNT= - Количество найденных попаданий. По умолчанию 20
LAST_ACTIONS_COUNT= Количество последний записей истории для просмотра. По умолчанию 250.
HANGUP=1 - Отклоючить всех
DEBUG=1..6 - Режим отладки
help - Справка

NiTr0
Сообщения: 767
Зарегистрирован: Пт фев 08, 2008 4:46 pm

Сообщение NiTr0 »

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

~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Сообщение ~AsmodeuS~ »

нет это аргументы для программы автозапа

NiTr0
Сообщения: 767
Зарегистрирован: Пт фев 08, 2008 4:46 pm

Сообщение NiTr0 »

Ммм... тогда я не совсем понимаю, как заставить данный скрипт отрабатывать
NiTr0 писал(а):к примеру, при режекте по More than 1 login allowed
Суть-то как раз и была в том, чтобы при каждой ошибке аутентификации либо ошибке аутентификации определенного типа (т.к. мониторить ошибочный пароль и ошибки при негативном депозите нерационально) проходил анализ логов и сброс пользователей - т.е. минимизировать время между возникновением мертвых сессий из-за проблемы со связью и их перемещения в zapped.
Не спорю, можно данный скрипт в крон поместить, и для каждого наса ежеминутно вызывать - но с тем же успехом можно и billd чаще вызывать + время ожидания alive перед запом меньше поставить...

~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Сообщение ~AsmodeuS~ »

autozh.pl NAS_ID=xxx ACTION_EXPR="*More than 1 login allowed*" ACTION_COUNT=2 LAST_ACTIONS_COUNT=100


в крон и будет следить за возникновением ошибок больше чем определённое количество одновременных сессий и при возникновении двух таких ошибок делать автозап всех сессий.

NiTr0
Сообщения: 767
Зарегистрирован: Пт фев 08, 2008 4:46 pm

Сообщение NiTr0 »

Я понимаю, что можно и так... но вызывать каждые 30 секунд скрипт - ИМХО весьма нерационально, да еще и для каждого пула (пока что их 2, но с переходом на PPPoE их кол-во будет расти), а больше время делать - это и диспетчер может среагировать...

~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Сообщение ~AsmodeuS~ »

а как система буде знаьт что это не второй пользователь пришёл а тот же ?

ran
Сообщения: 2298
Зарегистрирован: Вс окт 21, 2007 2:29 pm

Сообщение ran »

вернулись к доброму старому крону и 1 минуте? :D
Любой тупик - это тщательно замаскированный выход.

NiTr0
Сообщения: 767
Зарегистрирован: Пт фев 08, 2008 4:46 pm

Сообщение NiTr0 »

~AsmodeuS~ писал(а):а как система буде знаьт что это не второй пользователь пришёл а тот же ?
Ну хотя бы при возникновении ошибки авторизации определенного типа - выполнять определенный скрипт, с передачей в параметрах переменный (NAS ID в частности). Это ведь реализовать несложно - вызов комманды из перла в обработчике ошибки, + в конфиге собссно строки вызова скриптов для каждой ошибки...
Я бы мог это и сам допилить - но не хочется вносить дополнительные изменения в код, и так патчей уже многовато...

~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Сообщение ~AsmodeuS~ »

Давайте конкретные примеры и я буду думать

NiTr0
Сообщения: 767
Зарегистрирован: Пт фев 08, 2008 4:46 pm

Сообщение NiTr0 »

Конкретно - по More then allow login сделать вызов скрипта, определенного в конфиге. что-то типа такого:

Код: Выделить всё

Auth.pm:

#Check  simultaneously logins if needs
if ($self->{LOGINS} > 0) {
  $self->query($db, "SELECT count(*) FROM dv_calls WHERE user_name='$RAD->{USER_NAME}' and status <> 2;");
  my($active_logins) = @{ $self->{list}->[0] };
  if ($active_logins >= $self->{LOGINS}) {
+   if (defined($CONF->{auth_duplogins})){
+     my $NAS=$self->{NAS};
+     exec($CONF->{auth_duplogins});
+   }
    $RAD_PAIRS->{'Reply-Message'}="More then allow login ($self->{LOGINS}/$active_logins)";
    return 1, $RAD_PAIRS;
   }
}

ну и в config.pl к примеру:

$conf{auth_duplogins}="autozh.pl NAS_ID=$NAS ACTION_EXPR="*More then allow login*" ACTION_COUNT=2 LAST_ACTIONS_COUNT=100";
В идеале бы это ессно не через конфиг настраивать, а через вебку, для каждого наса отдельно - ессно это несколько усложнит код, но добавит гибкости... Но хотя бы так.

~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Сообщение ~AsmodeuS~ »

может тогда лутше вызывать скрипт при всех ошибочных авторизациях ?


замедлит работу атовризатора приблизительно в 2 раза как минимум

NiTr0
Сообщения: 767
Зарегистрирован: Пт фев 08, 2008 4:46 pm

Re: Автоматический Zap ALL

Сообщение NiTr0 »

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

На все - сильно по ресурсам накладно будет. Особенно учитывая идиотичность аппаратных роутеров, которые включены в режиме 24/7 и по окончанию пакета постоянно долбятся...
Потому и предлагал - для каждого типа ошибок свою строку в конфиге, кому надо - тот сможет добавить свои обработчики ошибок.

~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Re: Автоматический Zap ALL

Сообщение ~AsmodeuS~ »

Настройки авторизации
$conf{AUTH_ERROR_CMD}='EXRP:CMD' Определение обработчика ошибок авторизации.
EXPR - выражение
CMD - команде которая запускается при попадении ошибки в выражение. Команде передаются следующие аргументы - USER_NAME=$user_name NAS_PORT=$RAD→{NAS_PORT} NAS_IP=$nas→{NAS_IP} ERROR=$message

ПРИМЕР
Отлавливание ошибки Login Not Exist or Expire и запуск программы /usr/abills/misc/error.sh
$conf{AUTH_ERROR_CMD}=«Login Not Exist or Expire:/usr/abills/misc/error.sh»

RusB1T
Сообщения: 166
Зарегистрирован: Вс июн 22, 2008 5:49 am
Откуда: Красноярск
Контактная информация:

Re: Автоматический Zap ALL

Сообщение RusB1T »

Подскажите как реализовать zap_all сессий при перезагрузке сервера (биллинг и NAS на одном PC)
Ищу работу в Красноярске

Ответить