/dhtproxy

Accepts BitTorrent tracker requests over HTTP and converts them to DHT lookups.

Primary LanguageGoApache License 2.0Apache-2.0

dhtproxy Build Status Coverage Status Go Report Card

This is a proxy that accepts BitTorrent tracker announce requests over HTTP and converts them to mainline DHT lookups. This allows clients which are unable to use DHT to bootstrap some peers in a trackerless swarm, after which it can hopefully use PeX to find more.

Usage

  • Install Go and set up your $GOPATH.
  • go get github.com/die-net/dhtproxy
  • $GOPATH/bin/dhtproxy -listen=:6969
  • In your BitTorrent client, add a tracker of http://127.0.0.1:6969/announce for any torrents that you'd like to use dhtproxy.

Limitations

  • Is read-only from the DHT. It doesn't record "announce" information from its clients and share it with either the DHT or other clients of the dhtproxy. If too much of a swarm is behind dhtproxy, the nodes won't be able to find each other.
  • All DHT nodes are returned as having an incomplete copy of the torrent data, thus clients will show all DHT nodes as "peers" instead of "seeds". This is cosmetic-only; clients will still be able to use seeds normally when they connect to them.
  • Only supports the "compact" tracker protocol, and returns an error if a client tries to use the non-compact protocol. The non-compact protocol returns the peer_id for each peer, which is not available from the DHT.
  • Uses nictuku's DHT implementation whose API isn't well suited to this task. Consequently, dhtproxy may have trouble picking up new additions to the DHT for a particular infohash, and ends up using more memory than would be ideal. A temporary workaround is to restart dhtproxy occasionally.