TorrServer
TorrServer, stream torrent to http
Installation
Just download server from releases and exec file
https://github.com/YouROK/TorrServer/releases
After open browser link http://127.0.0.1:8090
On linux systems you may need to set the environment variable before run
export GODEBUG=madvdontneed=1
macOS install / configure / uninstall script
curl -s https://raw.githubusercontent.com/YouROK/TorrServer/master/installTorrServerMac.sh|sudo bash
Linux on VPS install / configure / uninstall script
curl -s https://raw.githubusercontent.com/YouROK/TorrServer/master/installTorrServerLinux.sh|sudo bash
Unofficial TorrServer iocage plugin
On FreeBSD (TrueNAS/FreeNAS) you can use this plugin
https://github.com/filka96/iocage-plugin-TorrServer
Build
Install golang 1.16+ by instruction: https://golang.org/doc/install
Goto dir to source
Run build script under linux build-all.sh
For build web page need install npm and yarn
For instal yarn: npm i -g yarn after install npm
For build android server need android toolchain
Download android ndk and change NDK_TOOLCHAIN in build.sh to
path/to/Android/sdk/ndk/ver/toolchains/llvm/prebuilt/platform
Server args:
Usage
TorrServer [--port PORT] [--path PATH] [--logpath LOGPATH] [--rdb] [--httpauth] [--dontkill] [--ui]
Options
- --port PORT, -p PORT web server port
- --path PATH, -d PATH database and settings path
- --logpath LOGPATH, -l LOGPATH log path
- --rdb, -r start in read-only DB mode
- --httpauth, -a http auth on all requests
- --dontkill, -k dont kill server on signal
- --ui, -u run page torrserver in browser
- --version display version and exit
Http Api of TorrServer:
GET
/echo
Return version of server
/shutdown
Shutdown server
/stream...
args:
- link - magnet/hash/link to torrent
- index - index of file
- preload - preload torrent
- stat - return stat of torrent
- save - save to db
- m3u - return m3u
- fromlast - return m3u from last play
- play - start stream torrent
- title - set title of torrent
- poster - set poster link of torrent
Examples:
get stat
http://127.0.0.1:8090/stream/fname?link=...&stat
get m3u
http://127.0.0.1:8090/stream/fname?link=...&index=1&m3u http://127.0.0.1:8090/stream/fname?link=...&index=1&m3u&fromlast
stream torrent
http://127.0.0.1:8090/stream/fname?link=...&index=1&play http://127.0.0.1:8090/stream/fname?link=...&index=1&play&save http://127.0.0.1:8090/stream/fname?link=...&index=1&play&save&title=...&poster=...
only save
http://127.0.0.1:8090/stream/fname?link=...&save&title=...&poster=...
/play/:hash/:id
params:
- hash - hash of torrent
- index - index of file
/playlistall/all.m3u
Get all http links of all torrents in m3u list
/playlist
Get http link of torrent in m3u list
args:
- hash - hash of torrent
- fromlast - from last play file
POST
/torrents
Send json:
{
"action": "add/get/set/rem/list/drop",
"link": "hash/magnet/link to torrent",
"hash": "hash of torrent",
"title": "title of torrent",
"poster": "link to poster of torrent",
"data": "custom data of torrent, may be json",
"save_to_db": true/false
}
Return json of torrent(s)
/torrent/upload
Send multipart/form data
Only one file support
args:
- title - set title of torrent
- poster - set poster link of torrent
- data - set custom data of torrent, may be json
- save - save to db
/cache
Send json:
{
"action": "get"
"hash" : ""hash": "hash of torrent",
}
Return cache stat
d36d0c28f8/server/torr/storage/state/state.go
/settings
Send json:
{
"action": "get/set/def",
fields of BTSets
}
Return json of BTSets
d36d0c28f8/server/settings/btsets.go
/viewed
Send json:
{
"action": "set/rem/list",
"hash": "hash of torrent",
"file_index": int, id of file,
}
Return
if hash is empty, return all viewed files
if hash is not empty, return viewed file of torrent
Json struct see in
d36d0c28f8/server/settings/viewed.go
Authorization
The user data file should be located near to the settings.
Basic auth, read more in wiki
https://en.wikipedia.org/wiki/Basic_access_authentication
File name: accs.db
File format:
{
"User1": "Pass1",
"User2": "Pass2"
}
Whitelist/Blacklist ip
The lists file should be located near to the settings.
whitelist file name: wip.txt
blacklist file name: bip.txt
whitelist has prior
Example:
local:127.0.0.0-127.0.0.255
127.0.0.0-127.0.0.255
local:127.0.0.1
127.0.0.1
# at the beginning of the line, comment
MSX Install:
Open msx and goto: Settings -> Start Parameter -> Setup
Enter current ip address and port of server e.g. 127.0.0.1:8090
Running in docker
Just run: docker run --rm -d --name torrserver -p 8090:8090 ghcr.io/yourok/torrserver:latest
For running in persistence mode, just mount volume to container by adding -v ~/ts:/opt/ts, where ~/ts folder path is just example, but you could use it anyway... Result example command: docker run --rm -d --name torrserver -v ~/ts:/opt/ts -p 8090:8090 ghcr.io/yourok/torrserver:latest
Other options:
- add
-e TS_HTTPAUTH=1and place auth file into~/ts/configforlder for enabling basic auth - add
-e TS_RDB=1for enabling--rdbflag - add
-e TS_DONTKILL=1for enabling--dontkillflag - add
-e TS_PORT=5555for changind default port to 5555(example), also u need to change-p 8090:8090to-p 5555:5555(example) - add
-e TS_CONF_PATH=/opt/tsssfor overriding torrserver config path inside container - add
-e TS_TORR_DIR=/opt/torr_filesfor overriding torrents directory - add
-e TS_LOG_PATH=/opt/torrserver.logfor overriding log path
Example with full overrided command(on default values):
docker run --rm -d -e TS_PORT=5665 -e TS_DONTKILL=1 -e TS_HTTPAUTH=1 -e TS_RDB=1 -e TS_CONF_PATH=/opt/ts/config -e TS_LOG_PATH=/opt/ts/log -e TS_TORR_DIR=/opt/ts/torrents --name torrserver -v ~/ts:/opt/ts -p 5665:5665 ghcr.io/yourok/torrserver:latest
Donate:
SberBank card: 5484 4000 2285 7839
YooMoney card: 4048 4150 1812 8179