]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
android: Add option to clear cached CRLs
authorTobias Brunner <tobias@strongswan.org>
Fri, 1 Sep 2017 17:26:52 +0000 (19:26 +0200)
committerTobias Brunner <tobias@strongswan.org>
Mon, 4 Sep 2017 08:41:29 +0000 (10:41 +0200)
src/frontends/android/app/src/main/java/org/strongswan/android/ui/MainActivity.java
src/frontends/android/app/src/main/res/menu/main.xml
src/frontends/android/app/src/main/res/values-de/strings.xml
src/frontends/android/app/src/main/res/values-pl/strings.xml
src/frontends/android/app/src/main/res/values-ru/strings.xml
src/frontends/android/app/src/main/res/values-ua/strings.xml
src/frontends/android/app/src/main/res/values-zh-rCN/strings.xml
src/frontends/android/app/src/main/res/values-zh-rTW/strings.xml
src/frontends/android/app/src/main/res/values/strings.xml

index a7006cd4918e872e547845f352f70b26f402d0ca..f2a9eaaf8d7c01e322658858e2ea92c12839cca8 100644 (file)
@@ -36,6 +36,7 @@ import android.support.v7.app.ActionBar;
 import android.support.v7.app.AlertDialog;
 import android.support.v7.app.AppCompatActivity;
 import android.support.v7.app.AppCompatDialogFragment;
+import android.text.format.Formatter;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuItem;
@@ -54,12 +55,17 @@ import org.strongswan.android.logic.VpnStateService;
 import org.strongswan.android.logic.VpnStateService.State;
 import org.strongswan.android.ui.VpnProfileListFragment.OnVpnProfileSelectedListener;
 
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
 public class MainActivity extends AppCompatActivity implements OnVpnProfileSelectedListener
 {
        public static final String CONTACT_EMAIL = "android@strongswan.org";
        public static final String START_PROFILE = "org.strongswan.android.action.START_PROFILE";
        public static final String DISCONNECT = "org.strongswan.android.action.DISCONNECT";
        public static final String EXTRA_VPN_PROFILE_ID = "org.strongswan.android.VPN_PROFILE_ID";
+       public static final String EXTRA_CRL_LIST = "org.strongswan.android.CRL_LIST";
        /**
         * Use "bring your own device" (BYOD) features
         */
@@ -190,6 +196,9 @@ public class MainActivity extends AppCompatActivity implements OnVpnProfileSelec
                                Intent certIntent = new Intent(this, TrustedCertificatesActivity.class);
                                startActivity(certIntent);
                                return true;
+                       case R.id.menu_crl_cache:
+                               clearCRLs();
+                               return true;
                        case R.id.menu_show_log:
                                Intent logIntent = new Intent(this, LogActivity.class);
                                startActivity(logIntent);
@@ -367,6 +376,36 @@ public class MainActivity extends AppCompatActivity implements OnVpnProfileSelec
                }
        }
 
+       /**
+        * Ask the user whether to clear the CRL cache.
+        */
+       private void clearCRLs()
+       {
+               final String FILE_PREFIX = "crl-";
+               ArrayList<String> list = new ArrayList<>();
+
+               for (String file : fileList())
+               {
+                       if (file.startsWith(FILE_PREFIX))
+                       {
+                               list.add(file);
+                       }
+               }
+               if (list.size() == 0)
+               {
+                       Toast.makeText(this, R.string.clear_crl_cache_msg_none, Toast.LENGTH_SHORT).show();
+                       return;
+               }
+               removeFragmentByTag(DIALOG_TAG);
+
+               Bundle args = new Bundle();
+               args.putStringArrayList(EXTRA_CRL_LIST, list);
+
+               CRLCacheDialog dialog = new CRLCacheDialog();
+               dialog.setArguments(args);
+               dialog.show(this.getSupportFragmentManager(), DIALOG_TAG);
+       }
+
        /**
         * Class that loads the cached CA certificates.
         */
@@ -551,4 +590,49 @@ public class MainActivity extends AppCompatActivity implements OnVpnProfileSelec
                                }).create();
                }
        }
+
+       /**
+        * Confirmation dialog to clear CRL cache
+        */
+       public static class CRLCacheDialog extends AppCompatDialogFragment
+       {
+               @Override
+               public Dialog onCreateDialog(Bundle savedInstanceState)
+               {
+                       final List<String> list = getArguments().getStringArrayList(EXTRA_CRL_LIST);
+                       String size;
+                       long s = 0;
+
+                       for (String file : list)
+                       {
+                               File crl = getActivity().getFileStreamPath(file);
+                               s += crl.length();
+                       }
+                       size = Formatter.formatFileSize(getActivity(), s);
+
+                       AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
+                                       .setTitle(R.string.clear_crl_cache_title)
+                                       .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener()
+                                       {
+                                               @Override
+                                               public void onClick(DialogInterface dialog, int which)
+                                               {
+                                                       dismiss();
+                                               }
+                                       })
+                                       .setPositiveButton(R.string.clear, new DialogInterface.OnClickListener()
+                                       {
+                                               @Override
+                                               public void onClick(DialogInterface dialog, int whichButton)
+                                               {
+                                                       for (String file : list)
+                                                       {
+                                                               getActivity().deleteFile(file);
+                                                       }
+                                               }
+                                       });
+                       builder.setMessage(getActivity().getResources().getQuantityString(R.plurals.clear_crl_cache_msg, list.size(), list.size(), size));
+                       return builder.create();
+               }
+       }
 }
index 3c8da084bc9b4782ec9571486aedbe0f67ea5b4a..48a541b3d5a84e30757964ed7b0fd2949c8387bf 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
     Copyright (C) 2012-2017 Tobias Brunner
-    Hochschule fuer Technik Rapperswil
+    HSR Hochschule fuer Technik Rapperswil
 
     This program is free software; you can redistribute it and/or modify it
     under the terms of the GNU General Public License as published by the
         android:title="@string/trusted_certs_title"
         app:showAsAction="withText" />
 
+    <item
+        android:id="@+id/menu_crl_cache"
+        android:title="@string/crl_cache"
+        app:showAsAction="withText" />
+
     <item
         android:id="@+id/menu_show_log"
         android:title="@string/show_log"
index bc6927d5129382647db211188ea66572a2c560cc..84d6bcd0184d7fd08af573fb554a1d55d333325d 100644 (file)
     <string name="import_certificate">Zertifikat importieren</string>
     <string name="cert_imported_successfully">Zertifikat erfolgreich importiert</string>
     <string name="cert_import_failed">Zertifikat-Import fehlgeschlagen</string>
+    <string name="crl_cache">CRL-Cache</string>
+    <string name="clear_crl_cache_title">CRL-Cache leeren?</string>
+    <string name="clear_crl_cache_msg_none">Der CRL-Cache ist leer</string>
+    <plurals name="clear_crl_cache_msg">
+        <item quantity="one">Der CRL-Cache enthält %1$d Datei (%2$s).</item>
+        <item quantity="other">Der CRL-Cache enthält %1$d Dateien (%2$s).</item>
+    </plurals>
+    <string name="clear">Leeren</string>
 
     <!-- VPN state fragment -->
     <string name="state_label">Status:</string>
index 424837adff4ab653ee110e45e3998c66d3cf1c57..c6a8b53f33eb4007143b5235475b37d84fb47a54 100644 (file)
     <string name="import_certificate">Import certificate</string>
     <string name="cert_imported_successfully">Certificate successfully imported</string>
     <string name="cert_import_failed">Failed to import certificate</string>
+    <string name="crl_cache">CRL cache</string>
+    <string name="clear_crl_cache_title">Clear CRL cache?</string>
+    <string name="clear_crl_cache_msg_none">The CRL cache is empty</string>
+    <plurals name="clear_crl_cache_msg">
+        <item quantity="one">The CRL cache contains %1$d file (%2$s).</item>
+        <item quantity="other">The CRL cache contains %1$d files (%2$s).</item>
+    </plurals>
+    <string name="clear">Clear</string>
 
     <!-- VPN state fragment -->
     <string name="state_label">Status:</string>
index a5377201494fa44b894c0cd7f2d70727a393368f..b47c4993a0f69eddff141f1d15145f940fa00520 100644 (file)
     <string name="import_certificate">Import certificate</string>
     <string name="cert_imported_successfully">Certificate successfully imported</string>
     <string name="cert_import_failed">Failed to import certificate</string>
+    <string name="crl_cache">CRL cache</string>
+    <string name="clear_crl_cache_title">Clear CRL cache?</string>
+    <string name="clear_crl_cache_msg_none">The CRL cache is empty</string>
+    <plurals name="clear_crl_cache_msg">
+        <item quantity="one">The CRL cache contains %1$d file (%2$s).</item>
+        <item quantity="other">The CRL cache contains %1$d files (%2$s).</item>
+    </plurals>
+    <string name="clear">Clear</string>
 
     <!-- VPN state fragment -->
     <string name="state_label">Статус:</string>
index 4d3600952ed0c94840043691ab29bb5e07d5bbf8..69258b048059f5b2fe7d9c8554e2435aaeaf69a5 100644 (file)
     <string name="import_certificate">Import certificate</string>
     <string name="cert_imported_successfully">Certificate successfully imported</string>
     <string name="cert_import_failed">Failed to import certificate</string>
+    <string name="crl_cache">CRL cache</string>
+    <string name="clear_crl_cache_title">Clear CRL cache?</string>
+    <string name="clear_crl_cache_msg_none">The CRL cache is empty</string>
+    <plurals name="clear_crl_cache_msg">
+        <item quantity="one">The CRL cache contains %1$d file (%2$s).</item>
+        <item quantity="other">The CRL cache contains %1$d files (%2$s).</item>
+    </plurals>
+    <string name="clear">Clear</string>
 
     <!-- VPN state fragment -->
     <string name="state_label">Статус:</string>
index 606bd27837878384cf9e4be10c9e2fdb354f1192..a88e7aa9e5942684a7d2f198efd9dc57380c3cff 100644 (file)
     <string name="import_certificate">导入证书</string>
     <string name="cert_imported_successfully">证书已成功被导入</string>
     <string name="cert_import_failed">证书导入失败</string>
+    <string name="crl_cache">CRL cache</string>
+    <string name="clear_crl_cache_title">Clear CRL cache?</string>
+    <string name="clear_crl_cache_msg_none">The CRL cache is empty</string>
+    <plurals name="clear_crl_cache_msg">
+        <item quantity="one">The CRL cache contains %1$d file (%2$s).</item>
+        <item quantity="other">The CRL cache contains %1$d files (%2$s).</item>
+    </plurals>
+    <string name="clear">Clear</string>
 
     <!-- VPN state fragment -->
     <string name="state_label">状态:</string>
index 52f21f8da164abba50dbed5daf99ca30435ea3bd..8ef0feb2ee22bed0084ea160fd702caeb822ecd9 100644 (file)
     <string name="import_certificate">導入憑證</string>
     <string name="cert_imported_successfully">憑證已經成功匯入</string>
     <string name="cert_import_failed">憑證匯入失敗</string>
+    <string name="crl_cache">CRL cache</string>
+    <string name="clear_crl_cache_title">Clear CRL cache?</string>
+    <string name="clear_crl_cache_msg_none">The CRL cache is empty</string>
+    <plurals name="clear_crl_cache_msg">
+        <item quantity="one">The CRL cache contains %1$d file (%2$s).</item>
+        <item quantity="other">The CRL cache contains %1$d files (%2$s).</item>
+    </plurals>
+    <string name="clear">Clear</string>
 
     <!-- VPN state fragment -->
     <string name="state_label">狀態:</string>
index 4ee6be390079d9f5545a33e96c3f30d99e314db6..a02de6b1ce30b736c7ba972e8cf14f9530cb8a28 100644 (file)
     <string name="import_certificate">Import certificate</string>
     <string name="cert_imported_successfully">Certificate successfully imported</string>
     <string name="cert_import_failed">Failed to import certificate</string>
+    <string name="crl_cache">CRL cache</string>
+    <string name="clear_crl_cache_title">Clear CRL cache?</string>
+    <string name="clear_crl_cache_msg_none">The CRL cache is empty</string>
+    <plurals name="clear_crl_cache_msg">
+        <item quantity="one">The CRL cache contains %1$d file (%2$s).</item>
+        <item quantity="other">The CRL cache contains %1$d files (%2$s).</item>
+    </plurals>
+    <string name="clear">Clear</string>
 
     <!-- VPN state fragment -->
     <string name="state_label">Status:</string>