WgQuickBackend: by default use single-tunnel mode like GoBackend, but add option
Note that this currently doesn't play well with people activating wg-quick tunnels from outside the app. Those tunnels won't be deactivated. But presumably that's desired behavior anyway, considering people are mucking around at the command line. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
@@ -35,7 +35,7 @@ import java.util.Locale;
|
||||
|
||||
import java9.util.concurrent.CompletableFuture;
|
||||
|
||||
public class Application extends android.app.Application {
|
||||
public class Application extends android.app.Application implements SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
private static final String TAG = "WireGuard/" + Application.class.getSimpleName();
|
||||
public static final String USER_AGENT;
|
||||
|
||||
@@ -86,7 +86,9 @@ public class Application extends android.app.Application {
|
||||
try {
|
||||
if (!didStartRootShell)
|
||||
app.rootShell.start();
|
||||
backend = new WgQuickBackend(app.getApplicationContext(), app.rootShell, app.toolsInstaller);
|
||||
WgQuickBackend wgQuickBackend = new WgQuickBackend(app.getApplicationContext(), app.rootShell, app.toolsInstaller);
|
||||
wgQuickBackend.setMultipleTunnels(app.sharedPreferences.getBoolean("multiple_tunnels", false));
|
||||
backend = wgQuickBackend;
|
||||
} catch (final Exception ignored) {
|
||||
}
|
||||
}
|
||||
@@ -167,5 +169,19 @@ public class Application extends android.app.Application {
|
||||
tunnelManager.onCreate();
|
||||
|
||||
asyncWorker.supplyAsync(Application::getBackend).thenAccept(futureBackend::complete);
|
||||
|
||||
sharedPreferences.registerOnSharedPreferenceChangeListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTerminate() {
|
||||
sharedPreferences.unregisterOnSharedPreferenceChangeListener(this);
|
||||
super.onTerminate();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSharedPreferenceChanged(final SharedPreferences sharedPreferences, final String key) {
|
||||
if ("multiple_tunnels".equals(key) && backend != null && backend instanceof WgQuickBackend)
|
||||
((WgQuickBackend)backend).setMultipleTunnels(sharedPreferences.getBoolean(key, false));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,7 +99,8 @@ public class SettingsActivity extends ThemeChangeAwareActivity {
|
||||
|
||||
final Preference wgQuickOnlyPrefs[] = {
|
||||
getPreferenceManager().findPreference("tools_installer"),
|
||||
getPreferenceManager().findPreference("restore_on_boot")
|
||||
getPreferenceManager().findPreference("restore_on_boot"),
|
||||
getPreferenceManager().findPreference("multiple_tunnels")
|
||||
};
|
||||
for (final Preference pref : wgQuickOnlyPrefs)
|
||||
pref.setVisible(false);
|
||||
|
||||
@@ -104,6 +104,9 @@
|
||||
<string name="module_installer_working">Downloading and installing…</string>
|
||||
<string name="module_installer_error">Something went wrong. Please try again</string>
|
||||
<string name="mtu">MTU</string>
|
||||
<string name="multiple_tunnels_title">Allow multiple simultaneous tunnels</string>
|
||||
<string name="multiple_tunnels_summary_on">Multiple tunnels may be turned on simultaneously</string>
|
||||
<string name="multiple_tunnels_summary_off">Turning on one tunnel will turn off others</string>
|
||||
<string name="name">Name</string>
|
||||
<string name="no_config_error">Trying to bring up a tunnel with no config</string>
|
||||
<string name="no_configs_error">No configurations found</string>
|
||||
|
||||
@@ -8,6 +8,12 @@
|
||||
android:title="@string/restore_on_boot_title" />
|
||||
<com.wireguard.android.preference.ModuleDownloaderPreference android:key="module_downloader" />
|
||||
<com.wireguard.android.preference.ToolsInstallerPreference android:key="tools_installer" />
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="false"
|
||||
android:key="multiple_tunnels"
|
||||
android:summaryOff="@string/multiple_tunnels_summary_off"
|
||||
android:summaryOn="@string/multiple_tunnels_summary_on"
|
||||
android:title="@string/multiple_tunnels_title" />
|
||||
<com.wireguard.android.preference.ZipExporterPreference />
|
||||
<com.wireguard.android.preference.LogExporterPreference />
|
||||
<CheckBoxPreference
|
||||
|
||||
Reference in New Issue
Block a user