bc/peer/p2plib/utils.go
peer/p2plib/utils.goRaw
1package p2plib
2
3import (
4 "crypto/sha256"
5 "encoding/base64"
6 "math/rand"
7 "net"
8 "strings"
9)
10
11func GetIPPortFromConn(conn net.Conn) string {
12 ip := GetIPFromConn(conn)
13 port := GetPortFromConn(conn)
14 return ip + ":" + port
15}
16func GetIPFromConn(conn net.Conn) string {
17 s := conn.RemoteAddr().String()
18 s = strings.Split(s, ":")[0]
19 s = strings.Trim(s, ":")
20 return s
21}
22func GetPortFromConn(conn net.Conn) string {
23 s := conn.RemoteAddr().String()
24 s = strings.Split(s, ":")[1]
25 s = strings.Trim(s, ":")
26 return s
27}
28func RandInt(min int, max int) int {
29 r := rand.Intn(max-min) + min
30 return r
31}
32func HashPeer(p Peer) string {
33 peerString := p.IP + ":" + p.Port
34
35 h := sha256.New()
36 h.Write([]byte(peerString))
37 return base64.URLEncoding.EncodeToString(h.Sum(nil))
38}