From af97eedcbb778ab4bab3d0474f80b967f57ee41a Mon Sep 17 00:00:00 2001 From: zzz Date: Mon, 26 Oct 2020 12:22:54 +0000 Subject: [PATCH] Util: Fix EepGet allowCaching parameter Add SSLEepGet method to force DoH on/off --- core/java/src/net/i2p/util/EepGet.java | 2 +- core/java/src/net/i2p/util/SSLEepGet.java | 20 ++++++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/core/java/src/net/i2p/util/EepGet.java b/core/java/src/net/i2p/util/EepGet.java index 23e550f8a3..d9aae40f02 100644 --- a/core/java/src/net/i2p/util/EepGet.java +++ b/core/java/src/net/i2p/util/EepGet.java @@ -34,7 +34,6 @@ import net.i2p.data.Base32; import net.i2p.data.Base64; import net.i2p.data.ByteArray; import net.i2p.data.DataHelper; -import net.i2p.util.InternalSocket; /** * EepGet [-p 127.0.0.1:4444] @@ -174,6 +173,7 @@ public class EepGet { _bytesRemaining = -1; _fetchHeaderTimeout = CONNECT_TIMEOUT; _listeners = new ArrayList(1); + _allowCaching = allowCaching; _etag = etag; _lastModified = lastModified; _etagOrig = etag; diff --git a/core/java/src/net/i2p/util/SSLEepGet.java b/core/java/src/net/i2p/util/SSLEepGet.java index c771f9096a..6aef33b567 100644 --- a/core/java/src/net/i2p/util/SSLEepGet.java +++ b/core/java/src/net/i2p/util/SSLEepGet.java @@ -99,6 +99,7 @@ public class SSLEepGet extends EepGet { /** may be null if init failed */ private SavingTrustManager _stm; private final ProxyType _proxyType; + private int _forceDoH; private static final String CERT_DIR = "certificates/ssl"; private static final String PROP_USE_DNS_OVER_HTTPS = "eepget.useDNSOverHTTPS"; @@ -547,6 +548,15 @@ public class SSLEepGet extends EepGet { return new SSLState(_sslContext); } + /** + * Override the config setting, force DNSoverHTTPS on or off + * Call before the fetch. + * @since 0.9.49 + */ + public void forceDNSOverHTTPS(boolean on) { + _forceDoH = on ? 2 : 1; + } + ///// end of all the SSL stuff ///// start of overrides @@ -732,10 +742,16 @@ public class SSLEepGet extends EepGet { port = 443; String originalHost = host; - boolean useDNSOverHTTPS = _context.getProperty(PROP_USE_DNS_OVER_HTTPS, DEFAULT_USE_DNS_OVER_HTTPS); + boolean useDNSOverHTTPS; + if (_forceDoH == 2) + useDNSOverHTTPS = true; + else if (_forceDoH == 1) + useDNSOverHTTPS = false; + else + useDNSOverHTTPS = _context.getProperty(PROP_USE_DNS_OVER_HTTPS, DEFAULT_USE_DNS_OVER_HTTPS); // This duplicates checks in DNSOverHTTPS.lookup() but do it here too so // we don't even construct it if we don't need it - if (useDNSOverHTTPS && !host.equals("dns.google.com") && !Addresses.isIPAddress(host)) { + if (useDNSOverHTTPS && !host.equals("dns.google") && !Addresses.isIPAddress(host)) { DNSOverHTTPS doh = new DNSOverHTTPS(_context, getSSLState()); String ip = doh.lookup(host); if (ip != null)