case after use settings to default and open info on torrent crash with "Cannot read properties of undefined (reading 'length')"
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 need to set the environment variable before run
export GODEBUG=madvdontneed=1
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