tracker/README.md

95 lines
3.4 KiB
Markdown
Raw Normal View History

2014-07-07 00:08:55 +02:00
# Chihaya [![Build Status](https://api.travis-ci.org/chihaya/chihaya.svg?branch=master)](https://travis-ci.org/chihaya/chihaya)
2013-06-22 01:31:32 +02:00
Chihaya is a high-performance [BitTorrent tracker](http://en.wikipedia.org/wiki/BitTorrent_tracker) written in the Go programming language. It is still heavily under development and the current `master` branch should not be used in production.
2013-08-30 03:48:48 +02:00
Features include:
2013-08-31 21:21:35 +02:00
2014-07-17 18:45:30 +02:00
- Light resource consumption, and fast, asynchronous request processing
- Full compatibility with what exists of the BitTorrent spec
- Correct IPv6 support
2014-07-17 18:45:30 +02:00
- Generic storage interfaces that are easily adapted to work with any database
2013-08-21 23:24:36 +02:00
2013-08-31 21:21:35 +02:00
### Technical Details
2013-06-22 01:31:32 +02:00
2013-12-01 04:41:11 +01:00
See [the wiki](https://github.com/chihaya/chihaya/wiki) for a discussion of the design behind Chihaya.
2013-08-30 04:02:12 +02:00
2013-08-31 21:21:35 +02:00
## Using Chihaya
2013-08-30 04:02:12 +02:00
Chihaya can be ran as a public or private tracker and is intended to work with existing torrent-indexing web frameworks, such as [Gazelle], [Batter] and any others that spring up. Following the Unix way, it is built to perform one specific task: handling announces and scrapes. By cleanly separating the concerns between tracker and database, we can provide an interface that can be used by system that needs its functionality. See [below](#drivers) for more info.
2013-08-30 04:02:12 +02:00
2013-08-31 21:21:35 +02:00
[batter]: https://github.com/wafflesfm/batter
[gazelle]: https://github.com/whatcd/gazelle
2013-06-22 01:31:32 +02:00
2013-08-31 21:21:35 +02:00
### Installing
2013-06-22 01:31:32 +02:00
Chihaya requires Go 1.3+ to build. To install the Chihaya server, run:
2013-08-29 06:47:37 +02:00
```sh
$ go get github.com/chihaya/chihaya/cmd/chihaya
2013-08-29 06:47:37 +02:00
```
Make sure you have your `$GOPATH` set up correctly, and have `$GOPATH/bin` in your `$PATH`.
If you're new to Go, an overview of the directory structure can be found [here](http://golang.org/doc/code.html).
2013-08-31 21:21:35 +02:00
### Configuring
Configuration is done in a JSON formatted file specified with the `-config`
2013-08-31 21:21:35 +02:00
flag. An example configuration file can be found
[here](https://github.com/chihaya/chihaya/blob/master/example.json).
2013-08-31 21:21:35 +02:00
### Running the tests
2013-06-22 01:31:32 +02:00
2013-08-31 21:21:35 +02:00
```sh
2013-12-01 04:41:11 +01:00
$ cd $GOPATH/src/github.com/chihaya/chihaya
$ go test -v ./...
2013-08-31 21:21:35 +02:00
```
2013-08-23 21:39:42 +02:00
2013-08-31 21:21:35 +02:00
## Drivers
2013-08-23 21:39:42 +02:00
2013-08-31 21:21:35 +02:00
Chihaya is designed to remain agnostic about the choice of data store for an
application, and it is straightforward to [implement a new driver]. However, there
are a number of drivers that will be directly supported "out of the box":
Tracker:
* memory
2013-12-01 05:04:02 +01:00
* [redis](https://github.com/chihaya/chihaya-redis)
Backend:
* noop (for public trackers)
2013-12-01 05:04:02 +01:00
* [gazelle (mysql)](https://github.com/chihaya/chihaya-gazelle)
To use an external driver, make your own package and call it something like `github.com/yourusername/chihaya`. Then, import Chihaya like so:
```go
package main
import (
"github.com/chihaya/chihaya"
_ "github.com/yourusername/chihaya-custom-backend" // Import any of your own drivers.
)
2013-08-13 07:41:45 +02:00
func main() {
chihaya.Boot() // Start Chihaya normally.
}
```
Then, when you do `go install github.com/yourusername/chihaya`, your own drivers will be included in the binary.
[implement a new driver]: https://github.com/chihaya/chihaya/wiki/Implementing-a-driver
2013-08-13 07:41:45 +02:00
## Contributing
2013-08-31 21:21:35 +02:00
If you're interested in contributing, please contact us via IRC in **[#chihaya] on
[freenode]** or post to the GitHub issue tracker. Please don't write
massive patches with no prior communication, as it will most
2013-08-21 23:24:36 +02:00
likely lead to confusion and time wasted for everyone. However, small
2013-08-31 21:21:35 +02:00
unannounced fixes are always welcome!
2013-08-13 07:41:45 +02:00
2013-08-21 23:24:36 +02:00
[#chihaya]: http://webchat.freenode.net?channels=chihaya
2013-08-31 21:21:35 +02:00
[freenode]: http://freenode.net
And remember: good gophers always use gofmt!