astro / prittorrent2

Next-gen Bitlove.org backend

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Bitlovemaker Prittorrent Bithorse Btpublish Bitcovery "CDN-grade BitTorrent"

Synopsis

A .torrent publishing pipeline: hasher + seeder

Use-cases

Parentheses denote optional features.

Bitlove.org backend

  • Hasher driven by loop talking to PostgreSQL
  • HTTP client: writes to disk cache, moves once info_hash is known
  • (Hasher: make Webseeding url-list optional)
  • Disk cache, Web-seeded
    • Main knob: disk space to keep free
  • Seeders
    • (Slaves?)

BitTorrent publishing pipeline

  • Metadata in a DB:
    • Hashed torrents by this instance/cached
    • (Stats)
  • Webseed Hasher:
    • HTTP API for publishing, serving .torrent files
    • Feed hashed data into disk cache
    • (HTTP client: SOCKS5 support)
    • (File-system backed storage?)
  • Tracker
    • Serves local seeders adresses
  • Seeder
    • Disk cache
    • (Foreign trackers? mix into local tracker data?)

Content Distribution Network

  • Seeder/HTTP server:

    • Streaming downloads
    • RFC 6249: Metalink/HTTP: Mirrors and Hashes
    • Slave redirector
    • (Bandwidth limits)
    • (Fair queueing)
    • Built-in tracker
    • E-tag = InfoHash?
    • (HTTPS support)
    • (Public Dashboard for a complete Bitlove replacement)
  • (Slave support:)

    • C/S connection
    • Shared password
    • Slave serves files of any servers
      • BitTorrent: By id (ask all masters)
      • HTTP: By path (conflict avoidance by grouping torrents into sets? servers publish sets to slaves?)
      • Emit statistics
    • Master reuses trusted slaves' addresses to:
      • Redirect HTTP for load-balancing
        • (by load & GeoIP distance)
        • Include in tracker responses
    • Controlled shutdown: deregister synchronously from master, wait for HTTP downloads to finish

About

Next-gen Bitlove.org backend


Languages

Language:JavaScript 100.0%