Package net.i2p.util

Class DNSOverHTTPS

  • All Implemented Interfaces:
    EepGet.StatusListener

    public class DNSOverHTTPS
    extends Object
    implements EepGet.StatusListener
    Simple implemetation of DNS over HTTPS. Also sets the local clock from the received date header. Warning - not thread-safe. Create new instances as necessary. As of 0.9.49, this supports the RFC 8484 (DNS) format only. Does NOT support the JSON format (used prior to 0.9.49) or RFC 7858 (DNS over TLS). https://developers.google.com/speed/public-dns/docs/dns-over-https https://developers.cloudflare.com/1.1.1.1/dns-over-https/json-format/ https://github.com/curl/curl/wiki/DNS-over-HTTPS
    Since:
    0.9.35
    • Method Detail

      • lookup

        public String lookup​(String host)
        V4_ONLY
        Returns:
        null if not found
      • clearCaches

        public static void clearCaches()
      • bytesTransferred

        public void bytesTransferred​(long alreadyTransferred,
                                     int currentWrite,
                                     long bytesTransferred,
                                     long bytesRemaining,
                                     String url)
        Description copied from interface: EepGet.StatusListener
        Total length should be == alreadyTransferred + currentWrite + bytesRemaining for all calls
        Specified by:
        bytesTransferred in interface EepGet.StatusListener
        Parameters:
        alreadyTransferred - total of all attempts, not including currentWrite If nonzero on the first call, a partial file of that length was found, _and_ the server supports resume. If zero on a subsequent call after some bytes are transferred (and presumably after an attemptFailed), the server does _not_ support resume and we had to start over. To track _actual_ transfer if the output file could already exist, the listener should keep its own counter, or subtract the initial alreadyTransferred value. And watch out for alreadyTransferred resetting if a resume failed...
        currentWrite - since last call to the listener
        bytesTransferred - includes headers, retries, redirects, discarded partial downloads, ...
        bytesRemaining - on this attempt only, currentWrite already subtracted - or -1 if chunked encoding or server does not return a length
      • headerReceived

        public void headerReceived​(String url,
                                   int attemptNum,
                                   String key,
                                   String val)
        Use the Date header as a backup time source. Code from Reseeder. We set the stratum to a lower (better) value than in Reseeder, as Cloudflare and Google probably have a better idea than our reseeds.
        Specified by:
        headerReceived in interface EepGet.StatusListener
      • main

        public static void main​(String[] args)