Changeset ea9a332


Ignore:
Timestamp:
Apr 17, 2018 5:16:51 PM (2 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
75c20c9
Parents:
d621e19
Message:

DNSoverHTTPS for SSLEepGet and NTP (ticket #2201)

Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • core/java/src/net/i2p/util/CommandLine.java

    rd621e19 rea9a332  
    3333        "net.i2p.util.Addresses",
    3434        "net.i2p.util.ConvertToHash",
     35        "net.i2p.util.DNSOverHTTPS",
    3536        "net.i2p.util.EepGet",
    3637        "net.i2p.util.EepHead",
  • core/java/src/net/i2p/util/ObjectCounter.java

    rd621e19 rea9a332  
    5252
    5353    /**
    54      *  start over
     54     *  Start over. Reset the count for all keys to zero.
    5555     *  @since 0.7.11
    5656     */
     
    5858        this.map.clear();
    5959    }
     60
     61    /**
     62     *  Reset the count for this key to zero
     63     *  @since 0.9.36
     64     */
     65    public void clear(K h) {
     66        this.map.remove(h);
     67    }
    6068}
    6169
  • core/java/src/net/i2p/util/SSLEepGet.java

    rd621e19 rea9a332  
    102102
    103103    private static final String CERT_DIR = "certificates/ssl";
     104    private static final String PROP_USE_DNS_OVER_HTTPS = "eepget.useDNSOverHTTPS";
     105    private static final boolean DEFAULT_USE_DNS_OVER_HTTPS = true;
    104106
    105107    /**
     
    707709                    port = 443;
    708710
     711                String originalHost = host;
     712                boolean useDNSOverHTTPS = _context.getProperty(PROP_USE_DNS_OVER_HTTPS, DEFAULT_USE_DNS_OVER_HTTPS);
     713                // This duplicates checks in DNSOverHTTPS.lookup() but do it here too so
     714                // we don't even construct it if we don't need it
     715                if (useDNSOverHTTPS && !host.equals("dns.google.com") && !Addresses.isIPAddress(host)) {
     716                    DNSOverHTTPS doh = new DNSOverHTTPS(_context, getSSLState());
     717                    String ip = doh.lookup(host);
     718                    if (ip != null)
     719                        host = ip;
     720                }
     721
    709722                if (_shouldProxy) {
    710723                    if (_log.shouldLog(Log.DEBUG))
     
    758771                if (!_bypassVerification) {
    759772                    try {
    760                         I2PSSLSocketFactory.verifyHostname(_context, socket, host);
     773                        I2PSSLSocketFactory.verifyHostname(_context, socket, originalHost);
    761774                    } catch (SSLException ssle) {
    762775                        if (_saveCerts > 0 && _stm != null)
  • history.txt

    rd621e19 rea9a332  
    112018-04-17 zzz
    22 * Console: Fix sidebar status when updating plugin (ticket #2137)
     3 * Reseed, NTP: Use DNSoverHTTPS (ticket #2201)
     4 * SusiMail: Fix error message on login page
    35
    462018-04-16 zzz
  • router/java/src/net/i2p/router/RouterVersion.java

    rd621e19 rea9a332  
    1919    public final static String ID = "Monotone";
    2020    public final static String VERSION = CoreVersion.VERSION;
    21     public final static long BUILD = 3;
     21    public final static long BUILD = 4;
    2222
    2323    /** for example "-test" */
  • router/java/src/net/i2p/router/time/NtpClient.java

    rd621e19 rea9a332  
    4242import java.util.concurrent.ConcurrentHashMap;
    4343
     44import net.i2p.I2PAppContext;
    4445import net.i2p.data.DataHelper;
     46import net.i2p.util.Addresses;
     47import net.i2p.util.DNSOverHTTPS;
    4548import net.i2p.util.HexDump;
    4649import net.i2p.util.Log;
     
    7477    // IP:reason for servers that sent us a kiss of death
    7578    private static final Map<String, String> kisses = new ConcurrentHashMap<String, String>(2);
     79    private static final String PROP_USE_DNS_OVER_HTTPS = "time.useDNSOverHTTPS";
     80    private static final boolean DEFAULT_USE_DNS_OVER_HTTPS = true;
    7681
    7782    /**
     
    145150    private static long[] currentTimeAndStratum(String serverName, int timeout, boolean preferIPv6, Log log) {
    146151        DatagramSocket socket = null;
     152        I2PAppContext ctx = I2PAppContext.getGlobalContext();
     153        boolean useDNSOverHTTPS = ctx.getProperty(PROP_USE_DNS_OVER_HTTPS, DEFAULT_USE_DNS_OVER_HTTPS);
    147154        try {
    148155            // Send request
    149156            InetAddress address;
    150157            if (preferIPv6) {
    151                 InetAddress[] addrs = InetAddress.getAllByName(serverName);
    152                 if (addrs == null || addrs.length == 0)
    153                     throw new UnknownHostException();
    154                 address = null;
    155                 for (int i = 0; i < addrs.length; i++) {
    156                     if (addrs[i] instanceof Inet6Address) {
    157                         address = addrs[i];
    158                         break;
     158                String ip = null;
     159                if (useDNSOverHTTPS) {
     160                    DNSOverHTTPS doh = new DNSOverHTTPS(ctx);
     161                    ip = doh.lookup(serverName, DNSOverHTTPS.Type.V6_PREFERRED);
     162                }
     163                if (ip != null) {
     164                    address = InetAddress.getByName(ip);
     165                } else {
     166                    // fallback to regular DNS
     167                    InetAddress[] addrs = InetAddress.getAllByName(serverName);
     168                    if (addrs == null || addrs.length == 0)
     169                        throw new UnknownHostException();
     170                    address = null;
     171                    for (int i = 0; i < addrs.length; i++) {
     172                        if (addrs[i] instanceof Inet6Address) {
     173                            address = addrs[i];
     174                            break;
     175                        }
     176                        if (address == null)
     177                            address = addrs[0];
    159178                    }
    160                     if (address == null)
    161                         address = addrs[0];
    162179                }
    163180            } else {
     181                if (useDNSOverHTTPS) {
     182                    DNSOverHTTPS doh = new DNSOverHTTPS(ctx);
     183                    String ip = doh.lookup(serverName, DNSOverHTTPS.Type.V4_ONLY);
     184                    if (ip != null)
     185                        serverName = ip;
     186                }
     187                // fallback to regular DNS
    164188                address = InetAddress.getByName(serverName);
    165189            }
Note: See TracChangeset for help on using the changeset viewer.