From ef264f51e7b57e771ce4339261d2bb918580ecc9 Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Sat, 5 May 2012 02:33:46 +0200 Subject: Version 0.4.7 with more route checking and fix of the tmp-dir bug :( closes issue #6 --- src/de/blinkt/openvpn/OpenVPN.java | 141 ++++++++++++++++++++----------------- 1 file changed, 78 insertions(+), 63 deletions(-) (limited to 'src/de/blinkt/openvpn/OpenVPN.java') diff --git a/src/de/blinkt/openvpn/OpenVPN.java b/src/de/blinkt/openvpn/OpenVPN.java index daa29717..a5f60daf 100644 --- a/src/de/blinkt/openvpn/OpenVPN.java +++ b/src/de/blinkt/openvpn/OpenVPN.java @@ -10,77 +10,79 @@ public class OpenVPN { private static final int MAXLOGENTRIES = 500; public static native int startOpenVPNThread(); public static native int startOpenVPNThreadArgs(String argv[]); - private static final String TAG = "OpenVpn"; + private static final String TAG = "OpenVpn"; + - public static LinkedList logbuffer = new LinkedList(); private static int counter=0; private static Vector logListener=new Vector(); - + private static String[] mBconfig=null; + public interface LogListener { void newLog(String logmessage); } - static { - System.loadLibrary("crypto"); - System.loadLibrary("ssl"); - System.loadLibrary("lzo"); - System.loadLibrary("openvpn"); - } - - static void addRoute(String dest,String mask, String gw) { - Log.i("openvpn" ,"Got Routing information " + dest + " " + mask + " " + gw ); - mOpenVpnService.addRoute(dest,mask); - } - - synchronized static void logMessage(int level,String prefix, String message) - { - logbuffer.addLast(prefix + " " + message); - if(logbuffer.size()>MAXLOGENTRIES) - logbuffer.removeFirst(); - - // The garbage collector does not collect the String from native - // but kills me for logging 100 messages with too many references :( - // Force GC how and then to kill loose ends - if(counter++ % 50==0) - System.gc(); - - for (LogListener ll : logListener) { + static { + System.loadLibrary("crypto"); + System.loadLibrary("ssl"); + System.loadLibrary("lzo"); + System.loadLibrary("openvpn"); + } + + static void addRoute(String dest,String mask, String gw) { + Log.i("openvpn" ,"Got Routing information " + dest + " " + mask + " " + gw ); + mOpenVpnService.addRoute(dest,mask); + } + + synchronized static void logMessage(int level,String prefix, String message) + { + logbuffer.addLast(prefix + " " + message); + if(logbuffer.size()>MAXLOGENTRIES) + logbuffer.removeFirst(); + + // The garbage collector does not collect the String from native + // but kills me for logging 100 messages with too many references :( + // Force GC how and then to kill loose ends + if(counter++ % 50==0) { + System.gc(); + } + + for (LogListener ll : logListener) { ll.newLog(prefix + " " + message); } - - } - - synchronized static void clearLog() { - logbuffer.clear(); - } - - synchronized static void addLogListener(LogListener ll){ - logListener.add(ll); - } - - synchronized static void removeLogListener(LogListener ll) { - logListener.remove(ll); - } - - - static void addInterfaceInfo(int mtu, String local, String netmask) - { - Log.i("openvpn","Got interface info M" + mtu + " L: " + local + "NM: " + netmask); - mOpenVpnService.setLocalIP(local,netmask); - } - - static void addDns(String dns) { - Log.i("openvpn","Got DNS Server: " + dns); - mOpenVpnService.addDNS(dns); - } - - - static void addDomain(String domain) { - Log.i("openvpn","Got DNS Domain: " + domain); - mOpenVpnService.setDomain(domain); - } + + } + + synchronized static void clearLog() { + logbuffer.clear(); + } + + synchronized static void addLogListener(LogListener ll){ + logListener.add(ll); + } + + synchronized static void removeLogListener(LogListener ll) { + logListener.remove(ll); + } + + + static void addInterfaceInfo(int mtu, String local, String netmask) + { + Log.i("openvpn","Got interface info M" + mtu + " L: " + local + "NM: " + netmask); + mOpenVpnService.setLocalIP(local,netmask); + } + + static void addDns(String dns) { + Log.i("openvpn","Got DNS Server: " + dns); + mOpenVpnService.addDNS(dns); + } + + + static void addDomain(String domain) { + Log.i("openvpn","Got DNS Domain: " + domain); + mOpenVpnService.setDomain(domain); + } public static void setCallback(OpenVpnService openVpnService) { @@ -96,19 +98,32 @@ public class OpenVPN { Log.e("openvpn","Error protecting socket "+ sockfd); return p; } - + public static int openTunDevice() { Log.d(TAG,"Opening tun device"); return mOpenVpnService.openTun(); } //! Dummy method being called to force loading of JNI Libraries public static void foo() { } - + synchronized public static String[] getlogbuffer() { - + // The stoned way of java to return an array from a vector // brought to you by eclipse auto complete return (String[]) logbuffer.toArray(new String[logbuffer.size()]); } + public static void logBuilderConfig(String[] bconfig) { + mBconfig =bconfig; + } + public static void triggerLogBuilderConfig() { + if(mBconfig==null) { + logMessage(0, "", "No active interface"); + } else { + for (String item : mBconfig) { + logMessage(0, "", item); + } + } + + } } -- cgit v1.2.3