diff --git a/p2p/net/swarm/addr/addr.go b/p2p/net/swarm/addr/addr.go index d9ba87216a..ee2063e75d 100644 --- a/p2p/net/swarm/addr/addr.go +++ b/p2p/net/swarm/addr/addr.go @@ -3,6 +3,7 @@ package addrutil import ( "fmt" + onion "github.com/david415/ipfs-onion-transport" logging "github.com/ipfs/go-log" ma "github.com/jbenet/go-multiaddr" manet "github.com/jbenet/go-multiaddr-net" @@ -21,6 +22,7 @@ var SupportedTransportStrings = []string{ "/ip6/udp/utp", // "/ip4/udp/udt", disabled because the lib doesnt work on arm // "/ip6/udp/udt", disabled because the lib doesnt work on arm + "/onion", } // SupportedTransportProtocols is the list of supported transports for the swarm. diff --git a/p2p/net/swarm/swarm.go b/p2p/net/swarm/swarm.go index 15e1ec5e1b..28606d85e5 100644 --- a/p2p/net/swarm/swarm.go +++ b/p2p/net/swarm/swarm.go @@ -10,6 +10,7 @@ import ( "sync" "time" + onion "github.com/david415/ipfs-onion-transport" peer "github.com/ipfs/go-libp2p-peer" pstore "github.com/ipfs/go-libp2p-peerstore" transport "github.com/ipfs/go-libp2p-transport" @@ -30,6 +31,7 @@ import ( yamux "github.com/whyrusleeping/go-smux-yamux" mafilter "github.com/whyrusleeping/multiaddr-filter" context "golang.org/x/net/context" + "golang.org/x/net/proxy" ) var log = logging.Logger("swarm2") @@ -108,6 +110,23 @@ func NewSwarm(ctx context.Context, listenAddrs []ma.Multiaddr, return mconn.WrapConn(bwc, c) } + // POC setup for onion transport + + // The Tor socks user and password can be set to random values + // to tell little-t tor to make a new circuit. + // It's probably OK to leave them blank because when connecting + // to a new onion a new tor circuit will have to be created anyway. + auth := proxy.Auth{ + User: "", + Password: "", + } + + // XXX FIXME: The tor control net and addr should be user specified! + // Note: for sandboxing purposes UNIX domain sockets are preferred instead of TCP. + controlNet := "tcp" + controlAddr := "127.0.0.1:9051" + onionTransport := NewOnionTransport(controlNet, controlAddr, nil, &auth) + s := &Swarm{ swarm: ps.NewSwarm(PSTransport), local: local, @@ -118,6 +137,7 @@ func NewSwarm(ctx context.Context, listenAddrs []ma.Multiaddr, transports: []transport.Transport{ transport.NewTCPTransport(), transport.NewUtpTransport(), + onionTransport, }, bwc: bwc, fdRateLimit: make(chan struct{}, concurrentFdDials),