diff options
author | Arne Schwabe <arne@rfc2549.org> | 2021-08-24 19:25:59 +0200 |
---|---|---|
committer | Arne Schwabe <arne@rfc2549.org> | 2021-08-24 19:25:59 +0200 |
commit | 09c5cb0a0d33c58897026b7b4b1901c1ddc088f1 (patch) | |
tree | 2a881c94bd517b145178a1bd08f71d69914115d4 /main/src/ui/java/de/blinkt/openvpn/activities/MainActivity.java | |
parent | d1eb15b8dd6b4cb599ea7a084e61e24dfdbc74f4 (diff) |
Implement support of openvpn://import-profile/ support
For details about the protocol see
https://github.com/OpenVPN/openvpn3/blob/master/doc/webauth.md
Diffstat (limited to 'main/src/ui/java/de/blinkt/openvpn/activities/MainActivity.java')
-rw-r--r-- | main/src/ui/java/de/blinkt/openvpn/activities/MainActivity.java | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/main/src/ui/java/de/blinkt/openvpn/activities/MainActivity.java b/main/src/ui/java/de/blinkt/openvpn/activities/MainActivity.java index 58698ea3..fe98cf77 100644 --- a/main/src/ui/java/de/blinkt/openvpn/activities/MainActivity.java +++ b/main/src/ui/java/de/blinkt/openvpn/activities/MainActivity.java @@ -5,11 +5,11 @@ package de.blinkt.openvpn.activities; -import android.annotation.TargetApi; import android.content.Intent; -import android.os.Build; +import android.net.Uri; import android.view.Menu; import android.view.MenuItem; +import android.widget.Toast; import androidx.appcompat.app.ActionBar; import androidx.viewpager.widget.ViewPager; @@ -21,6 +21,7 @@ import de.blinkt.openvpn.fragments.AboutFragment; import de.blinkt.openvpn.fragments.FaqFragment; import de.blinkt.openvpn.fragments.GeneralSettings; import de.blinkt.openvpn.fragments.GraphFragment; +import de.blinkt.openvpn.fragments.ImportRemoteConfig; import de.blinkt.openvpn.fragments.LogFragment; import de.blinkt.openvpn.fragments.SendDumpFragment; import de.blinkt.openvpn.fragments.VPNProfileList; @@ -76,8 +77,14 @@ public class MainActivity extends BaseActivity { @Override protected void onResume() { super.onResume(); - if (getIntent() != null) { - String page = getIntent().getStringExtra("PAGE"); + Intent intent = getIntent(); + if (intent != null) { + if (intent.getAction().equals(Intent.ACTION_VIEW)) + { + Uri uri = intent.getData(); + checkUriForProfileImport(uri); + } + String page = intent.getStringExtra("PAGE"); if ("graph".equals(page)) { mPager.setCurrentItem(1); } @@ -85,6 +92,25 @@ public class MainActivity extends BaseActivity { } } + private void checkUriForProfileImport(Uri uri) { + if ("openvpn".equals(uri.getScheme()) && "import-profile".equals(uri.getHost())) + { + String realUrl = uri.getEncodedPath() + "?" + uri.getEncodedQuery(); + if (!realUrl.startsWith("/https://")) + { + Toast.makeText(this, "Cannot use openvpn://import-profile/ URL that does not use https://", Toast.LENGTH_LONG).show(); + return; + } + realUrl = realUrl.substring(1); + startOpenVPNUrlImport(realUrl); + } + } + + private void startOpenVPNUrlImport(String url) { + ImportRemoteConfig asImportFrag = ImportRemoteConfig.newInstance(url); + asImportFrag.show(getSupportFragmentManager(), "dialog"); + } + @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main_menu, menu); |