From 90d3ddf96dbb1253a9d76847d4351cdda1d9b6d2 Mon Sep 17 00:00:00 2001 From: ProgrammerIn-wonderland <3838shah@gmail.com> Date: Sun, 4 Aug 2024 01:05:49 -0400 Subject: [PATCH] make doh_server and cors_proxy configurable in starter.js --- src/browser/net_utils.js | 2 -- src/browser/starter.js | 4 ++-- src/browser/wisp_network.js | 7 ++++--- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/browser/net_utils.js b/src/browser/net_utils.js index e27e1e192d..2375c88be1 100644 --- a/src/browser/net_utils.js +++ b/src/browser/net_utils.js @@ -1,5 +1,3 @@ -const DOH_SERVER = "https://dns.google/resolve"; - // https://www.iana.org/assignments/ieee-802-numbers/ieee-802-numbers.xhtml const ETHERTYPE_IPV4 = 0x0800; const ETHERTYPE_ARP = 0x0806; diff --git a/src/browser/starter.js b/src/browser/starter.js index 00b71d908c..2a14fc3575 100644 --- a/src/browser/starter.js +++ b/src/browser/starter.js @@ -295,10 +295,10 @@ V86.prototype.continue_init = async function(emulator, options) { if(options.network_relay_url === "fetch") { - this.network_adapter = new FetchNetworkAdapter(this.bus); + this.network_adapter = new FetchNetworkAdapter(this.bus, options); } else if(options.network_relay_url.startsWith("wisp://") || options.network_relay_url.startsWith("wisps://")) { - this.network_adapter = new WispNetworkAdapter(options.network_relay_url, this.bus); + this.network_adapter = new WispNetworkAdapter(options.network_relay_url, this.bus, options); } else { diff --git a/src/browser/wisp_network.js b/src/browser/wisp_network.js index b293b92f5c..f774ad088c 100644 --- a/src/browser/wisp_network.js +++ b/src/browser/wisp_network.js @@ -1,4 +1,5 @@ "use strict"; +const DEFAULT_DOH_SERVER = "cloudflare-dns.com"; /** * @constructor @@ -18,7 +19,7 @@ function WispNetworkAdapter(wisp_url, bus, config) this.vm_ip = new Uint8Array((config.vm_ip || "192.168.86.100").split(".").map(function(x) { return parseInt(x, 10); })); this.masquerade = config.masquerade === undefined || !!config.masquerade; this.vm_mac = new Uint8Array(6); - + this.doh_server = config.doh_server || DEFAULT_DOH_SERVER; this.tcp_conn = {}; this.bus.register("net" + this.id + "-mac", function(mac) { @@ -187,6 +188,7 @@ WispNetworkAdapter.prototype.send = function(data) { let packet = {}; parse_eth(data, packet); + if(packet.tcp) { let reply = {}; reply.eth = { ethertype: ETHERTYPE_IPV4, src: this.router_mac, dest: packet.eth.src }; @@ -280,8 +282,7 @@ WispNetworkAdapter.prototype.send = function(data) dest: packet.ipv4.src, }; reply.udp = { sport: 53, dport: packet.udp.sport }; - const fetchURL = "https://cloudflare-dns.com/dns-query"; - const result = await ((await fetch(fetchURL, {method: "POST", headers: [["content-type", "application/dns-message"]], body: packet.udp.data})).arrayBuffer()); + const result = await ((await fetch(`https://${this.doh_server}/dns-query`, {method: "POST", headers: [["content-type", "application/dns-message"]], body: packet.udp.data})).arrayBuffer()); reply.udp.data = new Uint8Array(result); this.receive(make_packet(reply));