Marcus Efraimsson 7 年之前
父节点
当前提交
e08f61059b
共有 3 个文件被更改,包括 49 次插入0 次删除
  1. 8 0
      pkg/util/encoding.go
  2. 27 0
      pkg/util/ip_address.go
  3. 14 0
      pkg/util/ip_address_test.go

+ 8 - 0
pkg/util/encoding.go

@@ -101,3 +101,11 @@ func DecodeBasicAuthHeader(header string) (string, string, error) {
 
 	return userAndPass[0], userAndPass[1], nil
 }
+
+func RandomHex(n int) (string, error) {
+	bytes := make([]byte, n)
+	if _, err := rand.Read(bytes); err != nil {
+		return "", err
+	}
+	return hex.EncodeToString(bytes), nil
+}

+ 27 - 0
pkg/util/ip_address.go

@@ -0,0 +1,27 @@
+package util
+
+import (
+	"net"
+	"strings"
+)
+
+// ParseIPAddress parses an IP address and removes port and/or IPV6 format
+func ParseIPAddress(input string) string {
+	var s string
+	lastIndex := strings.LastIndex(input, ":")
+
+	if lastIndex != -1 {
+		s = input[:lastIndex]
+	}
+
+	s = strings.Replace(s, "[", "", -1)
+	s = strings.Replace(s, "]", "", -1)
+
+	ip := net.ParseIP(s)
+
+	if ip.IsLoopback() {
+		return "127.0.0.1"
+	}
+
+	return ip.String()
+}

+ 14 - 0
pkg/util/ip_address_test.go

@@ -0,0 +1,14 @@
+package util
+
+import (
+	"testing"
+
+	. "github.com/smartystreets/goconvey/convey"
+)
+
+func TestParseIPAddress(t *testing.T) {
+	Convey("Test parse ip address", t, func() {
+		So(ParseIPAddress("192.168.0.140:456"), ShouldEqual, "192.168.0.140")
+		So(ParseIPAddress("[::1:456]"), ShouldEqual, "127.0.0.1")
+	})
+}