The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"FreeRadius + FreeNIBS + FreeBSD + mpd4 Решаем недочеты (billing traffic freebsd radius)"
Отправлено Валера, 12-Май-06 16:14 
Вот скрипт, который Мне прислали, когда Я спросил как в freeNIBs разрывать соеденение, при достижении 0-го баланса, если как сервер mpd

mpd_kill.pl
#!/usr/bin/perl
if( $ARGV[3] eq '' ) { die 'Usage: mpddown user nasip userip nasport'; };

$linkname='pptp'; ## имя линка без номера (links.conf, mpd.conf)
$maxng=40; ## номер последнего линка. первый должен быть 0 (ноль)
$user=$ARGV[0];

$nasip=$ARGV[1];
$userip=$ARGV[2];
$nasport=$ARGV[3]; if( $nasport > $maxng ) { $nasport=1; };
$nastelnetport=5005;

use IO::Socket;

sub checklink;

$sock = IO::Socket::INET->new(
PeerAddr => $nasip,
PeerPort => $nastelnetport,
Proto => 'tcp') or die "Can not connect to mpd!\n$!";
$sock->autoflush(1);
while (<$sock>){ print; last; }; ## читаем ввод из сокета
while (<$sock>){ print; last; }; ## пропускаем приветствие
while (<$sock>){ print; last; }; ## всего 3 строки
printf($ARGV[0]);
$portn=$nasport;
sprintf("PORT NO %d",portn);
checklink;
if( $user eq $luser ) {
print $sock "close\n"; }
else {
$portn++;
while( ($portn != $nasport) && ($user ne $luser) ) {
if( $portn > $maxng ) { exit 0};
checklink;
if( $user eq $luser ) {
print $sock "close\n";
};
$portn++;
} ;
};
close $sock;
exit 0;

sub checklink {
print $sock "link pptp",$portn,"\n"; ## выбрали линк
print $sock "show radius\n"; ## запросили инфу о линке
while (<$sock>){ ## обрабатываем в цикле ввод
print;
@words=split(' ');
$luser=$words[2];
last if( $words[0] eq 'Authname' ); ## ищем строку с именем пользователя
};
};


, а в файле nibs.conf должна быть след. строчка:

kill_program = "${sbindir}/mpd_kill.pl %{User-Name} %{NAS-IP-Address} %{Client-IP-Address} %{NAS-Port}

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру