mirror of
https://github.com/moparisthebest/open-keychain
synced 2025-02-26 00:11:52 -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.provider.KeychainContract.CertsColumns;
|
||||||
import org.sufficientlysecure.keychain.util.Log;
|
import org.sufficientlysecure.keychain.util.Log;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
public class KeychainDatabase extends SQLiteOpenHelper {
|
public class KeychainDatabase extends SQLiteOpenHelper {
|
||||||
@ -210,7 +213,7 @@ public class KeychainDatabase extends SQLiteOpenHelper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!hasApgDb)
|
if(!hasApgDb || true)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Log.d(Constants.TAG, "apg.db exists! Importing...");
|
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");
|
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.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
|
|
||||||
|
import com.devspark.appmsg.AppMsg;
|
||||||
|
|
||||||
import org.sufficientlysecure.keychain.Constants;
|
import org.sufficientlysecure.keychain.Constants;
|
||||||
import org.sufficientlysecure.keychain.R;
|
import org.sufficientlysecure.keychain.R;
|
||||||
import org.sufficientlysecure.keychain.helper.ExportHelper;
|
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 {
|
public class KeyListActivity extends DrawerActivity {
|
||||||
|
|
||||||
@ -46,6 +53,12 @@ public class KeyListActivity extends DrawerActivity {
|
|||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
super.onCreateOptionsMenu(menu);
|
super.onCreateOptionsMenu(menu);
|
||||||
getMenuInflater().inflate(R.menu.key_list, 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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,6 +81,27 @@ public class KeyListActivity extends DrawerActivity {
|
|||||||
mExportHelper.showExportKeysDialog(null, Constants.Path.APP_DIR_FILE, true);
|
mExportHelper.showExportKeysDialog(null, Constants.Path.APP_DIR_FILE, true);
|
||||||
return 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:
|
default:
|
||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
|
@ -31,4 +31,16 @@
|
|||||||
app:showAsAction="never"
|
app:showAsAction="never"
|
||||||
android:title="@string/menu_create_key_expert" />
|
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>
|
</menu>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user