Nefarious Planetary Meddling
    Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    uwtpublic

    uwt npm downloads js-standard-style npm

    µWT (µWebTorrentTracker) is a simple, robust and lightweight WebTorrent tracker server implementation

    travis bitHound Overall Score

    tracker

    Node.js implementation of a BitTorrent tracker for WebTorrent clients.

    A BitTorrent tracker is a web service which responds to requests from BitTorrent clients. The requests include metrics from clients that help the tracker keep overall statistics about the torrent. The response includes a peer list that helps the client participate in the torrent swarm.

    This module is used by βTorrent Tracker, the first community operated WebTorrent tracker.

    Features

    • Fast & lightweight server implementation
    • Supports ipv4 & ipv6
    • Supports tracker "scrape" extension
    • Robust and well-tested
    • Comprehensive test suite (runs entirely offline, so it's reliable)
    • Tracker statistics available via web interface at /stats or JSON data at /stats.json

    Requires NodeJS 6+

    Install

    npm install uwt
    

    Usage

    To start a WebTorrent tracker server to track swarms of peers:

    const Server = require('uwt')
     
    const server = new Server({
      stats: true, // enable web-based statistics? [default=true] 
      filter: function (infoHash, params, cb) {
        // Blacklist/whitelist function for allowing/disallowing torrents. If this option is 
        // omitted, all torrents are allowed. It is possible to interface with a database or 
        // external system before deciding to allow/deny, because this function is async. 
     
        // It is possible to block by peer id (whitelisting torrent clients) or by secret 
        // key (private trackers). Full access to the original HTTP/UDP request parameters 
        // are available in `params`. 
     
        // This example only allows one torrent. 
     
        const allowed = (infoHash === 'aaa67059ed6bd08362da625b3ae77f6f4a075aaa')
        if (allowed) {
          cb(null)
        } else {
          cb(new Error('disallowed torrent'))
        }
     
        // In addition to returning a boolean (`true` for allowed, `false` for disallowed), 
        // you can return an `Error` object to disallow and provide a custom reason. 
      }
    })
     
    // Internal websocket and http servers exposed as public properties. 
    server.ws
    server.http
     
    server.on('error', function (err) {
      // fatal server error! 
      console.log(err.message)
    })
     
    server.on('warning', function (err) {
      // client sent bad data. probably not a problem, just a buggy client. 
      console.log(err.message)
    })
     
    server.on('listening', function () {
      // fired when server is listening 
      console.log('listening on http port:' + server.http.address().port)
    })
     
    // start tracker server listening! Use 0 to listen on a random free port. 
    server.listen(port, onlistening)
     
    // listen for individual tracker messages from peers: 
     
    server.on('start', function (addr) {
      console.log('got start message from ' + addr)
    })
     
    server.on('complete', function (addr) {})
    server.on('update', function (addr) {})
    server.on('stop', function (addr) {})
     
    // get info hashes for all torrents in the tracker server 
    Object.keys(server.torrents)
     
    // get the number of seeders for a particular torrent 
    server.torrents[infoHash].complete
     
    // get the number of leechers for a particular torrent 
    server.torrents[infoHash].incomplete
     
    // get the peers who are in a particular torrent swarm 
    server.torrents[infoHash].peers

    CLI

    Install uwt globally

    $ npm install -g uwt

    Easily start a tracker server:

    $ webtorrent-tracker
    Tracker: ws://localhost:8000
    Tracker stats: http://localhost:8000/stats

    Lots of options:

    $ webtorrent-tracker --help
      webtorrent-tracker - Start a webtorrent tracker server
     
      Usage:
        webtorrent-tracker [OPTIONS]
     
      Options:
        -p, --port [number]  change the port [default: 8000]
            --trust-proxy    trust 'x-forwarded-for' header from reverse proxy
            --interval       client announce interval (ms) [default: 120000]
            --stats                   enable web-based statistics (default: true)
        -q, --quiet          only show error output
        -s, --silent         show no output
        -v, --version        print the current version
     
      Please report bugs!  https://github.com/DiegoRBaquero/uwt/issues

    License

    MIT

    Copyright (c) Diego Rodríguez Baquero (uwt)

    Copyright (c) Feross Aboukhadijeh (bittorrent-tracker)

    install

    npm i uwt

    Downloadslast 7 days

    4

    version

    3.1.1

    license

    MIT

    repository

    github.com

    last publish

    collaborators

    • avatar