Primeiro faça um bakcup, para se por acaso algo dê errado (já testei e funcionou, mas mesmo assim é bom se precaver)

No terminal do mk-auth, logado como root digite ou cole o seguinte conteudo:

mysql -pvertrigo [enter]

use mkradius [enter]

/*verifica se existe uma tabela temporária com esse nome e a exclui se for o caso */
drop temporary table if exists cli_ramais;
/*cria uma tabela temporária com o resultado da consulta */
create temporary table cli_ramais
/*Esta instrução retorna os dados da instrucao abaixo mais o nome do ramal*/
 (select radpost.id, radpost.username, radpost.ramal,nas.shortname from nas inner join
 /*Esta instrução retorna a dados da linha que contem a última autenticação cliente para isso utiliza o retorna da instrucao abaixo */
 (select radpostauth.id, username, ramal from radpostauth inner join
 /* Esta instrução select retorna uma tabela de uma coluna com o id do último acesso do cliente*/
 (select max(id) as id from radpostauth where reply = "Access-Accept" group by username) as postauth on radpostauth.id = postauth.id where ramal is not null) as radpost on  radpost.ramal = nas.nasname);

/*verifica se existe uma tabela temporária com esse nome e a exclui se for o caso */
drop temporary table if exists tmp_radcheck;

/*cria uma tabela temporária com o resultado da consulta */
create temporary table tmp_radcheck
(select idcliente,login, username from radcheck where attribute = "Password" and tipo = "log" and username <> value group by username);

/*Altera o nome do ramal que o cliente autenticou por na tabela sis_cliente utilizando os dados da tabela temporária criada*/            
update sis_cliente, cli_ramais set sis_cliente.ramal = shortname where cli_ramais.username = sis_cliente.login;

/*Apaga todas as informacoes de ramal que estiver na tabela e autenticação para poder inserir o último que o cliente autenticou*/
delete from radcheck where attribute = "NAS-IP-Address" and username in (select username from cli_ramais);

/*Utiliza os dados da tabela temporária para definir o ramal que o cliente poderá autenticar */
insert into radcheck (username, attribute, op, value, ativo, ativo2, login, idcliente, tipo)
select cli_ramais.username, "Nas-IP-Address" as atributo, "==" as opr, cli_ramais.ramal, "s" as ativo, "s" as ativo2, tmp_radcheck.login, tmp_radcheck.idcliente, "log" as tipo from cli_ramais left join tmp_radcheck on cli_ramais.username = tmp_radcheck.username;

Para adicionar comentários, você deve ser membro de MK-AUTH.

Join MK-AUTH

Enviar-me um email quando as pessoas responderem –

Respostas

  • legal, Jossy vc tem algo amigo que caso o cliente remova o ramal e deseje pegar novamente um ramal, ele não use mais o ramal anterior, estava precisando algo do tipo para usar com o auto ip e automac...

  • Pedro,

    talvez seja interessante colocar um campo de refencia com o id da autenticação que forneceu o mac ou ip e só pegar novagemente se a informação for provieniente de uma autenticacao com id maior

    Pedro Filho disse:

    legal, Jossy vc tem algo amigo que caso o cliente remova o ramal e deseje pegar novamente um ramal, ele não use mais o ramal anterior, estava precisando algo do tipo para usar com o auto ip e automac...

This reply was deleted.