Биллинговая система Nodeny

Главная категория => Nodeny Plus => Тема начата: sergey104 от 21 Июня 2018, 15:04:22



Название: маки абонентов PPPoE
Отправлено: sergey104 от 21 Июня 2018, 15:04:22
Добрый день, для userside нам необходимо чтобы маки абонентов PPPoE сохранялись в таблице mac_uid. Есть ли такая возможность?


Название: Re: маки абонентов PPPoE
Отправлено: Efendy от 21 Июня 2018, 15:13:25
А в чем сложность? В конфиге радиуса call radreply('%{User-Name}', '%{Calling-Station-Id}')
 - Calling-Station-Id по идее мак, ну если не мак, то поставить нужный атрибут.
Изменяешь процедуру radreply:

CREATE PROCEDURE `radreply` (IN login VARCHAR(64), IN usr_mac VARCHAR(64))
...
INSERT INTO mac_uid SET mac=usr_mac,
                uid=usr_id, device_mac='', device_port='', ip=INET_ATON(usr_ip), time=UNIX_TIMESTAMP()
             ON DUPLICATE KEY UPDATE
                uid=usr_id, device_mac='', device_port='', ip=INET_ATON(usr_ip), time=UNIX_TIMESTAMP();


Название: Re: маки абонентов PPPoE
Отправлено: sergey104 от 21 Июня 2018, 16:24:22
сделали, появилась ошибка в логах радиуса

Thu Jun 21 17:23:06 2018 : ERROR: (15679) sql: ERROR: rlm_sql_mysql: ERROR 1366 (Incorrect integer value: '' for column 'device_port' at row 1): HY000




Название: Re: маки абонентов PPPoE
Отправлено: sergey104 от 21 Июня 2018, 16:32:31
процедура выглядит после правок так:
Код:
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `radreply`(IN login VARCHAR(64), tag VARCHAR(64), IN usr_mac VARCHAR(64))
BEGIN
  DECLARE usr_id INT;
  DECLARE usr_ip VARCHAR(15) DEFAULT NULL;

  SELECT id INTO usr_id FROM users WHERE name=login LIMIT 1;
  SELECT get_ip_by_tag(usr_id, tag) INTO usr_ip;
  CALL set_auth(usr_ip, 'mod=pppoe;');

  SELECT NULL,login,'Framed-IP-Address',usr_ip,'=';
  SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','=';
  SELECT NULL,login,'Framed-Protocol','PPP','=';


    INSERT INTO mac_uid SET mac=usr_mac,
                uid=usr_id, device_mac='', device_port='', ip=INET_ATON(usr_ip), time=UNIX_TIMESTAMP()
    ON DUPLICATE KEY UPDATE
                uid=usr_id, device_mac='', device_port='', ip=INET_ATON(usr_ip), time=UNIX_TIMESTAMP();
END ;;
DELIMITER
;



Название: Re: маки абонентов PPPoE
Отправлено: sergey104 от 25 Июня 2018, 14:11:56
ошибка ушла после изменения
Код:
device_port='' 
на
Код:
device_port='0'

и функционал заработал