2019-05-24 10:25:55 +02:00
# intermodal: a 40' shipping container for the Internet
2020-01-16 08:37:12 +01:00
2020-02-18 12:07:38 +01:00
[![Crate ](https://img.shields.io/crates/v/imdl.svg )](https://crates.io/crates/imdl)
[![Build ](https://github.com/casey/intermodal/workflows/Build/badge.svg )](https://github.com/casey/intermodal/actions)
2020-02-18 11:53:23 +01:00
2020-01-21 06:41:39 +01:00
## Manual
- [General ](#general )
2020-01-31 11:58:58 +01:00
- [Installation ](#installation )
- [Supported Operating Systems ](#supported-operating-systems )
- [Pre-built binaries ](#pre-built-binaries )
- [Cargo ](#cargo )
2020-01-21 06:41:39 +01:00
- [Semantic Versioning ](#semantic-versioning )
- [Unstable Features ](#unstable-features )
- [Bittorrent ](#bittorrent )
- [BEP Support ](#bep-support )
2020-01-30 12:19:15 +01:00
- [References ](#references )
2020-01-31 14:55:56 +01:00
- [Alternatives & Prior Art ](#alternatives--prior-art )
2020-01-30 12:19:15 +01:00
- [BitTorrent ](#bittorrent )
2020-02-04 16:55:50 +01:00
- [Acknowledgments ](#acknowledgments )
2020-01-21 06:41:39 +01:00
## General
2020-01-31 11:58:58 +01:00
### Installation
#### Supported Operating Systems
`imdl` supports both unix and Windows. It is tested on Linux, MacOS, and
Windows, but should work on other unix OSs. If it does not, please open an
issue!
#### Pre-built binaries
Pre-built binaries for Linux, macOS, and Windows can be found on
[the releases page ](https://github.com/casey/intermodal/releases ).
You can use the following command to download the latest binary for Linux,
MacOS or Windows, just replace `DEST` with the directory where you'd like to
install the `imdl` binary:
```sh
2020-01-31 13:28:40 +01:00
curl --proto '=https' --tlsv1.2 -sSf https://imdl.io/install.sh | bash -s -- --to DEST
2020-01-31 11:58:58 +01:00
```
#### Cargo
`imdl` is written in [Rust ](https://www.rust-lang.org/ ) and can be built from
source and installed with `cargo install imdl` . To get Rust, use the
[rustup installer ](https://rustup.rs/ ).
2020-01-21 06:41:39 +01:00
### Semantic Versioning
Intermodal follows [semantic versioning ](https://semver.org/ ).
In particular:
- v0.0.X: Breaking changes may be introduced at any time.
- v0.X.Y: Breaking changes may only be introduced with a minor version number
bump.
- vX.Y.Z: Breaking changes may only be introduced with a major version number
bump
### Unstable Features
To avoid premature stabilization and excessive version churn, unstable features
2020-01-30 10:52:07 +01:00
are unavailable unless the `--unstable` / `-u` flag is passed, for example
`imdl --unstable torrent create .` . Unstable features may be changed or removed
at any time.
2020-01-21 06:41:39 +01:00
2020-01-17 05:35:23 +01:00
## Bittorrent
### BEP Support
2020-01-30 10:21:20 +01:00
| Symbol | Meaning |
2020-01-31 15:03:11 +01:00
|:------------------:|---------------------------------------|
2020-01-30 10:21:20 +01:00
| :white_check_mark: | Supported |
| :x: | Unsupported (links to tracking issue) |
| :heavy_minus_sign: | Not Applicable |
| BEP | Status | Title |
|:----------------------------------------------:|:-----------------------------------------------------:|:-----------------------------------------------------------------|
| [00 ](http://bittorrent.org/beps/bep_0000.html ) | :heavy_minus_sign: | Index of BitTorrent Enhancement Proposals |
| [01 ](http://bittorrent.org/beps/bep_0001.html ) | :heavy_minus_sign: | The BitTorrent Enhancement Proposal Process |
| [02 ](http://bittorrent.org/beps/bep_0002.html ) | :heavy_minus_sign: | Sample reStructured Text BEP Template |
| [03 ](http://bittorrent.org/beps/bep_0003.html ) | :white_check_mark: | The BitTorrent Protocol Specification |
| [04 ](http://bittorrent.org/beps/bep_0004.html ) | :heavy_minus_sign: | Assigned Numbers |
2020-02-14 11:16:19 +01:00
| [05 ](http://bittorrent.org/beps/bep_0005.html ) | :white_check_mark: | DHT Protocol |
2020-01-30 10:21:20 +01:00
| [06 ](http://bittorrent.org/beps/bep_0006.html ) | :heavy_minus_sign: | Fast Extension |
| [07 ](http://bittorrent.org/beps/bep_0007.html ) | :heavy_minus_sign: | IPv6 Tracker Extension |
| [08 ](http://bittorrent.org/beps/bep_0008.html ) | :heavy_minus_sign: | Tracker Peer Obfuscation |
| [09 ](http://bittorrent.org/beps/bep_0009.html ) | [:x: ](https://github.com/casey/intermodal/issues/91 ) | Extension for Peers to Send Metadata Files |
| [10 ](http://bittorrent.org/beps/bep_0010.html ) | :heavy_minus_sign: | Extension Protocol |
| [11 ](http://bittorrent.org/beps/bep_0011.html ) | :heavy_minus_sign: | Peer Exchange (PEX) |
| [12 ](http://bittorrent.org/beps/bep_0012.html ) | :white_check_mark: | Multitracker Metadata Extension |
| [14 ](http://bittorrent.org/beps/bep_0014.html ) | :heavy_minus_sign: | Local Service Discovery |
| [15 ](http://bittorrent.org/beps/bep_0015.html ) | :heavy_minus_sign: | UDP Tracker Protocol for BitTorrent |
| [16 ](http://bittorrent.org/beps/bep_0016.html ) | :heavy_minus_sign: | Superseeding |
| [17 ](http://bittorrent.org/beps/bep_0017.html ) | [:x: ](https://github.com/casey/intermodal/issues/92 ) | HTTP Seeding |
| [18 ](http://bittorrent.org/beps/bep_0018.html ) | :heavy_minus_sign: | Search Engine Specificiation |
| [19 ](http://bittorrent.org/beps/bep_0019.html ) | [:x: ](https://github.com/casey/intermodal/issues/93 ) | WebSeed - HTTP/FTP Seeding (GetRight style) |
| [20 ](http://bittorrent.org/beps/bep_0020.html ) | :heavy_minus_sign: | Peer ID Conventions |
| [21 ](http://bittorrent.org/beps/bep_0021.html ) | :heavy_minus_sign: | Extension for partial seeds |
| [22 ](http://bittorrent.org/beps/bep_0022.html ) | :heavy_minus_sign: | BitTorrent Local Tracker Discovery Protocol |
| [23 ](http://bittorrent.org/beps/bep_0023.html ) | :heavy_minus_sign: | Tracker Returns Compact Peer Lists |
| [24 ](http://bittorrent.org/beps/bep_0024.html ) | :heavy_minus_sign: | Tracker Returns External IP |
| [25 ](http://bittorrent.org/beps/bep_0025.html ) | :heavy_minus_sign: | An Alternate BitTorrent Cache Discovery Protocol |
| [26 ](http://bittorrent.org/beps/bep_0026.html ) | :heavy_minus_sign: | Zeroconf Peer Advertising and Discovery |
| [27 ](http://bittorrent.org/beps/bep_0027.html ) | :white_check_mark: | Private Torrents |
| [28 ](http://bittorrent.org/beps/bep_0028.html ) | :heavy_minus_sign: | Tracker exchange extension |
| [29 ](http://bittorrent.org/beps/bep_0029.html ) | :heavy_minus_sign: | uTorrent transport protocol |
| [30 ](http://bittorrent.org/beps/bep_0030.html ) | [:x: ](https://github.com/casey/intermodal/issues/94 ) | Merkle hash torrent extension |
| [31 ](http://bittorrent.org/beps/bep_0031.html ) | :heavy_minus_sign: | Failure Retry Extension |
| [32 ](http://bittorrent.org/beps/bep_0032.html ) | :heavy_minus_sign: | BitTorrent DHT Extensions for IPv6 |
| [33 ](http://bittorrent.org/beps/bep_0033.html ) | :heavy_minus_sign: | DHT Scrapes |
| [34 ](http://bittorrent.org/beps/bep_0034.html ) | :heavy_minus_sign: | DNS Tracker Preferences |
| [35 ](http://bittorrent.org/beps/bep_0035.html ) | [:x: ](https://github.com/casey/intermodal/issues/96 ) | Torrent Signing |
| [36 ](http://bittorrent.org/beps/bep_0036.html ) | :heavy_minus_sign: | Torrent RSS feeds |
| [37 ](http://bittorrent.org/beps/bep_0037.html ) | :heavy_minus_sign: | Anonymous BitTorrent over proxies |
| [38 ](http://bittorrent.org/beps/bep_0038.html ) | :heavy_minus_sign: | Finding Local Data Via Torrent File Hints |
| [39 ](http://bittorrent.org/beps/bep_0039.html ) | [:x: ](https://github.com/casey/intermodal/issues/98 ) | Updating Torrents Via Feed URL |
| [40 ](http://bittorrent.org/beps/bep_0040.html ) | :heavy_minus_sign: | Canonical Peer Priority |
2020-01-30 12:13:26 +01:00
| [41 ](http://bittorrent.org/beps/bep_0041.html ) | :heavy_minus_sign: | UDP Tracker Protocol Extensions |
2020-01-30 10:21:20 +01:00
| [42 ](http://bittorrent.org/beps/bep_0042.html ) | :heavy_minus_sign: | DHT Security extension |
| [43 ](http://bittorrent.org/beps/bep_0043.html ) | :heavy_minus_sign: | Read-only DHT Nodes |
| [44 ](http://bittorrent.org/beps/bep_0044.html ) | :heavy_minus_sign: | Storing arbitrary data in the DHT |
| [45 ](http://bittorrent.org/beps/bep_0045.html ) | :heavy_minus_sign: | Multiple-address operation for the BitTorrent DHT |
| [46 ](http://bittorrent.org/beps/bep_0046.html ) | :heavy_minus_sign: | Updating Torrents Via DHT Mutable Items |
| [47 ](http://bittorrent.org/beps/bep_0047.html ) | [:x: ](https://github.com/casey/intermodal/issues/99 ) | Padding files and extended file attributes |
| [48 ](http://bittorrent.org/beps/bep_0048.html ) | :heavy_minus_sign: | Tracker Protocol Extension: Scrape |
| [49 ](http://bittorrent.org/beps/bep_0049.html ) | [:x: ](https://github.com/casey/intermodal/issues/100 ) | Distributed Torrent Feeds |
| [50 ](http://bittorrent.org/beps/bep_0050.html ) | :heavy_minus_sign: | Publish/Subscribe Protocol |
| [51 ](http://bittorrent.org/beps/bep_0051.html ) | :heavy_minus_sign: | DHT Infohash Indexing |
| [52 ](http://bittorrent.org/beps/bep_0052.html ) | [:x: ](https://github.com/casey/intermodal/issues/101 ) | The BitTorrent Protocol Specification v2 |
| [53 ](http://bittorrent.org/beps/bep_0053.html ) | :heavy_minus_sign: | Magnet URI extension - Select specific file indices for download |
| [54 ](http://bittorrent.org/beps/bep_0054.html ) | :heavy_minus_sign: | The lt_donthave extension |
| [55 ](http://bittorrent.org/beps/bep_0055.html ) | :heavy_minus_sign: | Holepunch extension |
2020-01-30 12:19:15 +01:00
## References
2020-01-31 14:55:56 +01:00
### Alternatives & Prior Art
| Name | UI | Language | Notes |
|-----------------------------------------------------------------------------------|-------------------------|------------|-------------------------------------------------------------------------------------------------------------------------------------------|
| [torf-cli ](https://github.com/rndusr/torf-cli ) | CLI | Python | Highly recommended utility for creating torrents and magnet links, as well as displaying information about and editing existing torrents. |
| [mktorrent ](https://github.com/Rudde/mktorrent ) | CLI | C | Popular but unmaintained torrent file creator. |
| [pmktorrent ](https://github.com/xxkfqz/pmktorrent ) | CLI | C | Maintained fork of mktorrent. |
| [mktorrent ](https://github.com/mukaibot/mktorrent ) | Library | Ruby | Library for creating torrent files. |
| [py3createtorrent ](https://github.com/rsnitsch/py3createtorrent/ ) | CLI | Python | Torrent file creator. |
| [create-torrent ](https://github.com/webtorrent/create-torrent ) | Library & CLI | JavaScript | Javascript library and CLI for creating torrents. |
| [whatmp3 ](https://github.com/RecursiveForest/whatmp3 ) | CLI | Python | Torrent file creator that automatically transcodes FLAC files. |
| [torrent-file-editor ](https://github.com/torrent-file-editor/torrent-file-editor ) | GUI | C++ | Graphical torrent file editor. |
| [torrent2magnet ](https://github.com/repolho/torrent2magnet ) | CLI | Python | Creates magnet links from torrent files. |
| [h2torrent ](https://github.com/elektito/ih2torrent ) | CLI | Python | Creates .torrent files from an infohash or magnet URI. |
| [dottorrent ](https://github.com/kz26/dottorrent ) | Library | Python | Library for creating torrent files |
| [dottorrent-cli ](https://github.com/kz26/dottorrent-cli ) | CLI | Python | Torrent file creator. |
| [torrent-creator ](https://github.com/kimbatt/torrent-creator/ ) | Web page | Typescript | Single-page web app torrent file creator. |
2020-02-01 22:30:09 +01:00
| [pyrocore ](https://github.com/pyroscope/pyrocore ) | CLI | PYthon | Utilities for creating, modifying, and displaying torrent files. |
2020-01-31 14:55:56 +01:00
2020-01-30 12:19:15 +01:00
### BitTorrent
| URL | Description |
|:------------------------------------------------------------|:--------------------------------------------------------------------------------------------------|
| https://github.com/bittorrent/bittorrent.org | GitHub repository hosting protocol development discussion and contents of bittorrent.org. |
| https://www.bittorrent.org | Official web site site hosting BEPs and other information about the protocol. |
| https://wiki.theory.org/index.php/Main_Page | Wiki with lots of information about all aspects of the BitTorrent protocol and implementations. |
| https://archive.org/details/2014_torrent_archive_organized) | Massive 158 GiB archive containing 5.5 million torrents, assembled in 2014. |
| https://github.com/internetarchive/dweb-transport | Github repository hosting The Internet Archive's distributed web and BitTorrent-related software. |
2020-02-04 16:55:50 +01:00
## Acknowledgments
The formatting of `imdl torrent show` is entirely copied from
[torf ](https://github.com/rndusr/torf-cli ), an excellent command-line torrent
creator, editor, and viewer.