mirror of
https://github.com/moparisthebest/open-keychain
synced 2024-11-27 19:22:14 -05:00
parent
e02e9e6707
commit
227155d484
@ -36,6 +36,9 @@ import org.sufficientlysecure.keychain.provider.KeychainContract.UserIdsColumns;
|
||||
import org.sufficientlysecure.keychain.provider.KeychainContract.CertsColumns;
|
||||
import org.sufficientlysecure.keychain.util.Log;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
|
||||
public class KeychainDatabase extends SQLiteOpenHelper {
|
||||
@ -210,7 +213,7 @@ public class KeychainDatabase extends SQLiteOpenHelper {
|
||||
}
|
||||
}
|
||||
|
||||
if(!hasApgDb)
|
||||
if(!hasApgDb || true)
|
||||
return;
|
||||
|
||||
Log.d(Constants.TAG, "apg.db exists! Importing...");
|
||||
@ -300,4 +303,44 @@ public class KeychainDatabase extends SQLiteOpenHelper {
|
||||
Log.d(Constants.TAG, "All done, (not) deleting apg.db");
|
||||
|
||||
}
|
||||
|
||||
private static void copy(File in, File out) throws IOException {
|
||||
FileInputStream ss = new FileInputStream(in);
|
||||
FileOutputStream ds = new FileOutputStream(out);
|
||||
byte[] buf = new byte[512];
|
||||
while(ss.available() > 0) {
|
||||
int count = ss.read(buf, 0, 512);
|
||||
ds.write(buf, 0, count);
|
||||
}
|
||||
}
|
||||
|
||||
public static void debugRead(Context context) throws IOException {
|
||||
if(!Constants.DEBUG) {
|
||||
return;
|
||||
}
|
||||
File in = context.getDatabasePath("debug.db");
|
||||
File out = context.getDatabasePath("openkeychain.db");
|
||||
if(!in.canRead()) {
|
||||
throw new IOException("Cannot read " + in.getName());
|
||||
}
|
||||
if(!out.canRead()) {
|
||||
throw new IOException("Cannot write " + out.getName());
|
||||
}
|
||||
copy(in, out);
|
||||
}
|
||||
|
||||
public static void debugWrite(Context context) throws IOException {
|
||||
if(!Constants.DEBUG) {
|
||||
return;
|
||||
}
|
||||
File in = context.getDatabasePath("openkeychain.db");
|
||||
File out = context.getDatabasePath("debug.db");
|
||||
if(!in.canRead()) {
|
||||
throw new IOException("Cannot read " + in.getName());
|
||||
}
|
||||
if(!out.canRead()) {
|
||||
throw new IOException("Cannot write " + out.getName());
|
||||
}
|
||||
copy(in, out);
|
||||
}
|
||||
}
|
||||
|
@ -22,9 +22,16 @@ import android.os.Bundle;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import com.devspark.appmsg.AppMsg;
|
||||
|
||||
import org.sufficientlysecure.keychain.Constants;
|
||||
import org.sufficientlysecure.keychain.R;
|
||||
import org.sufficientlysecure.keychain.helper.ExportHelper;
|
||||
import org.sufficientlysecure.keychain.provider.KeychainContract;
|
||||
import org.sufficientlysecure.keychain.provider.KeychainDatabase;
|
||||
import org.sufficientlysecure.keychain.util.Log;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class KeyListActivity extends DrawerActivity {
|
||||
|
||||
@ -46,6 +53,12 @@ public class KeyListActivity extends DrawerActivity {
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
super.onCreateOptionsMenu(menu);
|
||||
getMenuInflater().inflate(R.menu.key_list, menu);
|
||||
|
||||
if(Constants.DEBUG) {
|
||||
menu.findItem(R.id.menu_key_list_debug_read).setVisible(true);
|
||||
menu.findItem(R.id.menu_key_list_debug_write).setVisible(true);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -68,6 +81,27 @@ public class KeyListActivity extends DrawerActivity {
|
||||
mExportHelper.showExportKeysDialog(null, Constants.Path.APP_DIR_FILE, true);
|
||||
return true;
|
||||
|
||||
case R.id.menu_key_list_debug_read:
|
||||
try {
|
||||
KeychainDatabase.debugRead(this);
|
||||
AppMsg.makeText(this, "Restored from backup", AppMsg.STYLE_CONFIRM).show();
|
||||
getContentResolver().notifyChange(KeychainContract.KeyRings.CONTENT_URI, null);
|
||||
} catch(IOException e) {
|
||||
Log.e(Constants.TAG, "IO Error", e);
|
||||
AppMsg.makeText(this, "IO Error: " + e.getMessage(), AppMsg.STYLE_ALERT).show();
|
||||
}
|
||||
return true;
|
||||
|
||||
case R.id.menu_key_list_debug_write:
|
||||
try {
|
||||
KeychainDatabase.debugWrite(this);
|
||||
AppMsg.makeText(this, "Backup successful", AppMsg.STYLE_CONFIRM).show();
|
||||
} catch(IOException e) {
|
||||
Log.e(Constants.TAG, "IO Error", e);
|
||||
AppMsg.makeText(this, "IO Error: " + e.getMessage(), AppMsg.STYLE_ALERT).show();
|
||||
}
|
||||
return true;
|
||||
|
||||
default:
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
@ -31,4 +31,16 @@
|
||||
app:showAsAction="never"
|
||||
android:title="@string/menu_create_key_expert" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_key_list_debug_read"
|
||||
app:showAsAction="never"
|
||||
android:title="Debug / DB restore"
|
||||
android:visible="false" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_key_list_debug_write"
|
||||
app:showAsAction="never"
|
||||
android:title="Debug / DB backup"
|
||||
android:visible="false" />
|
||||
|
||||
</menu>
|
||||
|
Loading…
Reference in New Issue
Block a user