summaryrefslogtreecommitdiff
path: root/src/de/blinkt
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/blinkt')
-rw-r--r--src/de/blinkt/openvpn/LogWindow.java75
-rw-r--r--src/de/blinkt/openvpn/OpenVPN.java2
2 files changed, 75 insertions, 2 deletions
diff --git a/src/de/blinkt/openvpn/LogWindow.java b/src/de/blinkt/openvpn/LogWindow.java
index 8d228cf1..3c0f7246 100644
--- a/src/de/blinkt/openvpn/LogWindow.java
+++ b/src/de/blinkt/openvpn/LogWindow.java
@@ -1,5 +1,9 @@
package de.blinkt.openvpn;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
import java.util.Vector;
import android.app.AlertDialog;
@@ -12,6 +16,7 @@ import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.database.DataSetObserver;
+import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Handler.Callback;
@@ -76,6 +81,7 @@ public class LogWindow extends ListActivity implements StateListener {
return str;
}
+
private void shareLog() {
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_TEXT, getLogStr());
@@ -215,12 +221,15 @@ public class LogWindow extends ListActivity implements StateListener {
OpenVpnManagementThread.stopOpenVPN();
}
});
-
+
builder.show();
return true;
} else if(item.getItemId()==R.id.info) {
if(mBconfig==null)
OpenVPN.triggerLogBuilderConfig();
+ } else if(item.getItemId()==R.id.minidump) {
+ emailMiniDumps();
+
} else if(item.getItemId()==R.id.send) {
ladapter.shareLog();
} else if(item.getItemId()==R.id.edit_vpn) {
@@ -249,9 +258,73 @@ public class LogWindow extends ListActivity implements StateListener {
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.logmenu, menu);
+
+
+
+ if(getLastestDump()==null)
+ menu.removeItem(R.id.minidump);
+
return true;
}
+ private File getLastestDump() {
+ long newestDumpTime=0;
+ File newestDumpFile=null;
+
+ for(File f:getCacheDir().listFiles()) {
+ if(!f.getName().endsWith(".dmp"))
+ continue;
+
+ if (newestDumpTime < f.lastModified()) {
+ newestDumpTime = f.lastModified();
+ newestDumpFile=f;
+ }
+ }
+ return newestDumpFile;
+ }
+
+
+ public void emailMiniDumps()
+ {
+ //need to "send multiple" to get more than one attachment
+ final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE);
+ emailIntent.setType("*/*");
+ emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,
+ new String[]{"Arne Schwabe <arne@rfc2549.org>"});
+ emailIntent.putExtra(Intent.EXTRA_SUBJECT, "OpenVPN Minidump");
+
+
+ ArrayList<CharSequence> textarraylist = new ArrayList<CharSequence>();
+ textarraylist.add("Please describe the issue you have experienced");
+ emailIntent.putExtra(Intent.EXTRA_TEXT, textarraylist);
+
+
+ ArrayList<Uri> uris = new ArrayList<Uri>();
+
+ File ldump = getLastestDump();
+ if(ldump==null) {
+ OpenVPN.logError("No Minidump found!");
+ }
+
+ uris.add(Uri.parse("content://de.blinkt.openvpn.FileProvider/" + ldump.getName()));
+ uris.add(Uri.parse("content://de.blinkt.openvpn.FileProvider/openvpn.log"));
+
+
+ try {
+ FileWriter logout = new FileWriter(new File(getCacheDir(),"openvpn.log"));
+ logout.write(ladapter.getLogStr());
+ logout.close();
+
+ } catch (IOException e1) {
+ OpenVPN.logError("Error writing log: " + e1.getLocalizedMessage());
+ }
+
+ //emailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+ emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
+ startActivity(emailIntent);
+ }
+
+
@Override
protected void onResume() {
super.onResume();
diff --git a/src/de/blinkt/openvpn/OpenVPN.java b/src/de/blinkt/openvpn/OpenVPN.java
index 6b65c22e..48623865 100644
--- a/src/de/blinkt/openvpn/OpenVPN.java
+++ b/src/de/blinkt/openvpn/OpenVPN.java
@@ -163,7 +163,7 @@ public class OpenVPN {
}
public static void logInfo(String message) {
-
+ newlogItem(new LogItem(LogItem.INFO, message));
}
public static void logInfo(int ressourceId, Object... args) {