mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-13 11:19:04 +01:00
Empty transport configs/properties should be treated the same as nulls.
This commit is contained in:
@@ -178,18 +178,18 @@ class BluetoothPlugin implements DuplexPlugin {
|
||||
final ContactId c = e.getKey();
|
||||
if(connected.contains(c)) continue;
|
||||
final String address = e.getValue().get("address");
|
||||
if(StringUtils.isNullOrEmpty(address)) continue;
|
||||
final String uuid = e.getValue().get("uuid");
|
||||
if(address != null && uuid != null) {
|
||||
pluginExecutor.execute(new Runnable() {
|
||||
public void run() {
|
||||
if(!running) return;
|
||||
String url = makeUrl(address, uuid);
|
||||
DuplexTransportConnection conn = connect(url);
|
||||
if(conn != null)
|
||||
callback.outgoingConnectionCreated(c, conn);
|
||||
}
|
||||
});
|
||||
}
|
||||
if(StringUtils.isNullOrEmpty(uuid)) continue;
|
||||
pluginExecutor.execute(new Runnable() {
|
||||
public void run() {
|
||||
if(!running) return;
|
||||
String url = makeUrl(address, uuid);
|
||||
DuplexTransportConnection conn = connect(url);
|
||||
if(conn != null)
|
||||
callback.outgoingConnectionCreated(c, conn);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -208,8 +208,9 @@ class BluetoothPlugin implements DuplexPlugin {
|
||||
TransportProperties p = callback.getRemoteProperties().get(c);
|
||||
if(p == null) return null;
|
||||
String address = p.get("address");
|
||||
if(StringUtils.isNullOrEmpty(address)) return null;
|
||||
String uuid = p.get("uuid");
|
||||
if(address == null || uuid == null) return null;
|
||||
if(StringUtils.isNullOrEmpty(uuid)) return null;
|
||||
String url = makeUrl(address, uuid);
|
||||
return connect(url);
|
||||
}
|
||||
|
||||
@@ -210,17 +210,17 @@ class DroidtoothPlugin implements DuplexPlugin {
|
||||
final ContactId c = e.getKey();
|
||||
if(connected.contains(c)) continue;
|
||||
final String address = e.getValue().get("address");
|
||||
if(StringUtils.isNullOrEmpty(address)) continue;
|
||||
final String uuid = e.getValue().get("uuid");
|
||||
if(address != null && uuid != null) {
|
||||
pluginExecutor.execute(new Runnable() {
|
||||
public void run() {
|
||||
if(!running) return;
|
||||
DuplexTransportConnection conn = connect(address, uuid);
|
||||
if(conn != null)
|
||||
callback.outgoingConnectionCreated(c, conn);
|
||||
}
|
||||
});
|
||||
}
|
||||
if(StringUtils.isNullOrEmpty(uuid)) continue;
|
||||
pluginExecutor.execute(new Runnable() {
|
||||
public void run() {
|
||||
if(!running) return;
|
||||
DuplexTransportConnection conn = connect(address, uuid);
|
||||
if(conn != null)
|
||||
callback.outgoingConnectionCreated(c, conn);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -256,8 +256,9 @@ class DroidtoothPlugin implements DuplexPlugin {
|
||||
TransportProperties p = callback.getRemoteProperties().get(c);
|
||||
if(p == null) return null;
|
||||
String address = p.get("address");
|
||||
if(StringUtils.isNullOrEmpty(address)) return null;
|
||||
String uuid = p.get("uuid");
|
||||
if(address == null || uuid == null) return null;
|
||||
if(StringUtils.isNullOrEmpty(uuid)) return null;
|
||||
return connect(address, uuid);
|
||||
}
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@ import java.util.logging.Logger;
|
||||
|
||||
import jssc.SerialPortList;
|
||||
import net.sf.briar.api.ContactId;
|
||||
import net.sf.briar.api.TransportConfig;
|
||||
import net.sf.briar.api.TransportProperties;
|
||||
import net.sf.briar.api.crypto.PseudoRandom;
|
||||
import net.sf.briar.api.plugins.PluginExecutor;
|
||||
@@ -145,7 +146,7 @@ class ModemPlugin implements DuplexPlugin, Modem.Callback {
|
||||
while(it.hasNext() && running) {
|
||||
ContactId c = it.next();
|
||||
String number = remote.get(c).get("number");
|
||||
if(number == null) continue;
|
||||
if(StringUtils.isNullOrEmpty(number)) continue;
|
||||
try {
|
||||
if(!modem.dial(number)) continue;
|
||||
} catch(IOException e) {
|
||||
@@ -170,10 +171,13 @@ class ModemPlugin implements DuplexPlugin, Modem.Callback {
|
||||
|
||||
public DuplexTransportConnection createConnection(ContactId c) {
|
||||
if(!running) return null;
|
||||
final Map<ContactId, TransportProperties> remote =
|
||||
TransportConfig config = callback.getConfig();
|
||||
String fromIso = config.get("iso3166");
|
||||
if(StringUtils.isNullOrEmpty(fromIso)) return null;
|
||||
Map<ContactId, TransportProperties> remote =
|
||||
callback.getRemoteProperties();
|
||||
String number = remote.get(c).get("number");
|
||||
if(number == null) return null;
|
||||
if(StringUtils.isNullOrEmpty(number)) return null;
|
||||
try {
|
||||
if(!modem.dial(number)) return null;
|
||||
} catch(IOException e) {
|
||||
|
||||
@@ -8,8 +8,7 @@ import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
|
||||
import net.sf.briar.api.plugins.duplex.DuplexPluginFactory;
|
||||
import net.sf.briar.api.protocol.TransportId;
|
||||
import net.sf.briar.api.reliability.ReliabilityLayerFactory;
|
||||
|
||||
import org.h2.util.StringUtils;
|
||||
import net.sf.briar.util.StringUtils;
|
||||
|
||||
public class ModemPluginFactory implements DuplexPluginFactory {
|
||||
|
||||
|
||||
@@ -67,7 +67,8 @@ class LanTcpPlugin extends TcpPlugin {
|
||||
String addrString = p.get("address");
|
||||
String portString = p.get("port");
|
||||
InetAddress addr = null;
|
||||
if(addrString != null && portString != null) {
|
||||
if(!StringUtils.isNullOrEmpty(addrString) &&
|
||||
!StringUtils.isNullOrEmpty(portString)) {
|
||||
try {
|
||||
addr = InetAddress.getByName(addrString);
|
||||
int port = Integer.valueOf(portString);
|
||||
|
||||
@@ -22,6 +22,7 @@ import net.sf.briar.api.plugins.PluginExecutor;
|
||||
import net.sf.briar.api.plugins.duplex.DuplexPlugin;
|
||||
import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
|
||||
import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
|
||||
import net.sf.briar.util.StringUtils;
|
||||
|
||||
abstract class TcpPlugin implements DuplexPlugin {
|
||||
|
||||
@@ -165,8 +166,8 @@ abstract class TcpPlugin implements DuplexPlugin {
|
||||
public DuplexTransportConnection createConnection(ContactId c) {
|
||||
if(!running) return null;
|
||||
SocketAddress addr = getRemoteSocketAddress(c);
|
||||
if(addr == null) return null;
|
||||
Socket s = new Socket();
|
||||
if(addr == null || s == null) return null;
|
||||
try {
|
||||
s.setSoTimeout(0);
|
||||
s.connect(addr);
|
||||
@@ -181,18 +182,19 @@ abstract class TcpPlugin implements DuplexPlugin {
|
||||
TransportProperties p = callback.getRemoteProperties().get(c);
|
||||
if(p == null) return null;
|
||||
String addrString = p.get("address");
|
||||
if(StringUtils.isNullOrEmpty(addrString)) return null;
|
||||
String portString = p.get("port");
|
||||
if(addrString != null && portString != null) {
|
||||
try {
|
||||
InetAddress addr = InetAddress.getByName(addrString);
|
||||
int port = Integer.valueOf(portString);
|
||||
return new InetSocketAddress(addr, port);
|
||||
} catch(NumberFormatException e) {
|
||||
if(LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e);
|
||||
} catch(UnknownHostException e) {
|
||||
if(LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e);
|
||||
}
|
||||
if(StringUtils.isNullOrEmpty(portString)) return null;
|
||||
try {
|
||||
InetAddress addr = InetAddress.getByName(addrString);
|
||||
int port = Integer.valueOf(portString);
|
||||
return new InetSocketAddress(addr, port);
|
||||
} catch(NumberFormatException e) {
|
||||
if(LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e);
|
||||
return null;
|
||||
} catch(UnknownHostException e) {
|
||||
if(LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e);
|
||||
return null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,7 +61,8 @@ class WanTcpPlugin extends TcpPlugin {
|
||||
String portString = p.get("port");
|
||||
InetAddress addr = null;
|
||||
int port = 0;
|
||||
if(addrString != null && portString != null) {
|
||||
if(!StringUtils.isNullOrEmpty(addrString) &&
|
||||
!StringUtils.isNullOrEmpty(portString)) {
|
||||
try {
|
||||
addr = InetAddress.getByName(addrString);
|
||||
port = Integer.valueOf(portString);
|
||||
|
||||
@@ -95,9 +95,10 @@ class TorPlugin implements DuplexPlugin {
|
||||
connected = true;
|
||||
notifyAll();
|
||||
}
|
||||
// If we're configure not to create a hidden service, return
|
||||
// If we're configured not to create a hidden service, return
|
||||
TransportConfig c = callback.getConfig();
|
||||
if(c.containsKey("noHiddenService")) {
|
||||
String noHiddenService = c.get("noHiddenService");
|
||||
if(!StringUtils.isNullOrEmpty(noHiddenService)) {
|
||||
if(LOG.isLoggable(INFO)) LOG.info("Not creating hidden service");
|
||||
TransportProperties p = new TransportProperties();
|
||||
p.put("onion", null);
|
||||
@@ -108,7 +109,7 @@ class TorPlugin implements DuplexPlugin {
|
||||
TorHiddenServicePrivateNetAddress addr;
|
||||
TorNetLayerUtil util = TorNetLayerUtil.getInstance();
|
||||
String privateKey = c.get("privateKey");
|
||||
if(privateKey == null) {
|
||||
if(StringUtils.isNullOrEmpty(privateKey)) {
|
||||
if(LOG.isLoggable(INFO))
|
||||
LOG.info("Creating hidden service address");
|
||||
addr = createHiddenServiceAddress(util);
|
||||
@@ -264,7 +265,7 @@ class TorPlugin implements DuplexPlugin {
|
||||
TransportProperties p = callback.getRemoteProperties().get(c);
|
||||
if(p == null) return null;
|
||||
String onion = p.get("onion");
|
||||
if(onion == null) return null;
|
||||
if(StringUtils.isNullOrEmpty(onion)) return null;
|
||||
NetAddress addr = new TcpipNetAddress(onion, 80);
|
||||
try {
|
||||
if(LOG.isLoggable(INFO)) LOG.info("Connecting to hidden service");
|
||||
|
||||
@@ -7,8 +7,7 @@ import net.sf.briar.api.plugins.duplex.DuplexPlugin;
|
||||
import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
|
||||
import net.sf.briar.api.plugins.duplex.DuplexPluginFactory;
|
||||
import net.sf.briar.api.protocol.TransportId;
|
||||
|
||||
import org.h2.util.StringUtils;
|
||||
import net.sf.briar.util.StringUtils;
|
||||
|
||||
public class TorPluginFactory implements DuplexPluginFactory {
|
||||
|
||||
|
||||
@@ -7,6 +7,10 @@ public class StringUtils {
|
||||
'8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
|
||||
};
|
||||
|
||||
public static boolean isNullOrEmpty(String s) {
|
||||
return s == null || s.isEmpty();
|
||||
}
|
||||
|
||||
/**
|
||||
* Trims the given string to the given length, returning the head and
|
||||
* appending "..." if the string was trimmed.
|
||||
|
||||
@@ -42,7 +42,7 @@ public class TorPluginTest extends BriarTestCase {
|
||||
assertTrue(onion.endsWith(".onion"));
|
||||
// Create another plugin instance for the client
|
||||
Callback clientCallback = new Callback();
|
||||
clientCallback.config.put("noHiddenService", "");
|
||||
clientCallback.config.put("noHiddenService", "true");
|
||||
TransportProperties p = new TransportProperties();
|
||||
p.put("onion", onion);
|
||||
clientCallback.remote.put(contactId, p);
|
||||
|
||||
Reference in New Issue
Block a user