From 0466273e01a1b2b7428e68d650f146cd252a8aba Mon Sep 17 00:00:00 2001 From: Steve Myers Date: Tue, 21 Oct 2014 22:38:46 -0700 Subject: [PATCH 1/3] Added RelayRPC to seed peer --- src/main/java/io/bitsquare/msg/actor/DHTManager.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/io/bitsquare/msg/actor/DHTManager.java b/src/main/java/io/bitsquare/msg/actor/DHTManager.java index 611ff4730e..26337e1139 100644 --- a/src/main/java/io/bitsquare/msg/actor/DHTManager.java +++ b/src/main/java/io/bitsquare/msg/actor/DHTManager.java @@ -54,6 +54,7 @@ public class DHTManager extends AbstractActor { private Peer peer; private PeerDHT peerDHT; private PeerNAT peerNAT; + private RelayRPC relayRPC; public DHTManager() { receive(ReceiveBuilder @@ -65,6 +66,7 @@ public class DHTManager extends AbstractActor { peerDHT = new PeerBuilderDHT(peer).start(); peerNAT = new PeerBuilderNAT(peer).start(); + relayRPC = new RelayRPC(peer, new RconRPC(peer)); sender().tell(new PeerInitialized(peer.peerID(), ip.getPort()), self()); } catch (Throwable t) { @@ -84,6 +86,7 @@ public class DHTManager extends AbstractActor { peerDHT.shutdown(); if (peerNAT != null) peerNAT.natUtils().shutdown(); + super.postStop(); } } From 61508ae5017742da9ffa99ef2f5f09e5e3bd1631 Mon Sep 17 00:00:00 2001 From: Steve Myers Date: Wed, 22 Oct 2014 22:56:44 -0700 Subject: [PATCH 2/3] Removed RelayRPC from DHTManager seed peer --- src/main/java/io/bitsquare/msg/actor/DHTManager.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/main/java/io/bitsquare/msg/actor/DHTManager.java b/src/main/java/io/bitsquare/msg/actor/DHTManager.java index 26337e1139..25e13d90cc 100644 --- a/src/main/java/io/bitsquare/msg/actor/DHTManager.java +++ b/src/main/java/io/bitsquare/msg/actor/DHTManager.java @@ -26,9 +26,6 @@ import net.tomp2p.nat.PeerBuilderNAT; import net.tomp2p.nat.PeerNAT; import net.tomp2p.p2p.Peer; import net.tomp2p.p2p.PeerBuilder; -import net.tomp2p.relay.FutureRelay; -import net.tomp2p.relay.RconRPC; -import net.tomp2p.relay.RelayRPC; import akka.actor.AbstractActor; import akka.actor.Props; @@ -54,7 +51,6 @@ public class DHTManager extends AbstractActor { private Peer peer; private PeerDHT peerDHT; private PeerNAT peerNAT; - private RelayRPC relayRPC; public DHTManager() { receive(ReceiveBuilder @@ -66,7 +62,6 @@ public class DHTManager extends AbstractActor { peerDHT = new PeerBuilderDHT(peer).start(); peerNAT = new PeerBuilderNAT(peer).start(); - relayRPC = new RelayRPC(peer, new RconRPC(peer)); sender().tell(new PeerInitialized(peer.peerID(), ip.getPort()), self()); } catch (Throwable t) { From a35eb7cb6ebc9eba4ea1b24e7e04ecf8f75a059d Mon Sep 17 00:00:00 2001 From: Steve Myers Date: Wed, 22 Oct 2014 23:24:44 -0700 Subject: [PATCH 3/3] Added command line option to set listening interface for DHTManager seed peer --- src/main/java/io/bitsquare/BitSquare.java | 7 ++++++- src/main/java/io/bitsquare/msg/DHTSeedService.java | 2 +- src/main/java/io/bitsquare/msg/actor/DHTManager.java | 8 +++++++- .../io/bitsquare/msg/actor/command/InitializePeer.java | 10 +++++++++- .../io/bitsquare/util/BitsquareArgumentParser.java | 3 +++ 5 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/main/java/io/bitsquare/BitSquare.java b/src/main/java/io/bitsquare/BitSquare.java index 6dd920c83f..5d0ae75bc5 100644 --- a/src/main/java/io/bitsquare/BitSquare.java +++ b/src/main/java/io/bitsquare/BitSquare.java @@ -45,6 +45,7 @@ public class BitSquare { private static String appName = "Bitsquare"; private static int clientPort; + private static String interfaceHint; public static String getAppName() { return appName; @@ -70,6 +71,10 @@ public class BitSquare { appName = appName + "-" + namespace.getString(BitsquareArgumentParser.NAME_FLAG); } + if (namespace.getString(BitsquareArgumentParser.INFHINT_FLAG) != null) { + interfaceHint = namespace.getString(BitsquareArgumentParser.INFHINT_FLAG); + } + if (namespace.getBoolean(BitsquareArgumentParser.SEED_FLAG) == true) { Integer port = BitsquareArgumentParser.PORT_DEFAULT; if (namespace.getString(BitsquareArgumentParser.PORT_FLAG) != null) { @@ -80,7 +85,7 @@ public class BitSquare { ActorRef seedNode = actorSystem.actorOf(DHTManager.getProps(), DHTManager.SEED_NAME); Inbox inbox = Inbox.create(actorSystem); - inbox.send(seedNode, new InitializePeer(Number160.createHash("localhost"), port, null)); + inbox.send(seedNode, new InitializePeer(Number160.createHash("localhost"), port, interfaceHint, null)); Thread seedNodeThread = new Thread(() -> { Boolean quit = false; diff --git a/src/main/java/io/bitsquare/msg/DHTSeedService.java b/src/main/java/io/bitsquare/msg/DHTSeedService.java index f13b223756..829815c83b 100644 --- a/src/main/java/io/bitsquare/msg/DHTSeedService.java +++ b/src/main/java/io/bitsquare/msg/DHTSeedService.java @@ -42,6 +42,6 @@ public class DHTSeedService extends ActorService { public void initializePeer(String id, Integer port) { // TODO hard coded seed peer config for now, should read from config properties file - send(new InitializePeer(Number160.createHash(id), port, null)); + send(new InitializePeer(Number160.createHash(id), port, null, null)); } } diff --git a/src/main/java/io/bitsquare/msg/actor/DHTManager.java b/src/main/java/io/bitsquare/msg/actor/DHTManager.java index 25e13d90cc..b894155767 100644 --- a/src/main/java/io/bitsquare/msg/actor/DHTManager.java +++ b/src/main/java/io/bitsquare/msg/actor/DHTManager.java @@ -20,6 +20,7 @@ package io.bitsquare.msg.actor; import io.bitsquare.msg.actor.command.InitializePeer; import io.bitsquare.msg.actor.event.PeerInitialized; +import net.tomp2p.connection.Bindings; import net.tomp2p.dht.PeerBuilderDHT; import net.tomp2p.dht.PeerDHT; import net.tomp2p.nat.PeerBuilderNAT; @@ -48,6 +49,7 @@ public class DHTManager extends AbstractActor { return Props.create(DHTManager.class); } + private Bindings bindings; private Peer peer; private PeerDHT peerDHT; private PeerNAT peerNAT; @@ -58,7 +60,11 @@ public class DHTManager extends AbstractActor { log.debug("Received message: {}", ip); try { - peer = new PeerBuilder(ip.getPeerId()).ports(ip.getPort()).start(); + bindings = new Bindings(); + if (ip.getInterfaceHint() != null) { + bindings.addInterface(ip.getInterfaceHint()); + } + peer = new PeerBuilder(ip.getPeerId()).ports(ip.getPort()).bindings(bindings).start(); peerDHT = new PeerBuilderDHT(peer).start(); peerNAT = new PeerBuilderNAT(peer).start(); diff --git a/src/main/java/io/bitsquare/msg/actor/command/InitializePeer.java b/src/main/java/io/bitsquare/msg/actor/command/InitializePeer.java index 473e18f9b0..38f70ac393 100644 --- a/src/main/java/io/bitsquare/msg/actor/command/InitializePeer.java +++ b/src/main/java/io/bitsquare/msg/actor/command/InitializePeer.java @@ -30,11 +30,15 @@ public class InitializePeer { private final Number160 peerId; private final Integer port; + private final String interfaceHint; + private final Collection bootstrapPeers; - public InitializePeer(Number160 peerId, Integer port, Collection bootstrapPeers) { + public InitializePeer(Number160 peerId, Integer port, String interfaceHint, + Collection bootstrapPeers) { this.peerId = peerId; this.port = port; + this.interfaceHint = interfaceHint; this.bootstrapPeers = bootstrapPeers; } @@ -46,6 +50,10 @@ public class InitializePeer { return port; } + public String getInterfaceHint() { + return interfaceHint; + } + public Collection getBootstrapPeers() { return bootstrapPeers; } diff --git a/src/main/java/io/bitsquare/util/BitsquareArgumentParser.java b/src/main/java/io/bitsquare/util/BitsquareArgumentParser.java index 593e581fdb..890c53a7d3 100644 --- a/src/main/java/io/bitsquare/util/BitsquareArgumentParser.java +++ b/src/main/java/io/bitsquare/util/BitsquareArgumentParser.java @@ -28,6 +28,7 @@ public class BitsquareArgumentParser { public static String SEED_FLAG = "seed"; public static String PORT_FLAG = "port"; public static Integer PORT_DEFAULT = 5000; + public static String INFHINT_FLAG = "interface"; public static String NAME_FLAG = "name"; private final ArgumentParser parser; @@ -42,6 +43,8 @@ public class BitsquareArgumentParser { parser.addArgument("-p", "--"+PORT_FLAG) .setDefault(PORT_DEFAULT) .help("IP port to listen on."); + parser.addArgument("-i", "--"+INFHINT_FLAG) + .help("interface to listen on."); parser.addArgument("-n", "--"+NAME_FLAG) .help("Append name to application name."); }