Биллинговая система Nodeny
14 Мая 2024, 14:03:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: [1] 2
  Печать  
Автор Тема: Передача параметров скорости клиента через радиус на микротик  (Прочитано 9515 раз)
traktor150
NoDeny
Пользователь
*

Карма: 4
Offline Offline

Сообщений: 38


Просмотр профиля Email
« : 13 Декабря 2009, 14:35:24 »

Доброго времени суток.
Помогите дописать процедуру
DROP PROCEDURE IF EXISTS `radreply`;
DELIMITER $$ 
CREATE PROCEDURE `radreply` (IN login VARCHAR(64))
BEGIN
  DECLARE usr_id INT; 
  DECLARE usr_ip VARCHAR(15);

  SELECT id,ip INTO usr_id,usr_ip FROM users WHERE name=login;
  INSERT into dblogin (mid,act,time) VALUES (usr_id,47,unix_timestamp());

  SELECT NULL,login,'Framed-IP-Address',usr_ip,'=';
  SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','=';
  SELECT NULL,login,'Acct-Interim-Interval','50','=';
END$$
DELIMITER ;

Задача передать на микротик еще и скорость клиента. Так вот скорость клиента хранится в таблице plans2 в таблице users поле paket указывает на тариф в котором и хранится информация о скорости клеинта. Помогите правильно составить SQL запрос чтоб получить скорость клиента.
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4782



Просмотр профиля
« Ответ #1 : 14 Декабря 2009, 14:19:04 »

select speed from plans2 where id=(select paket from users where id=24);
Записан
traktor150
NoDeny
Пользователь
*

Карма: 4
Offline Offline

Сообщений: 38


Просмотр профиля Email
« Ответ #2 : 17 Декабря 2009, 16:56:21 »

DROP PROCEDURE IF EXISTS `radreply`;
DELIMITER $$
CREATE PROCEDURE `radreply` (IN login VARCHAR(64))
BEGIN
  DECLARE usr_id INT;
  DECLARE usr_ip VARCHAR(15);
  DECLARE speed VARCHAR(15);

  SELECT id,ip INTO usr_id,usr_ip FROM users WHERE name=login;
  INSERT into dblogin (mid,act,time) VALUES (usr_id,47,unix_timestamp());
  SELECT speed from plans2 where id=(select paket from users where id=user_id);

  SELECT NULL,login,'Framed-IP-Address',usr_ip,'=';
  SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','=';
  SELECT NULL,login,'Acct-Interim-Interval','50','=';
  SELECT NULL,login,'Ascend-Data-Rate','speed','=';

END$$
DELIMITER ;

Сделал вот так. не работает скорость не режет. Где ошибка подскажите?
Записан
goletsa
NoDeny
Спец
*

Карма: 21
Offline Offline

Сообщений: 973


Просмотр профиля
« Ответ #3 : 17 Декабря 2009, 17:11:08 »

speed в кавычках?

покажите что пишет radtest

Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4782



Просмотр профиля
« Ответ #4 : 17 Декабря 2009, 17:26:16 »

speed в кавычках?
ага, здесь и ошибка
Записан
traktor150
NoDeny
Пользователь
*

Карма: 4
Offline Offline

Сообщений: 38


Просмотр профиля Email
« Ответ #5 : 17 Декабря 2009, 22:02:22 »

всеравно не работает
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4782



Просмотр профиля
« Ответ #6 : 17 Декабря 2009, 22:34:33 »

покажите что пишет radtest
Записан
traktor150
NoDeny
Пользователь
*

Карма: 4
Offline Offline

Сообщений: 38


Просмотр профиля Email
« Ответ #7 : 18 Декабря 2009, 14:30:02 »

%radtest admin 12345678 127.0.0.1 0 test
Sending Access-Request of id 38 to 127.0.0.1 port 1812
        User-Name = "admin"
        User-Password = "12345678"
        NAS-IP-Address = 255.255.255.255
        NAS-Port = 0
rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=38, length=38
        Framed-IP-Address = 192.168.70.154
        Framed-IP-Netmask = 255.255.255.255
        Acct-Interim-Interval = 50
DROP PROCEDURE IF EXISTS `radreply`;
DELIMITER $$
CREATE PROCEDURE `radreply` (IN login VARCHAR(64))
BEGIN
  DECLARE usr_id INT;
  DECLARE usr_ip VARCHAR(15);
  DECLARE speed VARCHAR(15);

  SELECT id,ip INTO usr_id,usr_ip FROM users WHERE name=login;
  INSERT into dblogin (mid,act,time) VALUES (usr_id,47,unix_timestamp());
  SELECT speed from plans2 where id=(select paket from users where id=user_id);

  SELECT NULL,login,'Framed-IP-Address',usr_ip,'=';
  SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','=';
  SELECT NULL,login,'Acct-Interim-Interval','50','=';
  SELECT NULL,login,'Ascend-Data-Rate',speed,'=';

END$$
DELIMITER ;
« Последнее редактирование: 18 Декабря 2009, 14:56:39 от traktor150 » Записан
VitalVas
NoDeny
Спец
*

Карма: 60
Offline Offline

Сообщений: 991



Просмотр профиля WWW
« Ответ #8 : 18 Декабря 2009, 19:32:03 »

те все ето в ответ приходит??
Код:
%radtest admin 12345678 127.0.0.1 0 test
Sending Access-Request of id 38 to 127.0.0.1 port 1812
        User-Name = "admin"
        User-Password = "12345678"
        NAS-IP-Address = 255.255.255.255
        NAS-Port = 0
rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=38, length=38
        Framed-IP-Address = 192.168.70.154
        Framed-IP-Netmask = 255.255.255.255
        Acct-Interim-Interval = 50
DROP PROCEDURE IF EXISTS `radreply`;
DELIMITER $$
CREATE PROCEDURE `radreply` (IN login VARCHAR(64))
BEGIN
  DECLARE usr_id INT;
  DECLARE usr_ip VARCHAR(15);
  DECLARE speed VARCHAR(15);

  SELECT id,ip INTO usr_id,usr_ip FROM users WHERE name=login;
  INSERT into dblogin (mid,act,time) VALUES (usr_id,47,unix_timestamp());
  SELECT speed from plans2 where id=(select paket from users where id=user_id);

  SELECT NULL,login,'Framed-IP-Address',usr_ip,'=';
  SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','=';
  SELECT NULL,login,'Acct-Interim-Interval','50','=';
  SELECT NULL,login,'Ascend-Data-Rate',speed,'=';

END$$
DELIMITER ;

п.с. разделяй чемто, а то получается что все ето тебе в ответ
Записан
versus
Администратор
Спец
*****

Карма: 21
Offline Offline

Сообщений: 845


44306843
Просмотр профиля WWW Email
« Ответ #9 : 19 Декабря 2009, 11:16:24 »

Код:
SELECT id,ip INTO usr_id,usr_ip FROM users WHERE name=login;
  INSERT into dblogin (mid,act,time) VALUES (usr_id,47,unix_timestamp());
  SELECT speed from plans2 where id=(select paket from users where id=user_id);

Странно, а где именно берется переменная user_id в процедуре ? Я так понимаю, что ее все таки надо назвать  usr_id, потому что если посмотреть на первый селект, то именно так называется переменная с айди пользователя.
Я понимаю что копипаст от Стаса рулит, но голова дана для того что бы думать, а не слепо копировать, что дали.
Записан
traktor150
NoDeny
Пользователь
*

Карма: 4
Offline Offline

Сообщений: 38


Просмотр профиля Email
« Ответ #10 : 19 Декабря 2009, 12:42:56 »

копипаст не рулит так как Стас ничо не давал, сам затупил. Спасибо что указали где. Исправил и теперь вот так
admin 12345678 127.0.0.1 0 test
Sending Access-Request of id 131 to 127.0.0.1 port 1812
        User-Name = "admin"
        User-Password = "12345678"
        NAS-IP-Address = 255.255.255.255
        NAS-Port = 0
rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=131, length=20

« Последнее редактирование: 19 Декабря 2009, 12:47:39 от traktor150 » Записан
stix
NoDeny
Спец
*

Карма: 72
Offline Offline

Сообщений: 1872


Nodeny Support Team

205539
Просмотр профиля
« Ответ #11 : 13 Июля 2010, 15:14:50 »

т.к. закрыли свежий топик, то продолжу тут
http://forum.nodeny.com.ua/index.php?topic=777.msg8117;boardseen#new

Код:
DROP PROCEDURE IF EXISTS `radreply`;
DELIMITER $$ 
CREATE PROCEDURE `radreply` (IN login VARCHAR(64))
BEGIN
  DECLARE usr_id INT; 
  DECLARE usr_ip VARCHAR(15);
 DECLARE usr_speed VARCHAR(15);
  SELECT id,ip INTO usr_id,usr_ip FROM users WHERE name=login;
  INSERT into dblogin (mid,act,time) VALUES (usr_id,47,unix_timestamp());
SELECT speed INTO usr_speed from plans2 where id=(select paket from users where id=usr_id);
  SELECT NULL,login,'Framed-IP-Address',usr_ip,'=';
  SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','=';
  SELECT NULL,login,'Acct-Interim-Interval','50','=';
 SELECT NULL,login,'Ascend-Data-Rate',usr_speed,'=';
END$$
DELIMITER ;
таким образом, на микротике будет создаваться динамический шейпер при работе с PPP
очень удобно для ресурсосбережения

с биллинга идет выборка целого значения, например тариф 4000
в биллинге это значение килобит, а на микротик передается значение в битах
соответственно будет шейпер в 4кбит

как правильней решить, добавить нулей в биллинг или изменить процедуру?
Записан
stix
NoDeny
Спец
*

Карма: 72
Offline Offline

Сообщений: 1872


Nodeny Support Team

205539
Просмотр профиля
« Ответ #12 : 13 Июля 2010, 15:22:41 »

а все проще простого  Веселый

Код:
DROP PROCEDURE IF EXISTS `radreply`;
DELIMITER $$ 
CREATE PROCEDURE `radreply` (IN login VARCHAR(64))
BEGIN
  DECLARE usr_id INT; 
  DECLARE usr_ip VARCHAR(15);
 DECLARE usr_speed VARCHAR(15);
  SELECT id,ip INTO usr_id,usr_ip FROM users WHERE name=login;
  INSERT into dblogin (mid,act,time) VALUES (usr_id,47,unix_timestamp());
SELECT speed * 1000 INTO usr_speed from plans2 where id=(select paket from users where id=usr_id);
  SELECT NULL,login,'Framed-IP-Address',usr_ip,'=';
  SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','=';
  SELECT NULL,login,'Acct-Interim-Interval','50','=';
 SELECT NULL,login,'Ascend-Data-Rate',usr_speed,'=';
END$$
DELIMITER ;

и получаем динамический шейпер для микротика.
часть из hw_mikrotik ответственную за добавление удаление шейперов можно вырезать.
но это касается только случаев использования PPP
Записан
goletsa
NoDeny
Спец
*

Карма: 21
Offline Offline

Сообщений: 973


Просмотр профиля
« Ответ #13 : 13 Июля 2010, 17:32:34 »

Вот только меня одного смущает SELECT ... WHERE id=(SELECT?
Вложенные запросы както неособо быстро выполняютcя мускулом.
Записан
stix
NoDeny
Спец
*

Карма: 72
Offline Offline

Сообщений: 1872


Nodeny Support Team

205539
Просмотр профиля
« Ответ #14 : 13 Июля 2010, 19:10:11 »

запрос занял 0.0010 сек

не так часто строятся ppp соединения
чаще идет выборка данных сателитом.
я планирую изменить немного на более простой алгоритм адрес-листы
Записан
Страниц: [1] 2
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!