The OpenNET Project / Index page

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



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

Исходное сообщение
"Ограничение трафика по VPN"
Отправлено denn, 31-Окт-05 15:26 
>Кароче говоря - всё как всегда. Понты да пальцы. Мессаги о том,
>насколько ты крут и насколько зелен человек, задавший вопрос --- очень
>полезно и позновательно!
>Очень благодарен, спасибо!

не понятно чего ты не в своей теме флудишь...

автору темы:
http://www.bretterklieber.com/mpd/doc3/mpd20.html#20

(с уважением и благадарностью к Pizik Ilya)
"radiusd.conf (выдержки):

...
modules {
...
        perl {
            module = ${prefix}/etc/raddb/acct.pl
            func_detach = detach
            func_authorize = authorize
            func_authenticate = authenticate
            func_accounting = accounting
            func_start_accounting = start_accounting
            func_stop_accounting = stop_accounting
            func_preacct = preacct
            func_checksimul = checksimul
        }
...
}
...
#  Authorization.

authorize {
        mschap
        chap
        perl
}

#  Accounting.  Log the accounting data.
accounting {
        acct_unique
        detail
        unix            # wtmp file
        radutmp
        perl
}

#  Session database, used for checking Simultaneous-Use. Either the radutmp
#  or rlm_sql module can handle this.
#  The rlm_sql module is *much* faster
session {
    radutmp
}

соответственно определяем названия функций в модуле.

далее просто наш пример:
${prefix}/etc/raddb/acct.pl:

sub authorize {
...
# что-то выдаем

    $RAD_CHECK{'User-Password'} = $r->{'password'};

    $RAD_REPLY{'Session-Octets-Limit'} = $r->{'maxtraf'};
    $RAD_REPLY{'Session-Octets-Direction'} = '0';
    $RAD_REPLY{'Framed-IP-Address'} = $r->{'static_ip'};
    $RAD_REPLY{'Service-Type'} = 'Framed-User';
    $RAD_REPLY{'Framed-Protocol'} = 'PPP';
    $RAD_REPLY{'Session-Timeout'} = '86400';
    $RAD_REPLY{'Framed-Compression'} = 'Van-Jacobson-TCP-IP';
    $RAD_REPLY{'Framed-IP-Netmask'} = '255.255.255.255';

    # &radiusd::radlog(0, "RAD_CHECK: ".Dumper \%RAD_CHECK. " RAD_REPLY: ".Dumper \%RAD_REPLY);
    return RLM_MODULE_UPDATED;
}

sub checksimul {
    return RLM_MODULE_OK;
}

sub stop_accounting {
# Что-то делаем при отключении пользователя

    # &radiusd::radlog(0, "rlm_perl:: stop_accounting");
    &radiusd::radlog(0, sprintf("logout [%s] (octets in: %d, octets out: %d)", $RAD_REQUEST{'User-Name'},
$RAD_REQUEST{'Acct-Input-Octets'}, $RAD_REQUEST{'Acct-
Output-Octets'}));
    return RLM_MODULE_OK;
}

sub start_accounting {
    # &radiusd::radlog(0, "rlm_perl:: start_accounting");
    return RLM_MODULE_OK;
}

sub accounting {

# А вот тут можно получить из базы данные и их сравнивать или другие критерии придумать :)
    $RAD_REPLY{'Drop-User'} = 'Yes' if(($r->{'maxtraf'}-$RAD_REQUEST{'Acct-Input-Octets'}-$RAD_REQUEST{'Acct-Output-Octets'}) < 0);

    # &radiusd::radlog(0, "rlm_perl:: accounting");

    return RLM_MODULE_OK;
}

sub preacct {
    return RLM_MODULE_OK;
}

# Shutdown procedures
sub detach
{
    # &radiusd::radlog(0,"rlm_perl::Detaching. Reloading. Done.");
}"

 

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



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

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