briar issueshttps://code.briarproject.org/groups/briar/-/issues2018-06-12T11:32:33Zhttps://code.briarproject.org/briar/briar/-/issues/225Bluetooth plugin is broken on Android 62018-06-12T11:32:33ZakwizgranBluetooth plugin is broken on Android 6Android 6 no longer allows access to the local Bluetooth address. `BluetoothAdapter.getAddress()` now returns a fixed value. This will break our ability to give our address to contacts so they can connect without performing discovery.
...Android 6 no longer allows access to the local Bluetooth address. `BluetoothAdapter.getAddress()` now returns a fixed value. This will break our ability to give our address to contacts so they can connect without performing discovery.
https://developer.android.com/intl/ko/about/versions/marshmallow/android-6.0-changes.html#behavior-hardware-id
The plugin still uses BluetoothAdapter.getAddress(), it's only `TestingActivity` and `CrashReportActivity` that look at the value in `Settings.Secure`. we need to add a method (maybe in `AndroidUtils`?) for getting the value from the adapter, checking whether it's valid, getting the value from `Settings.Secure` if it's not, and throwing an exception if there's not a valid address there either.Milestone Bakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/224Adding existing contact with another identity fails2018-06-12T11:32:33ZTorsten GroteAdding existing contact with another identity failsSteps to reproduce:
* Add contact X with first identity A
* Create second identity B
* Add contact X with second identity B
Observe how adding contact X fails while it succeeds for user X.Steps to reproduce:
* Add contact X with first identity A
* Create second identity B
* Add contact X with second identity B
Observe how adding contact X fails while it succeeds for user X.Milestone Bakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/223Unable to add contacts via Bluetooth with Android 62018-06-12T11:32:34ZTorsten GroteUnable to add contacts via Bluetooth with Android 6Apparently, you need the `ACCESS_COARSE_LOCATION` permission to use Bluetooth on Android 6. So we need to ask the user to grant this permission before contacts can be added via Bluetooth.
To quote from the [issue report](https://code....Apparently, you need the `ACCESS_COARSE_LOCATION` permission to use Bluetooth on Android 6. So we need to ask the user to grant this permission before contacts can be added via Bluetooth.
To quote from the [issue report](https://code.google.com/p/android/issues/detail?id=189090):
> To access the hardware identifiers of nearby external devices via Bluetooth and Wi-Fi scans, your app
> must now have the `ACCESS_FINE_LOCATION` or `ACCESS_COARSE_LOCATION` permissions
This is a sub-issue of #158.Milestone BTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/218UTF-8 string encoding/decoding fails with POSIX locale2018-06-12T11:32:34ZakwizgranUTF-8 string encoding/decoding fails with POSIX localeThe unit tests `BdfReaderImplTest#testReadUtf8String()` and `BdfWriterImplTest#testWriteUtf8String()` fail on a Linux system with the following locale settings:
```
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POS...The unit tests `BdfReaderImplTest#testReadUtf8String()` and `BdfWriterImplTest#testWriteUtf8String()` fail on a Linux system with the following locale settings:
```
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
```
Compilation also produces errors for these tests along with MetadataEncoderImplTest and MetadataParserImplTest, which may be related to the use of Unicode characters in source files. Example:
```
/home/tests/briar/briar-tests/src/org/briarproject/data/MetadataEncoderParserImplTest.java:76: error: unmappable character for encoding ASCII
d.put("test", "abcdefghilkmnopqrst ?????????????????? \uFDD0\uFDD1\uFDD2\uFDD3");
```Milestone Bakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/217Tor Connectivity Issues2018-06-12T11:32:34ZTorsten GroteTor Connectivity IssuesI have issues with Briar contacts seeing each other online. It works fine after adding the contacts. But after some time, when they have different IP addresses in the local network, they never turn up as online.
Connecting through Tor...I have issues with Briar contacts seeing each other online. It works fine after adding the contacts. But after some time, when they have different IP addresses in the local network, they never turn up as online.
Connecting through Tor does not seem to work. They try to connect to the proper hidden services addresses, but in the log there is just this without further information:
```
org.briarproject I/TorPlugin: Could not connect to [bla].onion
```
Maybe, the tor hidden service performance patch is missing from the latest tor binaries? Without that patch we used to get a lot of connection failures.
Maybe this can be investigated along with #203.Milestone Bakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/211PanicKit Response: Uninstall Briar2018-06-12T11:32:34ZTorsten GrotePanicKit Response: Uninstall BriarIt is possible to not only purge all data, but also to install Briar completely, so that there are no (obvious) clues that it was installed and used at all.
Uninstalling should be added as another configurable Panic Response.It is possible to not only purge all data, but also to install Briar completely, so that there are no (obvious) clues that it was installed and used at all.
Uninstalling should be added as another configurable Panic Response.Milestone BTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/195Notification about private messages should go away when viewing messages2018-06-12T11:32:35ZTorsten GroteNotification about private messages should go away when viewing messagesWhen viewing the private messages, the notification about these private messages should automatically be dismissed.When viewing the private messages, the notification about these private messages should automatically be dismissed.Milestone BTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/184Disabling Bluetooth adapter on UI thread violates Strict Mode2018-06-12T11:32:35ZakwizgranDisabling Bluetooth adapter on UI thread violates Strict ModeOn the Galaxy Nexus (Android 4.3), BluetoothAdapter#disable() results in a disk write, which violates strict mode. Maybe we should run the enable() and disable() calls on the AndroidExecutor?
```
12-17 12:19:33.868 29626-29626/org.br...On the Galaxy Nexus (Android 4.3), BluetoothAdapter#disable() results in a disk write, which violates strict mode. Maybe we should run the enable() and disable() calls on the AndroidExecutor?
```
12-17 12:19:33.868 29626-29626/org.briarproject D/StrictMode: StrictMode policy violation; ~duration=319 ms: android.os.StrictMode$StrictModeDiskWriteViolation: policy=287 violation=1
at android.os.StrictMode$AndroidBlockGuardPolicy.onWriteToDisk(StrictMode.java:1097)
at android.database.sqlite.SQLiteConnection.applyBlockGuardPolicy(SQLiteConnection.java:1043)
at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:779)
at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788)
at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86)
at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1469)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339)
at com.android.providers.settings.SettingsProvider.insertForUser(SettingsProvider.java:914)
at com.android.providers.settings.SettingsProvider.callFromPackage(SettingsProvider.java:634)
at android.content.ContentProvider$Transport.call(ContentProvider.java:279)
at android.provider.Settings$NameValueCache.putStringForUser(Settings.java:818)
at android.provider.Settings$Global.putStringForUser(Settings.java:5529)
at android.provider.Settings$Global.putString(Settings.java:5519)
at android.provider.Settings$Global.putInt(Settings.java:5607)
at com.android.server.BluetoothManagerService.persistBluetoothSetting(BluetoothManagerService.java:255)
at com.android.server.BluetoothManagerService.disable(BluetoothManagerService.java:439)
at android.bluetooth.IBluetoothManager$Stub.onTransact(IBluetoothManager.java:116)
at android.os.Binder.execTransact(Binder.java:388)
at dalvik.system.NativeStart.run(Native Method)
# via Binder call with stack:
android.os.StrictMode$LogStackTrace
at android.os.StrictMode.readAndHandleBinderCallViolations(StrictMode.java:1687)
at android.os.Parcel.readExceptionCode(Parcel.java:1413)
at android.os.Parcel.readException(Parcel.java:1382)
at android.bluetooth.IBluetoothManager$Stub$Proxy.disable(IBluetoothManager.java:286)
at android.bluetooth.BluetoothAdapter.disable(BluetoothAdapter.java:550)
at org.briarproject.android.SettingsActivity.onClick(SettingsActivity.java:297)
at android.view.View.performClick(View.java:4240)
at android.view.View$PerformClick.run(View.java:17721)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
```Milestone BTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/181Restructure the Dashboard2018-06-12T11:32:35ZErnir ErlingssonRestructure the DashboardRestructure the dashboard with a navigation drawer and use fragmentsRestructure the dashboard with a navigation drawer and use fragmentsMilestone Bhttps://code.briarproject.org/briar/briar/-/issues/167Replace TransportConfig with namespaced Settings2018-06-12T11:32:36ZakwizgranReplace TransportConfig with namespaced SettingsThe Tor and Bluetooth plugins use a mixture of Settings and TransportConfig to store their configuration. No other plugins use TransportConfig.
Add namespaces to Settings so all components can use them without treading on each other's...The Tor and Bluetooth plugins use a mixture of Settings and TransportConfig to store their configuration. No other plugins use TransportConfig.
Add namespaces to Settings so all components can use them without treading on each other's toes, and remove TransportConfig.
Plugins should be able to access their settings through the PluginCallback, as they currently can for TransportConfig. Perhaps the PluginManager should also push updated settings to the plugins so they don't have to listen on the EventBus?Milestone BSantiago Torres-AriasSantiago Torres-Ariashttps://code.briarproject.org/briar/briar/-/issues/119User testing sessions2018-06-12T11:32:38ZakwizgranUser testing sessionsTwo user testing sessions for Milestone B -- findings to be documented in the issue tracker.Two user testing sessions for Milestone B -- findings to be documented in the issue tracker.Milestone Bhttps://code.briarproject.org/briar/briar/-/issues/118Introduce contacts to each other2018-04-16T16:24:37ZakwizgranIntroduce contacts to each otherThe protocol for doing this will be a BSP client.The protocol for doing this will be a BSP client.Milestone BTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/117Add contacts via QR codes2018-06-12T11:32:38ZakwizgranAdd contacts via QR codesMilestone Bhttps://code.briarproject.org/briar/briar/-/issues/116New polling logic2018-06-12T11:32:38ZakwizgranNew polling logicThe Tor plugin should follow Ricochet's approach to polling:
* Whenever internet access becomes available, publish the hidden service descriptor, wait for it to be published (how?), then poll once for contacts
* Don't poll again unti...The Tor plugin should follow Ricochet's approach to polling:
* Whenever internet access becomes available, publish the hidden service descriptor, wait for it to be published (how?), then poll once for contacts
* Don't poll again until the next time internet access becomes available -- contacts are responsible for connecting to us
The LAN and Bluetooth plugins should use randomised exponential backoff, starting from the time the transport becomes available.Milestone Bakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/115Improve Tor hidden service performance2018-06-12T11:32:38ZakwizgranImprove Tor hidden service performanceBring the Tor hidden service patch up to date and take it through the patch workshop to get it integrated upstream. Measure the performance improvements.Bring the Tor hidden service patch up to date and take it through the patch workshop to get it integrated upstream. Measure the performance improvements.Milestone Bakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/30Navigation drawer2018-06-12T11:32:40ZakwizgranNavigation drawerAdd a navigation drawer to the action bar, making the buttons from the dashboard available from any activity.
https://developer.android.com/training/implementing-navigation/nav-drawer.html
Add a navigation drawer to the action bar, making the buttons from the dashboard available from any activity.
https://developer.android.com/training/implementing-navigation/nav-drawer.html
Milestone Bhttps://code.briarproject.org/briar/briar/-/issues/592Scrub addresses before logging them2018-06-12T11:32:20ZakwizgranScrub addresses before logging themMAC, IP and onion addresses should be scrubbed before logging to ensure we don't leave any sensitive information in plaintext on the device or send it in crash reports or feedback.
We need to keep enough information for the addresses ...MAC, IP and onion addresses should be scrubbed before logging to ensure we don't leave any sensitive information in plaintext on the device or send it in crash reports or feedback.
We need to keep enough information for the addresses to be useful for debugging, without harming user privacy. Perhaps something like the following:
* MAC addresses (including Bluetooth): keep the first and last octets, replace the rest with XX
* Link-local and site-local IPv4 addresses: keep the full address
* Other IPv4 addresses: keep the first and last octets, replace the rest with XX
* IPv6 addresses: not intentionally used by Briar, replace the whole thing with XX
* Onion addresses: keep the first three characters, replace the rest with XXMilestone CTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/573Setup Onion Service for Crash Reports and Feedback2018-06-12T11:32:21ZTorsten GroteSetup Onion Service for Crash Reports and FeedbackLooks like the onion service we had running is down now:
```
08-02 20:04:51.596 W/DevReporterImpl: Could not connect to developers
Host unreachable
at ne...Looks like the onion service we had running is down now:
```
08-02 20:04:51.596 W/DevReporterImpl: Could not connect to developers
Host unreachable
at net.sourceforge.jsocks.socks.Socks5Message.read(Socks5Message.java:162)
at net.sourceforge.jsocks.socks.Socks5Message.<init>(Socks5Message.java:123)
at net.sourceforge.jsocks.socks.Socks5Message.<init>(Socks5Message.java:108)
at net.sourceforge.jsocks.socks.Socks5Proxy.formMessage(Socks5Proxy.java:253)
at net.sourceforge.jsocks.socks.Proxy.exchange(Proxy.java:458)
at net.sourceforge.jsocks.socks.Proxy.connect(Proxy.java:343)
at net.sourceforge.jsocks.socks.SocksSocket.<init>(SocksSocket.java:109)
at org.briarproject.reporting.DevReporterImpl.connectToDevelopers(DevReporterImpl.java:50)
at org.briarproject.reporting.DevReporterImpl.sendReports(DevReporterImpl.java:84)
at org.briarproject.plugins.tor.TorPlugin$1.run(TorPlugin.java:371)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
```
I know that some of my testers already used the crash reporter. I had to tell them that I am not sure that these reports are already read by someone.Milestone Cakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/516Joining a busy forum overloads the device, which kills the Briar service2018-06-12T11:32:23ZErnir ErlingssonJoining a busy forum overloads the device, which kills the Briar serviceA user joined a forum with ~50 entries, looked at the forum (which was empty at the time) and then put Briar into the background. After a while the notification "49 new forum entries" appeared, but shortly thereafter the screen went dark...A user joined a forum with ~50 entries, looked at the forum (which was empty at the time) and then put Briar into the background. After a while the notification "49 new forum entries" appeared, but shortly thereafter the screen went dark and the device became completely unresponsive for around 10 seconds. After that the user was able to activate the screen again but the Briar notification was gone and seemingly the service had either crashed or was killed by the OS.Milestone Chttps://code.briarproject.org/briar/briar/-/issues/492Remove crash report settings2018-06-12T11:32:24ZakwizgranRemove crash report settingsMost users should never see the crash reporter, so we don't need to allow them to configure it.Most users should never see the crash reporter, so we don't need to allow them to configure it.Milestone CTorsten GroteTorsten Grote