tuneil
NoDeny
Пользователь
Карма: 0
Offline
Сообщений: 11
|
|
« Ответ #5 : 14 Февраля 2011, 10:28:09 » |
|
Клиенту назначается адрес из фейковой сети (таблица users поле ip) Дальше проверка баланса в radreply:
DROP PROCEDURE IF EXISTS `radreply`; DELIMITER $$ CREATE PROCEDURE `radreply` (IN login VARCHAR(64), IN mac VARCHAR(18), IN nas_ip VARCHAR(16)) BEGIN DECLARE usr_id INT; DECLARE usr_ip VARCHAR(16); DECLARE rate_limit INT; DECLARE rate_limit_out INT; DECLARE normal_burst INT; DECLARE normal_burst_out INT; DECLARE extended_burst INT; DECLARE extended_burst_out INT; DECLARE balance_ch INT; DECLARE lmbalance INT;
SELECT id,balance,limit_balance INTO usr_id,balance_ch,lmbalance FROM users WHERE name=login; SELECT plans2.speed,plans2.speed_out INTO rate_limit,rate_limit_out from users,plans2 where users.name=login and users.paket=plans2.id ;
IF balance_ch < lmbalance THEN SELECT ip INTO usr_ip FROM users WHERE name=login; END IF;
INSERT into dblogin (mid,act,time) VALUES (usr_id,47,unix_timestamp()); INSERT INTO usession (login,ip,mac,nas_ip,status) VALUES (login,ip,mac,nas_ip,'START'); SET rate_limit=rate_limit*1024*1024; SET rate_limit_out=rate_limit_out*1024*1024; SET normal_burst=ROUND(rate_limit*3/16); SET normal_burst_out=ROUND(rate_limit_out*3/16); SET extended_burst=2*normal_burst; SET extended_burst_out=2*normal_burst_out;
SELECT NULL,login,'Framed-IP-Address',usr_ip,'='; SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','='; SELECT NULL,login,'Framed-Protocol','PPP','='; SELECT NULL,login,'Simultaneous-Use','1',':='; IF (rate_limit>0) THEN SELECT usr_id as id,login,"mpd-limit" as Attribute,concat("out#1=all rate-limit ",rate_limit," ",normal_burst," ",extended_burst) as Value,"+=" as op; END IF; IF (rate_limit_out>0) THEN SELECT usr_id as id,login,"mpd-limit" as Attribute,concat("in#1=all rate-limit ",rate_limit_out," ",normal_burst_out," ",extended_burst_out) as Value,"+=" as op; END IF; END$$ DELIMITER;
Соответственно РРРоЕ автризация доступна всегда, просто заблоченым юзерам выдается не маршрутизируемые айпи, с переадресацией на страницу, где сообщается об отсутствии денег или нарушении (спам,флуд,учасник ботнент) Опять же, я понимаю, что корифеи програмерства меня сейчас заплюют.
Ах да, есть ещё внешний скрипт, чекает баланс каждые 5 минут по крону.
|