Assistente de portal cativo Trigger sem conexão com a internet

2

Estou procurando uma solução para acionar o assistente de portal cativo no Android 4.0-7 e no iOS 7-10 ao se conectar a uma LAN sem conexão com a Internet.

Nosso aplicativo é executado em um servidor da web em uma LAN. Gostaríamos que nossos usuários (que geralmente são usuários iniciantes) pudessem acessar o aplicativo no menor número de etapas possível. O sistema atualmente funciona conectando-se a uma rede WiFi, abrindo um navegador e inserindo um URL. Gostaríamos de reduzir isso para uma etapa (conexão à rede WiFi) com o navegador aberto automaticamente pelo assistente de portal cativo integrado ao Android e ao iOS.

Eu não estou procurando uma configuração de portal cativo padrão.

Este sistema deve acionar os assistentes do portal cativo no Android e no iOS sem que uma solicitação seja enviada aos servidores genuínos executados pelo Google ou pela Apple. Sem conexão com a internet, nem agora, nem nunca.

O sistema é baseado no Debian, com HOSTAPD e DNSMASQ executando a resolução DHCP e DNS. O servidor web é NGINX com PHP7.0.

Se uma solução puder ser obtida usando outros pacotes disponíveis para o Debian, por exemplo, BIND ou qualquer coisa que possa substituir o que estamos usando agora. Eu tenho um problema com a alteração da configuração.

Eu nunca me registrei com o superusuário antes, apenas espreitei nas sombras e aprendi muito com os membros fantásticos. Por causa disso, não tenho reputação de oferecer como recompensa. Se existe outra maneira de reembolsar alguém que surge com uma solução de trabalho, por favor me avise.

    
por LivePIX 14.09.2016 / 15:19

2 respostas

0

Detecção do portal cativo geralmente funciona ao tentar acessar uma página por HTTP e verificar se a página retornada é a esperada.

O Android, por exemplo, se conectará a http://clients1.google.com/generate_204 , que simplesmente retorna um status HTTP de 204 . Presumivelmente, os clientes iOS funcionam de maneira semelhante.

Para abrir seu aplicativo da maneira que você descreve, basta redirecionar todas as solicitações HTTP que ainda não foram destinadas ao seu servidor de aplicativos. Desta forma, os clientes nunca receberão o resultado esperado.

Isto pode ser conseguido usando o NAT com iptables se os clientes tiverem o sistema Debian configurado como seu gateway. Isso pode ser feito com uma regra semelhante à seguinte, em que APPSERVER é o endereço IP do seu servidor de aplicativos:

iptables -t nat -D PREROUTING ! -d APPSERVER -p tcp –-dport 80 -j DNAT –to-destination APPSERVER

No entanto, não tenho certeza de como o uso do assistente de portal cativo pode ser adequado, pois eles geralmente são muito limitados e o usuário pode ter dificuldade em retornar ao aplicativo se fechar acidentalmente o assistente de portal cativo. Alguns dispositivos mais antigos também podem não detectar automaticamente a presença de um portal cativo. Como o usuário nunca poderá acessar a Internet pela rede, o assistente de portal cativo poderá continuar exibindo seu aplicativo periodicamente ou marcar a rede como não tendo acesso à Internet e impedir futuras conexões.

    
por 14.09.2016 / 16:53
0

A melhor coisa que consegui encontrar foi uma resposta no serverfault (que, de qualquer forma, é um site melhor para essa pergunta): aqui

Basicamente, você executa um aplicativo / contêiner pré-construído que faz todo o trabalho para você.

    
por 14.09.2016 / 17:03