Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/acomminos/Plumble.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Comminos <andrew@comminos.com>2016-01-13 08:49:49 +0300
committerAndrew Comminos <andrew@comminos.com>2016-01-13 08:49:49 +0300
commit2f909a3eaf5afae8aec345452ecbcfcd0efda7d8 (patch)
treea978d4711a3b64762c8b8feba6decc26262d5329
parentb9733194863ec55f70d4260783dc3b914014ee26 (diff)
Work on certificate generation.issue-128/certificate-database
-rw-r--r--app/src/main/AndroidManifest.xml1
-rw-r--r--app/src/main/java/com/morlunk/mumbleclient/app/PlumbleActivity.java12
-rw-r--r--app/src/main/java/com/morlunk/mumbleclient/preference/CertificateGenerateActivity.java67
-rw-r--r--app/src/main/java/com/morlunk/mumbleclient/preference/PlumbleCertificateGenerateTask.java39
-rw-r--r--app/src/main/java/com/morlunk/mumbleclient/wizard/WizardCertificateFragment.java3
-rw-r--r--app/src/main/res/values/strings_notranslate.xml1
-rw-r--r--app/src/main/res/xml/settings_authentication.xml6
7 files changed, 104 insertions, 25 deletions
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 973f381..215f1ec 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -104,6 +104,7 @@
<activity android:name=".preference.CertificateSelectActivity" />
<activity android:name=".preference.CertificateImportActivity" />
<activity android:name=".preference.CertificateExportActivity" />
+ <activity android:name=".preference.CertificateGenerateActivity" />
</application>
</manifest>
diff --git a/app/src/main/java/com/morlunk/mumbleclient/app/PlumbleActivity.java b/app/src/main/java/com/morlunk/mumbleclient/app/PlumbleActivity.java
index ac120ea..938bd4f 100644
--- a/app/src/main/java/com/morlunk/mumbleclient/app/PlumbleActivity.java
+++ b/app/src/main/java/com/morlunk/mumbleclient/app/PlumbleActivity.java
@@ -61,6 +61,7 @@ import com.morlunk.mumbleclient.Settings;
import com.morlunk.mumbleclient.channel.AccessTokenFragment;
import com.morlunk.mumbleclient.channel.ChannelFragment;
import com.morlunk.mumbleclient.channel.ServerInfoFragment;
+import com.morlunk.mumbleclient.db.DatabaseCertificate;
import com.morlunk.mumbleclient.db.DatabaseProvider;
import com.morlunk.mumbleclient.db.PlumbleDatabase;
import com.morlunk.mumbleclient.db.PlumbleSQLiteDatabase;
@@ -449,25 +450,22 @@ public class PlumbleActivity extends ActionBarActivity implements ListView.OnIte
* Will do nothing if it isn't the first launch.
*/
private void showSetupWizard() {
- // Prompt the user to generate a certificate, FIXME
- // FIXME(acomminos)
-// if(mSettings.isUsingCertificate()) return;
+ // Prompt the user to generate a certificate.
+ if(mSettings.isUsingCertificate()) return;
AlertDialog.Builder adb = new AlertDialog.Builder(this);
adb.setTitle(R.string.first_run_generate_certificate_title);
adb.setMessage(R.string.first_run_generate_certificate);
adb.setPositiveButton(R.string.generate, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
- /*
PlumbleCertificateGenerateTask generateTask = new PlumbleCertificateGenerateTask(PlumbleActivity.this) {
@Override
- protected void onPostExecute(File result) {
+ protected void onPostExecute(DatabaseCertificate result) {
super.onPostExecute(result);
- if(result != null) mSettings.setCertificatePath(result.getAbsolutePath());
+ if(result != null) mSettings.setDefaultCertificateId(result.getId());
}
};
generateTask.execute();
- */
}
});
adb.show();
diff --git a/app/src/main/java/com/morlunk/mumbleclient/preference/CertificateGenerateActivity.java b/app/src/main/java/com/morlunk/mumbleclient/preference/CertificateGenerateActivity.java
new file mode 100644
index 0000000..30d15a0
--- /dev/null
+++ b/app/src/main/java/com/morlunk/mumbleclient/preference/CertificateGenerateActivity.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2016 Andrew Comminos <andrew@comminos.com>
+ *
+ * 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 Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package com.morlunk.mumbleclient.preference;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+
+import com.morlunk.mumbleclient.R;
+import com.morlunk.mumbleclient.Settings;
+import com.morlunk.mumbleclient.db.DatabaseCertificate;
+
+/**
+ * Created by andrew on 12/01/16.
+ */
+public class CertificateGenerateActivity extends Activity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ PlumbleCertificateGenerateTask task = new PlumbleCertificateGenerateTask(this) {
+ @Override
+ protected void onPostExecute(DatabaseCertificate result) {
+ super.onPostExecute(result);
+ if (result == null) {
+ finish();
+ return;
+ }
+
+ Settings settings = Settings.getInstance(CertificateGenerateActivity.this);
+ settings.setDefaultCertificateId(result.getId());
+ showCompletionDialog(result);
+ }
+ };
+ task.execute();
+ }
+
+ private void showCompletionDialog(DatabaseCertificate result) {
+ AlertDialog.Builder adb = new AlertDialog.Builder(this);
+ adb.setMessage(getString(R.string.generateCertSuccess, result.getName()));
+ adb.setPositiveButton(android.R.string.ok, null);
+ adb.show().setOnDismissListener(new DialogInterface.OnDismissListener() {
+ @Override
+ public void onDismiss(DialogInterface dialog) {
+ finish();
+ }
+ });
+ }
+
+}
diff --git a/app/src/main/java/com/morlunk/mumbleclient/preference/PlumbleCertificateGenerateTask.java b/app/src/main/java/com/morlunk/mumbleclient/preference/PlumbleCertificateGenerateTask.java
index 2a844c5..131d434 100644
--- a/app/src/main/java/com/morlunk/mumbleclient/preference/PlumbleCertificateGenerateTask.java
+++ b/app/src/main/java/com/morlunk/mumbleclient/preference/PlumbleCertificateGenerateTask.java
@@ -19,17 +19,21 @@ package com.morlunk.mumbleclient.preference;
import android.app.ProgressDialog;
import android.content.Context;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnCancelListener;
import android.os.AsyncTask;
import android.widget.Toast;
import com.morlunk.mumbleclient.R;
+import com.morlunk.mumbleclient.db.DatabaseCertificate;
+import com.morlunk.mumbleclient.db.PlumbleDatabase;
+import com.morlunk.mumbleclient.db.PlumbleSQLiteDatabase;
-import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+
+public class PlumbleCertificateGenerateTask extends AsyncTask<Void, Void, DatabaseCertificate> {
+ private static final String DATE_FORMAT = "yyyy-MM-dd-HH-mm-ss";
-public class PlumbleCertificateGenerateTask extends AsyncTask<Void, Void, byte[]> {
-
private Context context;
private ProgressDialog loadingDialog;
@@ -44,20 +48,23 @@ public class PlumbleCertificateGenerateTask extends AsyncTask<Void, Void, byte[]
loadingDialog = new ProgressDialog(context);
loadingDialog.setIndeterminate(true);
loadingDialog.setMessage(context.getString(R.string.generateCertProgress));
- loadingDialog.setOnCancelListener(new OnCancelListener() {
-
- @Override
- public void onCancel(DialogInterface arg0) {
- cancel(true);
-
- }
- });
+ loadingDialog.setCancelable(false);
loadingDialog.show();
}
@Override
- protected byte[] doInBackground(Void... params) {
+ protected DatabaseCertificate doInBackground(Void... params) {
try {
- return PlumbleCertificateManager.generateCertificate();
+ byte[] certificate = PlumbleCertificateManager.generateCertificate();
+ if (certificate == null)
+ return null;
+
+ SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT, Locale.getDefault());
+ String fileName = context.getString(R.string.certificate_export_format, dateFormat.format(new Date()));
+
+ PlumbleDatabase database = new PlumbleSQLiteDatabase(context);
+ DatabaseCertificate dc = database.addCertificate(fileName, certificate);
+ database.close();
+ return dc;
} catch (Exception e) {
e.printStackTrace();
return null;
@@ -65,7 +72,7 @@ public class PlumbleCertificateGenerateTask extends AsyncTask<Void, Void, byte[]
}
@Override
- protected void onPostExecute(byte[] result) {
+ protected void onPostExecute(DatabaseCertificate result) {
super.onPostExecute(result);
if(result == null) {
Toast.makeText(context, R.string.generateCertFailure, Toast.LENGTH_SHORT).show();
diff --git a/app/src/main/java/com/morlunk/mumbleclient/wizard/WizardCertificateFragment.java b/app/src/main/java/com/morlunk/mumbleclient/wizard/WizardCertificateFragment.java
index e2b8c4a..48a6f83 100644
--- a/app/src/main/java/com/morlunk/mumbleclient/wizard/WizardCertificateFragment.java
+++ b/app/src/main/java/com/morlunk/mumbleclient/wizard/WizardCertificateFragment.java
@@ -27,6 +27,7 @@ import android.widget.Button;
import com.morlunk.mumbleclient.R;
import com.morlunk.mumbleclient.Settings;
+import com.morlunk.mumbleclient.db.DatabaseCertificate;
import com.morlunk.mumbleclient.preference.PlumbleCertificateGenerateTask;
import java.io.File;
@@ -66,7 +67,7 @@ public class WizardCertificateFragment extends Fragment {
final Settings settings = Settings.getInstance(getActivity());
PlumbleCertificateGenerateTask task = new PlumbleCertificateGenerateTask(getActivity()) {
@Override
- protected void onPostExecute(byte[] result) {
+ protected void onPostExecute(DatabaseCertificate result) {
super.onPostExecute(result);
// FIXME(acomminos)
// settings.setCertificatePath(result.getAbsolutePath());
diff --git a/app/src/main/res/values/strings_notranslate.xml b/app/src/main/res/values/strings_notranslate.xml
index 4399627..9e13652 100644
--- a/app/src/main/res/values/strings_notranslate.xml
+++ b/app/src/main/res/values/strings_notranslate.xml
@@ -21,4 +21,5 @@
<string name="app_name">Plumble</string>
<string name="default_server_port">64738</string>
<string name="notification_message">%1$s: %2$s</string>
+ <string name="certificate_export_format">plumble_%s.p12</string>
</resources> \ No newline at end of file
diff --git a/app/src/main/res/xml/settings_authentication.xml b/app/src/main/res/xml/settings_authentication.xml
index 538887e..0efdf8d 100644
--- a/app/src/main/res/xml/settings_authentication.xml
+++ b/app/src/main/res/xml/settings_authentication.xml
@@ -21,7 +21,11 @@
<Preference
android:key="certificateGenerate"
android:summary="@string/certificateGenerateSum"
- android:title="@string/certificateGenerate" />
+ android:title="@string/certificateGenerate">
+ <intent
+ android:targetPackage="com.morlunk.mumbleclient"
+ android:targetClass="com.morlunk.mumbleclient.preference.CertificateGenerateActivity"/>
+ </Preference>
<Preference
android:summary="@string/pref_certificate_summary"