Changeset ea9a332 for router


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)

Location:
router/java/src/net/i2p/router
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • 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.