The checks engine, the path and the cards: me-web? 0.1 reads the connection

MeWeb.Core runs seven checks concurrently and reports each as it settles:
online or behind a login page, this connection, the public IPv4 and IPv6
seen from v4./v6.meweb, the provider from a built-in map, the router
(UPnP IGD, NAT-PMP and PCP, read-only), address sharing (router WAN
against the echo, TTL hops only as a hint), and the history kept on the
device. The app draws the path from this device to the internet and lights
it node by node, with a card per check and a sheet listing every host it
contacts.

The provider map is iptoasn's table compressed to 2.1 MB by
tools/knowledge.cs and built before every app release; eleven Italian
provider profiles carry each fact with who said it, the source and the
month. The server gains a download page (en, it) and /download/{platform}
from the latest Gitea release.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012CzABvBkbcFqoHdmi8b9WB
This commit is contained in:
thepraandClaude Opus 5.5 committed 2026-10-15 04:39:03 +02:00
1 parent 16a1cecaae
commit 0dffbc27d6
61 files changed
+3750 -149

No files matched your search

+159 -1
View File
@@ -1,11 +1,169 @@
{
"AboutLine": "me-web? is free software (AGPL-3.0) published by Arasaka di Hvozdikov Yevheniy, Busto Arsizio, Italy.",
"AddressesBoth": "The internet sees you over both IPv4 and IPv6.",
"AddressesNone": "Your public address couldn't be read.",
"AddressesV4Only": "The internet sees you over IPv4 only: this connection has no IPv6.",
"AddressesV6Only": "The internet sees you over IPv6 only.",
"AppTagline": "Find out whether you can run your own server from this connection, and what stands in the way.",
"BasisOneUser": "one user's report",
"BasisOperator": "operator",
"BasisPress": "press",
"BasisResearch": "me-web? research",
"BasisUsers": "users' reports",
"CardAddresses": "Your public addresses",
"CardConnection": "This connection",
"CardHistory": "Earlier checks",
"CardNat": "Address sharing",
"CardOnline": "Internet connection",
"CardProvider": "Your provider",
"CardRouter": "Your router",
"Check": "Check",
"CheckAgain": "Check again",
"CheckFailed": "This check stopped unexpectedly ({0}).",
"Checking": "Checking…",
"ClearHistory": "Forget earlier checks",
"Close": "Close",
"ConnectionCable": "Connected by cable.",
"ConnectionMobile": "Connected by mobile data.",
"ConnectionNone": "No network adapter is connected.",
"ConnectionOther": "Connected through a network adapter.",
"ConnectionWifi": "Connected by Wi-Fi.",
"ContactDns": "Your name server (DNS): to look up meweb.arasaka.software.",
"ContactLinks": "Links you choose to open (sources, corrections, downloads) open in your browser.",
"ContactRoute": "The routers on the way to meweb.arasaka.software: a few short test messages with a limited lifetime (ping) show the first steps of the route.",
"ContactRouter": "Your router, on your own network: asked whether it lets apps open ports and which internet address it has. Nothing is changed.",
"ContactServer": "meweb.arasaka.software, run by the publisher in Italy: to see whether you are online, which public addresses the internet sees, and whether a newer version exists. The me-web? server stores nothing about your checks.",
"Contacts": "What this app contacts",
"ContactsIntro": "me-web? talks only to these, and only when it checks:",
"DraftNotice": "This translation is a machine draft.",
"ExplainAddresses": "The address the rest of the internet sees when this device talks to it. With IPv4 the devices at home usually share one address, held by the router; with IPv6 each device usually has its own.",
"ExplainConnection": "How this device is connected right now, and the address your router gave it. Addresses starting with 192.168, 10, or 172.16 to 172.31 only work inside your home (private addresses).",
"ExplainHistory": "Each check is saved on this device only. If your public address stays the same for weeks it is probably fixed (static); if it changes, you need a name that follows it (dynamic DNS).",
"ExplainNat": "To host something at home, the internet has to reach your router. That works when your router holds the public address. When your provider shares one address among many customers (CGNAT), nobody can reach you from outside over IPv4 unless the provider gives you an address of your own; a tunnel or IPv6 are the ways around it.",
"ExplainOnline": "me-web? asks its own server, meweb.arasaka.software, over a secure connection and over a plain one. If the secure one fails and the plain one is sent somewhere else, a login page (captive portal) is in the way, as in hotels and on trains.",
"ExplainProvider": "Found without going online, in the provider map inside me-web?, from your public address. The notes come from the operator's own technical sheet or from users' reports, each with its source and date: they say what is usual, not what your contract says.",
"ExplainRouter": "Game consoles, calls and file sharing ask the router to open a port for them, using UPnP, NAT-PMP or PCP. me-web? only asks your router whether it answers and which internet address it has; it opens nothing.",
"FactAdapter": "Network adapter",
"FactAddressesSeen": "Public IPv4 addresses seen",
"FactChecks": "Checks",
"FactDns": "Name servers (DNS)",
"FactGateway": "Router address",
"FactHint": "Hint",
"FactIpv6": "IPv6",
"FactLinkSpeed": "Link speed",
"FactLocalAddress": "Address on your network",
"FactLocalIpv6": "IPv6 addresses of this device",
"FactNatPmp": "NAT-PMP",
"FactNetwork": "Network",
"FactNetworkIpv6": "Network for IPv6",
"FactPcp": "PCP",
"FactProviderIpv4": "IPv4 address",
"FactProviderIpv6": "IPv6",
"FactProviderPort25": "Mail port 25",
"FactProviderPublic": "An address of your own",
"FactProviderSheet": "Technical sheet",
"FactPublicV4": "Public IPv4",
"FactPublicV6": "Public IPv6",
"FactRedirectedTo": "Sent to",
"FactRoute": "First steps of the route",
"FactRouter": "Router",
"FactRouterWan": "Router's internet address",
"FactSince": "Since",
"FactUpnp": "UPnP",
"FactWayOut": "Way around it",
"FactWhoHasIpv6": "IPv6 address held by",
"FactWhoHasIt": "IPv4 address held by",
"HintSharedHop": "A router of your provider uses a shared-space address (100.64.x.x). That happens with address sharing and without it, so on its own it proves nothing.",
"HistoryChanged": "Changes of your public IPv4 address since {1}: {2} (checks: {0}).",
"HistoryCleared": "Earlier checks forgotten.",
"HistoryFirst": "This is the first check from this connection. Check again on other days to see whether your address changes.",
"HistoryStable": "Your public IPv4 address has stayed the same since {1} (checks: {0}).",
"IconsCredit": "Icons: Lucide (ISC).",
"Language": "Language",
"LinkCable": "Cable",
"LinkMobile": "Mobile data",
"LinkOther": "Network",
"LinkWifi": "Wi-Fi",
"MapCredit": "Provider map: iptoasn.com (PDDL), data of {0}.",
"MapMissing": "This copy has no provider map.",
"NatDirect": "This device holds your public IPv4 address itself.",
"NatDouble": "Two routers in a row: your router sits behind another one (double NAT).",
"NatHomeRouter": "One router, and it holds your public IPv4 address.",
"NatNoIpv4": "This connection has no IPv4.",
"NatShared": "Your provider shares one public IPv4 address among many customers (CGNAT).",
"NatTranslated": "Your address is translated again after your router: the address your router has isn't the one the internet sees.",
"NatUnknown": "Can't tell from here whether your public IPv4 address is yours alone: your router didn't say which address it has.",
"OnlineCaptive": "A login page is in the way: open your browser and sign in to this network.",
"OnlineGood": "This device reaches the internet.",
"OnlineNoNames": "The network is up, but names such as meweb.arasaka.software can't be looked up (DNS).",
"OnlineNoNetwork": "This device isn't connected to any network.",
"OnlineOffline": "This device is on a network, but doesn't reach the internet.",
"OnlineRewritten": "The internet answers, but something on the way changes plain web pages.",
"OutcomeBad": "In the way",
"OutcomeCaution": "Needs attention",
"OutcomeGood": "Good",
"OutcomeInfo": "Information",
"OutcomeRunning": "Checking",
"OutcomeUnknown": "Can't tell",
"OutcomeWaiting": "Waiting",
"PathAnotherRouter": "Another router",
"PathInternet": "Internet",
"PathMobileNetwork": "Mobile network",
"PathProvider": "Your provider",
"PathRouter": "Your router",
"PathSharedGateway": "Your provider's shared exit",
"PathThisComputer": "This computer",
"PathThisPhone": "This phone",
"PathTitle": "From this device to the internet",
"PathTranslation": "Another address translation",
"PrivacyLine": "No telemetry, no analytics, no crash reports. Your checks are kept on this device only.",
"ProviderIpv4PublicDynamic": "usually public, and it can change",
"ProviderIpv4Shared": "usually shared with other customers (CGNAT)",
"ProviderIpv4SharedPorts": "usually shared, each customer getting a slice of the ports",
"ProviderIpv4SharedUntilForward": "shared until you open a port on the provider's router, then yours alone",
"ProviderIpv6Native": "offered",
"ProviderIpv6None": "not offered",
"ProviderIpv6Tunnel": "through a tunnel (6rd)",
"ProviderListed": "Your provider is {0}.",
"ProviderNoAddress": "Without a public address the provider can't be found.",
"ProviderNoMap": "This copy of me-web? has no provider map.",
"ProviderNotFound": "The provider map doesn't know this address.",
"ProviderPort25Blocked": "blocked",
"ProviderPort25BlockedOnRequest": "blocked, opened if you ask",
"ProviderPort25Closed": "closed",
"ProviderPort25Open": "open",
"ProviderPublicBusinessOnly": "business lines only",
"ProviderPublicFreeOnRequest": "free if you ask for it",
"ProviderPublicNone": "not offered to homes",
"ProviderPublicNotFound": "no offer for homes was found",
"ProviderPublicPaid": "a static one from about {0} a month",
"ProviderUnlisted": "Your provider is {0}. me-web? has no notes on it yet.",
"ResultsTitle": "What me-web? found",
"RouterMobile": "On mobile data there is no home router: your provider's network comes first.",
"RouterNone": "No home router was found on this connection.",
"RouterOpens": "Your router answers apps that ask it to open ports.",
"RouterRefuses": "Your router answers, but refuses apps that ask it to open ports.",
"RouterSilent": "Your router doesn't answer apps that ask it to open ports.",
"SourceCode": "Source code",
"StatusCaptive": "A login page is in the way",
"StatusChecking": "Checking the connection…",
"StatusOffline": "Not connected to the internet",
"StatusOnline": "Connected to the internet",
"SuggestCorrection": "Suggest a correction",
"VersionLine": "me-web? {0} · free software (AGPL-3.0)"
"UpdateAvailable": "me-web? {0} is available.",
"UpdateOpen": "Download",
"ValueAnswered": "answered",
"ValueCount": "{0}",
"ValueIpv6Direct": "each device has its own public address",
"ValueIpv6NotThisDevice": "something other than this device",
"ValueIpv6Translated": "translated on the way",
"ValueIpv6Way": "Over IPv6 a device at home can be reached directly, if your router's firewall lets it.",
"ValueMbps": "{0} Mbit/s",
"ValueOnThisDevice": "this device",
"ValueOpenSheet": "Open the operator's sheet",
"ValueRefused": "refused (code {0})",
"ValueSharedAtHome": "your router, shared by every device at home",
"ValueSilent": "no answer",
"VersionLine": "me-web? {0} · free software (AGPL-3.0)",
"WhatIsThis": "What does this mean?"
}
+159 -1
View File
@@ -1,11 +1,169 @@
{
"AboutLine": "me-web? è software libero (AGPL-3.0) pubblicato da Arasaka di Hvozdikov Yevheniy, Busto Arsizio.",
"AddressesBoth": "Internet la vede sia in IPv4 sia in IPv6.",
"AddressesNone": "Non è stato possibile leggere il suo indirizzo pubblico.",
"AddressesV4Only": "Internet la vede solo in IPv4: questa connessione non ha IPv6.",
"AddressesV6Only": "Internet la vede solo in IPv6.",
"AppTagline": "Scopra se da questa connessione può ospitare un server suo, e che cosa lo impedisce.",
"BasisOneUser": "segnalazione di un utente",
"BasisOperator": "operatore",
"BasisPress": "stampa",
"BasisResearch": "ricerca di me-web?",
"BasisUsers": "segnalazioni degli utenti",
"CardAddresses": "I suoi indirizzi pubblici",
"CardConnection": "Questa connessione",
"CardHistory": "Verifiche precedenti",
"CardNat": "Condivisione dell'indirizzo",
"CardOnline": "Connessione a internet",
"CardProvider": "Il suo operatore",
"CardRouter": "Il suo router",
"Check": "Verifica",
"CheckAgain": "Verifica di nuovo",
"CheckFailed": "Questa verifica si è interrotta in modo inatteso ({0}).",
"Checking": "Verifica in corso…",
"ClearHistory": "Dimentica le verifiche precedenti",
"Close": "Chiudi",
"ConnectionCable": "Collegato via cavo.",
"ConnectionMobile": "Collegato con i dati mobili.",
"ConnectionNone": "Nessuna scheda di rete è collegata.",
"ConnectionOther": "Collegato tramite una scheda di rete.",
"ConnectionWifi": "Collegato via Wi-Fi.",
"ContactDns": "Il suo server dei nomi (DNS): per trovare meweb.arasaka.software.",
"ContactLinks": "I collegamenti che sceglie di aprire (fonti, correzioni, download) si aprono nel suo browser.",
"ContactRoute": "I router lungo la strada verso meweb.arasaka.software: alcuni brevi messaggi di prova a durata limitata (ping) mostrano i primi passi del percorso.",
"ContactRouter": "Il suo router, nella sua rete: gli si chiede se lascia aprire porte alle app e quale indirizzo internet ha. Non si cambia nulla.",
"ContactServer": "meweb.arasaka.software, gestito dall'editore in Italia: per sapere se è in linea, quali indirizzi pubblici vede internet e se esiste una versione più recente. Il server di me-web? non conserva nulla delle sue verifiche.",
"Contacts": "Con chi parla questa app",
"ContactsIntro": "me-web? parla solo con questi, e solo quando fa una verifica:",
"DraftNotice": "Questa traduzione è una bozza automatica.",
"ExplainAddresses": "L'indirizzo che il resto di internet vede quando questo dispositivo gli parla. In IPv4 i dispositivi di casa di solito condividono un indirizzo, che ha il router; in IPv6 di solito ogni dispositivo ha il suo.",
"ExplainConnection": "Come è collegato in questo momento il dispositivo, e l'indirizzo che gli ha dato il router. Gli indirizzi che iniziano con 192.168, 10 o da 172.16 a 172.31 valgono solo dentro casa (indirizzi privati).",
"ExplainHistory": "Ogni verifica resta salvata solo su questo dispositivo. Se l'indirizzo pubblico rimane uguale per settimane, probabilmente è fisso (statico); se cambia, serve un nome che lo segua (DNS dinamico).",
"ExplainNat": "Per ospitare qualcosa a casa, internet deve poter raggiungere il suo router. Funziona quando l'indirizzo pubblico ce l'ha il router. Quando l'operatore condivide un indirizzo tra molti clienti (CGNAT), da fuori nessuno la raggiunge in IPv4, a meno che l'operatore non le dia un indirizzo tutto suo; le alternative sono un tunnel o IPv6.",
"ExplainOnline": "me-web? interroga il proprio server, meweb.arasaka.software, con una connessione protetta e con una non protetta. Se quella protetta non va e quella non protetta viene mandata altrove, c'è di mezzo una pagina di accesso (captive portal), come negli alberghi e sui treni.",
"ExplainProvider": "Trovato senza andare in rete, nella mappa degli operatori contenuta in me-web?, a partire dal suo indirizzo pubblico. Le note vengono dalla scheda tecnica dell'operatore o da segnalazioni degli utenti, ciascuna con fonte e data: dicono che cosa è normale, non che cosa dice il suo contratto.",
"ExplainRouter": "Console, chiamate e condivisione di file chiedono al router di aprire una porta, con UPnP, NAT-PMP o PCP. me-web? chiede al router solo se risponde e quale indirizzo internet ha; non apre nulla.",
"FactAdapter": "Scheda di rete",
"FactAddressesSeen": "Indirizzi IPv4 pubblici visti",
"FactChecks": "Verifiche",
"FactDns": "Server dei nomi (DNS)",
"FactGateway": "Indirizzo del router",
"FactHint": "Indizio",
"FactIpv6": "IPv6",
"FactLinkSpeed": "Velocità del collegamento",
"FactLocalAddress": "Indirizzo nella sua rete",
"FactLocalIpv6": "Indirizzi IPv6 di questo dispositivo",
"FactNatPmp": "NAT-PMP",
"FactNetwork": "Rete",
"FactNetworkIpv6": "Rete per IPv6",
"FactPcp": "PCP",
"FactProviderIpv4": "Indirizzo IPv4",
"FactProviderIpv6": "IPv6",
"FactProviderPort25": "Porta 25 della posta",
"FactProviderPublic": "Un indirizzo tutto suo",
"FactProviderSheet": "Scheda tecnica",
"FactPublicV4": "IPv4 pubblico",
"FactPublicV6": "IPv6 pubblico",
"FactRedirectedTo": "Reindirizzato a",
"FactRoute": "Primi passi del percorso",
"FactRouter": "Router",
"FactRouterWan": "Indirizzo internet del router",
"FactSince": "Dal",
"FactUpnp": "UPnP",
"FactWayOut": "Alternativa",
"FactWhoHasIpv6": "Indirizzo IPv6 assegnato a",
"FactWhoHasIt": "Indirizzo IPv4 assegnato a",
"HintSharedHop": "Un router dell'operatore usa un indirizzo dello spazio condiviso (100.64.x.x). Succede sia con la condivisione degli indirizzi sia senza, quindi da solo non prova nulla.",
"HistoryChanged": "Cambi del suo indirizzo IPv4 pubblico dal {1}: {2} (verifiche: {0}).",
"HistoryCleared": "Verifiche precedenti dimenticate.",
"HistoryFirst": "È la prima verifica da questa connessione. Verifichi di nuovo in altri giorni per vedere se l'indirizzo cambia.",
"HistoryStable": "Il suo indirizzo IPv4 pubblico è rimasto lo stesso dal {1} (verifiche: {0}).",
"IconsCredit": "Icone: Lucide (ISC).",
"Language": "Lingua",
"LinkCable": "Cavo",
"LinkMobile": "Dati mobili",
"LinkOther": "Rete",
"LinkWifi": "Wi-Fi",
"MapCredit": "Mappa degli operatori: iptoasn.com (PDDL), dati del {0}.",
"MapMissing": "Questa copia non contiene la mappa degli operatori.",
"NatDirect": "L'indirizzo IPv4 pubblico è assegnato direttamente a questo dispositivo.",
"NatDouble": "Due router in fila: il suo router sta dietro a un altro (doppio NAT).",
"NatHomeRouter": "Un solo router, ed è lui ad avere il suo indirizzo IPv4 pubblico.",
"NatNoIpv4": "Questa connessione non ha IPv4.",
"NatShared": "Il suo operatore condivide un solo indirizzo IPv4 pubblico tra molti clienti (CGNAT).",
"NatTranslated": "Il suo indirizzo viene tradotto di nuovo dopo il router: l'indirizzo del router non è quello che vede internet.",
"NatUnknown": "Da qui non si può dire se l'indirizzo IPv4 pubblico è solo suo: il router non ha detto quale indirizzo ha.",
"OnlineCaptive": "Una pagina di accesso blocca la connessione: apra il browser ed entri in questa rete.",
"OnlineGood": "Questo dispositivo raggiunge internet.",
"OnlineNoNames": "La rete funziona, ma i nomi come meweb.arasaka.software non si risolvono (DNS).",
"OnlineNoNetwork": "Questo dispositivo non è collegato a nessuna rete.",
"OnlineOffline": "Questo dispositivo è in rete, ma non raggiunge internet.",
"OnlineRewritten": "Internet risponde, ma qualcosa lungo la strada modifica le pagine web non protette.",
"OutcomeBad": "Ostacolo",
"OutcomeCaution": "Attenzione",
"OutcomeGood": "Bene",
"OutcomeInfo": "Informazione",
"OutcomeRunning": "In verifica",
"OutcomeUnknown": "Non determinabile",
"OutcomeWaiting": "In attesa",
"PathAnotherRouter": "Un altro router",
"PathInternet": "Internet",
"PathMobileNetwork": "Rete mobile",
"PathProvider": "Il suo operatore",
"PathRouter": "Il suo router",
"PathSharedGateway": "Uscita condivisa dell'operatore",
"PathThisComputer": "Questo computer",
"PathThisPhone": "Questo telefono",
"PathTitle": "Da questo dispositivo a internet",
"PathTranslation": "Un'altra traduzione degli indirizzi",
"PrivacyLine": "Niente telemetria, niente statistiche, niente rapporti sugli arresti anomali. Le sue verifiche restano solo su questo dispositivo.",
"ProviderIpv4PublicDynamic": "di solito pubblico, e può cambiare",
"ProviderIpv4Shared": "di solito condiviso con altri clienti (CGNAT)",
"ProviderIpv4SharedPorts": "di solito condiviso, con una parte delle porte per ciascun cliente",
"ProviderIpv4SharedUntilForward": "condiviso finché non apre una porta sul router dell'operatore, poi solo suo",
"ProviderIpv6Native": "offerto",
"ProviderIpv6None": "non offerto",
"ProviderIpv6Tunnel": "tramite un tunnel (6rd)",
"ProviderListed": "Il suo operatore è {0}.",
"ProviderNoAddress": "Senza un indirizzo pubblico non si può risalire all'operatore.",
"ProviderNoMap": "Questa copia di me-web? non contiene la mappa degli operatori.",
"ProviderNotFound": "La mappa degli operatori non conosce questo indirizzo.",
"ProviderPort25Blocked": "bloccata",
"ProviderPort25BlockedOnRequest": "bloccata, aperta su richiesta",
"ProviderPort25Closed": "chiusa",
"ProviderPort25Open": "aperta",
"ProviderPublicBusinessOnly": "solo per le linee aziendali",
"ProviderPublicFreeOnRequest": "gratis se lo chiede",
"ProviderPublicNone": "non offerto ai privati",
"ProviderPublicNotFound": "non è stata trovata un'offerta per la casa",
"ProviderPublicPaid": "statico, da circa {0} al mese",
"ProviderUnlisted": "Il suo operatore è {0}. me-web? non ha ancora note su questo operatore.",
"ResultsTitle": "Che cosa ha trovato me-web?",
"RouterMobile": "Con i dati mobili non c'è un router di casa: si passa subito dalla rete dell'operatore.",
"RouterNone": "Su questa connessione non è stato trovato un router di casa.",
"RouterOpens": "Il suo router risponde alle app che gli chiedono di aprire porte.",
"RouterRefuses": "Il suo router risponde, ma rifiuta le app che gli chiedono di aprire porte.",
"RouterSilent": "Il suo router non risponde alle app che gli chiedono di aprire porte.",
"SourceCode": "Codice sorgente",
"StatusCaptive": "Una pagina di accesso blocca la connessione",
"StatusChecking": "Verifico la connessione…",
"StatusOffline": "Non connesso a internet",
"StatusOnline": "Connesso a internet",
"SuggestCorrection": "Proponi una correzione",
"VersionLine": "me-web? {0} · software libero (AGPL-3.0)"
"UpdateAvailable": "È disponibile me-web? {0}.",
"UpdateOpen": "Scarica",
"ValueAnswered": "ha risposto",
"ValueCount": "{0}",
"ValueIpv6Direct": "ogni dispositivo ha il suo indirizzo pubblico",
"ValueIpv6NotThisDevice": "qualcosa di diverso da questo dispositivo",
"ValueIpv6Translated": "tradotto lungo la strada",
"ValueIpv6Way": "In IPv6 un dispositivo di casa si può raggiungere direttamente, se il firewall del router lo permette.",
"ValueMbps": "{0} Mbit/s",
"ValueOnThisDevice": "questo dispositivo",
"ValueOpenSheet": "Apri la scheda dell'operatore",
"ValueRefused": "ha rifiutato (codice {0})",
"ValueSharedAtHome": "il router, condiviso da tutti i dispositivi di casa",
"ValueSilent": "nessuna risposta",
"VersionLine": "me-web? {0} · software libero (AGPL-3.0)",
"WhatIsThis": "Che cosa significa?"
}