94 lines
3.4 KiB
Markdown
94 lines
3.4 KiB
Markdown
# goTorrent
|
|
[](https://gitter.im/goTorrent-project/Lobby) [](https://goreportcard.com/report/github.com/deranjer/goTorrent)
|
|
|
|
goTorrent is a torrenting server built with Go (Golang) with websocket API that comes with a React web frontend.
|
|
|
|
The current release is an alpha release which means there may be bugs, please open issues to help me improve this software!
|
|
|
|
Image of the frontend UI
|
|
|
|

|
|
|
|
## Supported Platforms:
|
|
- Windows
|
|
- Linux
|
|
- MacOS - (untested as I do not have a Mac)
|
|
|
|
### Supported Arch:
|
|
- x64
|
|
|
|
## Features:
|
|
- Responsive React based WebUI
|
|
- Download torrents from File upload or Magnet Link
|
|
- Start/Stop/Delete Multiple Torrents
|
|
- Add RSS feeds and automatically download new torrents from feed
|
|
- Detailed information for each torrent
|
|
- Automatic stop after seeding ratio reached
|
|
- Pushbullet notification on torrent complete
|
|
- Automatic move of completed torrent to new directory (leave symlink behind for seeding)
|
|
- Symlinks don't work on Windows yet, have to copy file for now
|
|
|
|
## Roadmap
|
|
- Early-Mid 2018
|
|
|
|
- [X] Ability to modify storage path of torrent after it has been added
|
|
|
|
- [X] Backend to frontend notification messages
|
|
|
|
- [X] Global Rate Limiting for Upload/Download Speed
|
|
|
|
- [X] Add torrents from watch folder (cron job every 5 minutes)
|
|
|
|
- [X] Authentication from client to server (done via JWT, will add functionality for 3rd party clients later)
|
|
|
|
- [X] Reverse Proxy Support with SSL upgrade added (with provided config for nginx)
|
|
|
|
- [X] Mostly generated client config from toml.config on first run
|
|
|
|
- [X] Ability to view TOML settings from WebUI (and perhaps change a few as well)
|
|
|
|
- [X] Ability to set priority for individual files (needs more testing!)
|
|
|
|
- [ ] Unit testing completed for a large portion of the package
|
|
|
|
- [ ] Stability/bug fixing/Optimization rewrite of some of the core structures of the WebUI and base server
|
|
|
|
- [ ] Put the "Move torrent after download" into own goroutine with checks so the WebUI doesn't freeze when moving torrent
|
|
|
|
|
|
|
|
- Late 2018
|
|
|
|
- [X] Define the websocket API for users to write their own clients/extensions
|
|
|
|
- [ ] React-native Android app (I don't own any Mac products so there will be no iPhone version)
|
|
|
|
# Documentation
|
|
|
|
All the documentation is available [here](https://deranjer.github.io/goTorrentDocs/)
|
|
|
|
|
|
# Special Thanks
|
|
I viewed cloud-torrent source to construct my project:
|
|
|
|
[Cloud-Torent:Cloud torrent is a a self-hosted remote torrent client, written in Go (golang)](https://github.com/jpillora/cloud-torrent)
|
|
|
|
[Anacrolix BitTorrent client package and utilities](https://github.com/anacrolix/torrent)
|
|
|
|
[goreleaser: Deliver Go binaries as fast and easily as possible](https://github.com/goreleaser/goreleaser)
|
|
|
|
[Viper: Go configuration with fangs](https://github.com/spf13/viper)
|
|
|
|
[logrus: Structured, pluggable logging for Go.](https://github.com/sirupsen/logrus)
|
|
|
|
[boltdb: An embedded key/value database for Go.](https://github.com/boltdb/bolt)
|
|
|
|
[storm: Simple and powerful toolkit for BoltDB](https://github.com/asdine/storm)
|
|
|
|
[Gorilla: web toolkit for the Go programming language](http://www.gorillatoolkit.org/)
|
|
|
|
[gofeed: Parse RSS and Atom feeds in Go](https://github.com/mmcdole/gofeed)
|
|
|
|
[pushbullet-go: A library to call Pushbullet HTTP API for Golang](https://github.com/mitsuse/pushbullet-go)
|
|
|