]> Joshua Wise's Git repositories - dumload.git/blobdiff - src/com/joshuawise/dumload/Preferences.java
Make dumload configurable
[dumload.git] / src / com / joshuawise / dumload / Preferences.java
diff --git a/src/com/joshuawise/dumload/Preferences.java b/src/com/joshuawise/dumload/Preferences.java
new file mode 100644 (file)
index 0000000..ad825b9
--- /dev/null
@@ -0,0 +1,102 @@
+package com.joshuawise.dumload;
+
+import java.io.File;
+
+import android.content.SharedPreferences;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.preference.PreferenceActivity;
+import android.preference.PreferenceManager;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.Window;
+import android.widget.Toast;
+
+import com.jcraft.jsch.JSch;
+import com.jcraft.jsch.KeyPair;
+
+public class Preferences extends PreferenceActivity {
+
+       private class KeygenTask extends AsyncTask<Void, Void, String> {
+
+               @Override
+               protected String doInBackground(Void... params) {
+                       String ret = null;
+                       String homedir = getFilesDir().getAbsolutePath();
+                       String filename = homedir + "/id_dsa_generated";
+                       File file = new File(filename);
+                       if (file.exists()) {
+                               return getString(R.string.msgKeyExists);
+                       } else {
+                               JSch jsch = new JSch();
+                               int type = KeyPair.DSA;
+                               try {
+                                       KeyPair kpair = KeyPair.genKeyPair(jsch, type);
+                                       // TODO: query for a passphrase
+                                       kpair.setPassphrase("");
+                                       kpair.writePrivateKey(filename);
+                                       kpair.writePublicKey(filename + ".pub", "generated by dumload");
+                                       ret = "Fingerprint: " + kpair.getFingerPrint();
+                                       kpair.dispose();
+                               } catch (Exception e) {
+                                       System.out.println(e);
+                               }
+                       }
+                       return ret;
+               }
+
+               @Override
+               protected void onPostExecute(String result) {
+                       setProgressBarIndeterminateVisibility(false);
+                       Toast.makeText(getApplicationContext(), result, Toast.LENGTH_LONG).show();
+                       super.onPostExecute(result);
+               }
+               
+       }
+       
+       @Override
+       public void onCreate(Bundle savedInstanceState) {
+               requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
+               super.onCreate(savedInstanceState);
+               // Load the preferences from an XML resource
+               addPreferencesFromResource(R.xml.preferences);
+       }
+
+       @Override
+       public boolean onCreateOptionsMenu(Menu menu) {
+               super.onCreateOptionsMenu(menu);
+
+               menu.add(Menu.NONE, R.id.actionCreateSshKey, Menu.NONE,
+                               getString(R.string.menuGenSshKey));
+               menu.add(Menu.NONE, R.id.actionRemoveSshKey, Menu.NONE,
+                               getString(R.string.menuDelSshKey));
+               return true;
+       }
+
+       public boolean onOptionsItemSelected(MenuItem item) {
+               switch (item.getItemId()) {
+               case R.id.actionCreateSshKey:
+                       generateDSAKeyPair();
+                       break;
+               case R.id.actionRemoveSshKey:
+                       String homedir = getFilesDir().getAbsolutePath();
+                       String filename = homedir + "/id_dsa_generated";
+                       File file = new File(filename);
+                       if (file.exists()) {
+                               file.delete();
+                               Toast.makeText(this,
+                                               "Deleted",
+                                               Toast.LENGTH_LONG).show();
+                       } else {
+                               Toast.makeText(this, getString(R.string.msgNoGenKeyFound), Toast.LENGTH_SHORT).show();
+                       }
+               }
+               return false;
+       }
+
+       private void generateDSAKeyPair() {
+               setProgressBarIndeterminateVisibility(true);
+               KeygenTask t = new KeygenTask();
+               t.execute();
+       }
+}
This page took 0.026161 seconds and 4 git commands to generate.