Tenho um servidor e um quiosque. Hoje, alguém reiniciou ambos. O quiosque ficou online antes do servidor, fazendo com que o quiosque mostrasse:
Não é possível conectar
O Firefox não consegue estabelecer uma conexão com o servidor em 10.10.1.1:13668
- O site pode estar temporariamente indisponível ou muito ocupado. Tente novamente em alguns minutos.
- Se você não conseguir carregar nenhuma página, verifique a conexão de rede do seu computador
- Se o seu computador ou rede estiver protegido por um firewall ou proxy, certifique-se de que o Firefox tenha permissão para acessar a web.
O kiosk é um dispositivo Debian com firefox-esr
instalado. Quando o usuário faz login automaticamente, firefox --kiosk <url>
é executado como um serviço systemd no user-bus.
$ systemctl cat --user entrance-client
# /usr/lib/systemd/user/entrance-client.service
[Unit]
Description=Entrance Screen
After=graphical-session.target
[Service]
ExecStart=/usr/bin/firefox-esr --kiosk http://10.10.1.1:13668/entrance/
[Install]
WantedBy=graphical-session.target
Existe uma maneira de configurar o Firefox (de preferência por meio de argumentos de linha de comando ou arquivos de configuração implantáveis) para:
- Quando não for possível conectar, atualize após X segundos ou
- Quando não for possível conectar, saia com um código de saída diferente de zero (posso lidar com a lógica de reinicialização na configuração do serviço systemd).
Não sou contra uma extensão que faça isso, mas eu precisaria ser capaz de implantar a extensão automaticamente (implantações de arquivo) de forma não interativa. Então, não me importo em usar uma GUI para gerar um perfil uma vez, mas então ela deve gerar arquivos que eu possa simplesmente copiar para cada site.
Em vez de pedir para o Firefox se conectar diretamente ao servidor, podemos pedir para o Firefox se conectar a uma página de destino local, que nos redirecionará para o servidor se/quando disponível.
Essa página poderia ter este conteúdo:
Peguei você: CORS
Acessar a landing page local via
file://
só funciona se o alvo for servido viahttps://
. Se o servidor estiver disponível somente emhttp://
, o Firefox falhará em obter o arquivo de teste, pois ele tenta atualizarhttp://
as conexões parahttps://
sempre que estiver lidando com protocolos mistos. Ele oferece esta explicação.Neste caso, altere o servidor para
https://
ou acesse a página de destino usandohttp://
em vez defile://
Podemos servir nossa landing page
http://
adicionando outro serviço systemd que execute o simpleshttp.server
. Então podemos mudar nosso serviço original para loadhttp://localhost:8123
em vez defile://...
. Eu adicionei--bind 127.0.0.1
para que ele possa ser acessado somente pelo dispositivo de loopback (em vez de por qualquer um que possa se conectar a este cliente). A escolha da porta (8123) é arbitrária. Eu escolhi um valor que não é nenhum padrão normal (8000 éhttp.server
o padrão de ) para mantê-lo fora do caminho.Observações importantes: A landing page local é servida no barramento do sistema e você precisa de acesso root para habilitá-la.
O serviço que realmente executa o Firefox está no barramento do usuário, então ele tem acesso ao ambiente e à área de trabalho do usuário do quiosque. Não use
sudo
para habilitar esse.