Skip to content

abhiranjankumar00/functorrent

 
 

Repository files navigation

A bittorrent client.

Join the chat at https://gitter.im/vu3rdd/functorrent

Build Status

Building

Functorrent can be build with Cabal sandbox or Nix.

Cabal sandbox

Sandboxes give you per project independent containers, just like Python's virtualenv.

$ git clone https://github.com/vu3rdd/functorrent && cd functorrent
$ cabal sandbox init
$ cabal update
$ cabal install --only-dependencies --enable-tests
$ cabal build # binaries in ./dist/built/functorrent/*

Building with Nix

``$ nix-shell``` at the root of the source code repo should drop you into a shell which has all the package dependencies installed.

$ nix-shell --pure
[...]
[nix-shell] $ cabal configure && cabal build

Goals

Current Status

  • can decode torrent files (bencoding)
  • talk to the tracker and get the peer list
  • the `main' program takes a torrent file (in the local file system) as input and prints the {ip,port} for each peer, after talking to the tracker.
  • can handshake with the peer.
  • peer wire protocol (in progress)

TODO

  • Test suite.
  • Peer protocol (in progress).
  • Get the file download working in the simplest possible way.
  • Concurrency (threads per peer)
  • other advanced features of Bit Torrent (like DHT).

About

A bit torrent client

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Haskell 97.3%
  • Nix 2.7%