Hi,I am writing an Android application which needs to Connect to OpenVpn server using OpnVpn for Android. I need to pass OVPN configuration to OpenVpn For Android app through my application. I can pass the Ovpn file path(Stored on SDcard) to de.blinkt.openvpn.ConfigConverter.java class through Intent , but i need a more secure way as i do not want to store the configuration file on SDcard. I can create the OVPN file through my application and pass it to ConfigConverter class as a String using Intent
I am inserting the code changes to onStart() method in ConfigConverter.java class below as well as attaching the entire java file with this mail. Please let me know the updates. /** * Added code here to import and save vpn configuration file * which is passed through intent by external application. This * code can be moved to separate class if required. External * application will launch an intent for this class and will * pass configuration file as a string. * The caller application can use following code to pass ovpn configuration as a String. * * Intent i = new Intent(); i.setData(Uri.parse(ovpnString)); i.setComponent(new ComponentName("de.blinkt.openvpn","de.blinkt.openvpn.ConfigConverter")); i.putExtra("IS_OVPN_STR_PRESENT", true); i.putExtra("PROFILE_NAME", profileName); startActivity(i); */ @Override protected void onStart() { super.onStart(); mArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1); getListView().setAdapter(mArrayAdapter); final android.content.Intent intent = getIntent(); if (intent != null) { final android.net.Uri data = intent.getData(); if (data != null) { // log(R.string.import_experimental); log(R.string.importing_config, data.toString()); //Code modification start InputStream is = null; // check for configuration string parameter ovpnString if (intent.getBooleanExtra("IS_OVPN_STR_PRESENT", false)) { is = new ByteArrayInputStream(data.toString().getBytes()); mPossibleName = intent.getStringExtra("PROFILE_NAME"); doImport(is); } else { //Code modification end try { if (data.getScheme().equals("file")) { mPossibleName = data.getLastPathSegment(); if (mPossibleName != null) { mPossibleName = mPossibleName.replace(".ovpn",""); mPossibleName = mPossibleName.replace(".conf",""); } } is = getContentResolver().openInputStream(data); mPathsegments = data.getPathSegments(); doImport(is); } catch (FileNotFoundException e) { log(R.string.import_content_resolve_error); } } } } return; } ///////////////////////// Thanks, Alok
ConfigConverter.java
Description: Binary data