Torrent client designed for seeding tens of thousands of torrents.

Gamayun

This project is currently a prototype. It is not usable in any shape or form.

One day, this will be an efficient BitTorrent client, handling large amounts of torrents, optimized for long-term seeding.

Owner
Dominik Honnef
Long-time Go user, contributor, and author of many Go related tools, including Staticcheck.
Dominik Honnef
Comments
  • Allow flexible mapping between files in a torrent and files on the file system

    Allow flexible mapping between files in a torrent and files on the file system

    Allow specifying per-file where to download to/seed from. For a single torrent file with the files a/a.ext and a/b.ext, it should be possible to back them with /whatever/cool.ext and /somewhere_else/not_so_cool.ext. This mapping should be changeable at runtime, especially after a torrent has finished downloading and has been moved.

  • Add torrent priorities

    Add torrent priorities

    We have P available peer connections and t active torrents. By default, each torrent will be able to use P/t connections (but may use more if other torrents use fewer.) However, we may want to prioritize some torrents over others. There are two ways to do this, and we probably want both of them:

    1. Give individual torrents a bigger share of connections. Each torrent will have a factor f in [0, ∞] defaulting to 1. The minimum peers per individual torrent will then be f / ∑(all factors) · P. The user could have a set of such factors, like 1, 5, 10, ... and give them names such as "normal", "medium", "high"... Ultimately, the choice of factors determines just how starved a torrent can be in relation to other torrents.
    2. Assign priority groups to torrents, and allocate connections to groups in order of priority, allowing more important groups to use up all connections, leaving none for lower priority groups. Within a group, factors would apply, but only consider torrents within the group.

    The same approaches can be extended to upload/download slots.

  • Provide CLI tool for showing information from torrent file

    Provide CLI tool for showing information from torrent file

    Basically, provide a tool similar to transmission-show, but add support for structured output and accessing all information, including the source tag. This tool will be part of how to use gamayun. For example, to seed torrents from directories based on the tracker, one could do something like gamayun --add foo.torrent --dir /seed/$(gamayun-info --source foo.torrent)

  • Be quicker at unchoking new peers

    Be quicker at unchoking new peers

    We choke/unchoke peers every 10 seconds, based on an choking algorithm. However, I don't think it makes sense to wait 10 seconds to unchoke peers if we still have free slots. We should unchoke them as soon as they express their interest.

  • Load metainfo lazily

    Load metainfo lazily

    In a seed-centric workload with lots of torrents, keeping all metainfo in memory at all times is a waste of memory. The majority of torrents will be idle and not need to know more than their infohash. Even active torrents won't need piece hashes if they're just seeding. We should load metainfo lazily, and only load the subset of metainfo that we need.

Related tags
A C/S Tool to Download Torrent Remotely and Retrieve Files Back Over HTTP at Full Speed without ISP Torrent Limitation.

remote-torrent Download Torrent Remotely and Retrieve Files Over HTTP at Full Speed without ISP Torrent Limitation. This repository is an extension to

Sep 30, 2022
Torrent-metainfo-parser - Generates a .torrent meta info from a file

torrent-metainfo-parser generates a .torrent meta info from a file required argu

Aug 23, 2022
🐈📦 nyaa.si client library for Go. Fetch Anime, Manga, Music and more torrents

?? ?? go-nyaa nyaa.si client library for Go Built on top of: gofeed - search using RSS colly - scrap torrent details page Original idea: ejnshtein/nya

Sep 23, 2022
A totally configurable terminal torrent client.
A totally configurable terminal torrent client.

mtorrent A totally configurable terminal torrent client. Download go get github.com/nektro/mtorrent Releases https://github.com/nektro/mtorrent/relea

Aug 17, 2022
torpar is TUI client for Torrent Paradise .

torpar is TUI client for Torrent Paradise . Torrent Paradise is Decentralized DHT Torrent Search Site

Dec 14, 2022
Self-hostable , easy-to-use , lightweight and feature-rich torrent client written in Go
Self-hostable , easy-to-use , lightweight and feature-rich torrent client written in Go

Self-hostable , easy-to-use , lightweight and feature-rich torrent client written in Go . It comes with beautiful Web UI and Optional Multi-User Support . Run Locally or Host in Server . Open/Download/Stream Torrents in Browser Right Away!

Jan 1, 2023
torsniff - a sniffer that sniffs torrents from BitTorrent network

torsniff - a sniffer that sniffs torrents from BitTorrent network English | 简体中文 Introduction torsniff is a torrent sniffer, it sniffs torrents that p

Dec 27, 2022
search yts.mx for torrents

movies - search yts.mx for torrents install: go build && sudo mv movies /usr/local/bin --query QUERY, -q QUERY QUERY to search --rating RAT

Oct 6, 2022
GO2P is a P2P framework, designed with flexibility and simplicity in mind
GO2P is a P2P framework, designed with flexibility and simplicity in mind

go2p golang p2p framework By v-braun - viktor-braun.de. Description GO2P is a P2P framework, designed with flexibility and simplicity in mind. You can

Jan 5, 2023
Subfinder is a subdomain discovery tool that discovers valid subdomains for websites. Designed as a passive framework to be useful for bug bounties and safe for penetration testing.
Subfinder is a subdomain discovery tool that discovers valid subdomains for websites. Designed as a passive framework to be useful for bug bounties and safe for penetration testing.

Fast passive subdomain enumeration tool. Features • Install • Usage • API Setup • License • Join Discord Subfinder is a subdomain discovery tool that

Jan 4, 2023
httpx is a fast and multi-purpose HTTP toolkit allows to run multiple probers using retryablehttp library, it is designed to maintain the result reliability with increased threads.
httpx is a fast and multi-purpose HTTP toolkit allows to run multiple probers using retryablehttp library, it is designed to maintain the result reliability with increased threads.

Features • Installation • Usage • Running httpx • Notes • Join Discord httpx is a fast and multi-purpose HTTP toolkit allow to run multiple probers us

Jan 8, 2023
A vote botting wrapper for GoLang designed for Minecraft: Pocket Servers.

libvote A vote botting wrapper for GoLang designed for Minecraft: Pocket Servers by Jviguy and JustTal. Disclaimer Usage of libvote requires your own

Apr 17, 2022
Sabakan is a versatile network boot server designed for large on-premise data centers.
Sabakan is a versatile network boot server designed for large on-premise data centers.

Sabakan is a versatile network boot server designed for large on-premise data centers. Currently, it is made only for Flatcar Container Linux.

Jan 2, 2023
Designed to support DNS brute-forcing with a minimal number of network connections

Fast Use of DNS Resolvers Designed to support DNS brute-forcing with a minimal number of network connections. Installation go get -v -u github.com/caf

Dec 8, 2022
mt-multiserver-proxy is a reverse proxy designed for linking multiple Minetest servers together

mt-multiserver-proxy mt-multiserver-proxy is a reverse proxy designed for linking multiple Minetest servers together. It is the successor to multiserv

Nov 17, 2022
TFTP and HTTP server specifically designed to serve iPXE ROMs and scripts.
TFTP and HTTP server specifically designed to serve iPXE ROMs and scripts.

pixie TFTP and HTTP server specifically designed to serve iPXE ROMs and scripts. pixie comes embedded with the following ROMs provided by the iPXE pro

Dec 31, 2022
A library designed for hosting Minecraft: Java Edition listeners.

expresso A library designed for hosting Minecraft: Java Edition listeners. Features Hosting listeners. All handshake, status, and login state packets.

Jul 29, 2022
O365 is a tool designed to perform user enumeration* and password guessing attacks on organizations that use Office365

O365 is a tool designed to perform user enumeration* and password guessing attacks on organizations that use Office365 (now/soon Microsoft365). O365 uses a unique SOAP API endpoint on login.microsoftonline.com that most other tools do not use.

Dec 2, 2022
Echo-server - An HTTP echo server designed for testing applications and proxies

echo-server An HTTP echo server designed for testing applications and proxies. R

Dec 20, 2022