У меня процедуры для PPPoE и они отличаются. Сейчас приведу свои.
Radreply ничего не пишет в базу.
BEGIN
DECLARE usr_id INT;
DECLARE usr_on INT;
DECLARE usr_ip VARCHAR(15) DEFAULT NULL;
DECLARE shape INT;
DECLARE shapein INT;
SELECT id, IF(state='on',1,0) INTO usr_id, usr_on FROM users WHERE name=login LIMIT 1;
SELECT get_ip(usr_id) INTO usr_ip;
SELECT substr(tags,locate(',shape=',tags)+7)+0 INTO shape FROM users_services WHERE tags LIKE '%,shape=%' AND uid=usr_id;
IF ( shape > 6 ) THEN SET shapein=shape; ELSE SET shapein=shape; END IF;
SELECT NULL,login,'Mikrotik-Rate-Limit',CONCAT(shapein,'M/',shape,'M'),'=';
SELECT NULL,login,'Framed-IP-Address',usr_ip,'=';
SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','=';
SELECT NULL,login,'Framed-Protocol','PPP','=';
END
Этим занимается set_auth
BEGIN
DECLARE usr_id INT;
SELECT uid INTO usr_id FROM ip_pool WHERE INET_ATON(usr_ip) = ip LIMIT 1;
IF( usr_id > 0 ) THEN
INSERT INTO auth_now SET
ip = usr_ip,
properties = auth_properties,
start = UNIX_TIMESTAMP(),
last = UNIX_TIMESTAMP()
ON DUPLICATE KEY UPDATE
properties = IF(auth_properties!='',auth_properties,properties),
last = UNIX_TIMESTAMP();
UPDATE ip_pool SET `release` = UNIX_TIMESTAMP() + 300
WHERE ip = INET_ATON(usr_ip) AND type = 'dynamic' LIMIT 1;
END IF;
END
И по окончании сессии отрабатывается radstop
BEGIN
DECLARE usr_id INT;
DECLARE startses INT;
DECLARE usr_ip VARCHAR(16);
DECLARE usr_proper VARCHAR(255) DEFAULT NULL;
SELECT id INTO usr_id FROM users WHERE name=login LIMIT 1;
SELECT ip,start,properties INTO usr_ip,startses,usr_proper FROM auth_now WHERE ip = get_ip(usr_id) LIMIT 1;
INSERT INTO auth_log (`uid`,`ip`,`start`,`end`,`properties`) VALUES (usr_id,INET_ATON(usr_ip),startses,UNIX_TIMESTAMP(),usr_proper);
DELETE FROM auth_now WHERE ip = get_ip(usr_id) LIMIT 1;
END
Насколько я понял, все упирается в этот sql запрос
INSERT INTO auth_log (`uid`,`ip`,`start`,`end`,`properties`) VALUES (usr_id,INET_ATON(usr_ip),startses,UNIX_TIMESTAMP(),usr_proper);
насколько я понял, эта строка
mod=pppoe;user=F4:EC:38:F2:40:0F;nas=10.20.0.2
Находится в переменной usr_proper, как правильно в код дописать замену?