tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_trr_domain.js (3568B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 "use strict";
      6 
      7 // This test simmulates intermittent native DNS functionality.
      8 // We verify that we don't use the negative DNS record for the DoH server.
      9 // The first resolve of foo.example.com fails, so we expect TRR not to work.
     10 // Immediately after the native DNS starts working, it should connect to the
     11 // TRR server and start working.
     12 
     13 const override = Cc["@mozilla.org/network/native-dns-override;1"].getService(
     14  Ci.nsINativeDNSResolverOverride
     15 );
     16 
     17 function setup() {
     18  trr_test_setup();
     19  Services.prefs.clearUserPref("network.trr.bootstrapAddr");
     20  Services.prefs.clearUserPref("network.dns.native-is-localhost");
     21 }
     22 setup();
     23 
     24 registerCleanupFunction(async () => {
     25  trr_clear_prefs();
     26  override.clearOverrides();
     27 });
     28 
     29 add_task(async function intermittent_dns_mode3() {
     30  override.addIPOverride("foo.example.com", "N/A");
     31  let trrServer = new TRRServer();
     32  registerCleanupFunction(async () => {
     33    await trrServer.stop();
     34  });
     35  await trrServer.start();
     36  info(`port = ${trrServer.port()}\n`);
     37  Services.dns.clearCache(true);
     38  Services.prefs.setCharPref(
     39    "network.trr.uri",
     40    `https://foo.example.com:${trrServer.port()}/dns-query`
     41  );
     42  Services.prefs.setIntPref("network.trr.mode", Ci.nsIDNSService.MODE_TRRONLY);
     43  await trrServer.registerDoHAnswers("example.com", "A", {
     44    answers: [
     45      {
     46        name: "example.com",
     47        ttl: 55,
     48        type: "A",
     49        flush: false,
     50        data: "1.2.3.4",
     51      },
     52    ],
     53  });
     54  let { inStatus } = await new TRRDNSListener("example.com", {
     55    expectedSuccess: false,
     56  });
     57  equal(inStatus, Cr.NS_ERROR_UNKNOWN_HOST);
     58  await trrServer.registerDoHAnswers("example.org", "A", {
     59    answers: [
     60      {
     61        name: "example.org",
     62        ttl: 55,
     63        type: "A",
     64        flush: false,
     65        data: "1.2.3.4",
     66      },
     67    ],
     68  });
     69  override.addIPOverride("foo.example.com", "127.0.0.1");
     70  await new TRRDNSListener("example.org", { expectedAnswer: "1.2.3.4" });
     71  await trrServer.stop();
     72 });
     73 
     74 add_task(async function intermittent_dns_mode2() {
     75  override.addIPOverride("foo.example.com", "N/A");
     76  let trrServer = new TRRServer();
     77  registerCleanupFunction(async () => {
     78    await trrServer.stop();
     79  });
     80  await trrServer.start();
     81  info(`port = ${trrServer.port()}\n`);
     82 
     83  Services.dns.clearCache(true);
     84  Services.prefs.setIntPref(
     85    "network.trr.mode",
     86    Ci.nsIDNSService.MODE_NATIVEONLY
     87  );
     88  Services.prefs.setCharPref(
     89    "network.trr.uri",
     90    `https://foo.example.com:${trrServer.port()}/dns-query`
     91  );
     92  Services.prefs.setIntPref("network.trr.mode", Ci.nsIDNSService.MODE_TRRFIRST);
     93  await trrServer.registerDoHAnswers("example.com", "A", {
     94    answers: [
     95      {
     96        name: "example.com",
     97        ttl: 55,
     98        type: "A",
     99        flush: false,
    100        data: "1.1.1.1",
    101      },
    102    ],
    103  });
    104  override.addIPOverride("example.com", "2.2.2.2");
    105  await new TRRDNSListener("example.com", {
    106    expectedAnswer: "2.2.2.2",
    107  });
    108  await trrServer.registerDoHAnswers("example.org", "A", {
    109    answers: [
    110      {
    111        name: "example.org",
    112        ttl: 55,
    113        type: "A",
    114        flush: false,
    115        data: "1.2.3.4",
    116      },
    117    ],
    118  });
    119  override.addIPOverride("example.org", "3.3.3.3");
    120  override.addIPOverride("foo.example.com", "127.0.0.1");
    121  await new TRRDNSListener("example.org", { expectedAnswer: "1.2.3.4" });
    122  await trrServer.stop();
    123 });