From e4b008b534de791b10864cbb4cab34fcee471c34 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 18 Jul 2016 00:51:43 +0200 Subject: wip, broken --- tracker/messages.go | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'tracker/messages.go') diff --git a/tracker/messages.go b/tracker/messages.go index 2062934..26d03c4 100644 --- a/tracker/messages.go +++ b/tracker/messages.go @@ -4,7 +4,9 @@ import ( "bytes" "crypto/sha1" "encoding/binary" + "fmt" "io/ioutil" + "log" "net" "net/http" "time" @@ -45,16 +47,27 @@ type Response struct { Incomplete int `bencode:"incomplete"` Interval time.Duration `bencode:"interval"` MinInterval time.Duration `bencode:"min interval"` - Peers []byte `bencode:"peers"` // can be []byte or []Peer + Peers Peers `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"` + IP string `bencode:"ip"` + ID []byte `bencode:"peer id"` + Port int `bencode:"port"` +} + +func (p Peer) String() string { + return fmt.Sprintf("%v %s %v", p.IP, p.ID, p.Port) +} + +type Peers []Peer + +func (p *Peers) UnmarshalBencode(b []byte) error { + log.Println(string(b)) + return nil } func (r Request) Get(announce string) (Response, error) { @@ -88,9 +101,11 @@ func (r Response) IntervalDuration() time.Duration { return time.Duration(r.Interval) * time.Second } +/* func (r Response) PeerAddr() ([]*net.TCPAddr, error) { return peerAddr(r.Peers) } +*/ func peerAddr(b []byte) ([]*net.TCPAddr, error) { n := len(b) / 6 -- cgit v1.2.3