diff --git a/catvod/src/main/java/com/github/catvod/net/OkDns.java b/catvod/src/main/java/com/github/catvod/net/OkDns.java index 6a157e094..e16361020 100644 --- a/catvod/src/main/java/com/github/catvod/net/OkDns.java +++ b/catvod/src/main/java/com/github/catvod/net/OkDns.java @@ -4,17 +4,17 @@ import androidx.annotation.NonNull; import java.net.InetAddress; import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.List; -import java.util.regex.Pattern; import okhttp3.Dns; import okhttp3.dnsoverhttps.DnsOverHttps; public class OkDns implements Dns { - private final Pattern IP = Pattern.compile("\\b(?:(?:[0-9]{1,3}\\.){3}[0-9]{1,3}|[0-9a-fA-F:]{2,39})\\b"); - private final HashMap map; + private final HashMap> map; private DnsOverHttps doh; public OkDns() { @@ -29,23 +29,25 @@ public class OkDns implements Dns { for (String host : hosts) { if (!host.contains("=")) continue; String[] splits = host.split("="); - map.put(splits[0], splits[1]); + String oldHost = splits[0]; + String newHost = splits[1]; + if (!map.containsKey(oldHost)) map.put(oldHost, new ArrayList<>()); + map.get(oldHost).addAll(getAllByName(newHost)); } } - private boolean isAddress(String input) { + private List getAllByName(String host) { try { - return IP.matcher(input).find(); + return new ArrayList<>(Arrays.asList(InetAddress.getAllByName(host))); } catch (Exception e) { - return false; + return new ArrayList<>(); } } @NonNull @Override public List lookup(@NonNull String hostname) throws UnknownHostException { - String target = map.containsKey(hostname) ? map.get(hostname) : hostname; - return isAddress(target) ? List.of(InetAddress.getByName(target)) : (doh != null ? doh : Dns.SYSTEM).lookup(target); + return map.containsKey(hostname) ? map.get(hostname) : (doh != null ? doh : Dns.SYSTEM).lookup(hostname); } } diff --git a/quickjs/build.gradle b/quickjs/build.gradle index 328573ae7..8e8e8a2aa 100644 --- a/quickjs/build.gradle +++ b/quickjs/build.gradle @@ -24,7 +24,7 @@ android { dependencies { implementation project(':catvod') - implementation 'wang.harlon.quickjs:wrapper-java:2.4.3' - implementation 'wang.harlon.quickjs:wrapper-android:2.4.3' + implementation 'wang.harlon.quickjs:wrapper-java:2.4.4' + implementation 'wang.harlon.quickjs:wrapper-android:2.4.4' implementation 'net.sourceforge.streamsupport:android-retrofuture:1.7.4' } \ No newline at end of file