Skip to content

Commit

Permalink
updates to support peergos
Browse files Browse the repository at this point in the history
  • Loading branch information
kevodwyer committed Jul 11, 2023
1 parent e29732f commit 370dcb9
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 13 deletions.
5 changes: 4 additions & 1 deletion src/main/java/org/peergos/HttpProxyService.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,10 @@ public ProxyResponse proxyRequest(Multihash targetNodeId, ProxyRequest request)
Multiaddr[] addrs = peer.getPublicAddresses().stream().map(a -> Multiaddr.fromString(a.toString())).toArray(Multiaddr[]::new);
targetAddressesOpt = Optional.of(addrs[0]);
}
HttpProtocol.HttpController proxier = p2pHttpBinding.dial(node, targetAddressesOpt.get()).getController().join();
Multiaddr finalAddress = targetAddressesOpt.get().toString().contains("/ipfs/") ? targetAddressesOpt.get()
: new Multiaddr(targetAddressesOpt.get() + "/ipfs/" + targetNodeId);

HttpProtocol.HttpController proxier = p2pHttpBinding.dial(node, finalAddress).getController().join();
String urlParams = constructQueryParamString(request.queryParams);
FullHttpRequest httpRequest = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1,
HttpMethod.valueOf(request.method.name()),
Expand Down
22 changes: 12 additions & 10 deletions src/main/java/org/peergos/config/Config.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,16 @@ public class Config {
public final DatastoreSection datastore;
public final IdentitySection identity;

public static final List<MultiAddress> defaultBootstrapNodes = List.of(
"/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN",
"/dnsaddr/bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa",
"/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb",
"/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt",
"/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ", // mars.i.ipfs.io
"/ip4/104.131.131.82/tcp/4001/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ").stream()
.map(MultiAddress::new)
.collect(Collectors.toList());

public Config() {
Config config = defaultConfig(Optional.empty());
this.addresses = config.addresses;
Expand Down Expand Up @@ -68,18 +78,10 @@ public Config defaultConfig(Optional<Supplier<Mount>> dataStoreSupplier) {
List<MultiAddress> swarmAddresses = List.of(new MultiAddress("/ip6/::/tcp/4001"));
MultiAddress apiAddress = new MultiAddress("/ip4/127.0.0.1/tcp/5001");
MultiAddress gatewayAddress = new MultiAddress("/ip4/127.0.0.1/tcp/8080");
Optional<MultiAddress> proxyTargetAddress = Optional.of(new MultiAddress("/ip4/127.0.0.1/tcp/8000"));
Optional<MultiAddress> proxyTargetAddress = Optional.of(new MultiAddress("/ip4/127.0.0.1/tcp/8003"));

Optional<String> allowTarget = Optional.of("http://localhost:8002");
List<MultiAddress> bootstrapNodes = List.of(
"/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN",
"/dnsaddr/bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa",
"/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb",
"/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt",
"/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ", // mars.i.ipfs.io
"/ip4/104.131.131.82/tcp/4001/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ").stream()
.map(MultiAddress::new)
.collect(Collectors.toList());
List<MultiAddress> bootstrapNodes = new ArrayList<>(defaultBootstrapNodes);
Mount blockMount = null;
if (dataStoreSupplier.isPresent()) {
blockMount = dataStoreSupplier.get().get();
Expand Down
14 changes: 12 additions & 2 deletions src/main/java/org/peergos/net/HttpProxyHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,29 @@
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.logging.Logger;
import java.util.stream.Collectors;

public class HttpProxyHandler extends Handler {
private static final Logger LOG = Logging.LOG();
private static final Logger LOG = Logging.LOG();

private static final boolean LOGGING = true;

private final HttpProxyService service;
private final Function<String, Multihash> peerIdToMultiHashConverter;

private static final String HTTP_REQUEST = "/http/";
private static final Function<String, Multihash> defaultPeerIdToMultiHashConverter = (peerIdStr) ->
Multihash.deserialize(PeerId.fromBase58(peerIdStr).getBytes());

public HttpProxyHandler(HttpProxyService service) {
this(service, defaultPeerIdToMultiHashConverter);
}

public HttpProxyHandler(HttpProxyService service, Function<String, Multihash> peerIdToMultiHashConverter) {
this.service = service;
this.peerIdToMultiHashConverter = peerIdToMultiHashConverter;
}


Expand All @@ -41,7 +50,8 @@ public void handleCallToAPI(HttpExchange httpExchange) {
throw new IllegalStateException("Expecting p2p request to include path in url");
}
String peerId = path.substring(0, streamPathIndex);
Multihash targetNodeId = Multihash.deserialize(PeerId.fromBase58(peerId).getBytes());
//Multihash targetNodeId = Multihash.deserialize(PeerId.fromBase58(peerId).getBytes());
Multihash targetNodeId = peerIdToMultiHashConverter.apply(peerId);
String targetPath = path.substring(streamPathIndex);
if (!targetPath.startsWith(HTTP_REQUEST)) {
throw new IllegalStateException("Expecting path to be a http request");
Expand Down

0 comments on commit 370dcb9

Please sign in to comment.