From 896f99551ce39387afb3ff14410c925b05eada0c Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sun, 17 Jul 2016 15:33:40 +0200 Subject: Some fields are mandatory --- cmd/btcheck/main.go | 1 + examples/tr_resp.compact | Bin 0 -> 179 bytes examples/tr_resp.verbose | 1 + tracker/messages.go | 16 +++++++++++----- 4 files changed, 13 insertions(+), 5 deletions(-) create mode 100644 examples/tr_resp.compact create mode 100644 examples/tr_resp.verbose 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 Binary files /dev/null and b/examples/tr_resp.compact 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 -- cgit v1.2.3