expppd в линуксе работает?
expppd в линуксе работает?
Сабж.
И поддерживает ли mppe и mppc?
Или, может быть можно "обычный" pppd-2.4.3 с патчем mppe научить лимитировать сессии по трафику и по времени? Как?
И поддерживает ли mppe и mppc?
Или, может быть можно "обычный" pppd-2.4.3 с патчем mppe научить лимитировать сессии по трафику и по времени? Как?
Re: expppd в линуксе работает?
Если честно - не проверял. нету у меня Linux машин под рукой.Wenger писал(а):Сабж.
И поддерживает ли mppe и mppc?
Или, может быть можно "обычный" pppd-2.4.3 с патчем mppe научить лимитировать сессии по трафику и по времени? Как?
Попробуй, и расскажи :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.
Re: expppd в линуксе работает?
Дмитрий -- это я же
Добавляю: уже дописал кусок к racct.pl, для хэнгапа по превышению трафика Работает.
Добавляю: уже дописал кусок к racct.pl, для хэнгапа по превышению трафика Работает.
-
- Site Admin
- Сообщения: 5746
- Зарегистрирован: Пт янв 28, 2005 3:11 pm
- Контактная информация:
Wenger
Можно делать так.
А можно просто создать внешние скрипты и положить их в папку.
/usr/abills/libexec/ext_acct/
они будут запускатся при каждом акаунтигнг запрос с аргументами
acct_status_type NAS_IP_ADDRESS NAS_PORT
Или перенести все проверки в файлы billd что более правильно в данвм случае.
billd - предназначен для внешнего контроля за сесиями, снятием статистики с NAS серверов не подерживающих радиус акаунтинг.
Пожалуйста зарегистрируйтесь у меня пару вопросов к Вам.
Можно делать так.
А можно просто создать внешние скрипты и положить их в папку.
/usr/abills/libexec/ext_acct/
они будут запускатся при каждом акаунтигнг запрос с аргументами
acct_status_type NAS_IP_ADDRESS NAS_PORT
Или перенести все проверки в файлы billd что более правильно в данвм случае.
billd - предназначен для внешнего контроля за сесиями, снятием статистики с NAS серверов не подерживающих радиус акаунтинг.
Пожалуйста зарегистрируйтесь у меня пару вопросов к Вам.
Ну вот, так всегда Жалко что пока нет доки по API, люди могли бы уже начать разные полезные модули писать...~AsmodeuS~ писал(а): А можно просто создать внешние скрипты и положить их в папку.
/usr/abills/libexec/ext_acct/
они будут запускатся при каждом акаунтигнг запрос с аргументами
acct_status_type NAS_IP_ADDRESS NAS_PORT
Кстати, NAS_IP_ADDRESS и NAS_PORT для хэнгапа pppd малополезны, я использовал Acct-Session-Id.
Как я понял, расчет стоимости текущей сессии вообще почему-то находится в config.pl Я в racct.d при каждом alive просто делаю один запрос к БД (сколько на счету) и вызываю эту ф-ю расчета стоимости сессии, затем одна операция вычитания. Там 10 строк от силы.~AsmodeuS~ писал(а): Или перенести все проверки в файлы billd что более правильно в данвм случае.
billd - предназначен для внешнего контроля за сесиями, снятием статистики с NAS серверов не подерживающих радиус акаунтинг.
Да, и еще: я посмотрел насчет папки ext_acct/ -- содержащиеся в ней скрипты запускаются до того, как отработают процедуры racct.pl, а в моем случае лучше бы после (чтобы статистика по самому последнему alive оказалась в базе, а не по предпоследнему). Может быть есть смысл сделать две папки -- ext_acct/pre/ и ext_acct/post/ ?~AsmodeuS~ писал(а):А можно просто создать внешние скрипты и положить их в папку.
/usr/abills/libexec/ext_acct/
они будут запускатся при каждом акаунтигнг запрос с аргументами
acct_status_type NAS_IP_ADDRESS NAS_PORT
-
- Site Admin
- Сообщения: 5746
- Зарегистрирован: Пт янв 28, 2005 3:11 pm
- Контактная информация:
Ид сесии добавлюWenger писал(а): Ну вот, так всегда Жалко что пока нет доки по API, люди могли бы уже начать разные полезные модули писать...
Кстати, NAS_IP_ADDRESS и NAS_PORT для хэнгапа pppd малополезны, я использовал Acct-Session-Id.
Пока там сохраняются самые важные функции. В будущем это будет переделано.Wenger писал(а): Как я понял, расчет стоимости текущей сессии вообще почему-то находится в config.pl Я в racct.d при каждом alive просто делаю один запрос к БД (сколько на счету) и вызываю эту ф-ю расчета стоимости сессии, затем одна операция вычитания. Там 10 строк от силы.
-
- Site Admin
- Сообщения: 5746
- Зарегистрирован: Пт янв 28, 2005 3:11 pm
- Контактная информация:
[quote="Wenger
Да, и еще: я посмотрел насчет папки ext_acct/ -- содержащиеся в ней скрипты запускаются до того, как отработают процедуры racct.pl, а в моем случае лучше бы после (чтобы статистика по самому последнему alive оказалась в базе, а не по предпоследнему). Может быть есть смысл сделать две папки -- ext_acct/pre/ и ext_acct/post/ ?[/quote]
Я подумаю.
Да, и еще: я посмотрел насчет папки ext_acct/ -- содержащиеся в ней скрипты запускаются до того, как отработают процедуры racct.pl, а в моем случае лучше бы после (чтобы статистика по самому последнему alive оказалась в базе, а не по предпоследнему). Может быть есть смысл сделать две папки -- ext_acct/pre/ и ext_acct/post/ ?[/quote]
Я подумаю.
Вот тут замутил сброс с линии.Wenger писал(а):В следующую версию abills мои правки и дополнения войдут, если все будет хорошо.Макс П писал(а):2Wenger: в какую нить темку выкладывай свои результаты исследований и работы и желательно поподробнее об изменениях в скриптах, чтоб знать где и что править
Это под фрю, кому надо тот под лин сам переделает.
Кусок кода твой 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";
-
- Site Admin
- Сообщения: 5746
- Зарегистрирован: Пт янв 28, 2005 3:11 pm
- Контактная информация: