Страница 1 из 1

Поддержка CoA/DR для pppd

Добавлено: Сб апр 17, 2010 9:05 pm
NiTr0
Собссно сваял за недельку демон для поддержки сабжа, ну и патч для pppd (пока - в зачаточном состоянии, умеет всего лишь вызывать по SIGUSR1 if-mod скрипт - воззможно, допилю позже изменение session-octets-limit и session-timeout, хотя стоит ли?).

Сам демон умеет:
  • определять интерфейс по Framed-IP-Address, Framed-Protocol+Nas-Port, или по Nas-Port-ID (если указано несколько аттрибутов - проверяет их соответствие друг другу);
  • править radattr.pppX исходя из свежеполученных аттрибутов для CoA;
  • отправлять нужному процессу SIGUSR1 для СоА или SIGHUP для DR.
Из минусов - pppd лишился возможности включать/отключать дебаг посылкой SIGUSR1 (а оно кому-то нужно?).

Стянуть сабж + патч можно здесь. Документации нет, кому нужен список опций - может обратиться к оному из radiusd-cistron (который собссно и послужил основой, подвергнувшись кастрации явно лишнего для данной задачи). Статус - бета-версия, т.к. смахивает на законченный продукт и на первый взгляд работает, но толком не тестировалась. Ессно, идет как "as-is".

Багрепорт/фиксы - приветствуются. Разжевывать, как пользоваться и зачем надо вообще - не буду, ибо кому это нужно - ИМХО поймут сами, а кому не нужно - разжевывать смысла не вижу.

P.S. И было бы неплохо, чтобы кто-то добавил адекватную поддержку этой фичи биллингом - в идеале, проверка в billd/radacct необходимости смены скорости/разрыва сессии, и собссно выполнение нужной операции; если желающих не найдется - прийдется самому пилить...

Re: Поддержка CoA/DR для pppd

Добавлено: Вс апр 18, 2010 10:05 am
Abram
А почему не умеем по Acct-Session-Id искать? Так же интересней намного.

Для пиналки на первое время можно взять вот это:
viewtopic.php?p=21328#p21328

Re: Поддержка CoA/DR для pppd

Добавлено: Вс апр 18, 2010 10:09 am
NiTr0
Acct-Session-Id надо откуда-то получать, откуда его (кроме как из недр pppd) получить - я не представляю. А опрашивать каждый процесс - ИМХО гиморно; вынос его в radacct и последующий парсинг - тоже гиморно...

Re: Поддержка CoA/DR для pppd

Добавлено: Вт апр 20, 2010 7:44 pm
NiTr0
Поправил мелкий баг. При форке демон пытался закрыть stdin и подсунуть вместо него /dev/null - что по непонятным причинам вызывало отжирание демоном 100% процессорного времени, но при этом он вроде как функционировал правильно. Остается только догадываться, как это работало раньше, и почему поломалось...

Re: Поддержка CoA/DR для pppd

Добавлено: Чт апр 22, 2010 4:06 pm
NiTr0
Желающих допилить billd/racct.pl не возникло - значит, выкладываю патч для ветки 0.42. Вроде как должен работать, дисконнект делает, запустил на обкатку на тестовом насе.
В конфиг добавить:

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

$conf{coa_send}=1;
$conf{billd_interval}=300; #sec
UPD:
прикрепил новую версию, с поправленными багами, и доработанными мелочами (так, в СоА передается не только номер порта, но и IP - для исключения ошибочной смены скорости, к примеру, в ночь 1-го числа каждого месяца).

Re: Поддержка CoA/DR для pppd

Добавлено: Пн апр 26, 2010 10:28 am
NiTr0
Поправил баг со 100% загрузкой проца демоном. Новая версия - на сорсфорже.

Re: Поддержка CoA/DR для pppd

Добавлено: Чт ноя 10, 2011 9:52 pm
skillman
Может стоит разжевать более детально?
В общих чертах понятно. Хотелось бы использовать ваши наработки с вашего позволения естественно