Перейти к содержимому
Калькуляторы

mpd-drop-user нигде нет конкретной инфы - вот как решил я.

Перерыл и-нет, нигде нет конкретного решения. Где-то предлагают исходники радиуса править, где-то через доп. скрипт и т.д.

 

Пришлось заняться вопросом самому, оказалось все проще некуда, но инфы мало, поэтому выклыдваю тут решение:

Поднял все на FreeRadius 2.

Для выдачи ответа на аккаунтинг запрос, достаточно всего лишь в конфиге добавить пару для ответа. Там же можно и проверку условий, да еще и на sql запрос.

 

Вот примерно вот так:

 

В раздел accounting {

 

        if("%{sql_traf:SELECT balans FROM `users` WHERE namev='%{User-Name}'}" < 0){
        sql_traf
        update reply {
                mpd-drop-user = 1
        }   
        }
         
        if("%{sql_traf:SELECT mpddropuser FROM `users` WHERE namev='%{User-Name}'}" == 1){
        sql_traf
        update reply {
                mpd-drop-user = 1
        }      
        %{sql_traf:update users set mpddropuser=0 WHERE namev='%{User-Name}'}
        }

 

Первый запрос проверяет баланс, при отрицательном шлет ответ mpd на разрыв сессии, второй проверяет флаг в базе на разрыв сессии, есть есть, разрывает и меняет этот флаг.

 

sql_traf - описание коннекта к базе билиннга с другими правами, нежели радиус.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот как Я делал)))

 

ЗЫ:

Вообще скидывать не правильно - лучше редиректить на страницу где-бы говорилось, что счёт заблокирован)))

Кстати очень легко делается

Изменено пользователем weldpua2008

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Мне кажется мой вариант попроще...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Мне кажется мой вариант попроще...
Зайдите в Тех поддержку, там "их" любят за 691 - из-за не возможности авторизоваться)))
Я один считаю, что проще всего - PoD?
http://forum.nag.ru/forum/index.php?s=&amp...st&p=526977

CoA не работает, ну вернее не так как хотелось бы)))

PoD+CoA надо "внедрять", не всем подойдёт)))

 

ЗЫ:

И зачем откидывать пользователей?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Использую на конец денег (по любым причинам, если в минус попал) и на изменение тарифа, легкче переконнектить пользователя...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот примерно вот так:

 

...

 

Странно, но перерыв пол-интернета, нашел единственную вменяемую тему - вот эту вот. Спасибо большое за информацию.

 

Правда, сразу у меня это не заработало. Радиус не понимает дробных чисел, и когда сделал, как в приведенном примере, он правильно распознает ответ от sql сервера, например -1, но при сравнении -1 < 0 почему-то выдает FALSE и пользователя не сбрасывает.

 

В общем, написал вьюшку для postgresql и конфигурацию упростил еще сильнее, после этого заработало.

 

Вот какой конфиг у меня был:

 

accounting {

detail

sql

}

 

а вот какой стал:

 

accounting {

detail

sql

if("%{sql:select drop from radius_drop where username='%{User-Name}'}"){

update reply {

mpd-drop-user = 1

}

}

}

 

Вьюшка radius_drop выдает 1, если пользователь заблокирован, или у него отрицательный баланс, и 0 во всех остальных случаях.

 

create or replace view radius_drop as select username,case when blocked='t' or (purse_ue+credit) < 0 then 1 else 0 end as drop from contracts;

 

Имя возвращаемого поля значения не имеет, радиус смотрит только на значение.

 

При отладке радиус надо запускать командой radiusd -X, в выводе будет все необходимое.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.