aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-07-18 14:00:30 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-07-18 14:00:30 +0200
commita1e318739c4b9f70a71ee24c414d0ea7dfc59730 (patch)
treecc5c8c268f24f31a01cf520ac1bf335e2fab0be9
parent177af7984086849da2ab3b324509df5d1932417f (diff)
Split
-rw-r--r--cmd/btcheck/main.go4
-rw-r--r--tracker/messages.go35
-rw-r--r--tracker/peer.go41
3 files changed, 43 insertions, 37 deletions
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
+ }
+}