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. https://developers.google.com/speed/public-dns/docs/dns-over-https https://developers.cloudflare.com/1.1.1.1/dns-over-https/json-format/
    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
        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 Total length should be == alreadyTransferred + currentWrite + bytesRemaining for all calls
        Specified by:
        bytesTransferred in interface EepGet.StatusListener
      • transferComplete

        public void transferComplete​(long alreadyTransferred,
                                     long bytesTransferred,
                                     long bytesRemaining,
                                     String url,
                                     String outputFile,
                                     boolean notModified)
        Specified by:
        transferComplete in interface EepGet.StatusListener
      • 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)