@@ -985,6 +985,13 @@ moshpitRouter.get("/pit", async (req, res) => {
985985 * internet, so the instruction is "change one setting", not "install a
986986 * browser".
987987 *
988+ * There is a second route, and leaving it off this page was a hole: TronBrowser
989+ * asks this registry over ordinary HTTPS before every navigation, so it needs no
990+ * network settings at all. It is listed after the resolvers because it only
991+ * fixes the browser -- curl, git and everything else on the machine still
992+ * resolve through DNS -- but it is the only route that works where DNS is
993+ * somebody else's to configure, and the only one that does not warn on https://.
994+ *
988995 * The addresses come from the environment (lib/moshpit-resolvers.mjs). When
989996 * none are configured this page says so and explains how to run one, rather
990997 * than inventing an address for a stranger to paste into their network
@@ -1025,6 +1032,8 @@ moshpitRouter.get("/pit/dns", async (req, res) => {
10251032 <span class="mono acid">.yeah</span> resolve like any other name — while
10261033 <span class="mono">.com</span>, <span class="mono">.org</span> and the rest of the internet keep
10271034 working exactly as before, forwarded on to 8.8.8.8 and 1.1.1.1.
1035+ If the DNS settings on the machine are not yours to change,
1036+ <a class="acid" href="#tron">TronBrowser</a> resolves the same namespace without touching them.
10281037 </p>
10291038 ${ pitTabs ( "dns" ) }
10301039
@@ -1045,8 +1054,41 @@ moshpitRouter.get("/pit/dns", async (req, res) => {
10451054 <li><b class="acid">A locked-down machine</b> where DNS is not yours to change — use DNS over HTTPS
10461055 in the browser. Firefox: Privacy & Security → DNS over HTTPS → custom provider. Chrome:
10471056 Security → Use secure DNS → custom.
1048- ${ doh ? `The endpoint is <code>${ esc ( doh ) } </code>.` : "An endpoint appears here once a resolver is up." } </li>
1057+ ${ doh ? `The endpoint is <code>${ esc ( doh ) } </code>.` : "An endpoint appears here once a resolver is up." }
1058+ Or run <a class="acid" href="#tron">TronBrowser</a>, which changes no network settings at all.</li>
1059+ </ol>
1060+
1061+ <h2 id="tron" style="margin-top:34px;font-size:1.2rem">Or change nothing: <span class="acid">TronBrowser</span></h2>
1062+ <p class="pit-copy">
1063+ <a class="acid" href="https://tronbrowser.dev" target="_blank" rel="noopener noreferrer">TronBrowser</a>
1064+ resolves these names itself. Before every navigation it asks this registry, over ordinary HTTPS, who
1065+ holds the name you typed. Nothing in your network settings changes, nothing needs admin rights, and
1066+ it works on a machine where DNS is somebody else's to configure.
1067+ </p>
1068+ <pre class="pit-pre"><code>curl -fsSL https://tronbrowser.dev/install.sh | sh <span class="faint"># macOS, Linux — Windows: the releases page</span>
1069+ tron http://scrambled.eggs <span class="faint"># or type it in the address bar</span></code></pre>
1070+ <ol class="pit-steps dim">
1071+ <li><b class="acid">Nothing to configure for a new ending.</b> <span class="mono">.eggs</span>,
1072+ <span class="mono">.moshpit</span>, <span class="mono">.yeah</span> resolve out of the box — the
1073+ legacy root has never heard of them, so there is nothing to conflict with.</li>
1074+ <li><b class="acid">Contested names are a setting.</b> Settings → Name resolution → <em>When a name
1075+ exists in both</em>. <b>Clearnet wins</b> is the default and never redirects a domain that already
1076+ works; <b>Moshpit wins</b> lets a registered name override the clearnet one. It is the same
1077+ decision the resolvers make with <code>MOSHPIT_RESOLVE_MODE</code>, taken per browser instead of
1078+ per network.</li>
1079+ <li><b class="acid">Claim from the address bar.</b> <code>mosh.eggs</code> opens the Pit for
1080+ <span class="mono acid">.eggs</span>. <code>mosh.</code><em>anything</em> is reserved, so nobody
1081+ can register that label and impersonate the page you register on.</li>
1082+ <li><b class="acid">Your own pit</b> — Settings → Name resolution → Registry (advanced). Point it at
1083+ the registry you run and it is looked up exactly like this one.</li>
1084+ <li><b class="acid">Needs 3.8.8 or newer.</b> Older builds sent a claimed-but-unpointed name to a URL
1085+ that has never existed, so parking 404'd. <code>tron upgrade</code> — and a stale address left in
1086+ settings by one of those builds is discarded on the way, rather than outliving the fix.</li>
10491087 </ol>
1088+ <p class="pit-copy" style="font-size:.9rem">
1089+ It fixes the browser, not the machine: <code>curl</code>, <code>git</code> and everything else still
1090+ go through DNS. On a machine you control, run both.
1091+ </p>
10501092
10511093 <h2 style="margin-top:34px;font-size:1.2rem">Check it worked</h2>
10521094 <pre class="pit-pre"><code>dig +short anything.moshpit <span class="faint"># an address, not an error</span>
@@ -1056,13 +1098,24 @@ nslookup anything.moshpit <span class="faint"># the Windows spelling</span
10561098 A <code>TXT</code> lookup on any Moshpit name reports which registry and gateway answered — the
10571099 fastest way to tell a resolver problem from a site problem.
10581100 </p>
1101+ <p class="pit-copy" style="font-size:.9rem">
1102+ On the browser route there is nothing to <code>dig</code>: resolution never touches DNS. Open
1103+ <code>mosh.eggs</code> — if the Pit loads, the browser is talking to this registry.
1104+ </p>
10591105
10601106 <h2 style="margin-top:34px;font-size:1.2rem">What still breaks</h2>
10611107 <p class="pit-copy">
1062- <code>https://</code> on a Moshpit name will warn. No public certificate authority will issue for
1063- <span class="mono">scrambled.eggs</span>, because none of them recognise a namespace that does not
1064- descend from the ICANN root. Plain <code>http://</code> works, and so does this site. A
1065- certificate authority you opt into is the real answer, and it is not built yet.
1108+ <code>https://</code> on a Moshpit name will warn <em>on the resolver route</em>. No public
1109+ certificate authority will issue for <span class="mono">scrambled.eggs</span>, because none of them
1110+ recognise a namespace that does not descend from the ICANN root. Plain <code>http://</code> works,
1111+ and so does this site. A certificate authority you opt into is the real answer, and it is not built
1112+ yet.
1113+ </p>
1114+ <p class="pit-copy" style="font-size:.9rem">
1115+ TronBrowser sidesteps it rather than solving it: it rewrites the navigation to this registry's own
1116+ <code>https://</code> host, so the certificate is one the browser already trusts. The address bar
1117+ shows where it landed, not what you typed — an honest trade, and the reason the two routes are
1118+ documented separately.
10661119 </p>
10671120 <p class="pit-copy" style="font-size:.9rem">
10681121 Clearnet lookups are forwarded to Google and Cloudflare, which is what a forwarder does. Run your
0 commit comments