You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
767 B

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