MPD-4.3 и разделение трафика по зонам

Вопросы и пожелания
Ответить
Pac-Man
Сообщения: 2
Зарегистрирован: Пн окт 29, 2007 6:33 am

MPD-4.3 и разделение трафика по зонам

Сообщение Pac-Man »

Собственно, имеется сервер на FreeBSD 6.2-RELEASE, порты обновлены и из них установлен mpd-4.3, abills - current из CVS. В принципе, все настроено и работает - одно НО - надо считать трафик по зонам (одна зона бесплатно, остальные по 2 разным тарифам). Как это все можно организовать на MPD4?
На вики есть описание модуля Ipn, но как его объединить с mpd4, вот вопрос...

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

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

nas server

external acct - IPN

Pac-Man
Сообщения: 2
Зарегистрирован: Пн окт 29, 2007 6:33 am

Сообщение Pac-Man »

Ага...
Граблю экспортируемый mpd4 netflow при помощи flow-tools, складываю в /usr/local/abills/var/log/, запускаю traffic2sql. Что из этого получается:

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

[/usr/local/abills/libexec]# ./traffic2sql 1 flowdir=/usr/local/abills/var/log/ipn/ debug=3
Debug mode on
<p>select u.uid, dv.ip, u.id,
           '',
           0,
           0,
           dv.tp_id,
                 if (u.company_id > 0, cb.id, b.id),
                 if (c.name IS NULL, b.deposit, cb.deposit)+u.credit,
                 tp.payment_type,
                 0,
                 0,
                 tp.octets_direction,
                 u.reduction,
                 CONNECT_INFO
                 FROM (users u, dv_main dv)
                 LEFT JOIN companies c ON (u.company_id=c.id)
                 LEFT JOIN bills b ON (u.bill_id=b.id)
                 LEFT JOIN bills cb ON (c.bill_id=cb.id)
                 LEFT JOIN tarif_plans tp ON (tp.id=dv.tp_id)
                 WHERE u.uid=dv.uid
                  and dv.ip > 0 and u.disable=0 and dv.disable=0;</p>
DBD::mysql::st execute failed: Unknown column 'CONNECT_INFO' in 'field list' at /usr/local/abills/libexec/../Abills/mysql/main.pm line 131.
Abills версии 0.37b из CVS от 25 октября. Это лыжи не едут или я такой? :wink:

Eugene
Сообщения: 27
Зарегистрирован: Пн июл 17, 2006 9:26 am
Контактная информация:

Сообщение Eugene »

/usr/abills/racct.pl

перед
строками

-------------
}

my $Acct; (именно Acct который с заглавной буквы - A)
--------------

вставляем

## Eugene begin ################################

my $port = $RAD->{NAS_PORT};
my $user = $RAD->{USER_NAME};
my $status = $RAD->{ACCT_STATUS_TYPE};
my $num = 0;
my $packets = 0;
my $rule;

my $num_out = 3000 + $port * 2;
my $num_in = 3000 + $port * 2 +1;
my $bytes_out = 0;
my $bytes_in = 0;

my $num_out2 = 2000 + $port * 2;
my $num_in2 = 2000 + $port * 2 +1;
my $bytes_out2 = 0;
my $bytes_in2 = 0;

open(FW, "/sbin/ipfw sh $num_out |");
while(<FW>) {
while(<FW>) {
($num, $packets, $bytes_out, $rule)=split(/ +/, $_, 4);
}
close(FW);

open(FW, "/sbin/ipfw sh $num_in |");
while(<FW>) {
($num, $packets, $bytes_in, $rule)=split(/ +/, $_, 4);
}
close(FW);

open(FW, "/sbin/ipfw sh $num_out2 |");
while(<FW>) {
($num, $packets, $bytes_out2, $rule)=split(/ +/, $_, 4);
}
close(FW);

open(FW, "/sbin/ipfw sh $num_in2 |");
while(<FW>) {
($num, $packets, $bytes_in2, $rule)=split(/ +/, $_, 4);
}
close(FW);

$RAD->{OUTBYTE} = $bytes_out;
$RAD->{INBYTE} = $bytes_in;

$RAD->{OUTBYTE2} = $bytes_out2;
$RAD->{INBYTE2} = $bytes_in2;

#open (log1, '>>/tmp/tmp.log');
#my $time = localtime(time);
#print log1 "$time port: $port status: $status user: $user out: $bytes_out in: $bytes_in out2: $bytes_out2 in2: $bytes_in2\n";
#close (log1);

## Eugene end ##################################

будет считаться трфик для MPD по зонам (через IPFW)

правда желательно не перезагружать файрвол без надобности
иначе счетчики обнуляются
а юзеру получается халява

Eugene
Сообщения: 27
Зарегистрирован: Пн июл 17, 2006 9:26 am
Контактная информация:

Сообщение Eugene »

и не нужен EXPPP или IPN

Ck-NoSFeRaTU
Сообщения: 54
Зарегистрирован: Ср фев 20, 2008 12:17 pm
Контактная информация:

Сообщение Ck-NoSFeRaTU »

Через ipfw - это уж совсем ненадежно... А никто не задумывался о допиливании mpd на предмет поддержки внутренней считалки по зонам аля exppp?

Ответить