diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2018-06-07 04:35:07 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2018-06-07 04:35:07 +0200 |
commit | 21d9ba41056f7c40ee69245fa51319db6d39c991 (patch) | |
tree | d977167b737cb235ff78b56bd8f42d698cd77d13 /app/src/main/java/com/wireguard/android/backend | |
parent | Give Samuel heart attack by removing Dagger (diff) | |
download | wireguard-android-21d9ba41056f7c40ee69245fa51319db6d39c991.tar.xz wireguard-android-21d9ba41056f7c40ee69245fa51319db6d39c991.zip |
Backend: abstract version information
Diffstat (limited to 'app/src/main/java/com/wireguard/android/backend')
3 files changed, 32 insertions, 3 deletions
diff --git a/app/src/main/java/com/wireguard/android/backend/Backend.java b/app/src/main/java/com/wireguard/android/backend/Backend.java index 9a88550c..875cbd78 100644 --- a/app/src/main/java/com/wireguard/android/backend/Backend.java +++ b/app/src/main/java/com/wireguard/android/backend/Backend.java @@ -62,4 +62,19 @@ public interface Backend { * @return The updated state of the tunnel. */ State setState(Tunnel tunnel, State state) throws Exception; + + /** + * Determine version of underlying backend. + * + * @return The version of the backend. + * @throws Exception + */ + String getVersion() throws Exception; + + /** + * Determine type name of underlying backend. + * + * @return Type name + */ + String getTypeName(); } 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 8c8d593a..10d8d911 100644 --- a/app/src/main/java/com/wireguard/android/backend/GoBackend.java +++ b/app/src/main/java/com/wireguard/android/backend/GoBackend.java @@ -58,7 +58,11 @@ public final class GoBackend implements Backend { private static native String wgVersion(); - public static String getVersion() { return wgVersion(); } + @Override + public String getVersion() { return wgVersion(); } + + @Override + public String getTypeName() { return "Go userspace"; } @Override public Config applyConfig(final Tunnel tunnel, final Config config) throws Exception { diff --git a/app/src/main/java/com/wireguard/android/backend/WgQuickBackend.java b/app/src/main/java/com/wireguard/android/backend/WgQuickBackend.java index 56d62a1f..2068e5f4 100644 --- a/app/src/main/java/com/wireguard/android/backend/WgQuickBackend.java +++ b/app/src/main/java/com/wireguard/android/backend/WgQuickBackend.java @@ -13,8 +13,6 @@ import com.wireguard.android.Application; import com.wireguard.android.model.Tunnel; import com.wireguard.android.model.Tunnel.State; import com.wireguard.android.model.Tunnel.Statistics; -import com.wireguard.android.util.RootShell; -import com.wireguard.android.util.ToolsInstaller; import com.wireguard.config.Config; import java.io.File; @@ -42,6 +40,18 @@ public final class WgQuickBackend implements Backend { } @Override + public String getVersion() throws Exception { + final List<String> output = new ArrayList<>(); + if (Application.getRootShell() + .run(output, "cat /sys/module/wireguard/version") != 0 || output.isEmpty()) + throw new Exception("Unable to determine kernel module version"); + return output.get(0); + } + + @Override + public String getTypeName() { return "Kernel module"; } + + @Override public Config applyConfig(final Tunnel tunnel, final Config config) throws Exception { if (tunnel.getState() == State.UP) { // Restart the tunnel to apply the new config. |