summaryrefslogtreecommitdiffhomepage
path: root/app/src/main/java/com/wireguard/android/backend/GoBackend.java
diff options
context:
space:
mode:
authorSamuel Holland <samuel@sholland.org>2018-09-05 20:17:14 -0500
committerJason A. Donenfeld <Jason@zx2c4.com>2018-12-08 02:39:41 +0100
commitd1e85633fbe8d871355d2b9feb51e2c9983d8a21 (patch)
treed95ad1ae84d02fc3e18a211aa1e1ef8150d8fa35 /app/src/main/java/com/wireguard/android/backend/GoBackend.java
parenta264f7ab36bf1335999d53cb4a0d753c54b231d0 (diff)
Remodel the Model
- The configuration and crypto model is now entirely independent of Android classes other than Nullable and TextUtils. - Model classes are immutable and use builders that enforce the appropriate optional/required attributes. - The Android config proxies (for Parcelable and databinding) are moved to the Android side of the codebase, and are designed to be safe for two-way databinding. This allows proper observability in TunnelDetailFragment. - Various robustness fixes and documentation updates to helper classes. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'app/src/main/java/com/wireguard/android/backend/GoBackend.java')
-rw-r--r--app/src/main/java/com/wireguard/android/backend/GoBackend.java36
1 files changed, 4 insertions, 32 deletions
diff --git a/app/src/main/java/com/wireguard/android/backend/GoBackend.java b/app/src/main/java/com/wireguard/android/backend/GoBackend.java
index 295df9d0..97cf0f8e 100644
--- a/app/src/main/java/com/wireguard/android/backend/GoBackend.java
+++ b/app/src/main/java/com/wireguard/android/backend/GoBackend.java
@@ -22,13 +22,10 @@ import com.wireguard.android.util.ExceptionLoggers;
import com.wireguard.android.util.SharedLibraryLoader;
import com.wireguard.config.Config;
import com.wireguard.config.InetNetwork;
-import com.wireguard.config.Interface;
import com.wireguard.config.Peer;
-import com.wireguard.crypto.KeyEncoding;
import java.net.InetAddress;
import java.util.Collections;
-import java.util.Formatter;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.TimeUnit;
@@ -146,29 +143,7 @@ public final class GoBackend implements Backend {
}
// Build config
- final Interface iface = config.getInterface();
- final String goConfig;
- try (final Formatter fmt = new Formatter(new StringBuilder())) {
- fmt.format("replace_peers=true\n");
- if (iface.getPrivateKey() != null)
- fmt.format("private_key=%s\n", KeyEncoding.keyToHex(KeyEncoding.keyFromBase64(iface.getPrivateKey())));
- if (iface.getListenPort() != 0)
- fmt.format("listen_port=%d\n", config.getInterface().getListenPort());
- for (final Peer peer : config.getPeers()) {
- if (peer.getPublicKey() != null)
- fmt.format("public_key=%s\n", KeyEncoding.keyToHex(KeyEncoding.keyFromBase64(peer.getPublicKey())));
- if (peer.getPreSharedKey() != null)
- fmt.format("preshared_key=%s\n", KeyEncoding.keyToHex(KeyEncoding.keyFromBase64(peer.getPreSharedKey())));
- if (peer.getEndpoint() != null)
- fmt.format("endpoint=%s\n", peer.getResolvedEndpointString());
- if (peer.getPersistentKeepalive() != 0)
- fmt.format("persistent_keepalive_interval=%d\n", peer.getPersistentKeepalive());
- for (final InetNetwork addr : peer.getAllowedIPs()) {
- fmt.format("allowed_ip=%s\n", addr.toString());
- }
- }
- goConfig = fmt.toString();
- }
+ final String goConfig = config.toWgUserspaceString();
// Create the vpn tunnel with android API
final VpnService.Builder builder = service.getBuilder();
@@ -184,18 +159,15 @@ public final class GoBackend implements Backend {
for (final InetNetwork addr : config.getInterface().getAddresses())
builder.addAddress(addr.getAddress(), addr.getMask());
- for (final InetAddress addr : config.getInterface().getDnses())
+ for (final InetAddress addr : config.getInterface().getDnsServers())
builder.addDnsServer(addr.getHostAddress());
for (final Peer peer : config.getPeers()) {
- for (final InetNetwork addr : peer.getAllowedIPs())
+ for (final InetNetwork addr : peer.getAllowedIps())
builder.addRoute(addr.getAddress(), addr.getMask());
}
- int mtu = config.getInterface().getMtu();
- if (mtu == 0)
- mtu = 1280;
- builder.setMtu(mtu);
+ builder.setMtu(config.getInterface().getMtu().orElse(1280));
builder.setBlocking(true);
try (final ParcelFileDescriptor tun = builder.establish()) {