mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-18 21:59:54 +01:00
MVP for bridge support
This commit is contained in:
@@ -6,13 +6,31 @@ import java.util.Set;
|
|||||||
|
|
||||||
class TorNetworkMetadata {
|
class TorNetworkMetadata {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Countries where Tor is blocked, i.e. vanilla Tor connection won't work.
|
||||||
|
*/
|
||||||
|
private static final String[] BLOCKED = { "CN", "IR", "EG", "SY", "VE" };
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Countries where vanilla bridge connection are likely to work.
|
||||||
|
* Should be a subset of {@link #BLOCKED}.
|
||||||
|
*/
|
||||||
|
private static final String[] BRIDGES = { "SY", "VE" };
|
||||||
|
|
||||||
// See https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
|
// See https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
|
||||||
// and https://trac.torproject.org/projects/tor/wiki/doc/OONI/censorshipwiki
|
// and https://trac.torproject.org/projects/tor/wiki/doc/OONI/censorshipwiki
|
||||||
// TODO: get a more complete list
|
// TODO: get a more complete list
|
||||||
private static final Set<String> BLOCKED_IN_COUNTRIES =
|
private static final Set<String> BLOCKED_IN_COUNTRIES =
|
||||||
new HashSet<>(Arrays.asList("CN", "IR", "SY", "ZZ"));
|
new HashSet<>(Arrays.asList(BLOCKED));
|
||||||
|
private static final Set<String> BRIDGES_WORK_IN_COUNTRIES =
|
||||||
|
new HashSet<>(Arrays.asList(BRIDGES));
|
||||||
|
|
||||||
static boolean isTorProbablyBlocked(String countryCode) {
|
static boolean isTorProbablyBlocked(String countryCode) {
|
||||||
return BLOCKED_IN_COUNTRIES.contains(countryCode);
|
return BLOCKED_IN_COUNTRIES.contains(countryCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static boolean doBridgesWork(String countryCode) {
|
||||||
|
return BRIDGES_WORK_IN_COUNTRIES.contains(countryCode);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,6 +91,7 @@ import static org.briarproject.bramble.api.plugin.TorConstants.PREF_TOR_NETWORK_
|
|||||||
import static org.briarproject.bramble.api.plugin.TorConstants.PREF_TOR_NETWORK_WIFI;
|
import static org.briarproject.bramble.api.plugin.TorConstants.PREF_TOR_NETWORK_WIFI;
|
||||||
import static org.briarproject.bramble.api.plugin.TorConstants.PREF_TOR_PORT;
|
import static org.briarproject.bramble.api.plugin.TorConstants.PREF_TOR_PORT;
|
||||||
import static org.briarproject.bramble.api.plugin.TorConstants.PROP_ONION;
|
import static org.briarproject.bramble.api.plugin.TorConstants.PROP_ONION;
|
||||||
|
import static org.briarproject.bramble.plugin.tor.TorNetworkMetadata.doBridgesWork;
|
||||||
import static org.briarproject.bramble.util.LogUtils.logException;
|
import static org.briarproject.bramble.util.LogUtils.logException;
|
||||||
import static org.briarproject.bramble.util.PrivacyUtils.scrubOnion;
|
import static org.briarproject.bramble.util.PrivacyUtils.scrubOnion;
|
||||||
|
|
||||||
@@ -678,8 +679,14 @@ class TorPlugin implements DuplexPlugin, EventHandler, EventListener {
|
|||||||
LOG.info("Disabling network, device is offline");
|
LOG.info("Disabling network, device is offline");
|
||||||
enableNetwork(false);
|
enableNetwork(false);
|
||||||
} else if (blocked) {
|
} else if (blocked) {
|
||||||
LOG.info("Disabling network, country is blocked");
|
if (doBridgesWork(country)) {
|
||||||
enableNetwork(false);
|
LOG.info("Enabling network, using bridges");
|
||||||
|
controlConnection.setConf("UseBridges", "1");
|
||||||
|
enableNetwork(true);
|
||||||
|
} else {
|
||||||
|
LOG.info("Disabling network, country is blocked");
|
||||||
|
enableNetwork(false);
|
||||||
|
}
|
||||||
} else if (network == PREF_TOR_NETWORK_NEVER
|
} else if (network == PREF_TOR_NETWORK_NEVER
|
||||||
|| (network == PREF_TOR_NETWORK_WIFI && !wifi)) {
|
|| (network == PREF_TOR_NETWORK_WIFI && !wifi)) {
|
||||||
LOG.info("Disabling network due to data setting");
|
LOG.info("Disabling network due to data setting");
|
||||||
|
|||||||
@@ -4,3 +4,8 @@ DisableNetwork 1
|
|||||||
RunAsDaemon 1
|
RunAsDaemon 1
|
||||||
SafeSocks 1
|
SafeSocks 1
|
||||||
SocksPort 59050
|
SocksPort 59050
|
||||||
|
UseBridges 0
|
||||||
|
Bridge 131.252.210.150:8081 0E858AC201BF0F3FA3C462F64844CBFFC7297A42
|
||||||
|
Bridge 128.105.214.161:8081 1E326AAFB3FCB515015250D8FCCC8E37F91A153B
|
||||||
|
Bridge 67.205.189.122:8443 12D64D5D44E20169585E7378580C0D33A872AD98
|
||||||
|
Bridge 45.32.148.146:8443 0CE016FB2462D8BF179AE71F7D702D09DEAC3F1D
|
||||||
|
|||||||
Reference in New Issue
Block a user