diff options
author | Arne Schwabe <arne@rfc2549.org> | 2012-04-27 23:24:49 +0200 |
---|---|---|
committer | Arne Schwabe <arne@rfc2549.org> | 2012-04-27 23:24:49 +0200 |
commit | 031186e74c9f174d05a09c4059def7bcbc558ac6 (patch) | |
tree | 8506351e5a3e9904c70c881b1d13b2a1d1030383 /src/de/blinkt/openvpn/OpenVPNClient.java | |
parent | 817812066576fb1e2fd627927ad5cfc7bf7c79d5 (diff) |
it is not getIntent() nor savedState nor other fancy stuff, getArgument() is what I want
Diffstat (limited to 'src/de/blinkt/openvpn/OpenVPNClient.java')
-rw-r--r-- | src/de/blinkt/openvpn/OpenVPNClient.java | 207 |
1 files changed, 3 insertions, 204 deletions
diff --git a/src/de/blinkt/openvpn/OpenVPNClient.java b/src/de/blinkt/openvpn/OpenVPNClient.java index 5af0ae8..db6dd95 100644 --- a/src/de/blinkt/openvpn/OpenVPNClient.java +++ b/src/de/blinkt/openvpn/OpenVPNClient.java @@ -16,25 +16,16 @@ package de.blinkt.openvpn; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.FileWriter; -import java.io.IOException; import java.security.KeyStore; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; -import java.security.PrivateKey; -import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import java.util.HashMap; -import java.util.Random; -import java.util.Vector; import javax.net.ssl.TrustManagerFactory; import javax.net.ssl.X509TrustManager; import android.app.Activity; -import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.net.VpnService; @@ -44,7 +35,6 @@ import android.os.Handler.Callback; import android.os.Message; import android.security.KeyChain; import android.security.KeyChainAliasCallback; -import android.security.KeyChainException; import android.util.Log; import android.view.View; import android.widget.AdapterView; @@ -71,8 +61,6 @@ public class OpenVPNClient extends Activity implements View.OnClickListener, OnI private static final String PREFS_NAME = "OVPN_SERVER"; - private static final String OVPNCONFIGFILE = "android.conf"; - private static final String OVPNCONFIGPKCS12 = "android.pkcs12"; private TextView mServerAddress; @@ -117,133 +105,14 @@ public class OpenVPNClient extends Activity implements View.OnClickListener, OnI } - public void writeConfigFile() - { - - try { - FileWriter cfg = new FileWriter(getCacheDir().getAbsolutePath() + "/" + OVPNCONFIGFILE); - - - - // TODO "--remote-cert-eku", "TLS Web Server Authentication" - - - // The stoned way of java to return an array from a vector - // brought to you by eclipse auto complete - - cfg.write("client\n"); - cfg.write("verb 2\n"); - - - // /tmp does not exist on Android - cfg.write("tmp-dir "); - cfg.write(getCacheDir().getAbsolutePath()); - cfg.write("\n"); - - // quit after 5 tries - cfg.write("--connect-retry-max 5\n"); - cfg.write("--resolv-retry 5\n"); - - - - // We cannot use anything else than tun - cfg.write("dev tun\n"); - - // Server Address - cfg.write("remote "); - cfg.write(mServerAddress.getText().toString()); - cfg.write(" "); - cfg.write(mServerPort.getText().toString()); - if(mTcpUdp.isChecked()) - cfg.write(" udp\n"); - else - cfg.write(" tcp\n"); - - - - switch(mType.getSelectedItemPosition()) { - case VpnProfile.TYPE_CERTIFICATES: - // Ca - cfg.write("ca "); - cfg.write(mCaCert.getData()); - cfg.write("\n"); - - // Client Cert + Key - cfg.write("key "); - cfg.write(mClientKey.getData()); - cfg.write("\n"); - cfg.write("cert "); - cfg.write(mClientCert.getData()); - cfg.write("\n"); - break; - case VpnProfile.TYPE_PKCS12: - cfg.write("pkcs12 "); - cfg.write(mpkcs12.getData()); - cfg.write("\n"); - cfg.write("management-query-passwords\n"); - break; - - case VpnProfile.TYPE_KEYSTORE: - cfg.write("pkcs12 "); - cfg.write(getCacheDir().getAbsolutePath() + "/" + OVPNCONFIGPKCS12); - cfg.write("\n"); - cfg.write("management-query-passwords\n"); - break; - - } - - if(mUseLzo.isChecked()) { - cfg.write("comp-lzo\n"); - } - - if(mUseTlsAuth.isChecked()) { - cfg.write("tls-auth "); - cfg.write(mTlsFile.getData()); - int tlsdir= mTLSDirection.getSelectedItemPosition(); - // 2 is unspecified - if(tlsdir == 1 || tlsdir==2) { - cfg.write(" "); - cfg.write(new Integer(tlsdir).toString()); - } - cfg.write("\n"); - } - cfg.flush(); - cfg.close(); - - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - } - + private void addFileSelectLayout (FileSelectLayout fsl) { int i = fileselects.size() + CHOOSE_FILE_OFFSET; fileselects.put(i, fsl); fsl.setActivity(this,i); } - public String[] buildOpenvpnArgv() - { - Vector<String> args = new Vector<String>(); - // Add fixed paramenters - args.add("openvpn"); - - // Enable managment interface to - // stop openvpn - args.add("--management"); - - args.add(getCacheDir().getAbsolutePath() + "/" + "mgmtsocket"); - args.add("unix"); - //args.add("--management-hold"); - - args.add("--config"); - args.add(getCacheDir().getAbsolutePath() + "/" + OVPNCONFIGFILE); - - - return (String[]) args.toArray(new String[args.size()]); - } @@ -415,52 +284,7 @@ public class OpenVPNClient extends Activity implements View.OnClickListener, OnI null); // alias to preselect, null if unavailable } - private String getRandomPW() { - String pw= ""; - // Put enough digits togher to make a password :) - Random r = new Random(); - for(int i=0;i < 4;i++) { - pw += new Integer(r.nextInt(1000)).toString(); - } - - return pw; - - } - - private String savePKCS12() { - Context context = getBaseContext(); - PrivateKey privateKey = null; - X509Certificate[] cachain=null; - try { - privateKey = KeyChain.getPrivateKey(context,certalias); - cachain = KeyChain.getCertificateChain(context, certalias); - - KeyStore ks = KeyStore.getInstance("PKCS12"); - ks.load(null, null); - ks.setKeyEntry("usercert", privateKey, null, cachain); - String mypw = getRandomPW(); - FileOutputStream fout = new FileOutputStream(getCacheDir().getAbsolutePath() + "/" + OVPNCONFIGPKCS12); - ks.store(fout,mypw.toCharArray()); - fout.flush(); fout.close(); - return mypw; - } catch (KeyChainException e) { - e.printStackTrace(); - } catch (InterruptedException e) { - e.printStackTrace(); - } catch (KeyStoreException e) { - e.printStackTrace(); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - } catch (CertificateException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - return "ERROR"; - - } + public void testGetallCerts() throws NoSuchAlgorithmException, KeyStoreException { TrustManagerFactory tmf = TrustManagerFactory @@ -497,32 +321,7 @@ public class OpenVPNClient extends Activity implements View.OnClickListener, OnI } } - void startOpenVpn() { - String prefix = getPackageName(); - writeConfigFile(); - - Intent intent = new Intent(this, OpenVpnService.class) - .putExtra(prefix + ".ARGV" , buildOpenvpnArgv()); - if(mType.getSelectedItemPosition()== VpnProfile.TYPE_PKCS12){ - intent.putExtra(prefix + ".PKCS12PASS", - mPKCS12Password.getText().toString()); - } - - if(mType.getSelectedItemPosition() == VpnProfile.TYPE_KEYSTORE) { - String pkcs12pw = savePKCS12(); - intent.putExtra(prefix + ".PKCS12PASS", pkcs12pw); - } - - if(mType.getSelectedItemPosition() == VpnProfile.TYPE_USERPASS) { - intent.putExtra(prefix + ".USERNAME", mUserName.getText().toString()); - intent.putExtra(prefix + ".PASSWORD", mPassword.getText().toString()); - } - - startService(intent); - Intent startLW = new Intent(getBaseContext(),LogWindow.class); - startActivity(startLW); - } /* (non-Javadoc) * @see android.app.Activity#onActivityResult(int, int, android.content.Intent) @@ -550,7 +349,7 @@ public class OpenVPNClient extends Activity implements View.OnClickListener, OnI @Override public void run() { - startOpenVpn(); + // startOpenVpn(); } } |