aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-07-17 15:33:40 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-07-17 15:33:40 +0200
commit896f99551ce39387afb3ff14410c925b05eada0c (patch)
tree880893b83d19385ad119c02fe19759a17f46c668
parent0fcc54967bdf43a90cfea3d65111893b6ab81ed9 (diff)
Some fields are mandatory
-rw-r--r--cmd/btcheck/main.go1
-rw-r--r--examples/tr_resp.compactbin0 -> 179 bytes
-rw-r--r--examples/tr_resp.verbose1
-rw-r--r--tracker/messages.go16
4 files changed, 13 insertions, 5 deletions
diff --git a/cmd/btcheck/main.go b/cmd/btcheck/main.go
index ce65fa0..b054c8f 100644
--- a/cmd/btcheck/main.go
+++ b/cmd/btcheck/main.go
@@ -36,6 +36,7 @@ func main() {
InfoHash: tor.Info.Hash(),
PeerID: []byte(id),
Compact: true,
+ Port: 6881,
}
resp, err := req.Get(tor.Announce)
if err != nil {
diff --git a/examples/tr_resp.compact b/examples/tr_resp.compact
new file mode 100644
index 0000000..7093321
--- /dev/null
+++ b/examples/tr_resp.compact
Binary files differ
diff --git a/examples/tr_resp.verbose b/examples/tr_resp.verbose
new file mode 100644
index 0000000..b620bf9
--- /dev/null
+++ b/examples/tr_resp.verbose
@@ -0,0 +1 @@
+d8:completei40e10:incompletei0e8:intervali1800e5:peersld2:ip11:64.91.6.2447:peer id20:-TR2820-4rccbr1a720v4:porti51413eed2:ip13:88.180.169.847:peer id20:-TR2920-kfgqhwi6cdw94:porti51413eed2:ip14:104.233.117.267:peer id20:-TR2840-rk4qnp7qrdvn4:porti51413eed2:ip12:95.119.56.867:peer id20:-lt0D60-魈b4:porti53114eed2:ip13:83.162.221.747:peer id20:-lt0D60-B,-k>w4:porti6867eed2:ip12:63.247.34.627:peer id20:-qB3340-pGnU2iFq4lCf4:porti52100eed2:ip15:199.233.217.2017:peer id20:M4-4-0--ae21866601d94:porti6881eed2:ip12:62.216.5.1207:peer id20:-TR2920-k0zgvxrqi59w4:porti53411eed2:ip12:83.251.17.457:peer id20:-lt0D20-5W3fPw4:porti6881eed2:ip13:24.25.255.2327:peer id20:-qB3330-KbOtWR6Ddx3-4:porti6881eed2:ip13:132.227.74.117:peer id20:-lt0D40-yhVlELD4:porti30004eed2:ip13:81.235.137.467:peer id20:-lt0D40-ͮ=e5v<4:porti6881eed2:ip11:80.186.68.07:peer id20:-TR2900-elbcod0zck8a4:porti51413eed2:ip13:80.190.128.617:peer id20:-DE13A0-A1uvmVSL.BxK4:porti6881eed2:ip13:37.187.21.1777:peer id20:-TR2840-ojwcqbkyg0j34:porti51413eed2:ip12:78.131.78.357:peer id20:-TR2820-fpyelc4bloih4:porti51238eed2:ip15:178.164.155.1717:peer id20:-qB3350-JL!vOUCf3zGt4:porti51999eed2:ip12:88.222.93.977:peer id20:-TR2520-bv7dnqby12ba4:porti51413eed2:ip10:66.8.237.17:peer id20:-qB3330-h315mAPnGT3H4:porti6882eed2:ip11:85.11.74.237:peer id20:-lt0D60-;>=/4:porti6983eeee \ No newline at end of file
diff --git a/tracker/messages.go b/tracker/messages.go
index 2df0367..d9871f9 100644
--- a/tracker/messages.go
+++ b/tracker/messages.go
@@ -25,10 +25,10 @@ const (
type Request struct {
InfoHash [sha1.Size]byte `query:"info_hash"` // info_hash
PeerID []byte `query:"peer_id"` // peer_id
- Port int `query:"port,optional"`
- Uploaded int `query:"uploaded,optional"`
- Downloaded int `query:"downloaded,optional"`
- Left int `query:"left,optional"`
+ Port int `query:"port"`
+ Uploaded int `query:"uploaded"`
+ Downloaded int `query:"downloaded"`
+ Left int `query:"left"`
Compact bool `query:"compact,optional"` // always true
NoPeerID bool `query:"no_peer_id,optional"`
Event Event `query:"event,optional"`
@@ -45,12 +45,18 @@ type Response struct {
Incomplete int `bencode:"incomplete"`
Interval int `bencode:"interval"`
MinInterval int `bencode:"min interval"`
- Peers []byte `bencode:"peers"`
+ Peers []byte `bencode:"peers"` // can be []byte or []Peer
Peers6 []byte `bencode:"peers6"`
TrackerId string `bencode:"tracker id"`
WarningMessage string `bencode:"warning message"`
}
+type Peer struct {
+ IP net.IPAddr `bencode:"ip"`
+ ID []byte `bencode:"peer id"`
+ Port uint16 `bencode:"port"`
+}
+
func (r Request) Get(announce string) (Response, error) {
fail := func(err error) (Response, error) {
return Response{}, err