Bom dia pessoal!

tive algumas dificuldades com o arquivo mikrotik.rsc enviado por ftp.

meu problema é: o arquivo é muito grande devido a quantidade de clientes e na hora de importar trava. mesmo em RouterBoard 1100 AHx2,

Mas vamos lá, a forma de envio do mk-auth por ftp tem seu pontos negativos!

primeiramente a forma de configuração!

o intervalo de rotina no mk-auth para gerar o arquivo!

e o maior problema é justamente esse, muitos clientes ou seja o arquivo fica muito grande

e como não tem uma ordem padrão na hora de importar ele executa tudo de uma só vez, ai haja processador pra segurar a onda!

e outros que não vou citar,

Dai então estudei um pouco aqui e desenvolvi um forma dinâmica e eficiente, sugiro até o "Pedro implantar no sistema nos próximos updates"

não precisa de ftp ou outro protocolo de envio,

vai recebe os registros de clientes atualizados no mesmo instante ou seja não preciso esperar a rotina cron do mk-auth

e como eu gosto de compartilhar conhecimento na medida que tenho tempo aqui,

Vou explicar um pouco como funciona para não haver duvidas!

Criei um arquivo php que faz a consulta por clientes no banco mkradius e retorna login, mac, senha e plano de cada cliente.

dai ele imprime na ordem de script mikrotik.

ai vem  o pulo do gato! o próprio mikrotik é quem vai fazer a consulta com o comando "/tool fetch" e por sua vez salvar o resultado em files com o nome mikrotik.rsc depois é só executar no mikrotik o comando import mikrotik.rsc e pronto! clientes foram exportados do mk-auth e importados no mikrotik.

Uma dica! usei esse mesmo esquema para importar os clientes de avisos "pgaviso" isso vai ficar para a próxima!

vamos ao passo a passo!

1º passo

baixe o arquivo mikrotik.zip

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

Explicando o index.php:

é apenas uma consulta no banco mkradius por login e login adicional de clientes ativos não bloqueados e com mac-address cadastrados

lógica da consulta:

clientes ativos ok!

clientes bloqueados não! o registro de clientes exportados do mk-auth só será ativado no mikrotik se o mk-auth estiver fora do funcionamento, então não tem como mostrar página de bloqueio para clientes bloqueados por isso eles ficarão fora do arquivo mikrotik.rsc

clientes sem mac-address cadastrados não! nem preciso explicar, mas se convém (dá erro na hora de importar no mikrotik)

Funciona para pppoe e hotspot?

sim funciona para os dois casos, se o tipo de autenticação é pppoe não é preciso alterar a parte hotspot ou se o tipo de autenticação é hotspot não é preciso alterar a parte pppoe.

Para o access-list wireless tem opção de colocar o nível de sinal minimo e máximo

Para pppoe tem a opção de colocar dois servidores dns de sua preferencia

Para um registro (tamanho do arquivo) muito grande tem a opção de colocar um delay no script mikrotik, pode ser segundos ou milissegundos, assim o mikrotik não corre o risco de travar durante a importação do arquivo. (meu caso).

se o registro é pequeno em média 300 clientes ou menos no arquivo, pode deixar o delay em "0".

(isso também vai depender do hardware mikrotik)

o arquivo index.php contem essas linhas abaixo que são nada mais que algumas particularidades!

procure essas linha e altere só o que é necessário.

#############################################################
// Edite so o que eh 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)
$comment = "mkauth"; // Comente nas regras

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

# INTERVALO PARA EXECUCAO DE CADA LINHA DE COMANDO
$delay = "0.2"; // E ideal para um caso de muitos clientes, evita mikrotik 100% cpu overload, pode ser intervalo em segundos ex: "0" (s) ou milissegundos ex: "0.9" (ms)

############# NAO ALTERE DAQUI PARA BAIXO ##################

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

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

No script mikrotik: exportar_clientes_mkauth

Apenas ele você deve editar nas linhas

:global MKAUTH "172.31.255.2"; coloque o ip do seu mk-auth ou domínio sem o http://

:global ID "12345"; o seu Token unico

ex:

#===============================

#== IP MK-AUTH OU DOMINIO SEM http://
:global MKAUTH "172.31.255.2";
#===============================
#== ID SECRETO
:global ID "12345";
#===============================

Espero que gostem! um abraço a todos e fiquem com Deus!

Segue os scripts abaixo:

1º Script mikortik:

nome: importar_clientes_mikrotik

#===============================
# IMPORTAR CLIENTES MIKROTIK
# JONAS OLIVEIRA
#===============================
# NAO ALTERAR NADA AQUI
#===============================
:global done "";
:set done "false";
:execute script=exportar_clientes_mkauth;
:local counter "0";
:while ( $done != true && $counter < 5 ) do={
:set counter ($counter+1)
:delay 1s;
}
if (($done = "true") && ([/file find name=mikrotik.rsc] != "" )) do={
/import file-name=mikrotik.rsc;
:log warning "Clientes Importados Com Sucesso!";
} else={
:log warning "Clientes Nao Foram Importados!";
};
#===============================

2º Script mikortik:

nome: exportar_clientes_mkauth

#===============================
# EXPORTAR CLIENTES MKAUTH
# JONAS OLIVEIRA
#===============================
#== IP MK-AUTH OU DOMINIO SEM http://
:global MKAUTH "172.31.255.2";
#===============================
#== ID SECRETO
:global ID "12345";
#===============================
:global done "";
:log warning "Iniciando Exportacao!";
/tool fetch mode=http url="http://$MKAUTH/mikrotik/index.php\?id=$ID" src-path=index.php dst-path=mikrotik.rsc;
:set done "true";
#===============================

Agendamentos mikrotik

para cada 2 horas

/system scheduler
add disabled=yes interval=2h name=importar_clientes_mkauth on-event=":execute script=importar_clientes_mikrotik;" policy=\
ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api start-time=startup

para as 23:59 da noite

/system scheduler
add disabled=yes interval=23h59m name=importar_clientes_mkauth on-event=":execute script=importar_clientes_mikrotik;" policy=\
ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api start-date=jul/19/2014 start-time=07:00:00

index.php

<?php
#############################################################
// EXPORTAR REGISTROS MK-AUTH E IMPORTAR NO MIKROTIK
// ************** JONAS OLIVEIRA *******************
// jonasoliveira11@hotmail.com
#############################################################
// Edite so o que eh 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)
$comment = "mkauth"; // Comente nas regras

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

# INTERVALO PARA EXECUCAO DE CADA LINHA DE COMANDO
$delay = "0.2"; // E ideal para um caso de muitos clientes, evita mikrotik 100% cpu overload, pode ser intervalo em segundos ex: "0" (s) ou milissegundos ex: "0.9" (ms)

############# NAO ALTERE DAQUI PARA BAIXO ##################

// Mensagens de erro
$msg[0] = "Conex&atilde;o com o banco falhou!";
$msg[1] = "N&atilde;o foi poss&iacute;vel selecionar tabela radgroupreply!";
$msg[2] = "N&atilde;o foi poss&iacute;vel selecionar tabela sis_cliente!";
$msg[3] = "N&atilde;o foi poss&iacute;vel selecionar tabela sis_adicional!";
$msg[4] = "N&atilde;o foi poss&iacute;vel selecionar tabela sis_provedor!";

$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>';

// 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 ($msg[0]);

# PROTEGER O ARQUIVO DE ACESSO NAO AUTORIZADO
$proteg_arq = mysql_query("SELECT token FROM `sis_provedor` WHERE 1")or die($msg[4]);
$senha_arq = mysql_fetch_assoc($proteg_arq);
if (isset($_REQUEST['id']) && ($_REQUEST['id'] != $senha_arq['token']) || ($_REQUEST['id'] == null)){
echo $error . '<meta http-equiv="refresh" content="4; url=../index.php">';
}else{

// Profile hotspot
$busca_profile_hs = mysql_query("SELECT * FROM `radgroupreply` WHERE attribute = 'Mikrotik-Rate-Limit' ORDER BY groupname ASC")or die($msg[1]);
$count_profile_hs = mysql_num_rows($busca_profile_hs);

// Profile pppoe
$busca_profile_ppp = mysql_query("SELECT * FROM `radgroupreply` WHERE attribute = 'Mikrotik-Rate-Limit' ORDER BY groupname ASC")or die($msg[1]);
$count_profile_ppp = mysql_num_rows($busca_profile_ppp);

// Cliente hotspot
$busca_cliente_hs = mysql_query("SELECT * FROM `sis_cliente` WHERE ativo = 's' AND ativo2 = 's' AND tipo = 'hotspot' AND bloqueado = 'nao' AND ip IS NULL
AND mac IS NOT NULL ORDER BY login")or die($msg[2]);
$count_cliente_hs = mysql_num_rows($busca_cliente_hs);

// Cliente hotspot ip fixo
$busca_cliente_ip_hs = mysql_query("SELECT * FROM `sis_cliente` WHERE ativo = 's' AND ativo2 = 's' AND tipo = 'hotspot' AND bloqueado = 'nao' AND ip IS NOT NULL
AND mac IS NOT NULL ORDER BY login")or die($msg[2]);
$count_cliente_ip_hs = mysql_num_rows($busca_cliente_ip_hs);

// Cliente adicional hotspot
$busca_adicional_hs = mysql_query("SELECT * FROM `sis_adicional` WHERE tipo = 'hotspot' AND bloqueado = 'nao' AND ip IS NULL AND mac IS NOT NULL
ORDER BY login")or die($msg[3]);
$count_adicional_hs = mysql_num_rows($busca_adicional_hs);

// Cliente adicional hotspot ip fixo
$busca_adicional_ip_hs = mysql_query("SELECT * FROM `sis_adicional` WHERE tipo = 'hotspot' AND bloqueado = 'nao' AND ip IS NOT NULL AND mac IS NOT NULL
ORDER BY login")or die($msg[3]);
$count_adicional_ip_hs = mysql_num_rows($busca_adicional_ip_hs);

// Cliente pppoe
$busca_cliente_ppp = mysql_query("SELECT * FROM `sis_cliente` WHERE ativo = 's' AND ativo2 = 's' AND tipo = 'pppoe' AND bloqueado = 'nao' AND ip IS NULL
AND mac IS NOT NULL ORDER BY login")or die($msg[2]);
$count_cliente_ppp = mysql_num_rows($busca_cliente_ppp);

// Cliente adicional pppoe
$busca_adicional_ppp = mysql_query("SELECT * FROM `sis_adicional` WHERE tipo = 'pppoe' AND bloqueado = 'nao' AND ip IS NULL AND mac IS NOT NULL
ORDER BY login")or die($msg[3]);
$count_adicional_ppp = mysql_num_rows($busca_adicional_ppp);

// Cliente pppoe ip fixo
$busca_cliente_ip_ppp = mysql_query("SELECT * FROM `sis_cliente` WHERE ativo = 's' AND ativo2 = 's' AND tipo = 'pppoe' AND bloqueado = 'nao'
AND mac IS NOT NULL AND ip IS NOT NULL ORDER BY login")or die($msg[2]);
$count_cliente_ip_ppp = mysql_num_rows($busca_cliente_ip_ppp);

// Cliente adicional pppoe ip fixo
$busca_adicional_ip_ppp = mysql_query("SELECT * FROM `sis_adicional` WHERE tipo = 'pppoe' AND bloqueado = 'nao' AND mac IS NOT NULL
AND ip IS NOT NULL ORDER BY login")or die($msg[3]);
$count_adicional_ip_ppp = mysql_num_rows($busca_adicional_ip_ppp);

// Cliente para wireless access-list
$busca_cliente_wifi = mysql_query("SELECT * FROM `sis_cliente` WHERE ativo = 's' AND ativo2 = 's' AND bloqueado = 'nao'
AND mac IS NOT NULL ORDER BY login")or die($msg[2]);
$count_cliente_wifi = mysql_num_rows($busca_cliente_wifi);

// Cliente adicional para wireless access-list
$busca_adicional_wifi = mysql_query("SELECT * FROM `sis_adicional` WHERE bloqueado = 'nao'
AND mac IS NOT NULL ORDER BY login")or die($msg[3]);
$count_adicional_wifi = mysql_num_rows($busca_adicional_wifi);
}

// Remove wireless access-list
if ($count_cliente_wifi != 0){
echo'/interface wireless access-list remove [find comment="'.$comment.'"];
:delay '.$delay.'s;
/interface wireless access-list
';
// Adiciona wireless access-list
while($cliente_wifi=mysql_fetch_array($busca_cliente_wifi)) {
echo'add interface=all forwarding=no authentication=yes signal-range=-'.$mim_sinal.'..'.$max_sinal.' mac-address="'.$cliente_wifi['mac'].'" disabled=yes comment='.$comment.'
:delay '.$delay.'s;
';
}
}
// Adiciona adicional wireless access-list
if ($count_adicional_wifi != 0){
while($adicional_wifi=mysql_fetch_array($busca_adicional_wifi)) {
echo'add interface=all forwarding=no authentication=yes signal-range=-'.$mim_sinal.'..'.$max_sinal.' mac-address="'.$adicional_wifi['mac'].'" disabled=yes comment='.$comment.'
:delay '.$delay.'s;
';
}
}
// Remove profiles hotspot
if ($count_profile_hs != 0){
echo'/ip hotspot user profile remove [find session-timeout="23:59:00"];
:delay '.$delay.'s;
';
// Adiciona novo profile hotspot
while($profile_hs=mysql_fetch_array($busca_profile_hs)) {
echo'/ip hotspot user profile add name="'.$profile_hs['groupname'].'" rate-limit="'.$profile_hs['value'].'" session-timeout="23:59:00" transparent-proxy=no
:delay '.$delay.'s;
';
}
}
// Remove user hotspot
if ($count_cliente_hs != 0){
echo'/ip hotspot user remove [find comment="'.$comment.'"];
:delay '.$delay.'s;
/ip hotspot user
';
// Adiciona user hotspot
while($login_cliente_hs=mysql_fetch_array($busca_cliente_hs)) {
echo'add name="'.$login_cliente_hs['login'].'" password="'.$login_cliente_hs['senha'].'" profile="'.$login_cliente_hs['plano'].'" mac-address="'.$login_cliente_hs['mac'].'" comment="'.$comment.'" disabled=yes server='.$server.'
:delay '.$delay.'s;
';
}
}
// Adiciona login adicional user hotspot
if ($count_adicional_hs != 0){
while($login_adicional_hs=mysql_fetch_array($busca_adicional_hs)) {
echo'add name="'.$login_adicional_hs['username'].'" password="'.$login_adicional_hs['senha'].'" profile="'.$login_adicional_hs['plano'].'" mac-address="'.$login_adicional_hs['mac'].'" comment="'.$comment.'" disabled=yes server='.$server.'
:delay '.$delay.'s;
';
}
}
// Adiciona user hotspot ip fixo
if ($count_cliente_ip_hs != 0){
while($login_cliente_ip_hs=mysql_fetch_array($busca_cliente_ip_hs)) {
echo'add name="'.$login_cliente_ip_hs['login'].'" password="'.$login_cliente_ip_hs['senha'].'" profile="'.$login_cliente_ip_hs['plano'].'" address='.$login_cliente_ip_hs['ip'].' mac-address="'.$login_cliente_ip_hs['mac'].'" comment="'.$comment.'" disabled=yes server='.$server.'
:delay '.$delay.'s;
';
}
}
// Adiciona login adicional hotspot ip fixo
if ($count_adicional_ip_hs != 0){
while($login_adicional_ip_hs=mysql_fetch_array($busca_adicional_ip_hs)) {
echo'add name="'.$login_adicional_ip_hs['username'].'" password="'.$login_adicional_ip_hs['senha'].'" profile="'.$login_adicional_ip_hs['plano'].'" address='.$login_adicional_ip_hs['ip'].' mac-address="'.$login_adicional_ip_hs['mac'].'" comment="'.$comment.'" disabled=yes server='.$server.'
:delay '.$delay.'s;
';
}
}
// Remove profiles pppoe
if ($count_profile_ppp != 0){
echo'/ppp profile remove [find comment="'.$comment.'"];
:delay '.$delay.'s;
';
// Adiciona novo profile pppoe
while($profile_ppp=mysql_fetch_array($busca_profile_ppp)) {
echo'/ppp profile add name="'.$profile_ppp['groupname'].'" rate-limit="'.$profile_ppp['value'].'" use-encryption=yes local-address='.$local_address.' comment="'.$comment.'" remote-address='.$remote_address.' dns-server='.$dns_server1.','.$dns_server2.' change-tcp-mss=yes
:delay '.$delay.'s;
';
}
}
// Remove secret pppoe
if ($count_cliente_ppp != 0){
echo'/ppp secret remove [find comment="'.$comment.'"];
:delay '.$delay.'s;
/ppp secret
';
// Adiciona secret pppoe
while($login_cliente_ppp=mysql_fetch_array($busca_cliente_ppp)) {
echo'add name="'.$login_cliente_ppp['login'].'" password="'.$login_cliente_ppp['senha'].'" profile="'.$login_cliente_ppp['plano'].'" caller-id="'.$login_cliente_ppp['mac'].'" comment="'.$comment.'" service=any disabled=yes
:delay '.$delay.'s;
';
}
}
// Adiciona login adicional secret ppp
if($count_adicional_ppp != 0){
while($login_adicional_ppp=mysql_fetch_array($busca_adicional_ppp)) {
echo'add name="'.$login_adicional_ppp['username'].'" password="'.$login_adicional_ppp['senha'].'" profile="'.$login_adicional_ppp['plano'].'" caller-id="'.$login_adicional_ppp['mac'].'" comment="'.$comment.'" service=any disabled=yes
:delay '.$delay.'s;
';
}
}
// Adiciona secret ppp ip fixo
if($count_cliente_ip_ppp != 0){
while($login_cliente_ip_ppp=mysql_fetch_array($busca_cliente_ip_ppp)) {
echo'add name="'.$login_cliente_ip_ppp['login'].'" password="'.$login_cliente_ip_ppp['senha'].'" profile="'.$login_cliente_ip_ppp['plano'].'" remote-address="'.$login_cliente_ip_ppp['ip'].'" caller-id="'.$login_cliente_ip_ppp['mac'].'" comment="'.$comment.'" service=any disabled=yes
:delay '.$delay.'s;
';
}
}
// Adiciona login adicional secret ppp ip fixo
if ($count_adicional_ip_ppp != 0){
while($login_adicional_ip_ppp=mysql_fetch_array($busca_adicional_ip_ppp)) {
echo'add name="'.$login_adicional_ip_ppp['username'].'" password="'.$login_adicional_ip_ppp['senha'].'" profile="'.$login_adicional_ip_ppp['plano'].'" remote-address="'.$login_adicional_ip_ppp['ip'].'" caller-id="'.$login_adicional_ip_ppp['mac'].'" comment="'.$comment.'" service=any disabled=yes
:delay '.$delay.'s;
';
}
}
?>

Aqui vai o index.php sem configuração wireless

<?php
#############################################################
// EXPORTAR REGISTROS MK-AUTH E IMPORTAR NO MIKROTIK
// ************** JONAS OLIVEIRA *******************
// jonasoliveira11@hotmail.com
#############################################################
// Edite so o que eh necessario

# 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)
$comment = "mkauth"; // Comente nas regras
# SERVIDOR HOTSPOT (HOTSPOT)
$server = "hotspot1"; // Geralmente hotspot1
# INTERVALO PARA EXECUCAO DE CADA LINHA DE COMANDO
$delay = "0.2"; // E ideal para um caso de muitos clientes, evita mikrotik 100% cpu overload, pode ser intervalo em segundos ex: "0" (s) ou milissegundos ex: "0.9" (ms)
############# NAO ALTERE DAQUI PARA BAIXO ##################
// Mensagens de erro
$msg[0] = "Conex&atilde;o com o banco falhou!";
$msg[1] = "N&atilde;o foi poss&iacute;vel selecionar tabela radgroupreply!";
$msg[2] = "N&atilde;o foi poss&iacute;vel selecionar tabela sis_cliente!";
$msg[3] = "N&atilde;o foi poss&iacute;vel selecionar tabela sis_adicional!";
$msg[4] = "N&atilde;o foi poss&iacute;vel selecionar tabela sis_provedor!";
$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>';
// 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 ($msg[0]);
# PROTEGER O ARQUIVO DE ACESSO NAO AUTORIZADO
$proteg_arq = mysql_query("SELECT token FROM `sis_provedor` WHERE 1")or die($msg[4]);
$senha_arq = mysql_fetch_assoc($proteg_arq);
if (isset($_REQUEST['id']) && ($_REQUEST['id'] != $senha_arq['token']) || ($_REQUEST['id'] == null)){
echo $error . '<meta http-equiv="refresh" content="4; url=../index.php">';
}else{
// Profile hotspot
$busca_profile_hs = mysql_query("SELECT * FROM `radgroupreply` WHERE attribute = 'Mikrotik-Rate-Limit' ORDER BY groupname ASC")or die($msg[1]);
$count_profile_hs = mysql_num_rows($busca_profile_hs);

// Profile pppoe
$busca_profile_ppp = mysql_query("SELECT * FROM `radgroupreply` WHERE attribute = 'Mikrotik-Rate-Limit' ORDER BY groupname ASC")or die($msg[1]);
$count_profile_ppp = mysql_num_rows($busca_profile_ppp);

// Cliente hotspot
$busca_cliente_hs = mysql_query("SELECT * FROM `sis_cliente` WHERE ativo = 's' AND ativo2 = 's' AND tipo = 'hotspot' AND bloqueado = 'nao' AND ip IS NULL
AND mac IS NOT NULL ORDER BY login")or die($msg[2]);
$count_cliente_hs = mysql_num_rows($busca_cliente_hs);

// Cliente hotspot ip fixo
$busca_cliente_ip_hs = mysql_query("SELECT * FROM `sis_cliente` WHERE ativo = 's' AND ativo2 = 's' AND tipo = 'hotspot' AND bloqueado = 'nao' AND ip IS NOT NULL
AND mac IS NOT NULL ORDER BY login")or die($msg[2]);
$count_cliente_ip_hs = mysql_num_rows($busca_cliente_ip_hs);

// Cliente adicional hotspot
$busca_adicional_hs = mysql_query("SELECT * FROM `sis_adicional` WHERE tipo = 'hotspot' AND bloqueado = 'nao' AND ip IS NULL AND mac IS NOT NULL
ORDER BY login")or die($msg[3]);
$count_adicional_hs = mysql_num_rows($busca_adicional_hs);

// Cliente adicional hotspot ip fixo
$busca_adicional_ip_hs = mysql_query("SELECT * FROM `sis_adicional` WHERE tipo = 'hotspot' AND bloqueado = 'nao' AND ip IS NOT NULL AND mac IS NOT NULL
ORDER BY login")or die($msg[3]);
$count_adicional_ip_hs = mysql_num_rows($busca_adicional_ip_hs);

// Cliente pppoe
$busca_cliente_ppp = mysql_query("SELECT * FROM `sis_cliente` WHERE ativo = 's' AND ativo2 = 's' AND tipo = 'pppoe' AND bloqueado = 'nao' AND ip IS NULL
AND mac IS NOT NULL ORDER BY login")or die($msg[2]);
$count_cliente_ppp = mysql_num_rows($busca_cliente_ppp);

// Cliente adicional pppoe
$busca_adicional_ppp = mysql_query("SELECT * FROM `sis_adicional` WHERE tipo = 'pppoe' AND bloqueado = 'nao' AND ip IS NULL AND mac IS NOT NULL
ORDER BY login")or die($msg[3]);
$count_adicional_ppp = mysql_num_rows($busca_adicional_ppp);

// Cliente pppoe ip fixo
$busca_cliente_ip_ppp = mysql_query("SELECT * FROM `sis_cliente` WHERE ativo = 's' AND ativo2 = 's' AND tipo = 'pppoe' AND bloqueado = 'nao'
AND mac IS NOT NULL AND ip IS NOT NULL ORDER BY login")or die($msg[2]);
$count_cliente_ip_ppp = mysql_num_rows($busca_cliente_ip_ppp);

// Cliente adicional pppoe ip fixo
$busca_adicional_ip_ppp = mysql_query("SELECT * FROM `sis_adicional` WHERE tipo = 'pppoe' AND bloqueado = 'nao' AND mac IS NOT NULL
AND ip IS NOT NULL ORDER BY login")or die($msg[3]);
$count_adicional_ip_ppp = mysql_num_rows($busca_adicional_ip_ppp);
}


// Remove profiles hotspot
if ($count_profile_hs != 0){
echo'/ip hotspot user profile remove [find session-timeout="23:59:00"];
:delay '.$delay.'s;
';
// Adiciona novo profile hotspot
while($profile_hs=mysql_fetch_array($busca_profile_hs)) {
echo'/ip hotspot user profile add name="'.$profile_hs['groupname'].'" rate-limit="'.$profile_hs['value'].'" session-timeout="23:59:00" transparent-proxy=no
:delay '.$delay.'s;
';
}
}
// Remove user hotspot
if ($count_cliente_hs != 0){
echo'/ip hotspot user remove [find comment="'.$comment.'"];
:delay '.$delay.'s;
/ip hotspot user
';
// Adiciona user hotspot
while($login_cliente_hs=mysql_fetch_array($busca_cliente_hs)) {
echo'add name="'.$login_cliente_hs['login'].'" password="'.$login_cliente_hs['senha'].'" profile="'.$login_cliente_hs['plano'].'" mac-address="'.$login_cliente_hs['mac'].'" comment="'.$comment.'" disabled=yes server='.$server.'
:delay '.$delay.'s;
';
}
}
// Adiciona login adicional user hotspot
if ($count_adicional_hs != 0){
while($login_adicional_hs=mysql_fetch_array($busca_adicional_hs)) {
echo'add name="'.$login_adicional_hs['username'].'" password="'.$login_adicional_hs['senha'].'" profile="'.$login_adicional_hs['plano'].'" mac-address="'.$login_adicional_hs['mac'].'" comment="'.$comment.'" disabled=yes server='.$server.'
:delay '.$delay.'s;
';
}
}
// Adiciona user hotspot ip fixo
if ($count_cliente_ip_hs != 0){
while($login_cliente_ip_hs=mysql_fetch_array($busca_cliente_ip_hs)) {
echo'add name="'.$login_cliente_ip_hs['login'].'" password="'.$login_cliente_ip_hs['senha'].'" profile="'.$login_cliente_ip_hs['plano'].'" address='.$login_cliente_ip_hs['ip'].' mac-address="'.$login_cliente_ip_hs['mac'].'" comment="'.$comment.'" disabled=yes server='.$server.'
:delay '.$delay.'s;
';
}
}
// Adiciona login adicional hotspot ip fixo
if ($count_adicional_ip_hs != 0){
while($login_adicional_ip_hs=mysql_fetch_array($busca_adicional_ip_hs)) {
echo'add name="'.$login_adicional_ip_hs['username'].'" password="'.$login_adicional_ip_hs['senha'].'" profile="'.$login_adicional_ip_hs['plano'].'" address='.$login_adicional_ip_hs['ip'].' mac-address="'.$login_adicional_ip_hs['mac'].'" comment="'.$comment.'" disabled=yes server='.$server.'
:delay '.$delay.'s;
';
}
}
// Remove profiles pppoe
if ($count_profile_ppp != 0){
echo'/ppp profile remove [find comment="'.$comment.'"];
:delay '.$delay.'s;
';
// Adiciona novo profile pppoe
while($profile_ppp=mysql_fetch_array($busca_profile_ppp)) {
echo'/ppp profile add name="'.$profile_ppp['groupname'].'" rate-limit="'.$profile_ppp['value'].'" use-encryption=yes local-address='.$local_address.' comment="'.$comment.'" remote-address='.$remote_address.' dns-server='.$dns_server1.','.$dns_server2.' session-timeout=1d change-tcp-mss=yes
:delay '.$delay.'s;
';
}
}
// Remove secret pppoe
if ($count_cliente_ppp != 0){
echo'/ppp secret remove [find comment="'.$comment.'"];
:delay '.$delay.'s;
/ppp secret
';
// Adiciona secret pppoe
while($login_cliente_ppp=mysql_fetch_array($busca_cliente_ppp)) {
echo'add name="'.$login_cliente_ppp['login'].'" password="'.$login_cliente_ppp['senha'].'" profile="'.$login_cliente_ppp['plano'].'" caller-id="'.$login_cliente_ppp['mac'].'" comment="'.$comment.'" service=any disabled=yes
:delay '.$delay.'s;
';
}
}
// Adiciona login adicional secret ppp
if($count_adicional_ppp != 0){
while($login_adicional_ppp=mysql_fetch_array($busca_adicional_ppp)) {
echo'add name="'.$login_adicional_ppp['username'].'" password="'.$login_adicional_ppp['senha'].'" profile="'.$login_adicional_ppp['plano'].'" caller-id="'.$login_adicional_ppp['mac'].'" comment="'.$comment.'" service=any disabled=yes
:delay '.$delay.'s;
';
}
}
// Adiciona secret ppp ip fixo
if($count_cliente_ip_ppp != 0){
while($login_cliente_ip_ppp=mysql_fetch_array($busca_cliente_ip_ppp)) {
echo'add name="'.$login_cliente_ip_ppp['login'].'" password="'.$login_cliente_ip_ppp['senha'].'" profile="'.$login_cliente_ip_ppp['plano'].'" remote-address="'.$login_cliente_ip_ppp['ip'].'" caller-id="'.$login_cliente_ip_ppp['mac'].'" comment="'.$comment.'" service=any disabled=yes
:delay '.$delay.'s;
';
}
}
// Adiciona login adicional secret ppp ip fixo
if ($count_adicional_ip_ppp != 0){
while($login_adicional_ip_ppp=mysql_fetch_array($busca_adicional_ip_ppp)) {
echo'add name="'.$login_adicional_ip_ppp['username'].'" password="'.$login_adicional_ip_ppp['senha'].'" profile="'.$login_adicional_ip_ppp['plano'].'" remote-address="'.$login_adicional_ip_ppp['ip'].'" caller-id="'.$login_adicional_ip_ppp['mac'].'" comment="'.$comment.'" service=any disabled=yes
:delay '.$delay.'s;
';
}
}
?>

mikrotik.zip

add_scripts.rsc

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

Join MK-AUTH

Enviar-me um email quando as pessoas responderem –

Respostas

  • Meu muitíssimo obrigado pela enorme contribuição.
    Parabéns pela iniciativa, vai ajudar muita gente.

  • Parabéns Jonas Oliveira ótima iniciativa sempre ajudando..

    Pude conhecer essa cara de perto, gente muito fina cara humilde e sempre desposto ajudar o próximo, que

    Deus sempre te abençoei e te cubra de muitas benças você merece. 

  • Muito bom, vai ser de grande ajuda. Poderia explicar como fez na pgaviso? , estou colocando o auth para cuidar dos avisos, ja que eu mandava-os manualmente. Obrigado desde já.

  • como faço para deletar somente o wireless ?, pois eu uso uma 1100ahx2, tentei usar mas da erro

  • ok amigo, editei o tópico, logo abaixo tem o index.php sem a configuração wireless

    Lucas da silva disse:

    como faço para deletar somente o wireless ?, pois eu uso uma 1100ahx2, tentei usar mas da erro

  • adicionei essa outra index ao que da o seguinte erro no mikrotik.

    user profile with such name already exists

  • perfil de usuário com esse nome já existe

    você usa hotspot ou pppoe?


    Lucas da silva disse:

    adicionei essa outra index ao que da o seguinte erro no mikrotik.

    user profile with such name already exists

  • Uso os 2!

    jonas oliveira da silva disse:

    perfil de usuário com esse nome já existe

    você usa hotspot ou pppoe?

  • nota 1000 amigo, vlw mesmo...

  • removi os profiles antigos e funcionou, porem esta acontecendo outro problema, aqui eu uso 4 sub-redes umas pra cada plano, quando eu importo ele so pega o primeiro remote-address.

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

This reply was deleted.