Преглед изворни кода

Do not do DNS lookups for IPs

This involves reflection, which is a bummer, but it's better than doing
unnecessary DNS lookups.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
master
Jason A. Donenfeld пре 6 година
родитељ
комит
693228985d
4 измењених фајлова са 29 додато и 14 уклоњено
  1. +27
    -0
      app/src/main/java/com/wireguard/config/Attribute.java
  2. +1
    -5
      app/src/main/java/com/wireguard/config/IPCidr.java
  3. +1
    -7
      app/src/main/java/com/wireguard/config/Interface.java
  4. +0
    -2
      app/src/main/java/com/wireguard/config/Peer.java

+ 27
- 0
app/src/main/java/com/wireguard/config/Attribute.java Прегледај датотеку

@@ -2,6 +2,9 @@ package com.wireguard.config;

import android.text.TextUtils;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.InetAddress;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -54,6 +57,30 @@ enum Attribute {
return string.trim().split("\\s*,\\s*");
}

private static Method parseNumericAddressMethod;
static {
try {
parseNumericAddressMethod = InetAddress.class.getMethod("parseNumericAddress", new Class[]{String.class});
} catch (Exception e) {
throw new RuntimeException(e);
}
}

public static InetAddress parseIPString(final String address) {
if (address == null || address.isEmpty())
throw new IllegalArgumentException("Empty address");
try {
return (InetAddress)parseNumericAddressMethod.invoke(null, new Object[]{address});
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
} catch (InvocationTargetException e) {
if (e.getCause() instanceof IllegalArgumentException)
throw (IllegalArgumentException)e.getCause();
else
throw new IllegalArgumentException(e.getCause());
}
}

public String composeWith(final Object value) {
return String.format("%s = %s%n", token, value);
}


+ 1
- 5
app/src/main/java/com/wireguard/config/IPCidr.java Прегледај датотеку

@@ -39,11 +39,7 @@ public class IPCidr implements Parcelable {
} catch (Exception e) {
}
}
try {
address = InetAddress.getByName(in);
} catch (UnknownHostException e) {
throw new IllegalArgumentException(e);
}
address = Attribute.parseIPString(in);
if ((address instanceof Inet6Address) && (cidr > 128 || cidr < 0))
cidr = 128;
else if ((address instanceof Inet4Address) && (cidr > 32 || cidr < 0))


+ 1
- 7
app/src/main/java/com/wireguard/config/Interface.java Прегледај датотеку

@@ -172,13 +172,7 @@ public class Interface extends BaseObservable implements Parcelable {
public void addDnses(String[] dnses) {
if (dnses != null && dnses.length > 0) {
for (final String dns : dnses) {
if (dns.isEmpty())
throw new IllegalArgumentException("DNS is empty");
try {
this.dnsList.add(InetAddress.getByName(dns));
} catch (UnknownHostException e) {
throw new IllegalArgumentException(e);
}
this.dnsList.add(Attribute.parseIPString(dns));
}
}
notifyPropertyChanged(BR.dnses);


+ 0
- 2
app/src/main/java/com/wireguard/config/Peer.java Прегледај датотеку

@@ -144,8 +144,6 @@ public class Peer extends BaseObservable implements Parcelable {
public void addAllowedIPs(String[] allowedIPs) {
if (allowedIPs != null && allowedIPs.length > 0) {
for (final String allowedIP : allowedIPs) {
if (allowedIP.isEmpty())
throw new IllegalArgumentException("AllowedIP is empty");
this.allowedIPsList.add(new IPCidr(allowedIP));
}
}


Loading…
Откажи
Сачувај