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ão com o banco falhou!";
$msg[1] = "Não foi possível selecionar tabela radgroupreply!";
$msg[2] = "Não foi possível selecionar tabela sis_cliente!";
$msg[3] = "Não foi possível selecionar tabela sis_adicional!";
$msg[4] = "Não foi possí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> Aviso!</strong></p><p> 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ão com o banco falhou!";
$msg[1] = "Não foi possível selecionar tabela radgroupreply!";
$msg[2] = "Não foi possível selecionar tabela sis_cliente!";
$msg[3] = "Não foi possível selecionar tabela sis_adicional!";
$msg[4] = "Não foi possí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> Aviso!</strong></p><p> 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;
';
}
}
?>
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:
adicionei essa outra index ao que da o seguinte erro no mikrotik.
perfil de usuário com esse nome já existe
você usa hotspot ou pppoe?
Lucas da silva disse:
Uso os 2!
jonas oliveira da silva disse:
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