global: format code

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
Jason A. Donenfeld
2020-03-09 12:36:47 -06:00
parent 40ebf8006e
commit 2e55e5fd05
19 changed files with 305 additions and 292 deletions
@@ -9,6 +9,21 @@ import com.wireguard.util.NonNullForAll;
@NonNullForAll
public final class BackendException extends Exception {
private final Object[] format;
private final Reason reason;
public BackendException(final Reason reason, final Object... format) {
this.reason = reason;
this.format = format;
}
public Object[] getFormat() {
return format;
}
public Reason getReason() {
return reason;
}
public enum Reason {
UNKNOWN_KERNEL_MODULE_NAME,
WG_QUICK_CONFIG_ERROR_CODE,
@@ -18,16 +33,4 @@ public final class BackendException extends Exception {
TUN_CREATION_ERROR,
GO_ACTIVATION_ERROR_CODE
}
private final Reason reason;
private final Object[] format;
public BackendException(final Reason reason, final Object ...format) {
this.reason = reason;
this.format = format;
}
public Reason getReason() {
return reason;
}
public Object[] getFormat() {
return format;
}
}
@@ -34,25 +34,21 @@ import java9.util.concurrent.CompletableFuture;
@NonNullForAll
public final class GoBackend implements Backend {
private static final String TAG = "WireGuard/" + GoBackend.class.getSimpleName();
private static CompletableFuture<VpnService> vpnService = new CompletableFuture<>();
public interface AlwaysOnCallback {
void alwaysOnTriggered();
}
@Nullable private static AlwaysOnCallback alwaysOnCallback;
public static void setAlwaysOnCallback(AlwaysOnCallback cb) {
alwaysOnCallback = cb;
}
private static CompletableFuture<VpnService> vpnService = new CompletableFuture<>();
private final Context context;
@Nullable private Tunnel currentTunnel;
@Nullable private Config currentConfig;
@Nullable private Tunnel currentTunnel;
private int currentTunnelHandle = -1;
public GoBackend(final Context context) {
SharedLibraryLoader.loadSharedLibrary(context, "wg-go");
this.context = context;
}
public static void setAlwaysOnCallback(AlwaysOnCallback cb) {
alwaysOnCallback = cb;
}
private static native String wgGetConfig(int handle);
private static native int wgGetSocketV4(int handle);
@@ -143,7 +139,7 @@ public final class GoBackend implements Backend {
setStateInternal(currentTunnel, null, State.DOWN);
try {
setStateInternal(tunnel, config, state);
} catch(final Exception e) {
} catch (final Exception e) {
if (originalTunnel != null)
setStateInternal(originalTunnel, originalConfig, State.UP);
throw e;
@@ -209,7 +205,7 @@ public final class GoBackend implements Backend {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)
builder.setMetered(false);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
service.setUnderlyingNetworks(null);
service.setUnderlyingNetworks(null);
builder.setBlocking(true);
try (final ParcelFileDescriptor tun = builder.establish()) {
@@ -246,13 +242,13 @@ public final class GoBackend implements Backend {
context.startService(new Intent(context, VpnService.class));
}
public interface AlwaysOnCallback {
void alwaysOnTriggered();
}
public static class VpnService extends android.net.VpnService {
@Nullable private GoBackend owner;
public void setOwner(final GoBackend owner) {
this.owner = owner;
}
public Builder getBuilder() {
return new Builder();
}
@@ -290,5 +286,9 @@ public final class GoBackend implements Backend {
}
return super.onStartCommand(intent, flags, startId);
}
public void setOwner(final GoBackend owner) {
this.owner = owner;
}
}
}
@@ -16,10 +16,11 @@ import java.util.Map;
@NonNullForAll
public class Statistics {
private long lastTouched = SystemClock.elapsedRealtime();
private final Map<Key, Pair<Long, Long>> peerBytes = new HashMap<>();
private long lastTouched = SystemClock.elapsedRealtime();
Statistics() { }
Statistics() {
}
void add(final Key key, final long rx, final long tx) {
peerBytes.put(key, Pair.create(rx, tx));
@@ -30,10 +31,6 @@ public class Statistics {
return SystemClock.elapsedRealtime() - lastTouched > 900;
}
public Key[] peers() {
return peerBytes.keySet().toArray(new Key[0]);
}
public long peerRx(final Key peer) {
if (!peerBytes.containsKey(peer))
return 0;
@@ -46,6 +43,10 @@ public class Statistics {
return peerBytes.get(peer).second;
}
public Key[] peers() {
return peerBytes.keySet().toArray(new Key[0]);
}
public long totalRx() {
long rx = 0;
for (final Pair<Long, Long> val : peerBytes.values()) {
@@ -15,16 +15,6 @@ import java.util.regex.Pattern;
@NonNullForAll
public interface Tunnel {
enum State {
DOWN,
TOGGLE,
UP;
public static State of(final boolean running) {
return running ? UP : DOWN;
}
}
int NAME_MAX_LENGTH = 15;
Pattern NAME_PATTERN = Pattern.compile("[a-zA-Z0-9_=+.-]{1,15}");
@@ -46,4 +36,14 @@ public interface Tunnel {
* @return The new state of the tunnel.
*/
void onStateChange(State newState);
enum State {
DOWN,
TOGGLE,
UP;
public static State of(final boolean running) {
return running ? UP : DOWN;
}
}
}
@@ -42,11 +42,10 @@ import java9.util.stream.Stream;
@NonNullForAll
public final class WgQuickBackend implements Backend {
private static final String TAG = "WireGuard/" + WgQuickBackend.class.getSimpleName();
private final RootShell rootShell;
private final ToolsInstaller toolsInstaller;
private final File localTemporaryDir;
private final RootShell rootShell;
private final Map<Tunnel, Config> runningConfigs = new HashMap<>();
private final ToolsInstaller toolsInstaller;
private boolean multipleTunnels;
public WgQuickBackend(final Context context, final RootShell rootShell, final ToolsInstaller toolsInstaller) {
@@ -55,10 +54,6 @@ public final class WgQuickBackend implements Backend {
this.toolsInstaller = toolsInstaller;
}
public void setMultipleTunnels(boolean on) {
multipleTunnels = on;
}
@Override
public Set<String> getRunningTunnelNames() {
final List<String> output = new ArrayList<>();
@@ -110,6 +105,10 @@ public final class WgQuickBackend implements Backend {
return output.get(0);
}
public void setMultipleTunnels(boolean on) {
multipleTunnels = on;
}
@Override
public State setState(final Tunnel tunnel, State state, @Nullable final Config config) throws Exception {
final State originalState = getState(tunnel);
@@ -135,7 +134,8 @@ public final class WgQuickBackend implements Backend {
for (final Pair<Tunnel, Config> entry : rewind) {
setStateInternal(entry.first, entry.second, State.UP);
}
} catch (final Exception ignored) { }
} catch (final Exception ignored) {
}
throw e;
}
}
@@ -153,7 +153,8 @@ public final class WgQuickBackend implements Backend {
setStateInternal(entry.getKey(), entry.getValue(), State.UP);
}
}
} catch (final Exception ignored) { }
} catch (final Exception ignored) {
}
throw e;
}
} else if (state == State.DOWN) {