expppd в линуксе работает?

Вопросы и пожелания создателю
Wenger

expppd в линуксе работает?

Сообщение Wenger »

Сабж.

И поддерживает ли mppe и mppc?

Или, может быть можно "обычный" pppd-2.4.3 с патчем mppe научить лимитировать сессии по трафику и по времени? Как?

shs
Сообщения: 10
Зарегистрирован: Ср фев 02, 2005 4:59 pm

Re: expppd в линуксе работает?

Сообщение shs »

Wenger писал(а):Сабж.

И поддерживает ли mppe и mppc?

Или, может быть можно "обычный" pppd-2.4.3 с патчем mppe научить лимитировать сессии по трафику и по времени? Как?
Если честно - не проверял. нету у меня Linux машин под рукой.
Попробуй, и расскажи :0

Дмитрий

Re: expppd в линуксе работает?

Сообщение Дмитрий »

shs писал(а):Попробуй, и расскажи :0
Привет.

В общем, отнести фревый ppp или твой exppp под линух у меня сил не хватит :) Поэтому я пошел по другому пути:
1) поставил обычный pppd-2.3.4 с RADIUS плугином
2) в доп. параметрах RADIUS в настройках NAS вписал Acct-Interim-Interval=60 -- и pppd нормально отдает Alive пакеты
3) дописал в nas.pl функцию, которая убивает (kill -HUP) нужный pppd, теперь все с веб-интерфейса хенгапится как положено

ну и осталось только
4) модифицировать racct.pl, чтоб он подсчитывал баланс трафика и лимит времени при каждом Alive, и при превышении хэнгапил юзера. Точно по последнему байту или секунде не получится, ну да за в среднем 30 секунд много не накачаешь все равно...
5) что-нибудь еще :)

Пункты 1-3 уже вполне работают, на Linux RH9.

Wenger

Re: expppd в линуксе работает?

Сообщение Wenger »

Дмитрий -- это я же :)

Добавляю: уже дописал кусок к racct.pl, для хэнгапа по превышению трафика :) Работает.

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

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

Wenger

Можно делать так.

А можно просто создать внешние скрипты и положить их в папку.
/usr/abills/libexec/ext_acct/
они будут запускатся при каждом акаунтигнг запрос с аргументами
acct_status_type NAS_IP_ADDRESS NAS_PORT

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

Пожалуйста зарегистрируйтесь у меня пару вопросов к Вам.

Wenger
Сообщения: 5
Зарегистрирован: Чт фев 24, 2005 9:28 pm

Сообщение Wenger »

~AsmodeuS~ писал(а): А можно просто создать внешние скрипты и положить их в папку.
/usr/abills/libexec/ext_acct/
они будут запускатся при каждом акаунтигнг запрос с аргументами
acct_status_type NAS_IP_ADDRESS NAS_PORT
Ну вот, так всегда :) Жалко что пока нет доки по API, люди могли бы уже начать разные полезные модули писать...

Кстати, NAS_IP_ADDRESS и NAS_PORT для хэнгапа pppd малополезны, я использовал Acct-Session-Id.
~AsmodeuS~ писал(а): Или перенести все проверки в файлы billd что более правильно в данвм случае.
billd - предназначен для внешнего контроля за сесиями, снятием статистики с NAS серверов не подерживающих радиус акаунтинг.
Как я понял, расчет стоимости текущей сессии вообще почему-то находится в config.pl :) Я в racct.d при каждом alive просто делаю один запрос к БД (сколько на счету) и вызываю эту ф-ю расчета стоимости сессии, затем одна операция вычитания. Там 10 строк от силы.

Wenger
Сообщения: 5
Зарегистрирован: Чт фев 24, 2005 9:28 pm

Сообщение Wenger »

~AsmodeuS~ писал(а):А можно просто создать внешние скрипты и положить их в папку.
/usr/abills/libexec/ext_acct/
они будут запускатся при каждом акаунтигнг запрос с аргументами
acct_status_type NAS_IP_ADDRESS NAS_PORT
Да, и еще: я посмотрел насчет папки ext_acct/ -- содержащиеся в ней скрипты запускаются до того, как отработают процедуры racct.pl, а в моем случае лучше бы после (чтобы статистика по самому последнему alive оказалась в базе, а не по предпоследнему). Может быть есть смысл сделать две папки -- ext_acct/pre/ и ext_acct/post/ ?

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

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

Wenger писал(а): Ну вот, так всегда :) Жалко что пока нет доки по API, люди могли бы уже начать разные полезные модули писать...

Кстати, NAS_IP_ADDRESS и NAS_PORT для хэнгапа pppd малополезны, я использовал Acct-Session-Id.
Ид сесии добавлю
Wenger писал(а): Как я понял, расчет стоимости текущей сессии вообще почему-то находится в config.pl :) Я в racct.d при каждом alive просто делаю один запрос к БД (сколько на счету) и вызываю эту ф-ю расчета стоимости сессии, затем одна операция вычитания. Там 10 строк от силы.
Пока там сохраняются самые важные функции. В будущем это будет переделано.

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

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

[quote="Wenger
Да, и еще: я посмотрел насчет папки ext_acct/ -- содержащиеся в ней скрипты запускаются до того, как отработают процедуры racct.pl, а в моем случае лучше бы после (чтобы статистика по самому последнему alive оказалась в базе, а не по предпоследнему). Может быть есть смысл сделать две папки -- ext_acct/pre/ и ext_acct/post/ ?[/quote]

Я подумаю.

Wenger
Сообщения: 5
Зарегистрирован: Чт фев 24, 2005 9:28 pm

Сообщение Wenger »

~AsmodeuS~ писал(а): Ид сесии добавлю
С другой стороны, все равно приходится детальные логи RADIUS'а парсить -- так что принципиальной разницы нет, как доставать IP клиента -- по id сессии или по паре NAS IP/id...

Макс П

Сообщение Макс П »

2Wenger: в какую нить темку выкладывай свои результаты исследований и работы :) и желательно поподробнее об изменениях в скриптах, чтоб знать где и что править :)

Wenger
Сообщения: 5
Зарегистрирован: Чт фев 24, 2005 9:28 pm

Сообщение Wenger »

Макс П писал(а):2Wenger: в какую нить темку выкладывай свои результаты исследований и работы :) и желательно поподробнее об изменениях в скриптах, чтоб знать где и что править :)
В следующую версию abills мои правки и дополнения войдут, если все будет хорошо.

Jora

Сообщение Jora »

Wenger писал(а):
Макс П писал(а):2Wenger: в какую нить темку выкладывай свои результаты исследований и работы :) и желательно поподробнее об изменениях в скриптах, чтоб знать где и что править :)
В следующую версию abills мои правки и дополнения войдут, если все будет хорошо.
Вот тут замутил сброс с линии.
Это под фрю, кому надо тот под лин сам переделает.
Кусок кода твой Wenger

my ($sum, $variant, $time_t, $traf_t) = session_sum("$RAD{USER_NAME}", $ACCT_INFO{LOGIN}, $ACCT_INFO{ACCT_SESSION_TIME}, \%ACCT_INFO);
if ($sum > 0) {
$sql = "SELECT deposit, credit FROM users WHERE id="$RAD{USER_NAME}";";
log_print('LOG_SQL', "ACCT [$RAD{USER_NAME}] SQL: $sql");
$q = $db->prepare("$sql") || die $db->errstr;
$q -> execute();
my ($d, $c) = $q -> fetchrow();
if (($d+$c) - $sum < 0 ) {
log_print('LOG_WARNING', "ACCT [$RAD{USER_NAME}] Negative balance (($d+$c) - $sum) - kill session($RAD{ACCT_SESSION_ID})");
system ($Bin ."/modules/pppkill $RAD{FRAMED_IP_ADDRESS}");
}
}

Ты не учитывал если установлен кредит.
Вот сам пппкилл

#!/bin/sh

RUN_DIR=/var/run
AWK=/usr/bin/awk
CAT=/bin/cat
GREP=/usr/bin/grep
ROUTE=/usr/bin/netstat
KILL=/bin/kill
echo $1 $2 > /tmp/qqq

PPP_ID=`$ROUTE -rn | $GREP $1 | $AWK {'print $6'}`

PID_FILE="$RUN_DIR/$PPP_ID.pid"

PPP_PID=`$CAT $PID_FILE`

$KILL -1 $PPP_PID

Да переменная 'Session-Timeout' должна равняться 0. $RAD_PAIRS{'Session-Timeout' = "0";

Artix

Сообщение Artix »

народ, поделитесь кодом для сброса под лин

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

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

В CVS висит

ищите по слову Wenger

Ответить