diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2020-03-08 16:46:07 +0800 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2020-03-09 00:19:42 +0800 |
commit | 4905185e6121471f8c15d4ac59623323284135e5 (patch) | |
tree | bbbaa47a67158eef6dabfb6a9ed59cafe4b94d40 /app/src/main/java/com/wireguard/android/Application.java | |
parent | 09904305136adec00fae06f84e299b2df9a580c9 (diff) |
backend: do not depend on anything except config
This is likely broken but should make for a good starting point.
It also should hopefully handle stopping tunnels before starting new
ones, in the case of the GoBackend. Again, untested.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'app/src/main/java/com/wireguard/android/Application.java')
-rw-r--r-- | app/src/main/java/com/wireguard/android/Application.java | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/app/src/main/java/com/wireguard/android/Application.java b/app/src/main/java/com/wireguard/android/Application.java index 9b40fcd6..0fd00874 100644 --- a/app/src/main/java/com/wireguard/android/Application.java +++ b/app/src/main/java/com/wireguard/android/Application.java @@ -5,6 +5,7 @@ package com.wireguard.android; +import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; @@ -19,12 +20,14 @@ import androidx.preference.PreferenceManager; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatDelegate; +import com.wireguard.android.activity.MainActivity; import com.wireguard.android.backend.Backend; import com.wireguard.android.backend.GoBackend; import com.wireguard.android.backend.WgQuickBackend; import com.wireguard.android.configStore.FileConfigStore; import com.wireguard.android.model.TunnelManager; import com.wireguard.android.util.AsyncWorker; +import com.wireguard.android.util.ExceptionLoggers; import com.wireguard.android.util.ModuleLoader; import com.wireguard.android.util.RootShell; import com.wireguard.android.util.ToolsInstaller; @@ -89,8 +92,16 @@ public class Application extends android.app.Application { } catch (final Exception ignored) { } } - if (backend == null) - backend = new GoBackend(app.getApplicationContext()); + if (backend == null) { + final Context context = app.getApplicationContext(); + final Intent configureIntent = new Intent(context, MainActivity.class); + configureIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + final PendingIntent pendingConfigureIntent = PendingIntent.getActivity(context, 0, configureIntent, 0); + backend = new GoBackend(context, pendingConfigureIntent); + GoBackend.setAlwaysOnCallback(() -> { + get().tunnelManager.restoreState(true).whenComplete(ExceptionLoggers.D); + }); + } app.backend = backend; } return app.backend; |