Categorias
api hotspot html integra????o ip linux mikrotik rede ssl tcp windows

Adicionando uma p??gina de cadastro de usu??rios (Hotspot) em ASP.NET no Mikrotik

Cada projeto que pego, ?? uma aventura nova a ser encarada! Dessa vez me adentrei no universo de Linux, rede, SSH, infra e tudo o que ?? direito. Quem n??o conhece, a Mikrotik ?? uma empresa de grande refer??ncia no que tange em equipamentos para redes de computadores. Seu principal destaque ?? o RouterOS que ?? sistema operacional que torna o roteador um poderoso gerente de rede. Dentro do Mikrotik (irei me referenciar sempre dessa forma generalizando como um produto), h?? o HotSpot. Com ele pode-se gerenciar quem ir?? autenticar na rede para usar a internet (ou apenas a intranet), banda usada, taxa de transfer??ncia e outras funcionalidades por usu??rio ou de forma geral. Um exemplo de uso desse sistema ?? de quando voc?? vai a uma rede corporativa onde precisa autenticar-se para usar a internet… ?? isso!

Qual ?? o objetivo desse artigo ent??o? A princ??pio ?? apenas obter as p??ginas originais de hotspot do Mikrotik, colocar um redirecionador para uma p??gina externa, criar uma p??gina externa de cadastro de usu??rio (para que possa acessar a rede) e fazer funcionar. N??o ensinarei como configurar ou criar o hotspot. Pela net h?? v??rios tutoriais muito bons sobre o assunto e tamb??m n??o ?? de minha ??rea. Recomendo fortemente o f??rum da Under-Linux que l?? o pessoal manja muito no assunto.

Nesse artigo usei o Mikrotik MKBR100 que ?? bem f??cil de usar: basta plugar o cabo de rede da internet, do servidor e da energia. Pronto!

Para acessar seu SO, deve-se utilizar o Winbox como se fosse um daqueles players de m??quina virtual ou OpenSSH. Vamos l?? colocar a m??o na massa!

Conecte o cabo de rede de seu PC (ou servidor) na porta (interface) ether2 do Mikrotik. Agora conecte outro cabo na ether1 para os outros computadores da rede (ou roteador simples). Porqu?? na ether1? Estou considerando que o hotspot est?? configurado para monitorar essa interface enquanto a ether2 ser?? utilizado para que o servidor de comunique com o aparelho. Seria algo do tipo:

V?? em IP > Address no Mikrotik para que sejam configuradas as interfaces e sejam endere??ados conforme os exemplos abaixo:

  • ether1: 192.168.88.1
  • ether2: 192.168.88.2

Somente atrav??s de IP que ser?? poss??vel enviar os arquivos do hotspot. Se ficar conectando, via MAC, pelo Winbox, voc?? ter?? a mensagem de erro: “router has been disconnected” (logo, conecte-se usando a ether2 – 192.168.88.2). E outra coisa ??: se n??o seguir o esquema acima, outros erros voc?? ter??, como:

could not connect to … no response
could not connect to … connection refused

could not connect to … network is unreachable
could not fetch index from … not found

Tudo isso por causa de configura????o apenas! ?? bom deixar o IP do servidor fixo para que possa dar permiss??o de porta, firewall, etc. No caso deixei como 192.168.88.30 (que no caso era minha pr??pria m??quina). Uma dica: ??s vezes d?? um reboot no aparelho!

O pr??ximo passo ?? ativar a porta da API que o Mikrotik disp??e para integra????o com linguagens de programa????o. ?? atrav??s dela que iremos conectar e fazer a comunica????o. S?? que precisamos ativ??-la. V?? em IP > Services e ative a API na porta 8728.

Tamb??m libere, no Firewall, as portas para conex??o tanto do sistema quanto do Winbox (pelo IP), sen??o quando estiver acessando pela p??gina de cadastro, ir?? surgir o erro: “nenhuma conex??o p??de ser feita porque a m??quina de destino as recusou ativamente ..:8728.”.

Para permitir a navega????o e envio de informa????es, adicione as permiss??es no Walled Garden.

Vejam que at?? o momento tudo ?? configura????o e nada de programa????o. Continuemos…

Agora vamos em Files e selecione todos os arquivos da pasta hotspot, arraste para sua ??rea de trabalho que ser?? copiado. Para enviar fa??a o processo inverso… Se estiver acessando pelo IP vai dar certo, sen??o cair?? a conex??o (lembra que disse acima?).

Abra o HTML da p??gina login.html e acione um link para a p??gina de cadastro que ficar?? hospedada no servidor. Adicionei o link <a href=“http://192.168.88.30/mikrotik/cadastro.aspx”>cadastre-se</a> . Customize as demais p??ginas como desejar e as envie de volta. Praticamente terminamos de trabalhar no Mikrotik.

Agora vem o mais simples: criar a p??gina ASP.NET. Voc?? pode utilizar qualquer linguagem de programa????o que possa usar TCP na comunica????o e que a API suporte: PHP, Delphi, C, C++, C#, Flash, Ruby on Rails, Java, Python, VB.NET, etc.

Fa??a o download da classe MK, em C# (eles j?? disp??e de classes prontas para outras linguagens tamb??m), nesse link aqui e adicione no seu projeto. Agora crie um Web Form adicionando os campos que queira trabalhar. No meu exemplo, s?? quis login (username) e senha. Adicione um Button e um m??todo para executar o cadastro do usu??rio conforme exemplo abaixo:

             // Autentica????o
            MK mikrotik = new MK(“192.168.88.2”);
            if (!mikrotik.Login(“admin”, “”))
            {
                ScriptManager.RegisterStartupScript(Page, typeof(Page), “alert”, “alert(‘Houve um problema de comunica????o com o Hotspot! Por favor, tente mais tarde.’);”, true);
                mikrotik.Close();
                return;
            }

            // Requisi????o
            mikrotik.Send(“/ip/hotspot/user/add”);
            mikrotik.Send(“=name=” + nome.Text);
            mikrotik.Send(“=password=” + senha.Text, true);

            //Retorno
            string retorno = string.Empty;
            foreach (string h in mikrotik.Read())
            {
                if (retorno != string.Empty)
                    retorno += “, “;
                retorno += h;
            }

            // Fecha objeto
            mikrotik.Close();

            // Valida????o
            if (retorno.ToLower().Contains(“!done=ret=”))
                ScriptManager.RegisterStartupScript(Page, typeof(Page), “alert”, “alert(‘Cadastro realizado com sucesso!’); location.href=’http://192.168.88.1/login.html’;”, true);
            else if (retorno.ToLower().Contains(“message=failure: already have user with this name for this server”))
                ScriptManager.RegisterStartupScript(Page, typeof(Page), “alert”, “alert(‘J?? existe um usu??rio com esse nome!’);”, true);
            else
                ScriptManager.RegisterStartupScript(Page, typeof(Page), “alert”, “alert(‘Falha no cadastro: “ + retorno + “!’);”, true);

Voc?? poderia n??o s?? fazer o cadastro de usu??rio no hotspot como tamb??m executar qualquer comando (SSH) no Mikrotik. Lembrando que eu atropelei muita coisa a?? no que diz respeito a configura????o do dispositivo na qual disse logo no in??cio que n??o era minha finalidade. Voc??s observaram que a parte de programa????o ?? bem simples do que configura????o… e com certeza ??! Agora nunca ir?? sair de minha cabe??a a palavra Mikrotik Mikrotik Mikrotik Mikrotik Mikrotik … Por favor, qualquer erro ou informa????o adicional me avise!

[]’s

UPDATE: disponibilizei uma implementa????o no post http://thiagomarcal.blogspot.com.br/2016/09/implementacao-do-aspnet-c-com-o.html

38 respostas em “Adicionando uma p??gina de cadastro de usu??rios (Hotspot) em ASP.NET no Mikrotik”

ola amigo … gostei do seu artigo … mais eu to querendo colocar na minha pagina do hostport em botao de cadastro … e que esse cadastro quando efetuado… mostre o valor em hora e nao em velocidade … e que o pagamento seja feito pelo mercado pago … e que eu seja avisado no meu Imail … sera que tem como … forte abra??o … wbp_wbp@hotmail.com

Paschoal, tem como sim. H?? duas formas de fazer isso: da mesma forma como fiz acima s?? que voc?? ter?? que mudar a p??gina de cadastro do usu??rio adicionando o envio de e-mail e o c??lculo da cobran??a. A outra forma ?? tentar embutir no pr??prio Mikrotik o formul??rio de cadastro essas condi????es o que, ao meu ver, ?? mais trabalhoso. Veja no link http://www.google.com.br/#sclient=psy-ab&hl=pt-BR&biw=1473&bih=797&source=hp&q=mikrotik+formul%C3%A1rio+google&pbx=1&oq=mikrotik+formul%C3%A1rio+google&aq=f&aqi=q-w1&aql=1&gs_sm=e&gs_upl=267l7179l0l7468l24l18l0l3l3l0l1336l10150l4-1.5.5.2l16l0&bav=on.2,or.r_gc.r_pw.,cf.osb&fp=9a6d4b235a01f0fb
Preferi separar o formul??rio de cadastro em outro servidor para ficar mais f??cil a manuten????o e utilizar a linguagem de programa????o que quiser. Dentro do Mikrotik a programa????o ?? limitada.

ola ate a parte de inseri o link foi numa boa, mais sou muito fraco em cria????o de paginas, e asp net fica fora dos meus conhecimentos, tentei usando o front page criar a pagina mais dai em diante nada andou, vc poderia ajudar postando ou enviando para email um passo a passo para pessoas como eu que nada sabe de programa????o. cwsm@live.com

Christian, o passo-a-passo que fiz foi exatamente esse. Nada de diferente… O que mostrei foi muito de configura????o do Mikrotik. A programa????o em ASP tamb??m resume-se nisso a??. N??o tem muito o que ajudar nesse aspecto, mas qual seria o seu objetivo? Seria tamb??m fazer o cadastro? Posso depois lhe enviar as p??ginas produzidas e programadas das quais fiz o teste. Pode ser?

Oi Thiago, ?? uma solu????o dessa que estou procurando. J?? vi em outro hotspot em que o cliente se conecta na rede, j?? navega na p??gina do hotspot e l?? tem as op????es de planos para se cadastrar, ele escolhe o plano de acesso e quando clica em comprar, ?? direcionado para outra p??gina com formul??rio para preencher os seus dados para pagamento, seja por cart??o de cr??dito ou pagseguro. Como seria poss??vel fazer essa implementa????o em uma p??gina de hotspot?

Grande abra??o.
Hayttle

Hayttle, a ess??ncia ?? quase a mesma. O que muda ?? a p??gina de cadastro que ter?? que alter??-la para funcionar dessa forma. Lembrando que essa p??gina de cadastro deve ficar em outro servidor, pois a programa????o dentro do hotspot n??o ?? permitida de acordo com esse contexto. Se voc?? souber um pouco de programa????o d?? para fazer essa p??gina tranquilamente. Ent??o voc?? publica esse formul??rio em alguma servidor de aplica????o e faz as devidas configura????es no hotspot para ir a essa p??gina.

eu fechei um contrato com uma escola pra colocar paginas de login,para os alunos naum mecherem na internet porque eles usam a op????o de mostrar senha da internet no windows 7, mais como eu naum entendo muito disso vou direto ao ponto,
eu moro a uns 700 km da escola e ja sei instalar o servidos mikrotik em um pc com duas placas de redes e distribuir a internet pra naum haver fraude eu queria criar uma pagina apenas para um usuario em especifico pra adcionar e exclui usuarios do sistema, e colocar tambem na pagina de login a op????o do proprio usuario alterar a sua senha, com dados do tipo de pergunta secreta e tal, seria possivel isso

Diego, ?? poss??vel sim. Todos os dados que s??o armazenados no Hotspot podem ser manipulados via API. Quanto ?? pergunta secreta n??o sei se ser?? poss??vel porque acho que esse dado n??o pode ser armazenado no cadastro a n??o ser que utilize um banco de dados ?? parte para realizar isso.

Me da uma ajuda a?? eu nao tenho um sistema pronto que cadastra pppoe no mysql e tudo mais, s?? nao consigo essa integracao direta com mk porque nao sei uma usar esse api, me da um help ai. Quando crio um aplicacao agente joga na pasta bim alguma possivel dll tipo a do mysql porexemplo e essa api? Programa com c#. Meu e-mail maicon.tab10@gmail.com

Thiago, Beleza… Seu tutorial ?? extremamente j??ia! valeu! Preciso s?? tirar uma d??vida, mas ap??s o cliente efetuar o registro j?? sai navegando? como fa??o para que o cliente primeiro fa??a o cadastro e depois que pagar possa navegar?!

Daniel, s?? fiz a parte mesmo do cadastro. A autentica????o n??o fiz, pois depois do cadastro volto para a tela de autentica????o do pr??prio hotspot (j?? que ele tem tudo j?? pronto para fazer o login).
Para fazer o login autom??tico ap??s o cadastro, teria que dar uma olhada na documenta????o para ver se h?? algum comando que j?? envie para o Mikrotik que o usu??rio j?? est?? logado no sistema (o que acho que deve ter). E quanto ao pagamento, voc?? pode fazer de v??rias formas. O que sugiro ?? que redirecione o cliente a uma tela de pagamento, a princ??pio, e que, ap??s efetuado, volte ao cadastro dele. A?? ser?? um bocadinho de c??digo a ser feito 🙂

Excelente tutorial, pesquisei demais at?? encontrar esse que me foi muito esclarecedor.
Se puder me tirar umas duvidas ficarei agradecido.
– D?? pra deixar a pagina de cadastro dentro do hotspot ao inv??s de usar um servidor externo?
– Tem como definir que o login precisa ser criado com nome, e-mail v??lido, cpf, endere??o, telefone, data nascimento? N??o precisa confirmar o e-mail, somente evitar que coloquem coisas absurdas como palavr??o.
– Tem como receber os e-mails cadastrados em um e-mail particular da empresa? Usaremos estes e-mails para futuras divulga????es sem caracterizar spam.
– Na segunda vez que o usu??rio acessar o hotspot, ele j?? utilizar o login existente, sem necessitar de novo cadastro e ter op????o de recuperar senha.
Se puder me ajudar, mesmo que cobre pra isso! cleber@megalinkti.com.br

Cleber, dentro do Mikrotik creio que n??o ?? poss??vel devido ao seu framework pr??prio. Comentei com alguns amigos e a solu????o encontrada ?? a utiliza????o dessa integra????o que ele permite, apenas. Para cria????o do login, os campos a serem preenchidos devem ser os mesmos que que o hospot coleta (n??o pode ter um campo que ele n??o permite, a menos que adicione em observa????o ou que seja enviada por e-mail).
A cada cadastro ?? poss??vel enviar um e-mail com informa????es do cadastro, sem problemas, a menos, como disse anteriormente, que a aplica????o esteja em um servidor cuja linguagem de programa????o suportada realize tal fun????o.
S?? n??o sei te confirmar a op????o de recupera????o de senha. Se o hotspot permitir tal comando via linha de comando, basta implementar a chamada. Veja se as respostas ajuda e qualquer coisa ?? s?? entrar em contato. Abs

Por a?? e dif??cil achar um conte??do desse t??o rico em informacoes. A maioria q j?? vi por ai a resposta ?? sempre a mesma (mkauth j?? faz tudo isso ?? blablabla), as pessoas devem entender que todos fixado por tecnologia quer botar a m??o na massa e fazer acontecer para o conhecimento e n??o usar sistemas prontos mastigado como (MKauth). Parab??ns Thiago continue assim propagando conhecumento. um abra??o.

Thiago, pode me dar um help!

Seguinte, estou desenvolvendo uma aplica????o em asp.net para autenticar usu??rios, por??m acredito que precise enviar alguma informa????o para o mikrotik para liberar esse acesso para navegar, voc?? sabe o que devo fazer para liberar esse acesso?
Obrigado,

Ola Tiago, primeiramente gostaria de parabeniza-lo pelo post ?? um excelente material e de grande valia.

Eu estou com um caso na m??os e n??o seu como seguir pois prestamos servi??os sociais aqui na nossa cidade e estamos para implementar um hotspot gratuito em alguns pontos.

Vamos utilizar apenas uma Routerboard RB433Ah como roteador e autentica????o do hotspot, tenho o layout pronto da tela de login e o que preciso ?? que na tela de login o usu??rio tenha um bot??o cadastrar, onde ele far?? um cadastro simples, com usuario, senha, nome completo, Rg e telefone.

Ap??s cadastrado o sistema j?? libera ele automaticamente pra fazer o seu login que acabou de fazer.

Vc tem algum modelo nesse esquema que pode me passar por email

Se for o caso eu compro de vc claro que se n??o for muito caro, j?? que uma vez estamos fazendo isso de gra??a tamb??m..

Meu contato: antenas.megalink@gmail.com A/C Andr??

Obrigado e fique com Deus

??l?? Thiago,

Seu artigo ficou muito bom, e dessa forma (com um servidor separado para cadastro) abre-se um leque de possibilidades. Gostaria de fazer uma pergunta:

Eu consigo fazer o c??digo para autentica????o em bash?

Desde ja agrade??o!

Thiago, j?? fiz todos os procedimentos j?? consigo acessar o MK, tbm fiz um formul??rio para preenchimentos dos dados dos clientes e jogar para o MK e funfou certinho. Depois fui preparar a p??gina do hotspot, coloquei o link para cadastro conforme havia falado, mas toda vez que clico no link de cadastro ele tenta carregar o formul??rio, mas me redireciona novamente para a p??gina de login do MK.
S?? consigo acessar essa p??gina de cadastro depois que fa??o login. Os endere??os de IP para redirecionar a p??gina est??o corretos.
VC teria alguma ideia do que pode estar acontencendo???

thiago boa noite cara …eu personalizei meu hotspot est?? funcionando 100% estava pesquisando e achei muito interessante esse trabalho….vc poderia tbm me enviar esse material para eu poder imcrementar meu site?p??ginas produzidas e programadas das quais voc?? fez e comentou com o cristhian e o maranh??o sobre cadastro e tamb??m configurar para libera????o p??s pagamento via cart??o ou boleto…ab??

Thiago boa noite, ent??o eu criei uma aplica????o em mvc porem n??o consegui integrar essa classe. Para ser sincero nao fa??o ideia de como efetuar esta integra????o e embora tenha pesquisado bastante obtive muito pouco material sobre integra????o com o MK.

Ol?? achei este post muito bom,deu para intender quase tudo somente quando chego na parte da programa????o asp que buguei,ainda sou nub nessa area, gostaria de ver com vc se tem como vc criar uma pagina de cadastro somete com o campo de user e pass e o bot??o para enviar em php, o resto eu ja consigo fazer, vc pode esta entrando em contato pelo o danielvcr_pessoal@outlook.com se precisa passo meu whats por l??. Des de j?? obrigado!

Deixe um comentário para An??nimo Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *