diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/de/blinkt/openvpn/LaunchVPN.java | 39 | 
1 files changed, 37 insertions, 2 deletions
| diff --git a/src/de/blinkt/openvpn/LaunchVPN.java b/src/de/blinkt/openvpn/LaunchVPN.java index 88c14da3..17313cd5 100644 --- a/src/de/blinkt/openvpn/LaunchVPN.java +++ b/src/de/blinkt/openvpn/LaunchVPN.java @@ -16,6 +16,11 @@  package de.blinkt.openvpn; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream;  import java.util.Collection;  import java.util.Vector; @@ -203,6 +208,32 @@ public class LaunchVPN extends ListActivity implements OnItemClickListener {  		//    }  	} +	 +	private boolean writeMiniVPN() { +		try { +			InputStream mvpn = getAssets().open("minivpn"); +			File mvpnout = new File(getCacheDir(),"minivpn"); +			FileOutputStream fout = new FileOutputStream(mvpnout); +			 +			byte buf[]= new byte[4096]; +			 +			int lenread = mvpn.read(buf); +			while(lenread> 0) { +				fout.write(buf, 0, lenread); +				lenread = mvpn.read(buf); +			} +			fout.close(); +			 +			if(!mvpnout.setExecutable(true)) +				return false; +			 +			 +			return true; +		} catch (IOException e) { +			e.printStackTrace(); +			return false; +		} +	}  	private void askForPW(final String type) { @@ -309,8 +340,12 @@ public class LaunchVPN extends ListActivity implements OnItemClickListener {  		void startOpenVpn() {  			Intent startLW = new Intent(getBaseContext(),LogWindow.class);  			startActivity(startLW); - - +			 +			OpenVPN.logMessage(0, "", "Writing minivpn binary"); +			if(!writeMiniVPN()) { +				OpenVPN.logMessage(0, "", "Error writing minivpn binary"); +				return; +			}  			OpenVPN.logMessage(0, "", "Building configration...");  			Intent startVPN = mSelectedProfile.prepareIntent(getBaseContext()); | 
