Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Julian Dehm
briar
Commits
ad6016d4
Unverified
Commit
ad6016d4
authored
Nov 23, 2016
by
akwizgran
Browse files
Updated java.library.path.
parent
f6d23b4d
Changes
1000
Hide whitespace changes
Inline
Side-by-side
Too many changes to show.
To preserve performance only
1000 of 1000+
files are displayed.
Plain diff
Email patch
.gitignore
View file @
ad6016d4
...
...
@@ -21,3 +21,5 @@ local.properties
.gradle
build/
*.iml
.gitignore
src/test/
bramble-android/build.gradle
0 → 100644
View file @
ad6016d4
import
de.undercouch.gradle.tasks.download.Download
import
de.undercouch.gradle.tasks.download.Verify
apply
plugin:
'com.android.library'
apply
plugin:
'witness'
apply
plugin:
'de.undercouch.download'
android
{
compileSdkVersion
23
buildToolsVersion
"23.0.3"
defaultConfig
{
minSdkVersion
14
targetSdkVersion
22
versionCode
1
versionName
"1.0"
consumerProguardFiles
'proguard-rules.txt'
}
compileOptions
{
sourceCompatibility
JavaVersion
.
VERSION_1_7
targetCompatibility
JavaVersion
.
VERSION_1_7
}
}
dependencies
{
compile
project
(
':bramble-core'
)
compile
fileTree
(
dir:
'libs'
,
include:
[
'*.jar'
])
provided
'javax.annotation:jsr250-api:1.0'
}
def
torBinaryDir
=
'src/main/res/raw'
task
downloadTorGeoIp
(
type:
Download
)
{
src
'https://briarproject.org/build/geoip-2015-12-01.zip'
dest
"$torBinaryDir/geoip.zip"
onlyIfNewer
true
}
task
downloadTorBinaryArm
(
type:
Download
)
{
src
'https://briarproject.org/build/tor-0.2.7.6-arm.zip'
dest
"$torBinaryDir/tor_arm.zip"
onlyIfNewer
true
}
task
downloadTorBinaryArmPie
(
type:
Download
)
{
src
'https://briarproject.org/build/tor-0.2.7.6-arm-pie.zip'
dest
"$torBinaryDir/tor_arm_pie.zip"
onlyIfNewer
true
}
task
downloadTorBinaryX86
(
type:
Download
)
{
src
'https://briarproject.org/build/tor-0.2.7.6-x86.zip'
dest
"$torBinaryDir/tor_x86.zip"
onlyIfNewer
true
}
task
downloadTorBinaryX86Pie
(
type:
Download
)
{
src
'https://briarproject.org/build/tor-0.2.7.6-x86-pie.zip'
dest
"$torBinaryDir/tor_x86_pie.zip"
onlyIfNewer
true
}
task
verifyTorGeoIp
(
type:
Verify
,
dependsOn:
'downloadTorGeoIp'
)
{
src
"$torBinaryDir/geoip.zip"
algorithm
'SHA-256'
checksum
'9bcdaf0a7ba0933735328d8ec466c25c25dbb459efc2bce9e55c774eabea5162'
}
task
verifyTorBinaryArm
(
type:
Verify
,
dependsOn:
'downloadTorBinaryArm'
)
{
src
"$torBinaryDir/tor_arm.zip"
algorithm
'SHA-256'
checksum
'83272962eda701cd5d74d2418651c4ff0f0b1dff51f558a292d1a1c42bf12146'
}
task
verifyTorBinaryArmPie
(
type:
Verify
,
dependsOn:
'downloadTorBinaryArmPie'
)
{
src
"$torBinaryDir/tor_arm_pie.zip"
algorithm
'SHA-256'
checksum
'd0300d1e45de11ebb24ed62b9c492be9c2e88590b7822195ab38c7a76ffcf646'
}
task
verifyTorBinaryX86
(
type:
Verify
,
dependsOn:
'downloadTorBinaryX86'
)
{
src
"$torBinaryDir/tor_x86.zip"
algorithm
'SHA-256'
checksum
'b8813d97b01ee1b9c9a4233c1b9bbe9f9f6b494ae6f9cbd84de8a3911911615e'
}
task
verifyTorBinaryX86Pie
(
type:
Verify
,
dependsOn:
'downloadTorBinaryX86Pie'
)
{
src
"$torBinaryDir/tor_x86_pie.zip"
algorithm
'SHA-256'
checksum
'9c66e765aa196dc089951a1b2140cc8290305c2fcbf365121f99e01a233baf4e'
}
project
.
afterEvaluate
{
preBuild
.
dependsOn
{
[
'verifyTorGeoIp'
,
'verifyTorBinaryArm'
,
'verifyTorBinaryArmPie'
,
'verifyTorBinaryX86'
,
'verifyTorBinaryX86Pie'
]
}
}
br
iar
-android/libs/jtorctl-briar.jar
→
br
amble
-android/libs/jtorctl-briar.jar
View file @
ad6016d4
File moved
bramble-android/proguard-rules.txt
0 → 100644
View file @
ad6016d4
-keep,includedescriptorclasses class org.briarproject.** { *; }
-keep class org.h2.** { *; }
-dontwarn org.h2.**
-dontnote org.h2.**
-keep class dagger.** { *; }
-dontwarn dagger.**
-dontnote dagger.**
-dontwarn sun.misc.Unsafe
-dontnote com.google.common.**
# UPnP library isn't used
-dontwarn org.bitlet.weupnp.**
bramble-android/src/main/AndroidManifest.xml
0 → 100644
View file @
ad6016d4
<manifest
package=
"org.briarproject.bramble"
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<uses-feature
android:name=
"android.hardware.bluetooth"
/>
<uses-permission
android:name=
"android.permission.ACCESS_NETWORK_STATE"
/>
<uses-permission
android:name=
"android.permission.ACCESS_WIFI_STATE"
/>
<uses-permission
android:name=
"android.permission.BLUETOOTH"
/>
<uses-permission
android:name=
"android.permission.BLUETOOTH_ADMIN"
/>
<uses-permission
android:name=
"android.permission.INTERNET"
/>
<uses-permission
android:name=
"android.permission.READ_LOGS"
/>
<uses-permission
android:name=
"android.permission.WAKE_LOCK"
/>
<!-- Since API 23, this is needed to add contacts via Bluetooth -->
<uses-permission
android:name=
"android.permission.ACCESS_COARSE_LOCATION"
/>
<application
android:allowBackup=
"false"
android:label=
"@string/app_name"
android:supportsRtl=
"true"
>
</application>
</manifest>
bramble-android/src/main/java/org/briarproject/bramble/BrambleAndroidModule.java
0 → 100644
View file @
ad6016d4
package
org.briarproject.bramble
;
import
org.briarproject.bramble.plugin.AndroidPluginModule
;
import
org.briarproject.bramble.system.AndroidSystemModule
;
import
dagger.Module
;
@Module
(
includes
=
{
AndroidPluginModule
.
class
,
AndroidSystemModule
.
class
})
public
class
BrambleAndroidModule
{
}
br
iar
-android/src/org/briarproject/
android/api
/AndroidExecutor.java
→
br
amble
-android/src/
main/java/
org/briarproject/
bramble/api/system
/AndroidExecutor.java
View file @
ad6016d4
package
org.briarproject.
android.api
;
package
org.briarproject.
bramble.api.system
;
import
java.util.concurrent.Callable
;
import
java.util.concurrent.Future
;
...
...
br
iar
-android/src/org/briarproject/plugin
s
/AndroidPlugin
s
Module.java
→
br
amble
-android/src/
main/java/
org/briarproject/
bramble/
plugin/AndroidPluginModule.java
View file @
ad6016d4
package
org.briarproject.plugin
s
;
package
org.briarproject.
bramble.
plugin
;
import
android.app.Application
;
import
android.content.Context
;
import
org.briarproject.android.api.AndroidExecutor
;
import
org.briarproject.api.event.EventBus
;
import
org.briarproject.api.lifecycle.IoExecutor
;
import
org.briarproject.api.plugins.BackoffFactory
;
import
org.briarproject.api.plugins.PluginConfig
;
import
org.briarproject.api.plugins.duplex.DuplexPluginFactory
;
import
org.briarproject.api.plugins.simplex.SimplexPluginFactory
;
import
org.briarproject.api.reporting.DevReporter
;
import
org.briarproject.api.system.LocationUtils
;
import
org.briarproject.plugins.droidtooth.DroidtoothPluginFactory
;
import
org.briarproject.plugins.tcp.AndroidLanTcpPluginFactory
;
import
org.briarproject.plugins.tor.TorPluginFactory
;
import
org.briarproject.bramble.api.event.EventBus
;
import
org.briarproject.bramble.api.lifecycle.IoExecutor
;
import
org.briarproject.bramble.api.nullsafety.NotNullByDefault
;
import
org.briarproject.bramble.api.plugin.BackoffFactory
;
import
org.briarproject.bramble.api.plugin.PluginConfig
;
import
org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory
;
import
org.briarproject.bramble.api.plugin.simplex.SimplexPluginFactory
;
import
org.briarproject.bramble.api.reporting.DevReporter
;
import
org.briarproject.bramble.api.system.AndroidExecutor
;
import
org.briarproject.bramble.api.system.LocationUtils
;
import
org.briarproject.bramble.plugin.droidtooth.DroidtoothPluginFactory
;
import
org.briarproject.bramble.plugin.tcp.AndroidLanTcpPluginFactory
;
import
org.briarproject.bramble.plugin.tor.TorPluginFactory
;
import
java.security.SecureRandom
;
import
java.util.Arrays
;
...
...
@@ -28,10 +29,10 @@ import dagger.Module;
import
dagger.Provides
;
@Module
public
class
AndroidPlugin
s
Module
{
public
class
AndroidPluginModule
{
@Provides
public
PluginConfig
providePluginConfig
(
@IoExecutor
Executor
ioExecutor
,
PluginConfig
providePluginConfig
(
@IoExecutor
Executor
ioExecutor
,
AndroidExecutor
androidExecutor
,
SecureRandom
random
,
SocketFactory
torSocketFactory
,
BackoffFactory
backoffFactory
,
Application
app
,
LocationUtils
locationUtils
,
DevReporter
reporter
,
...
...
@@ -46,7 +47,8 @@ public class AndroidPluginsModule {
backoffFactory
,
appContext
);
final
Collection
<
DuplexPluginFactory
>
duplex
=
Arrays
.
asList
(
bluetooth
,
tor
,
lan
);
return
new
PluginConfig
()
{
@NotNullByDefault
PluginConfig
pluginConfig
=
new
PluginConfig
()
{
@Override
public
Collection
<
DuplexPluginFactory
>
getDuplexFactories
()
{
...
...
@@ -58,5 +60,6 @@ public class AndroidPluginsModule {
return
Collections
.
emptyList
();
}
};
return
pluginConfig
;
}
}
br
iar
-android/src/org/briarproject/plugin
s
/droidtooth/DroidtoothPlugin.java
→
br
amble
-android/src/
main/java/
org/briarproject/
bramble/
plugin/droidtooth/DroidtoothPlugin.java
View file @
ad6016d4
package
org.briarproject.plugin
s
.droidtooth
;
package
org.briarproject.
bramble.
plugin.droidtooth
;
import
android.bluetooth.BluetoothAdapter
;
import
android.bluetooth.BluetoothDevice
;
...
...
@@ -9,23 +9,23 @@ import android.content.Context;
import
android.content.Intent
;
import
android.content.IntentFilter
;
import
org.briarproject.
android.api.AndroidExecutor
;
import
org.briarproject.
android.util.AndroidUtils
;
import
org.briarproject.
api.FormatException
;
import
org.briarproject.
api.TransportId
;
import
org.briarproject.
api.contact.ContactId
;
import
org.briarproject.
api.crypto.PseudoRandom
;
import
org.briarproject.
api.data.BdfLis
t
;
import
org.briarproject.
api.keyagreement.KeyAgreementConnection
;
import
org.briarproject.
api.keyagreement.KeyAgreementListener
;
import
org.briarproject.
api.nullsafety.MethodsNotNullByDefault
;
import
org.briarproject.
api.nullsafety.ParametersNotNullByDefault
;
import
org.briarproject.api.plugin
s.Backoff
;
import
org.briarproject.api.plugin
s
.duplex.Duplex
Plugi
n
;
import
org.briarproject.
api.plugins.duplex.DuplexPluginCallback
;
import
org.briarproject.
api.plugins.duplex.DuplexTransportConnection
;
import
org.briarproject.
api.properties.TransportProper
ti
e
s
;
import
org.briarproject.util.StringUtils
;
import
org.briarproject.
bramble.api.FormatException
;
import
org.briarproject.
bramble.api.contact.ContactId
;
import
org.briarproject.
bramble.api.crypto.PseudoRandom
;
import
org.briarproject.
bramble.api.data.BdfList
;
import
org.briarproject.
bramble.api.keyagreement.KeyAgreementConnection
;
import
org.briarproject.
bramble.api.keyagreement.KeyAgreementListener
;
import
org.briarproject.
bramble.api.nullsafety.MethodsNotNullByDefaul
t
;
import
org.briarproject.
bramble.api.nullsafety.ParametersNotNullByDefault
;
import
org.briarproject.
bramble.api.plugin.Backoff
;
import
org.briarproject.
bramble.api.plugin.TransportId
;
import
org.briarproject.
bramble.api.plugin.duplex.DuplexPlugin
;
import
org.briarproject.
bramble.
api.plugin
.duplex.DuplexPluginCallback
;
import
org.briarproject.
bramble.
api.plugin.duplex.Duplex
TransportConnectio
n
;
import
org.briarproject.
bramble.api.properties.TransportProperties
;
import
org.briarproject.
bramble.api.system.AndroidExecutor
;
import
org.briarproject.
bramble.util.AndroidU
ti
l
s
;
import
org.briarproject.
bramble.
util.StringUtils
;
import
java.io.Closeable
;
import
java.io.IOException
;
...
...
@@ -64,12 +64,12 @@ import static android.bluetooth.BluetoothDevice.EXTRA_DEVICE;
import
static
java
.
util
.
concurrent
.
TimeUnit
.
MILLISECONDS
;
import
static
java
.
util
.
logging
.
Level
.
INFO
;
import
static
java
.
util
.
logging
.
Level
.
WARNING
;
import
static
org
.
briarproject
.
api
.
keyagreement
.
KeyAgreementConstants
.
TRANSPORT_ID_BLUETOOTH
;
import
static
org
.
briarproject
.
api
.
plugin
s
.
BluetoothConstants
.
ID
;
import
static
org
.
briarproject
.
api
.
plugin
s
.
BluetoothConstants
.
PROP_ADDRESS
;
import
static
org
.
briarproject
.
api
.
plugin
s
.
BluetoothConstants
.
PROP_UUID
;
import
static
org
.
briarproject
.
api
.
plugin
s
.
BluetoothConstants
.
UUID_BYTES
;
import
static
org
.
briarproject
.
util
.
PrivacyUtils
.
scrubMacAddress
;
import
static
org
.
briarproject
.
bramble
.
api
.
keyagreement
.
KeyAgreementConstants
.
TRANSPORT_ID_BLUETOOTH
;
import
static
org
.
briarproject
.
bramble
.
api
.
plugin
.
BluetoothConstants
.
ID
;
import
static
org
.
briarproject
.
bramble
.
api
.
plugin
.
BluetoothConstants
.
PROP_ADDRESS
;
import
static
org
.
briarproject
.
bramble
.
api
.
plugin
.
BluetoothConstants
.
PROP_UUID
;
import
static
org
.
briarproject
.
bramble
.
api
.
plugin
.
BluetoothConstants
.
UUID_BYTES
;
import
static
org
.
briarproject
.
bramble
.
util
.
PrivacyUtils
.
scrubMacAddress
;
@MethodsNotNullByDefault
@ParametersNotNullByDefault
...
...
br
iar
-android/src/org/briarproject/plugin
s
/droidtooth/DroidtoothPluginFactory.java
→
br
amble
-android/src/
main/java/
org/briarproject/
bramble/
plugin/droidtooth/DroidtoothPluginFactory.java
View file @
ad6016d4
package
org.briarproject.plugin
s
.droidtooth
;
package
org.briarproject.
bramble.
plugin.droidtooth
;
import
android.content.Context
;
import
org.briarproject.android.api.AndroidExecutor
;
import
org.briarproject.api.TransportId
;
import
org.briarproject.api.plugins.Backoff
;
import
org.briarproject.api.plugins.BackoffFactory
;
import
org.briarproject.api.plugins.duplex.DuplexPlugin
;
import
org.briarproject.api.plugins.duplex.DuplexPluginCallback
;
import
org.briarproject.api.plugins.duplex.DuplexPluginFactory
;
import
org.briarproject.bramble.api.nullsafety.NotNullByDefault
;
import
org.briarproject.bramble.api.plugin.Backoff
;
import
org.briarproject.bramble.api.plugin.BackoffFactory
;
import
org.briarproject.bramble.api.plugin.TransportId
;
import
org.briarproject.bramble.api.plugin.duplex.DuplexPlugin
;
import
org.briarproject.bramble.api.plugin.duplex.DuplexPluginCallback
;
import
org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory
;
import
org.briarproject.bramble.api.system.AndroidExecutor
;
import
java.security.SecureRandom
;
import
java.util.concurrent.Executor
;
import
static
org
.
briarproject
.
api
.
plugins
.
BluetoothConsta
nt
s
.
I
D
;
import
javax.annotation.concurre
nt.I
mmutable
;
import
static
org
.
briarproject
.
bramble
.
api
.
plugin
.
BluetoothConstants
.
ID
;
@Immutable
@NotNullByDefault
public
class
DroidtoothPluginFactory
implements
DuplexPluginFactory
{
private
static
final
int
MAX_LATENCY
=
30
*
1000
;
// 30 seconds
...
...
br
iar
-android/src/org/briarproject/plugin
s
/droidtooth/DroidtoothTransportConnection.java
→
br
amble
-android/src/
main/java/
org/briarproject/
bramble/
plugin/droidtooth/DroidtoothTransportConnection.java
View file @
ad6016d4
package
org.briarproject.plugin
s
.droidtooth
;
package
org.briarproject.
bramble.
plugin.droidtooth
;
import
android.bluetooth.BluetoothSocket
;
import
org.briarproject.api.plugins.Plugin
;
import
org.briarproject.api.plugins.duplex.AbstractDuplexTransportConnection
;
import
org.briarproject.bramble.api.nullsafety.NotNullByDefault
;
import
org.briarproject.bramble.api.plugin.Plugin
;
import
org.briarproject.bramble.api.plugin.duplex.AbstractDuplexTransportConnection
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.OutputStream
;
@NotNullByDefault
class
DroidtoothTransportConnection
extends
AbstractDuplexTransportConnection
{
private
final
BluetoothSocket
socket
;
...
...
br
iar
-android/src/org/briarproject/plugin
s
/tcp/AndroidLanTcpPlugin.java
→
br
amble
-android/src/
main/java/
org/briarproject/
bramble/
plugin/tcp/AndroidLanTcpPlugin.java
View file @
ad6016d4
package
org.briarproject.plugin
s
.tcp
;
package
org.briarproject.
bramble.
plugin.tcp
;
import
android.content.BroadcastReceiver
;
import
android.content.Context
;
...
...
@@ -7,9 +7,9 @@ import android.content.IntentFilter;
import
android.net.ConnectivityManager
;
import
android.net.NetworkInfo
;
import
org.briarproject.api.nullsafety.NotNullByDefault
;
import
org.briarproject.api.plugin
s
.Backoff
;
import
org.briarproject.api.plugin
s
.duplex.DuplexPluginCallback
;
import
org.briarproject.
bramble.
api.nullsafety.NotNullByDefault
;
import
org.briarproject.
bramble.
api.plugin.Backoff
;
import
org.briarproject.
bramble.
api.plugin.duplex.DuplexPluginCallback
;
import
java.util.concurrent.Executor
;
import
java.util.logging.Logger
;
...
...
br
iar
-android/src/org/briarproject/plugin
s
/tcp/AndroidLanTcpPluginFactory.java
→
br
amble
-android/src/
main/java/
org/briarproject/
bramble/
plugin/tcp/AndroidLanTcpPluginFactory.java
View file @
ad6016d4
package
org.briarproject.plugin
s
.tcp
;
package
org.briarproject.
bramble.
plugin.tcp
;
import
android.content.Context
;
import
org.briarproject.api.TransportId
;
import
org.briarproject.api.plugins.Backoff
;
import
org.briarproject.api.plugins.BackoffFactory
;
import
org.briarproject.api.plugins.duplex.DuplexPlugin
;
import
org.briarproject.api.plugins.duplex.DuplexPluginCallback
;
import
org.briarproject.api.plugins.duplex.DuplexPluginFactory
;
import
org.briarproject.bramble.api.nullsafety.NotNullByDefault
;
import
org.briarproject.bramble.api.plugin.Backoff
;
import
org.briarproject.bramble.api.plugin.BackoffFactory
;
import
org.briarproject.bramble.api.plugin.TransportId
;
import
org.briarproject.bramble.api.plugin.duplex.DuplexPlugin
;
import
org.briarproject.bramble.api.plugin.duplex.DuplexPluginCallback
;
import
org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory
;
import
java.util.concurrent.Executor
;
import
static
org
.
briarproject
.
api
.
plugins
.
LanTcpConsta
nt
s
.
I
D
;
import
javax.annotation.concurre
nt.I
mmutable
;
import
static
org
.
briarproject
.
bramble
.
api
.
plugin
.
LanTcpConstants
.
ID
;
@Immutable
@NotNullByDefault
public
class
AndroidLanTcpPluginFactory
implements
DuplexPluginFactory
{
private
static
final
int
MAX_LATENCY
=
30
*
1000
;
// 30 seconds
...
...
br
iar
-android/src/org/briarproject/plugin
s
/tor/TorNetworkMetadata.java
→
br
amble
-android/src/
main/java/
org/briarproject/
bramble/
plugin/tor/TorNetworkMetadata.java
View file @
ad6016d4
package
org.briarproject.plugin
s
.tor
;
package
org.briarproject.
bramble.
plugin.tor
;
import
java.util.Arrays
;
import
java.util.HashSet
;
import
java.util.Set
;
public
class
TorNetworkMetadata
{
class
TorNetworkMetadata
{
// See https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
// and https://trac.torproject.org/projects/tor/wiki/doc/OONI/censorshipwiki
// TODO: get a more complete list
private
static
final
Set
<
String
>
BLOCKED_IN_COUNTRIES
=
new
HashSet
<
String
>(
Arrays
.
asList
(
"CN"
,
"IR"
,
"SY"
,
"ZZ"
));
new
HashSet
<>(
Arrays
.
asList
(
"CN"
,
"IR"
,
"SY"
,
"ZZ"
));
public
static
boolean
isTorProbablyBlocked
(
String
countryCode
)
{
static
boolean
isTorProbablyBlocked
(
String
countryCode
)
{
return
BLOCKED_IN_COUNTRIES
.
contains
(
countryCode
);
}
}
br
iar
-android/src/org/briarproject/plugin
s
/tor/TorPlugin.java
→
br
amble
-android/src/
main/java/
org/briarproject/
bramble/
plugin/tor/TorPlugin.java
View file @
ad6016d4
package
org.briarproject.plugin
s
.tor
;
package
org.briarproject.
bramble.
plugin.tor
;
import
android.content.BroadcastReceiver
;
import
android.content.Context
;
...
...
@@ -7,6 +7,7 @@ import android.content.IntentFilter;
import
android.content.pm.PackageInfo
;
import
android.content.pm.PackageManager
;
import
android.content.pm.PackageManager.NameNotFoundException
;
import
android.content.res.Resources
;
import
android.net.ConnectivityManager
;
import
android.net.NetworkInfo
;
import
android.os.FileObserver
;
...
...
@@ -15,27 +16,28 @@ import android.os.PowerManager;
import
net.freehaven.tor.control.EventHandler
;
import
net.freehaven.tor.control.TorControlConnection
;
import
org.briarproject.android.util.AndroidUtils
;
import
org.briarproject.api.TransportId
;
import
org.briarproject.api.contact.ContactId
;
import
org.briarproject.api.crypto.PseudoRandom
;
import
org.briarproject.api.data.BdfList
;
import
org.briarproject.api.event.Event
;
import
org.briarproject.api.event.EventListener
;
import
org.briarproject.api.event.SettingsUpdatedEvent
;
import
org.briarproject.api.keyagreement.KeyAgreementListener
;
import
org.briarproject.api.nullsafety.NotNullByDefault
;
import
org.briarproject.api.plugins.Backoff
;
import
org.briarproject.api.plugins.TorConstants
;
import
org.briarproject.api.plugins.duplex.DuplexPlugin
;
import
org.briarproject.api.plugins.duplex.DuplexPluginCallback
;
import
org.briarproject.api.plugins.duplex.DuplexTransportConnection
;
import
org.briarproject.api.properties.TransportProperties
;
import
org.briarproject.api.reporting.DevReporter
;
import
org.briarproject.api.settings.Settings
;
import
org.briarproject.api.system.LocationUtils
;
import
org.briarproject.util.IoUtils
;
import
org.briarproject.util.StringUtils
;
import
org.briarproject.bramble.api.contact.ContactId
;
import
org.briarproject.bramble.api.crypto.PseudoRandom
;
import
org.briarproject.bramble.api.data.BdfList
;
import
org.briarproject.bramble.api.event.Event
;
import
org.briarproject.bramble.api.event.EventListener
;
import
org.briarproject.bramble.api.keyagreement.KeyAgreementListener
;
import
org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault
;
import
org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault
;
import
org.briarproject.bramble.api.plugin.Backoff
;
import
org.briarproject.bramble.api.plugin.TorConstants
;
import
org.briarproject.bramble.api.plugin.TransportId
;
import
org.briarproject.bramble.api.plugin.duplex.DuplexPlugin
;
import
org.briarproject.bramble.api.plugin.duplex.DuplexPluginCallback
;
import
org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection
;
import
org.briarproject.bramble.api.properties.TransportProperties
;
import
org.briarproject.bramble.api.reporting.DevReporter
;
import
org.briarproject.bramble.api.settings.Settings
;
import
org.briarproject.bramble.api.settings.event.SettingsUpdatedEvent
;
import
org.briarproject.bramble.api.system.LocationUtils
;
import
org.briarproject.bramble.util.AndroidUtils
;
import
org.briarproject.bramble.util.IoUtils
;
import
org.briarproject.bramble.util.StringUtils
;
import
java.io.Closeable
;
import
java.io.EOFException
;
...
...
@@ -75,10 +77,11 @@ import static java.util.logging.Level.INFO;
import
static
java
.
util
.
logging
.
Level
.
WARNING
;
import
static
net
.
freehaven
.
tor
.
control
.
TorControlCommands
.
HS_ADDRESS
;
import
static
net
.
freehaven
.
tor
.
control
.
TorControlCommands
.
HS_PRIVKEY
;
import
static
org
.
briarproject
.
api
.
plugin
s
.
TorConstants
.
CONTROL_PORT
;
import
static
org
.
briarproject
.
util
.
PrivacyUtils
.
scrubOnion
;
import
static
org
.
briarproject
.
bramble
.
api
.
plugin
.
TorConstants
.
CONTROL_PORT
;
import
static
org
.
briarproject
.
bramble
.
util
.
PrivacyUtils
.
scrubOnion
;
@NotNullByDefault
@MethodsNotNullByDefault
@ParametersNotNullByDefault
class
TorPlugin
implements
DuplexPlugin
,
EventHandler
,
EventListener
{
private
static
final
String
PROP_ONION
=
"onion"
;
...
...
@@ -107,13 +110,9 @@ class TorPlugin implements DuplexPlugin, EventHandler, EventListener {
private
final
AtomicBoolean
used
=
new
AtomicBoolean
(
false
);
private
volatile
boolean
running
=
false
;
@Nullable
private
volatile
ServerSocket
socket
=
null
;
@Nullable
private
volatile
Socket
controlSocket
=
null
;
@Nullable
private
volatile
TorControlConnection
controlConnection
=
null
;
@Nullable
private
volatile
BroadcastReceiver
networkStateReceiver
=
null
;
TorPlugin
(
Executor
ioExecutor
,
Context
appContext
,
...
...
@@ -277,23 +276,29 @@ class TorPlugin implements DuplexPlugin, EventHandler, EventListener {
private
InputStream
getTorInputStream
()
throws
IOException
{
if
(
LOG
.
isLoggable
(
INFO
))
LOG
.
info
(
"Installing Tor binary for "
+
architecture
);
String
filename
=
"tor
-
"
+
architecture
+
".zip"
;
InputStream
in
=
appContext
.
getResources
().
getAssets
().
open
(
filename
);
int
resId
=
getResourceId
(
"tor
_
"
+
architecture
)
;
InputStream
in
=
appContext
.
getResources
().
openRawResource
(
resId
);
ZipInputStream
zin
=
new
ZipInputStream
(
in
);
if
(
zin
.
getNextEntry
()
==
null
)
throw
new
IOException
();
return
zin
;
}
private
InputStream
getGeoIpInputStream
()
throws
IOException
{
String
filename
=
"geoip
.zip
"
;
InputStream
in
=
appContext
.
getResources
().
getAssets
().
open
(
filename
);
int
resId
=
getResourceId
(
"geoip"
)
;
InputStream
in
=
appContext
.
getResources
().
openRawResource
(
resId
);
ZipInputStream
zin
=
new
ZipInputStream
(
in
);
if
(
zin
.
getNextEntry
()
==
null
)
throw
new
IOException
();
return
zin
;
}
private
InputStream
getConfigInputStream
()
throws
IOException
{
return
appContext
.
getResources
().
getAssets
().
open
(
"torrc"
);
int
resId
=
getResourceId
(
"torrc"
);
return
appContext
.
getResources
().
openRawResource
(
resId
);
}
private
int
getResourceId
(
String
filename
)
{
Resources
res
=
appContext
.
getResources
();
return
res
.
getIdentifier
(
filename
,
"raw"
,
appContext
.
getPackageName
());
}
private
void
tryToClose
(
@Nullable
Closeable
c
)
{
...
...
br
iar
-android/src/org/briarproject/plugin
s
/tor/TorPluginFactory.java
→
br
amble
-android/src/
main/java/
org/briarproject/
bramble/
plugin/tor/TorPluginFactory.java
View file @
ad6016d4
package
org.briarproject.plugin
s
.tor
;
package
org.briarproject.
bramble.
plugin.tor
;
import
android.content.Context
;
import
android.os.Build
;
import
org.briarproject.android.util.AndroidUtils
;
import
org.briarproject.api.TransportId
;
import
org.briarproject.api.event.EventBus
;
import
org.briarproject.api.plugins.Backoff
;
import
org.briarproject.api.plugins.BackoffFactory
;
import
org.briarproject.api.plugins.TorConstants
;
import
org.briarproject.api.plugins.duplex.DuplexPlugin
;
import
org.briarproject.api.plugins.duplex.DuplexPluginCallback
;
import
org.briarproject.api.plugins.duplex.DuplexPluginFactory
;
import
org.briarproject.api.reporting.DevReporter
;