Boa noite pessoal,

Já postei esse mesmo esquema em outro tópico,

AQUI

fiz  algumas mudanças e achei melhor abrir outro tópico.

A lógica do script é a mesma fazer a consulta no banco do mk-auth, com o resultado da consulta cria um script para o mikrotik com login, senha, ip, mac de cada cliente,

importa o script para o mikrotik para autenticação local em caso de uma falha no mk-auth.

simplifiquei mais a consulta ao banco,

e agora tem a opção de exportar para o mikrotik só o necessário, separando os clientes por ramais, tipo de autenticação com o wireless access-list ou não.

os passos para configuração são os mesmos do outro topico, a consulta era feita assim

http://ip_do_seu_mk-auth/mikrotik/index.php?id=seu_token_unico

Agora temos outro cenário abaixo

----------

exemplo 1

ramal 1

ip do ramal 1 é: 192.168.10.100

tipo de autenticação do ramal 1 é: pppoe

wireless access-list: sim

----------

A consulta para o ramal 1 será assim:

http://ip_do_seu_mk-auth/mikrotik/index.php?id=seu_token_unico&ramal=192.168.10.100&pppoe=s&hotspot=n&wireless=s

ou seja 

pppoe=s (sim)

hotspot=n (não)

wireless=s (sim)

 

A consulta vai retornar um script apenas dos clientes com o tipo de autenticação pppoe e wireless access-list do ramal 192.168.10.100

----------

exemplo 2

ramal 2

ip do ramal 2 é: 192.168.10.200

tipo de autenticação do ramal 2 é: hotspot e pppoe

wireless access-list: não

----------

A consulta para o ramal 2 será assim:

http://ip_do_seu_mk-auth/mikrotik/index.php?id=seu_token_unico&ramal=192.168.10.200&pppoe=s&hotspot=s&wireless=n

ou seja 

pppoe=s (sim)

hotspot=s (sim)

wireless=n (não)

A consulta vai retornar um script apenas dos clientes com o tipo de autenticação pppoe e hotspot sem o pacote wireless access-list do ramal 192.168.10.200

Vamos as mudanças

qual a diferença desse método para o outro que postei?

dessa forma terá linhas do script mikrotik bem menores, se não trabalho com  wireless access-list do mikrotik então não tem necessidade de ter essas linhas no script

vou refazer o passo a passo

1º passo

baixe o arquivo mikrotik.zip

descompacte o arquivo, dentro da pasta mikrotik está o arquivo index.php,

2º passo

Envie a pasta mikrotik para o diretorio var/www do seu mk-auth

para saber se esta tudo ok, teste digitando em seu navegador

http://ip_do_seu_mk-auth/mikrotik

deve aparecer uma mensagem acesso restrito... em seguida vai redirecionar para o seu website

ai vem um segredinho! no web admin do seu mk-auth em dados da empresa o Token unico: cinco dígitos que devem ser exclusivo do seu provedor,

é usado para gerar a tabela de segurança de clientes. ele será usado aqui como id para liberar a consulta. (uma mini segurança)

altere se for necessário, porem saiba que a tabela de segurança dos clientes também sera alterada.

Agora teste digitando em seu navegador da seguinte forma

http://ip_do_seu_mk-auth/mikrotik/index.php?id=seu_token_unico&ramal=ip_do_ramal&pppoe=s&hotspot=s&wireless=s

agora sim, devem aparecer os registros dos clientes, você não vai conseguir ler porque esta sem formato html

então tente exibir o código fonte da página em seu navegador (se for o chrome Ctrl+u)

agora sim dá para entender!

3º passo

São os scripts do mikrotik

2 scripts um executa o outro, 

o que isso faz? 

importar_backup_mikrotik inicia , executa o exportar_backup_mkauth 

que faz a consulta no banco de dados do mk-auth, se a consulta foi concluida importa o resultado para files do mikrotik e executa o comando /import file-name=mikrotik.rsc

script: importar_backup_mikrotik

#===============================
# IMPORTAR BACKUP PARA O MIKROTIK
# JONAS OLIVEIRA
#===============================
# NAO ALTERAR NADA AQUI
#===============================
:global backup "false";
:execute script=exportar_backup_mkauth;
:local counter "0";
:while ( $backup != true && $counter < 5 ) do={
:set counter ($counter+1)
:delay 1s;
}
if (($backup = "true") && ([/file find name=mikrotik.rsc] != "" )) do={
/import file-name=mikrotik.rsc;
:log warning "Backup Foi Importado Com Sucesso!";
} else={
:log error "Backup Nao Foi Importado!";
};
#===============================

script: exportar_backup_mkauth

este é o único que deve alterar!

supondo que o ip do mk-auth é 172.31.255.2 e o ip do ramal onde vai rodar o script é 172.31.255.1

o token único é 12345 e eu quero todos os pacotes neste script de backup

então meu script ficaria assim:

#===============================
# EXPORTAR BACKUP MKAUTH
# JONAS OLIVEIRA
#===============================
#== IP MK-AUTH OU DOMINIO SEM http://
:global MKAUTH "172.31.255.2";
#===============================
#== ID SECRETO
:global ID "12345";
#===============================
#== IP DO RAMAL
:global RAMAL "172.31.255.1";
#== HOTPOT
:global HOTSPOT "s";
#== PPPOE
:global PPPOE "s";
#== WIRELESS
:global WIRELESS "s";
#===============================
# NAO ALTERE DAQUI PARA BAIXO
#===============================
:global backup "false";
:log warning "Iniciando Exportacao!";
/tool fetch mode=http url="http://$MKAUTH/mikrotik/index.php\?id=$ID&ramal=$RAMAL&pppoe=$PPPOE&hotspot=$HOTSPOT&wireless=$WIRELESS" src-path=index.php dst-path=mikrotik.rsc;
:set backup "true";
#===============================

Arquivo index.php

<?php
/* EXPORTAR BACKUP PARA MIKROTIK */

/* SO ALTERE O QUE FOR NECESSARIO */

# WIRELESS NIVEL DE SINAL (WIRELESS)
$mim_sinal = "78"; // Minimo nivel de sinal
$max_sinal = "120"; // Maximo nivel de sinal

# SERVIDORES DNS (PPPOE)
$dns_server1="189.38.95.95"; // GigaDNS1
$dns_server2="189.38.95.96"; // GigaDNS2

# LOCAL-ADDRES E REMOTE-ADDRESS (PPPOE)
$local_address = "Local-1"; // Geralmente Local-1
$remote_address = "Remoto-1"; // Geralmente Remoto-1

# COMENTARIO (PPPOE E HOTSPOT E WIRELESS)
$comment = "mkauth"; // Comente nas regras

# SERVIDOR HOTSPOT (HOTSPOT)
$server = "hotspot1"; // Geralmente hotspot1

/* NAO ALTERAR DAQUI PARA BAIXO */

// Mensagem de erro
$error = '<div style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; color: #cc6600; background-color: #ffffcc; margin: 7px 7px 7px 7px; border: 1px solid #CC6600; padding: 5"><p><img src="/admin/imagens/icon-atencao.png" hspace="5" vspace="5" border="0" align="right" /><strong>&nbsp;&nbsp;Aviso!</strong></p><p>&nbsp;&nbsp;acesso restrito...</p></div><meta http-equiv="refresh" content="4; url=../index.php">';

// Conexao ao banco
$hostdb = "localhost";
$userdb = "root";
$passdb = "vertrigo";
$tabledb = "mkradius";
$conecta = mysql_connect($hostdb, $userdb, $passdb) or die (mysql_error());
@mysql_select_db($tabledb, $conecta) or die (mysql_error());

# PROTEGER O ARQUIVO DE ACESSO NAO AUTORIZADO
$proteg_arq = mysql_query("SELECT token FROM `sis_provedor` WHERE 1") or die (mysql_error());
$senha_arq = mysql_fetch_assoc($proteg_arq);
if (isset($_REQUEST['id']) && ($_REQUEST['id'] != $senha_arq['token']) || ($_REQUEST['id'] == NULL) || ($_REQUEST['ramal'] == NULL)){
exit($error);
}


// Recebe os dados
$wireless=$_REQUEST['wireless'];
$hotspot=$_REQUEST['hotspot'];
$pppoe=$_REQUEST['pppoe'];
$ramal=$_REQUEST['ramal'];

// Profiles
$busca_profiles = mysql_query("SELECT radgroupreply.`groupname`, radgroupreply.`value`
FROM `radgroupreply` WHERE `attribute` = 'Mikrotik-Rate-Limit'
ORDER BY `groupname` ASC") or die (mysql_error());
$count_profiles = mysql_num_rows($busca_profiles);

// Clientes ativos nao bloqueados
$busca_clientes = mysql_query("SELECT sis_cliente.`login`, sis_cliente.`tipo`, sis_cliente.`senha`,
sis_cliente.`ip`, sis_cliente.`mac`, sis_cliente.`plano`,
sis_cliente.`ramal`
FROM `sis_cliente`
WHERE ativo2 = 's' AND `bloqueado` = 'nao' AND `ramal` = '".$ramal."'
UNION ALL
SELECT sis_adicional.`username`, sis_adicional.`tipo`, sis_adicional.`senha`,
sis_adicional.`ip`, sis_adicional.`mac`, sis_adicional.`plano`,
sis_adicional.`ramal`
FROM `sis_adicional`
WHERE `bloqueado` = 'nao' AND `ramal` = '".$ramal."'") or die (mysql_error());


// Remove profiles
if (mysql_num_rows($busca_profiles) > 0 ){
// Remove profiles pppoe
if ($pppoe == "s"){
echo'/ppp profile remove [find comment="'.$comment.'"];
';
}
// Remove profiles hotspot
if ($hotspot == "s") {
echo'/ip hotspot user profile remove [find session-timeout="23:59:00"];
';
}

// Adicionar profiles
while ($profile = mysql_fetch_array($busca_profiles)) {

// Profile pppoe
if ($pppoe == "s") {
echo'/ppp profile add name="'.$profile['groupname'].'" rate-limit="'.$profile['value'].'" use-encryption=yes local-address='.$local_address.' comment="'.$comment.'" remote-address='.$remote_address.' dns-server='.$dns_server1.','.$dns_server2.' change-tcp-mss=yes;
';
}

// Profile hotspot
if ($hotspot == "s") {
echo'/ip hotspot user profile add name="'.$profile['groupname'].'" rate-limit="'.$profile['value'].'" session-timeout="23:59:00" transparent-proxy=no;
';
}

// Fim profiles
}
}

// Remove regras antigas
if (mysql_num_rows($busca_clientes) > 0){

// Remove secret pppoe
if ($pppoe == "s"){
echo'/ppp secret remove [find comment="'.$comment.'"];
';
}

// Remove user hotspot
if ($hotspot == "s"){
echo'/ip hotspot user remove [find comment="'.$comment.'"];
';
}

// Remove wireless access-list
if ($wireless == "s"){
echo'/interface wireless access-list remove [find comment="'.$comment.'"];
';
}

// Adiciona novas regras
while ($cliente = mysql_fetch_array($busca_clientes)) {

// pppoe com ip fixo
if ($cliente['ip'] != NULL && $cliente['tipo'] == "pppoe" && $pppoe == "s") {
echo'/ppp secret add name="'.$cliente['login'].'" password="'.$cliente['senha'].'" profile="'.$cliente['plano'].'" remote-address="'.$cliente['ip'].'" caller-id="'.$cliente['mac'].'" comment="'.$comment.'" service=any disabled=yes;
';
// wireless
if ($cliente['mac'] != NULL && $wireless == "s") {
echo'/interface wireless access-list add interface=all forwarding=no authentication=yes signal-range=-'.$mim_sinal.'..'.$max_sinal.' mac-address="'.$cliente['mac'].'" disabled=yes comment='.$comment.';
';
}
}

// pppoe sem ip fixo
if ($cliente['ip'] == NULL && $cliente['tipo'] == "pppoe" && $pppoe == "s") {
echo'/ppp secret add name="'.$cliente['login'].'" password="'.$cliente['senha'].'" profile="'.$cliente['plano'].'" caller-id="'.$cliente['mac'].'" comment="'.$comment.'" service=any disabled=yes
';
// wireless
if ($cliente['mac'] != NULL && $wireless == "s") {
echo'/interface wireless access-list add interface=all forwarding=no authentication=yes signal-range=-'.$mim_sinal.'..'.$max_sinal.' mac-address="'.$cliente['mac'].'" disabled=yes comment='.$comment.';
';
}
}

// hotspot com ip fixo
if ($cliente['ip'] != NULL && $cliente['tipo'] == "hotspot" && $hotspot == "s") {
echo'/ip hotspot user add name="'.$cliente['login'].'" password="'.$cliente['senha'].'" profile="'.$cliente['plano'].'" address='.$cliente['ip'].' mac-address="'.$cliente['mac'].'" comment="'.$comment.'" disabled=yes server='.$server.';
';
// wireless
if ($cliente['mac'] != NULL && $wireless == "s") {
echo'/interface wireless access-list add interface=all forwarding=no authentication=yes signal-range=-'.$mim_sinal.'..'.$max_sinal.' mac-address="'.$cliente['mac'].'" disabled=yes comment='.$comment.';
';
}
}

// hotspot sem ip fixo
if ($cliente['ip'] == NULL && $cliente['tipo'] == "hotspot" && $hotspot == "s") {
echo'/ip hotspot user add name="'.$cliente['login'].'" password="'.$cliente['senha'].'" profile="'.$cliente['plano'].'" mac-address="'.$cliente['mac'].'" comment="'.$comment.'" disabled=yes server='.$server.';
';
// wireless
if ($cliente['mac'] != NULL && $wireless == "s") {
echo'/interface wireless access-list add interface=all forwarding=no authentication=yes signal-range=-'.$mim_sinal.'..'.$max_sinal.' mac-address="'.$cliente['mac'].'" disabled=yes comment='.$comment.';
';
}
}

// FIM
}
}
?>

script.txt

mikrotik.zip

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

Join MK-AUTH

Enviar-me um email quando as pessoas responderem –

Respostas

  • Pedro, testei aqui mas a lista de aviso e corte fica em branco. Vou deixar um print abaixo.

    Outra coisa, rodo aviso com PPPoE aqui usando algumas regras no Mikrotik, mas tenho alguns clientes que precisaria deixar fora da lista de aviso, teria alguma forma de implantar essa opção de não receber aviso na tela de cadastro dos clientes?

    1488542677?profile=RESIZE_1024x1024

    Pedro Filho disse:

    coloquei algumas url para exportar usando tool fetch, na url abaixo tem o codigo de alguns scripts, é somente abrir o terminal do mikrotik e cola os codigos, a parte com ip do mk-auth 172.31.255.2 troca-se pelo ip do seu mk-auth e key_api vc pega na pagina de dados do provedor no webadmin:

    http://www.mk-auth.com.br/tool_fetch/

    o recurso é beta para teste, se funcionar coloca aqui que está ok, mais um vez obrigado ao nosso amigo Jonas por passar a dica do tool fetch...

  • remove essa parte da url &ramal=todos e ver se funciona e no financeiro do cliente da opção para não receber pgaviso...

    Gustavo Furlan disse:

    Pedro, testei aqui mas a lista de aviso e corte fica em branco. Vou deixar um print abaixo.

    Outra coisa, rodo aviso com PPPoE aqui usando algumas regras no Mikrotik, mas tenho alguns clientes que precisaria deixar fora da lista de aviso, teria alguma forma de implantar essa opção de não receber aviso na tela de cadastro dos clientes?

    1488542677?profile=RESIZE_1024x1024

  • Opa, funcionou aqui fazendo o que disse.

    Acabei de ver a opção aqui. Era só o que faltava para deixar redondo aqui. Vlw! 

    Pedro Filho disse:

    remove essa parte da url &ramal=todos e ver se funciona e no financeiro do cliente da opção para não receber pgaviso...

  • ok, então o ramal dos seus clientes não era todos, mais faz um update manual que agora se o ramal for todos os sistema pega todos os ips de ramais...

    Gustavo Furlan disse:

    Opa, funcionou aqui fazendo o que disse.

    Acabei de ver a opção aqui. Era só o que faltava para deixar redondo aqui. Vlw! 

  • Alguém aí me da um help na exportação dos clientes:
    O meu aqui só da a mensagem de Backup Não Importado!!
    Já refiz tudo do zero e nada de resolver

    • boa noite amigo , segue a resposta lá no ultimo comentário do post

  • estou achando que alguns mikrotik não conseguem ler a url corretamente, abre no browser a url completa do mk-auth e veja o que aparece como na imagem abaixo:

    1488542677?profile=original

    Cabral Telecom disse:

    Alguém aí me da um help na exportação dos clientes:
    O meu aqui só da a mensagem de Backup Não Importado!!
    Já refiz tudo do zero e nada de resolver

  • Pedro, porque você colocou no script a linha /file remove mkt_pgaviso.rsc;?

    Com essa linha observei que o arquivo e removido e quando o script e executado novamente ele gerado porem o export só acontece na execução seguinte onde o arquivo removido novamente.

    Tem alguma finalidade essa linha?


  • Bom só se for a versão. Estava com a versão 6.20 e não rodava. Atualizei para 6.24 e fiz o teste varias vezes e esta rodando blza
    Pedro Filho disse:

    estou achando que alguns mikrotik não conseguem ler a url corretamente, abre no browser a url completa do mk-auth e veja o que aparece como na imagem abaixo:

    1488542677?profile=original

  • irá ser complicado testar todas as versões, mais aqui na 6.19 está ok...

    Cabral Telecom disse:


    Bom só se for a versão. Estava com a versão 6.20 e não rodava. Atualizei para 6.24 e fiz o teste varias vezes e esta rodando blza

This reply was deleted.