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

  • esse tool fetch irá ajuda a resolver muita coisa no mk-auth, vlw amigo...

  • Com certeza  Pedro Filho, já faço muita coisa aqui com essa ferramenta. 

    as páginas de aviso, bloqueio e manutenção com address-list.

    setar o plano 15 sem precisar derrubar a sessão do cliente.

    e outras particularidades aqui.

    Qualquer coisa... estou a disposição! 



    Pedro Filho disse:

    esse tool fetch irá ajuda a resolver muita coisa no mk-auth, vlw amigo...

  • Bom dia amigao, esse script importa todos os clientes hotspot e pppoe? No meu caso aqui, quando o mk-auth trava ou fica off, o pppoe nao ativa de jeito nenhum... Tenho que fazer manualmente. Ele faz essa ativacao automatica? Grato
  • Caraca essa ferramenta eu ainda nao conhecia /tool fetch consegui fazer ele enviar SMS via torpedus...

    procurava uma forma de enviar SMS pelo mikrotik sem ter que plugar um modem nele, agora eh possivel...

    OBRIGADO por compartilhar seu conhecimento...

  • rapais so ainda nao consegui enviar a mensagem com "espaços" so vai com "." ou tudo junto...

    /tool fetch mode=http url="http://torpedus.com.br/sms/index.php\?app=webservices&u=AquiSeuLogin&p=AquiSuaSenha&ta=pv&to=SeuNumerCelularCom55&msg=MensagemAquiSemEspaços" dst-path=SMS;

    delay delay-time=1; /file remove [find name="SMS"];

    funcionou direitinho to tentando descobrir um jeito de colocar "espaços" na mensagem...

    se alguem souber e quiser nos ajudar...



    Wanderlei Filomeno disse:

    Amigo, como voce consegui enviar sms pelo MK usando a conta do torpedus?

    Poste seu script ai para vermos como é.

    Valeu!

  • Não uso o tool fetch mikrotik com essa finalidade mais é possível fazer muita coisa com essa ferramenta, no caso do "espaço" na mensagem tenta fazer assim no lugar do espaço coloca %20

    exemplo:

    /tool fetch mode=http url="http://torpedus.com.br/sms/index.php\?app=webservices&u=AquiSeuLogin&p=AquiSuaSenha&ta=pv&to=SeuNumerCelularCom55&msg=minha%20mensagem%20com%20espaço" dst-path=SMS;

    delay delay-time=1; /file remove [find name="SMS"];



    Fernando Assis de Almeida Hubner disse:

    rapais so ainda nao consegui enviar a mensagem com "espaços" so vai com "." ou tudo junto...

    /tool fetch mode=http url="http://torpedus.com.br/sms/index.php\?app=webservices&u=AquiSeuLogin&p=AquiSuaSenha&ta=pv&to=SeuNumerCelularCom55&msg=MensagemAquiSemEspaços" dst-path=SMS;

    delay delay-time=1; /file remove [find name="SMS"];

    funcionou direitinho to tentando descobrir um jeito de colocar "espaços" na mensagem...

    se alguem souber e quiser nos ajudar...

  • Certinho..

    Aí quem for usar, só colocar %20 no lugar dos "espaços" somente na mensagem...

    Obrigado Jonas...



    jonas oliveira da silva disse:

    Não uso o tool fetch mikrotik com essa finalidade mais é possível fazer muita coisa com essa ferramenta, no caso do "espaço" na mensagem tenta fazer assim no lugar do espaço coloca %20

    exemplo:

    /tool fetch mode=http url="http://torpedus.com.br/sms/index.php\?app=webservices&u=AquiSeuLogin&p=AquiSuaSenha&ta=pv&to=SeuNumerCelularCom55&msg=minha%20mensagem%20com%20espaço" dst-path=SMS;

    delay delay-time=1; /file remove [find name="SMS"];

  • O meu fiz tudo conforme voce explicou e nao deu certo, aparece: "Backup nao foi importado" eu acesso a url da pasta do mikrotik e me apresenta os dados dos clientes normal, o index.php eu copiei esse que ta no post, pode me ajudar?

  • Natan, estou tendo o mesmo problema que você: "Backup nao foi importado" como você procedeu para resolver?

  • Cara era o arquivo php, copia o que ta no post entra e modifica pois o anexado nao da certo.

This reply was deleted.