From a1e318739c4b9f70a71ee24c414d0ea7dfc59730 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 18 Jul 2016 14:00:30 +0200 Subject: Split --- cmd/btcheck/main.go | 4 ++-- tracker/messages.go | 35 ----------------------------------- tracker/peer.go | 41 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 37 deletions(-) create mode 100644 tracker/peer.go diff --git a/cmd/btcheck/main.go b/cmd/btcheck/main.go index d4c30b0..468d110 100644 --- a/cmd/btcheck/main.go +++ b/cmd/btcheck/main.go @@ -32,8 +32,8 @@ func main() { req := tracker.Request{ InfoHash: tor.Info.Hash(), PeerID: []byte(id), - Compact: true, - Port: 6881, + //Compact: true, + Port: 6881, } resp, err := req.Get(tor.Announce) if err != nil { diff --git a/tracker/messages.go b/tracker/messages.go index 7fc3fb9..76b9232 100644 --- a/tracker/messages.go +++ b/tracker/messages.go @@ -4,7 +4,6 @@ import ( "bytes" "crypto/sha1" "encoding/binary" - "fmt" "io/ioutil" "net" "net/http" @@ -52,40 +51,6 @@ type Response struct { WarningMessage string `bencode:"warning message"` } -type Peer struct { - 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) (int, error) { - switch b[0] { - case 'l': - var tmp []Peer - n, err := bencode.Unmarshal(b, &tmp) - *p = Peers(tmp) - return n, err - default: - var tmp []byte - n, err := bencode.Unmarshal(b, &tmp) - addr, err := peerAddr(tmp) - *p = make(Peers, len(addr)) - for i, v := range addr { - (*p)[i] = Peer{ - IP: v.IP.String(), - Port: int(v.Port), - } - } - return n, err - } -} - func (r Request) Get(announce string) (Response, error) { fail := func(err error) (Response, error) { return Response{}, err diff --git a/tracker/peer.go b/tracker/peer.go new file mode 100644 index 0000000..11fd748 --- /dev/null +++ b/tracker/peer.go @@ -0,0 +1,41 @@ +package tracker + +import ( + "fmt" + + "dim13.org/btget/bencode" +) + +type Peer struct { + 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) (int, error) { + switch b[0] { + case 'l': + var tmp []Peer + n, err := bencode.Unmarshal(b, &tmp) + *p = Peers(tmp) + return n, err + default: + var tmp []byte + n, err := bencode.Unmarshal(b, &tmp) + addr, err := peerAddr(tmp) + *p = make(Peers, len(addr)) + for i, v := range addr { + (*p)[i] = Peer{ + IP: v.IP.String(), + Port: int(v.Port), + } + } + return n, err + } +} -- cgit v1.2.3