feat(rede): placa em carinha.local e app que acha a placa sozinho

- sistema/rede: a placa vira "carinha" na rede (avahi), http://carinha.local
  na porta 80 (nftables redireciona para a 8100, sem tocar no 192.168.4.1
  do portal Carinha-Config) e anúncio "_carinha._tcp" na 8100;
- app 0.9.1: quando o endereço salvo não responde, procura o anúncio na
  rede (NsdManager), testa o endereço achado e passa a usar e guardar.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
julio
2026-10-10 03:04:25 -03:00
co-authored by Claude Opus 5.5
parent ccd89d125e
commit 91c64e5b18
6 changed files with 164 additions and 3 deletions
+12
View File
@@ -0,0 +1,12 @@
# Carinha: http://carinha.local (porta 80) leva ao painel na 8100.
# O 192.168.4.1 fica de fora: é a página de configuração do Wi-Fi no modo ponto de acesso.
table ip carinha {
chain entrada {
type nat hook prerouting priority dstnat; policy accept;
ip daddr != 192.168.4.1 tcp dport 80 redirect to :8100
}
chain local {
type nat hook output priority -100; policy accept;
ip daddr 127.0.0.0/8 tcp dport 80 redirect to :8100
}
}
+9
View File
@@ -0,0 +1,9 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<!-- Anúncio na rede: http://carinha.local (porta 80) e "_carinha._tcp" (porta 8100), que o app do
celular procura quando o endereço salvo não responde. -->
<service-group>
<name>Carinha</name>
<service><type>_http._tcp</type><port>80</port></service>
<service><type>_carinha._tcp</type><port>8100</port></service>
</service-group>
+15
View File
@@ -0,0 +1,15 @@
#!/bin/sh
# Nome na rede: a placa vira "carinha" e responde em http://carinha.local (rodar como root, desta pasta).
set -e
cd "$(dirname "$0")"
apt-get install -y --no-install-recommends avahi-daemon libnss-mdns nftables
hostnamectl set-hostname carinha
sed -i "s/^127\.0\.1\.1.*/127.0.1.1 carinha/" /etc/hosts
grep -q "^127.0.1.1 carinha" /etc/hosts || echo "127.0.1.1 carinha" >> /etc/hosts
install -m 644 carinha.service.avahi /etc/avahi/services/carinha.service
install -m 644 carinha.nft /etc/nftables.d-carinha.nft
grep -q "nftables.d-carinha.nft" /etc/nftables.conf || echo 'include "/etc/nftables.d-carinha.nft"' >> /etc/nftables.conf
nft -c -f /etc/nftables.conf
systemctl enable --now avahi-daemon nftables
systemctl restart avahi-daemon nftables
echo "pronto: http://carinha.local"