me-web? 0.6.0: provider notes from shared checks, and the internet seen from eight places
- Notes on providers in any country: findings people choose to share are counted on the publisher's server, one vote per network. A total appears on the provider card only after a person has reviewed it, and only when at least five different networks of that provider agree four times in five; the card says how many agree. Notes researched by hand still come first, and on mobile data the totals for the mobile network replace the notes about home lines. - "Connected to the internet through" now comes from eight RouteViews collectors (Oregon, Ashburn, London, Sao Paulo, Johannesburg, Dubai, Singapore, Sydney) instead of one in Oregon, each counting the same, so networks far from the United States are described from nearby. A network that only exchanges traffic with a collector's neighbour is no longer listed as one of its upstreams. - Ready for measuring servers outside Europe: once the publisher adds one, the app times each server and runs the speed test and the test from outside against the closest. None exists yet, so nothing changes today. - When me-web? has no notes on a provider, it says that findings shared at the end of a check help write them. - The privacy page states the rule for publishing totals. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012CzABvBkbcFqoHdmi8b9WB
This commit is contained in:
1 parent
c72a6be433
commit
d18caed157
139 files changed
+1403
-287
No files matched your search
@@ -67,7 +67,10 @@ The Android release key: alias `meweb`, certificate SHA-256
|
||||
| `src/MeWeb.Server` | `meweb.arasaka.software`: `/api/info`, `/api/ip`, the download page `/` and `/privacy` (en, it), `/download/{platform}` from the latest Gitea release, the probe (`/api/probe/ticket`, `/api/probe/{id}`) and shared findings (`/api/share`, files under `/var/lib/meweb/shares`, swept after `KeepDays`) |
|
||||
| `data/languages.json` | 113 languages: code, autonym, English name, `rtl`, `reviewed` or `draft` |
|
||||
| `data/isps/*.json` | provider profiles: AS numbers, and per fact a value, who said it (`basis`), the source URL and the month |
|
||||
| `src/MeWeb.Server/KnowledgeFeeder.cs` | refreshes the open network data under `/var/lib/meweb/knowledge` every six hours (iptoasn daily, DB-IP monthly, a RouteViews RIB weekly through `bzcat`, the AOSP carrier list weekly), builds `ip2asn.bin`, `networks.bin`, `carriers.json` and `SOURCES.txt` with `MeWeb.Core/Knowledge/Sources.cs`, and serves them at `/api/knowledge` |
|
||||
| `data/observed.json` | notes counted from shared findings and accepted by a person: per AS number and line (`home`, `mobile`), IPv4 shared or public, IPv6 offered or not, port 25, each with how many networks agree; embedded in every release |
|
||||
| `src/MeWeb.Server/ObservedNotes.cs` | every six hours (with the share sweep) counts the shared findings into `/var/lib/meweb/observed.json` on the box: one vote per /24 or /48, the latest check of each network, the publisher's own network left out; nothing is served |
|
||||
| `tools/observed.cs` | `show` prints that count, `accept <file> AS<n>/<line> ...` copies the ready notes (at least 5 networks, 4 in 5 agreeing) into `data/observed.json` |
|
||||
| `src/MeWeb.Server/KnowledgeFeeder.cs` | refreshes the open network data under `/var/lib/meweb/knowledge` every six hours (iptoasn daily, DB-IP monthly, eight RouteViews RIBs weekly through `bzcat` (one or two collectors per continent, `Collectors`; each counts once per network in `UpstreamTally`, and a path's first AS, the collector's own neighbour, is never taken for an upstream), the AOSP carrier list weekly), builds `ip2asn.bin`, `networks.bin`, `carriers.json` and `SOURCES.txt` with `MeWeb.Core/Knowledge/Sources.cs`, and serves them at `/api/knowledge` |
|
||||
| `tools/knowledge.cs` | takes the server's knowledge files (`MEWEB_KNOWLEDGE_URL`, default the public server; the release sets `http://127.0.0.1:5480` after deploying the server first) into `artifacts/knowledge/`, checking each SHA-256, and falls back to building `ip2asn.bin` alone from iptoasn (`--local` forces that); `MeWeb.Core` embeds whatever is there; `tools/release.cs` runs it before every app build |
|
||||
| `tools/setup.cs` + `setup.json` | pinned build tools |
|
||||
| `tools/Screenshots` | headless renders of every view in every language |
|
||||
@@ -110,6 +113,19 @@ The Android release key: alias `meweb`, certificate SHA-256
|
||||
- **The route is drawn, never trusted.** `Route.Trace` (8 TTLs) feeds the path's wires: hops after the first, up to
|
||||
the first public one, sit before the shared exit or the provider; public ones carry their AS number into the
|
||||
internet; unanswered runs collapse to "…". The NAT verdict never reads them (see the 100.64 pitfall).
|
||||
- **A measuring node is the same server with `Site__Node=true`.** It answers `/api/info`, `/api/ip`, the probe and the
|
||||
speed test; the page, privacy and downloads redirect to `meweb.arasaka.software`, shares and network data answer
|
||||
404. The app times every entry of `Endpoints.Nodes` against `Endpoints.Main` (three TCP connects each) and uses the
|
||||
closest for the speed test and the outside test only if it is under 70% of the main server's time; echo, STUN,
|
||||
shares and updates stay on the main server. `Endpoints.Nodes` is empty until a machine exists. Adding one is a
|
||||
release, never a config change, because the app must name every host it contacts: the `Endpoints.Nodes` entry
|
||||
(place, `{id}.meweb`, `v4.{id}.meweb`, `v6.{id}.meweb`, the hosting company), a paragraph in `PrivacyPage.cs` in
|
||||
both languages naming the host and its country, DNS through the portal, and on the node `Knowledge__Enabled=false`
|
||||
and `Probe__Refuse` set to the node's own addresses.
|
||||
- **A note from shared findings never ships without a person.** The consent screen and the privacy page promise
|
||||
"only totals without addresses, after a person has reviewed them, from at least five networks agreeing four in
|
||||
five"; `ObservedFact.Ready` is that rule, `tools/observed.cs accept` the review. Hand-written profile facts win over
|
||||
observed ones; observed facts fill the gaps, and on mobile data they replace the home-line profile entirely.
|
||||
- **The knowledge build must fit the unit's `MemoryMax=512M`.** It peaked at 551 MB with Server GC on a 32-core
|
||||
machine; workstation GC (the server's csproj), streaming hashes and streaming the iptoasn ranges into compact
|
||||
tuples brought it to about 335 MB. Re-measure (`VmHWM`) after touching `Sources.cs` or `AsnTable.Write`.
|
||||
|
||||
Reference in new issue
Block a user