https://github.com/cronokirby/haze

A bittorrent client, for learning purposes

https://github.com/cronokirby/haze

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.1%) to scientific vocabulary

Keywords

bittorrent bittorrent-client bittorrent-protocol haskell
Last synced: 5 months ago · JSON representation

Repository

A bittorrent client, for learning purposes

Basic Info
  • Host: GitHub
  • Owner: cronokirby
  • License: mit
  • Language: Haskell
  • Default Branch: master
  • Homepage:
  • Size: 479 KB
Statistics
  • Stars: 110
  • Watchers: 3
  • Forks: 8
  • Open Issues: 1
  • Releases: 0
Topics
bittorrent bittorrent-client bittorrent-protocol haskell
Created over 7 years ago · Last pushed over 6 years ago
Metadata Files
Readme Changelog License

README.md

haze

MIT license

Small bittorrent client, written in Haskell.

The main goal of this project is to provide a clear implementation of the Bittorrent protocol in Haskell. Providing good performance is also something that would be good to achieve, but reaching the completeness of something like libtorrent or transmission is out of the scope of this project.

Examples

Here's a gif of the progress display

Usage

``` Usage: haze TORRENTFILE [-o|--output-dir DIRECTORY] [-l|--log-file LOG_FILE] [-p|--port PORT] [-v|--version] Download the torrent in TORRENTFILE

Available options: TORRENTFILE The torrent file to download -o,--output-dir DIRECTORY The directory to download the torrent to -l,--log-file LOGFILE Logging will happen to this file if set -p,--port PORT The port to listen for incoming connections on -h,--help Show this help text -v,--version Display what version the program is using ```

After launching haze with a torrent, it will show a progress display with ongoing information on the status of the torrent. Once the torrent has finished downloading, haze will continue to seed it until the program is cancelled (using CTRL-C is fine).

By default, haze will output the torrent files to the current directory, although if a torrent has multiple files, it will usually define a relative root, and files will end up there instead. Using a folder for the output is recommended for single file torrents, since many small files are generated while downloading the torrent, before they get glued together to make up the large file. These files might otherwise temporarily clutter up a folder you want to keep clean, so be wary of that.

At the moment, haze only supports downloading a single torrent file at once.

haze can perform logging to a file if specified, otherwise no logging is done. The logging exists mainly for debug purposes, although it might be interesting to look at to gleam some more about how the program works :)

Resources

The main resource I used for learning about the specification is here: https://wiki.theory.org/index.php/BitTorrentSpecification

The above page is enough to understand the spec, but it takes a few reads to grok all the information.

Owner

  • Name: Lúcás Meier
  • Login: cronokirby
  • Kind: user
  • Location: Seattle

"apprentice cryptographer"

GitHub Events

Total
  • Watch event: 2
Last Year
  • Watch event: 2

Committers

Last synced: 10 months ago

All Time
  • Total Commits: 292
  • Total Committers: 2
  • Avg Commits per committer: 146.0
  • Development Distribution Score (DDS): 0.003
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Lúcás Meier c****y@g****m 291
Rickard Andersson g****z@s****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 51
  • Total pull requests: 20
  • Average time to close issues: 5 days
  • Average time to close pull requests: about 14 hours
  • Total issue authors: 3
  • Total pull request authors: 2
  • Average comments per issue: 0.84
  • Average comments per pull request: 0.2
  • Merged pull requests: 18
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • cronokirby (35)
  • talentlessguy (1)
  • GoNZooo (1)
Pull Request Authors
  • cronokirby (15)
  • GoNZooo (1)
Top Labels
Issue Labels
enhancement (24) p2p (13) crucial (11) tracker (8) testing (3) CLI (2) question (1) bug (1) good first issue (1)
Pull Request Labels