lookup realtime

pull/587/head
FongMi 1 year ago
parent 5815d71853
commit 8d45c23811
  1. 17
      catvod/src/main/java/com/github/catvod/net/OkDns.java

@ -4,8 +4,6 @@ import androidx.annotation.NonNull;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
@ -14,7 +12,7 @@ import okhttp3.dnsoverhttps.DnsOverHttps;
public class OkDns implements Dns { public class OkDns implements Dns {
private final ConcurrentHashMap<String, List<InetAddress>> map; private final ConcurrentHashMap<String, String> map;
private DnsOverHttps doh; private DnsOverHttps doh;
public OkDns() { public OkDns() {
@ -35,23 +33,14 @@ public class OkDns implements Dns {
String[] splits = host.split("="); String[] splits = host.split("=");
String oldHost = splits[0]; String oldHost = splits[0];
String newHost = splits[1]; String newHost = splits[1];
if (!map.containsKey(oldHost)) map.put(oldHost, new ArrayList<>()); map.put(oldHost, newHost);
map.get(oldHost).addAll(getAllByName(newHost));
}
}
private List<InetAddress> getAllByName(String host) {
try {
return Arrays.asList(InetAddress.getAllByName(host));
} catch (Exception e) {
return new ArrayList<>();
} }
} }
@NonNull @NonNull
@Override @Override
public List<InetAddress> lookup(@NonNull String hostname) throws UnknownHostException { public List<InetAddress> lookup(@NonNull String hostname) throws UnknownHostException {
return map.containsKey(hostname) ? map.get(hostname) : (doh != null ? doh : Dns.SYSTEM).lookup(hostname); return (doh != null ? doh : Dns.SYSTEM).lookup(map.containsKey(hostname) ? map.get(hostname) : hostname);
} }
} }

Loading…
Cancel
Save