From 4fea84cc5fc3a5f026e0265e0e66281fc713e8d5 Mon Sep 17 00:00:00 2001 From: Juan Ezquerro LLanes Date: Thu, 17 Nov 2016 16:21:28 +0100 Subject: [PATCH] allow managed backups field --- .../org/torproject/android/OrbotMainActivity.java | 15 ++++++++++++--- .../android/ui/hs/database/HSDatabase.java | 1 + app/src/main/res/layout/dialog_hs_data.xml | 8 ++++++++ app/src/main/res/values/strings.xml | 1 + 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/torproject/android/OrbotMainActivity.java b/app/src/main/java/org/torproject/android/OrbotMainActivity.java index 2e17f391..f5f62276 100644 --- a/app/src/main/java/org/torproject/android/OrbotMainActivity.java +++ b/app/src/main/java/org/torproject/android/OrbotMainActivity.java @@ -572,7 +572,7 @@ public class OrbotMainActivity extends AppCompatActivity stopVpnService(); } - private void enableHiddenServicePort (String hsName, int hsPort, int hsRemotePort, boolean getGey) throws RemoteException, InterruptedException + private void enableHiddenServicePort (String hsName, int hsPort, int hsRemotePort, boolean allowBackups) throws RemoteException, InterruptedException { String onionHostname = null; @@ -593,6 +593,15 @@ public class OrbotMainActivity extends AppCompatActivity Cursor row = cr.query(HSContentProvider.CONTENT_URI, mProjection, "port=" + mHsPort, null, null); if(row == null) { + /* + * For security reasons: + * + * Allow managed backups option can only be set to a arbitrary true or false value when a service is created + * Subsequently an application can only change this value to false via Intent service + * Modifying this value to true again can only be performed by the user through the Orbot interface + * + */ + fields.put("allow_managed_backups", allowBackups); cr.insert(HSContentProvider.CONTENT_URI, fields); } else { onionHostname = row.getString(row.getColumnIndex(HSContentProvider.HiddenService.DOMAIN)); @@ -665,7 +674,7 @@ public class OrbotMainActivity extends AppCompatActivity final int hiddenServicePort = getIntent().getIntExtra("hs_port", -1); final int hiddenServiceRemotePort = getIntent().getIntExtra("hs_onion_port", -1); final String hiddenServiceName = getIntent().getStringExtra("hs_name"); - final boolean getHiddenServiceKey = getIntent().getBooleanExtra("hs_get_key",false); + final boolean hiddenServiceAllowBackups = getIntent().getBooleanExtra("hs_allow_namaged_backup",false); DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { @@ -676,7 +685,7 @@ public class OrbotMainActivity extends AppCompatActivity try { enableHiddenServicePort ( hiddenServiceName, hiddenServicePort, - hiddenServiceRemotePort, getHiddenServiceKey + hiddenServiceRemotePort, hiddenServiceAllowBackups ); } catch (RemoteException e) { // TODO Auto-generated catch block diff --git a/app/src/main/java/org/torproject/android/ui/hs/database/HSDatabase.java b/app/src/main/java/org/torproject/android/ui/hs/database/HSDatabase.java index cafa7edd..07e5c1be 100644 --- a/app/src/main/java/org/torproject/android/ui/hs/database/HSDatabase.java +++ b/app/src/main/java/org/torproject/android/ui/hs/database/HSDatabase.java @@ -16,6 +16,7 @@ public class HSDatabase extends SQLiteOpenHelper { "name TEXT, " + "domain TEXT, " + "onion_port INTEGER, " + + "allow_managed_backups INTEGER DEFAULT 0, " + "port INTEGER);"; public HSDatabase(Context context) { diff --git a/app/src/main/res/layout/dialog_hs_data.xml b/app/src/main/res/layout/dialog_hs_data.xml index 05d52fe9..dd831488 100644 --- a/app/src/main/res/layout/dialog_hs_data.xml +++ b/app/src/main/res/layout/dialog_hs_data.xml @@ -53,6 +53,13 @@ android:id="@+id/hsOnionPort" android:inputType="number" /> + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ea017876..7f534fe0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -339,4 +339,5 @@ Onion Port Name Invalid Port + Allow managed backups