X-Git-Url: http://git.joshuawise.com/dumload.git/blobdiff_plain/184c5221975a8ceafb2b61b75776ac10fbc7e0c4..b45fc5e03d952cfe09a7efb8a16019a42b9091b9:/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 index 0000000..ad825b9 --- /dev/null +++ b/src/com/joshuawise/dumload/Preferences.java @@ -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 { + + @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(); + } +}