summaryrefslogtreecommitdiff
path: root/src/de/blinkt/openvpn/OpenVPNClient.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/blinkt/openvpn/OpenVPNClient.java')
-rw-r--r--src/de/blinkt/openvpn/OpenVPNClient.java383
1 files changed, 0 insertions, 383 deletions
diff --git a/src/de/blinkt/openvpn/OpenVPNClient.java b/src/de/blinkt/openvpn/OpenVPNClient.java
deleted file mode 100644
index db6dd95a..00000000
--- a/src/de/blinkt/openvpn/OpenVPNClient.java
+++ /dev/null
@@ -1,383 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package de.blinkt.openvpn;
-
-import java.security.KeyStore;
-import java.security.KeyStoreException;
-import java.security.NoSuchAlgorithmException;
-import java.security.cert.X509Certificate;
-import java.util.HashMap;
-
-import javax.net.ssl.TrustManagerFactory;
-import javax.net.ssl.X509TrustManager;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.net.VpnService;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Handler.Callback;
-import android.os.Message;
-import android.security.KeyChain;
-import android.security.KeyChainAliasCallback;
-import android.util.Log;
-import android.view.View;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemSelectedListener;
-import android.widget.CheckBox;
-import android.widget.CompoundButton;
-import android.widget.CompoundButton.OnCheckedChangeListener;
-import android.widget.EditText;
-import android.widget.Spinner;
-import android.widget.TextView;
-import android.widget.ToggleButton;
-
-import com.lamerman.FileDialog;
-
-import de.blinkt.openvpn.R.id;
-
-public class OpenVPNClient extends Activity implements View.OnClickListener, OnItemSelectedListener, Callback, OnCheckedChangeListener {
- private static final String TAG = "OpenVpnClient";
-
-
- private static final int START_OPENVPN = 0;
- private static final int CHOOSE_FILE_OFFSET = 1000;
- private static final int UPDATE_ALIAS = 20;
-
- private static final String PREFS_NAME = "OVPN_SERVER";
-
-
-
- private TextView mServerAddress;
- private TextView mServerPort;
- private FileSelectLayout mClientCert;
- private FileSelectLayout mCaCert;
- private FileSelectLayout mClientKey;
- private TextView mAliasName;
- private CheckBox mUseLzo;
- private ToggleButton mTcpUdp;
- private Spinner mType;
- private String certalias;
- private FileSelectLayout mpkcs12;
- private TextView mPKCS12Password;
-
- private Handler mHandler;
-
-
- private CheckBox mUseTlsAuth;
-
-
- private CheckBox mShowAdvanced;
-
-
- private FileSelectLayout mTlsFile;
-
- private HashMap<Integer, FileSelectLayout> fileselects = new HashMap<Integer, FileSelectLayout>();
-
-
- private Spinner mTLSDirection;
-
-
- private EditText mUserName;
-
-
- private EditText mPassword;
-
- @Override
- protected void onStop(){
- super.onStop();
- savePreferences();
- }
-
-
-
- private void addFileSelectLayout (FileSelectLayout fsl) {
- int i = fileselects.size() + CHOOSE_FILE_OFFSET;
- fileselects.put(i, fsl);
- fsl.setActivity(this,i);
- }
-
-
-
-
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.basic_settings);
-
- // Forces early JNI Load
- OpenVPN.foo();
-
- mServerAddress = (TextView) findViewById(R.id.address);
- mServerPort = (TextView) findViewById(R.id.port);
- mClientCert = (FileSelectLayout) findViewById(R.id.certselect);
- mClientKey = (FileSelectLayout) findViewById(R.id.keyselect);
- mCaCert = (FileSelectLayout) findViewById(R.id.caselect);
- mpkcs12 = (FileSelectLayout) findViewById(R.id.pkcs12select);
- mUseLzo = (CheckBox) findViewById(R.id.lzo);
- mTcpUdp = (ToggleButton) findViewById(id.tcpudp);
- mType = (Spinner) findViewById(R.id.type);
- mPKCS12Password = (TextView) findViewById(R.id.pkcs12password);
- mAliasName = (TextView) findViewById(R.id.aliasname);
- mUseTlsAuth = (CheckBox) findViewById(R.id.useTLSAuth);
- mTLSDirection = (Spinner) findViewById(R.id.tls_direction);
-
- mShowAdvanced = (CheckBox) findViewById(R.id.show_advanced);
- mTlsFile = (FileSelectLayout) findViewById(R.id.tlsAuth);
- mUserName = (EditText) findViewById(R.id.auth_username);
- mPassword = (EditText) findViewById(R.id.auth_password);
-
-
- addFileSelectLayout(mCaCert);
- addFileSelectLayout(mClientCert);
- addFileSelectLayout(mClientKey);
- addFileSelectLayout(mTlsFile);
- addFileSelectLayout(mpkcs12);
-
- loadPreferences();
-
- mType.setOnItemSelectedListener(this);
-
- mShowAdvanced.setOnCheckedChangeListener(this);
- mUseTlsAuth.setOnCheckedChangeListener(this);
-
-
- findViewById(R.id.select_keystore_button).setOnClickListener(this);
- findViewById(R.id.about).setOnClickListener(this);
- findViewById(R.id.connect).setOnClickListener(this);
-
- if (mHandler == null) {
- mHandler = new Handler(this);
- }
- }
-
-
- @Override
- public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
- if (parent == mType) {
- changeType(position);
- }
- }
-
-
-
- private void changeType(int type){
- // hide everything
- findViewById(R.id.pkcs12).setVisibility(View.GONE);
- findViewById(R.id.certs).setVisibility(View.GONE);
- findViewById(R.id.statickeys).setVisibility(View.GONE);
- findViewById(R.id.keystore).setVisibility(View.GONE);
-
- switch(type) {
- case VpnProfile.TYPE_CERTIFICATES:
- findViewById(R.id.certs).setVisibility(View.VISIBLE);
- break;
- case VpnProfile.TYPE_PKCS12:
- findViewById(R.id.pkcs12).setVisibility(View.VISIBLE);
- break;
- case VpnProfile.TYPE_STATICKEYS:
- findViewById(R.id.statickeys).setVisibility(View.VISIBLE);
- break;
- case VpnProfile.TYPE_KEYSTORE:
- findViewById(R.id.keystore).setVisibility(View.VISIBLE);
- break;
-
- case VpnProfile.TYPE_USERPASS:
- findViewById(R.id.userpassword).setVisibility(View.VISIBLE);
- }
-
-
- }
-
- private void loadPreferences() {
- SharedPreferences settings = getSharedPreferences(PREFS_NAME,Activity.MODE_PRIVATE);
-
- mClientCert.setData(settings.getString("clientcert", ""));
- mClientKey.setData(settings.getString("clientkey", ""));
- mCaCert.setData(settings.getString("ca", ""));
-
- mUseLzo.setChecked(settings.getBoolean("useLzo", true));
- mServerPort.setText(settings.getString("port", "1194"));
- mServerAddress.setText(settings.getString("server", "openvpn.blinkt.de"));
- mTcpUdp.setChecked(settings.getBoolean("udp", true));
- mType.setSelection(settings.getInt("type", VpnProfile.TYPE_PKCS12));
- mpkcs12.setData(settings.getString("pkcs12file", ""));
- mPKCS12Password.setText(settings.getString("pkcs12password", ""));
- certalias = settings.getString("alias", null);
- mUseTlsAuth.setChecked(settings.getBoolean("tlsauth", false));
- onCheckedChanged(mUseTlsAuth,mUseTlsAuth.isChecked());
-
- mTlsFile.setData(settings.getString("tlsfile",""));
- mTLSDirection.setSelection(settings.getInt("tls-direction", 2)); // Unspecified
- setAlias();
-
- }
-
- private void savePreferences() {
- // We need an Editor object to make preference changes.
- // All objects are from android.context.Context
- SharedPreferences settings = getSharedPreferences(PREFS_NAME,Activity.MODE_PRIVATE);
- SharedPreferences.Editor editor = settings.edit();
-
-
- editor.putString("ca" , mCaCert.getData());
- editor.putString("clientcert", mClientCert.getData());
- editor.putString("clientkey", mClientKey.getData());
-
- editor.putBoolean("useLzo",mUseLzo.isChecked());
- editor.putString("port", mServerPort.getText().toString());
- editor.putString("server", mServerAddress.getText().toString());
- editor.putBoolean("udp", mTcpUdp.isChecked());
-
- editor.putInt("type",mType.getSelectedItemPosition());
- editor.putString("pkcs12file", mpkcs12.getData());
- editor.putString("pkcs12password", mPKCS12Password.getText().toString());
- editor.putString("alias", certalias);
- editor.putBoolean("tlsauth", mUseTlsAuth.isChecked());
- editor.putString("tlsfile", mTlsFile.getData());
- editor.putInt("tls-direction", mTLSDirection.getSelectedItemPosition());
- // Commit the edits!
- editor.commit();
- }
-
-
- private void setAlias() {
- if(certalias == null) {
- mAliasName.setText(R.string.client_no_certificate);
- } else {
- mAliasName.setText(certalias);
- }
- }
-
- public void showCertDialog () {
- KeyChain.choosePrivateKeyAlias(this,
- new KeyChainAliasCallback() {
-
- public void alias(String alias) {
- // Credential alias selected. Remember the alias selection for future use.
- certalias=alias;
- mHandler.sendEmptyMessage(UPDATE_ALIAS);
- }
-
-
- },
- new String[] {"RSA", "DSA"}, // List of acceptable key types. null for any
- null, // issuer, null for any
- "internal.example.com", // host name of server requesting the cert, null if unavailable
- 443, // port of server requesting the cert, -1 if unavailable
- null); // alias to preselect, null if unavailable
- }
-
-
-
- public void testGetallCerts() throws NoSuchAlgorithmException, KeyStoreException {
- TrustManagerFactory tmf = TrustManagerFactory
- .getInstance(TrustManagerFactory.getDefaultAlgorithm());
-
- tmf.init((KeyStore) null);
- X509TrustManager xtm = (X509TrustManager) tmf.getTrustManagers()[0];
-
- X509Certificate[] foo = xtm.getAcceptedIssuers();
- for (X509Certificate cert : xtm.getAcceptedIssuers()) {
- String certStr = "S:" + cert.getSubjectDN().getName() + "\nI:"
- + cert.getIssuerDN().getName();
- Log.d(TAG, certStr);
- }
- System.out.println(foo);
- }
-
- @Override
- public void onClick(View v) {
- if(v == findViewById(R.id.connect)) {
- Intent intent = VpnService.prepare(this);
- if (intent != null) {
- startActivityForResult(intent, 0);
- } else {
- onActivityResult(START_OPENVPN, RESULT_OK, null);
- }
- } else if (v == findViewById(R.id.about)) {
- //Intent intent = new Intent(getBaseContext(),AboutActivity.class);
- Intent intent = new Intent(getBaseContext(),VPNPreferences.class);
- intent.putExtra("foo","der bar war hier!");
- startActivity(intent);
- } else if (v == findViewById(R.id.select_keystore_button)) {
- showCertDialog();
- }
- }
-
-
-
- /* (non-Javadoc)
- * @see android.app.Activity#onActivityResult(int, int, android.content.Intent)
- */
- @Override
- protected void onActivityResult(int request, int result, Intent data) {
- if (request== START_OPENVPN) {
- if (result == RESULT_OK) {
- // It always crashes and never saves ;)
- savePreferences();
- new startOpenVpnThread().start();
- }
-
- } else if (request >= CHOOSE_FILE_OFFSET) {
- String filepath = data.getStringExtra(FileDialog.RESULT_PATH);
- FileSelectLayout fsl = fileselects.get(request);
- fsl.setData(filepath);
- }
- savePreferences();
- }
-
-
-
- private class startOpenVpnThread extends Thread {
-
- @Override
- public void run() {
- // startOpenVpn();
- }
-
- }
-
- @Override
- public void onNothingSelected(AdapterView<?> parent) {
- }
-
-
- @Override
- public boolean handleMessage(Message msg) {
- setAlias();
- return true;
- }
-
-
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- int visibility;
- if(isChecked)
- visibility =View.VISIBLE;
- else
- visibility =View.GONE;
-
- if(buttonView==mShowAdvanced) {
- findViewById(R.id.advanced_options).setVisibility(visibility);
- } else if (buttonView == mUseTlsAuth) {
- findViewById(R.id.tlsauth_options).setVisibility(visibility);
- }
- }
-}