Commit 53b2063d authored by watermelo's avatar watermelo

Mod: modify net function name

parent d1d4b373
...@@ -33,8 +33,9 @@ var ( ...@@ -33,8 +33,9 @@ var (
) )
const ( const (
AnyhostValue = "0.0.0.0" // Ipv4SplitCharacter use for slipt Ipv4
Ipv4SplitCharacter = "." Ipv4SplitCharacter = "."
// Ipv6SplitCharacter use for slipt Ipv6
Ipv6SplitCharacter = ":" Ipv6SplitCharacter = ":"
) )
...@@ -184,17 +185,17 @@ func ListenOnUDPRandomPort(ip string) (*net.UDPConn, error) { ...@@ -184,17 +185,17 @@ func ListenOnUDPRandomPort(ip string) (*net.UDPConn, error) {
return net.ListenUDP("udp4", &localAddr) return net.ListenUDP("udp4", &localAddr)
} }
// MatchIp is used to determine whether @pattern and @host:@port match, It's supports subnet/range // MatchIP is used to determine whether @pattern and @host:@port match, It's supports subnet/range
func MatchIp(pattern, host, port string) bool { func MatchIP(pattern, host, port string) bool {
// if the pattern is subnet format, it will not be allowed to config port param in pattern. // if the pattern is subnet format, it will not be allowed to config port param in pattern.
if strings.Contains(pattern, "/") { if strings.Contains(pattern, "/") {
_, subnet, _ := net.ParseCIDR(pattern) _, subnet, _ := net.ParseCIDR(pattern)
return subnet != nil && subnet.Contains(net.ParseIP(host)) return subnet != nil && subnet.Contains(net.ParseIP(host))
} }
return matchIpRange(pattern, host, port) return matchIPRange(pattern, host, port)
} }
func matchIpRange(pattern, host, port string) bool { func matchIPRange(pattern, host, port string) bool {
if pattern == "" || host == "" { if pattern == "" || host == "" {
log.Print("Illegal Argument pattern or hostName. Pattern:" + pattern + ", Host:" + host) log.Print("Illegal Argument pattern or hostName. Pattern:" + pattern + ", Host:" + host)
return false return false
...@@ -249,9 +250,9 @@ func matchIpRange(pattern, host, port string) bool { ...@@ -249,9 +250,9 @@ func matchIpRange(pattern, host, port string) bool {
log.Print("There is wrong format of ip Address: " + mask[i]) log.Print("There is wrong format of ip Address: " + mask[i])
return false return false
} }
min := getNumOfIpSegment(rangeNumStrs[0], isIpv4) min := getNumOfIPSegment(rangeNumStrs[0], isIpv4)
max := getNumOfIpSegment(rangeNumStrs[1], isIpv4) max := getNumOfIPSegment(rangeNumStrs[1], isIpv4)
ip := getNumOfIpSegment(ipAddress[i], isIpv4) ip := getNumOfIPSegment(ipAddress[i], isIpv4)
if ip < min || ip > max { if ip < min || ip > max {
return false return false
} }
...@@ -303,7 +304,7 @@ func getPatternHostAndPort(pattern string, isIpv4 bool) []string { ...@@ -303,7 +304,7 @@ func getPatternHostAndPort(pattern string, isIpv4 bool) []string {
return result return result
} }
func getNumOfIpSegment(ipSegment string, isIpv4 bool) int { func getNumOfIPSegment(ipSegment string, isIpv4 bool) int {
if isIpv4 { if isIpv4 {
ipSeg, _ := strconv.Atoi(ipSegment) ipSeg, _ := strconv.Atoi(ipSegment)
return ipSeg return ipSeg
......
...@@ -89,79 +89,79 @@ func TestListenOnUDPRandomPort(t *testing.T) { ...@@ -89,79 +89,79 @@ func TestListenOnUDPRandomPort(t *testing.T) {
} }
func TestMatchIpIpv4Equal(t *testing.T) { func TestMatchIpIpv4Equal(t *testing.T) {
flag := MatchIp("192.168.0.1:8080", "192.168.0.1", "8080") flag := MatchIP("192.168.0.1:8080", "192.168.0.1", "8080")
assert.True(t, flag) assert.True(t, flag)
flag = MatchIp("*", "192.168.0.1", "8080") flag = MatchIP("*", "192.168.0.1", "8080")
assert.True(t, flag) assert.True(t, flag)
flag = MatchIp("*", "192.168.0.1", "") flag = MatchIP("*", "192.168.0.1", "")
assert.True(t, flag) assert.True(t, flag)
flag = MatchIp("*.*.*.*", "192.168.0.1", "8080") flag = MatchIP("*.*.*.*", "192.168.0.1", "8080")
assert.True(t, flag) assert.True(t, flag)
flag = MatchIp("*", "", "") flag = MatchIP("*", "", "")
assert.False(t, flag) assert.False(t, flag)
} }
func TestMatchIpIpv4Subnet(t *testing.T) { func TestMatchIpIpv4Subnet(t *testing.T) {
flag := MatchIp("206.0.68.0/23", "206.0.68.123", "8080") flag := MatchIP("206.0.68.0/23", "206.0.68.123", "8080")
assert.True(t, flag) assert.True(t, flag)
flag = MatchIp("206.0.68.0/23", "207.0.69.123", "8080") flag = MatchIP("206.0.68.0/23", "207.0.69.123", "8080")
assert.False(t, flag) assert.False(t, flag)
} }
func TestMatchIpIpv4Range(t *testing.T) { func TestMatchIpIpv4Range(t *testing.T) {
flag := MatchIp("206.*.68.0", "206.0.68.0", "8080") flag := MatchIP("206.*.68.0", "206.0.68.0", "8080")
assert.True(t, flag) assert.True(t, flag)
flag = MatchIp("206.*.68.0", "206.0.69.0", "8080") flag = MatchIP("206.*.68.0", "206.0.69.0", "8080")
assert.False(t, flag) assert.False(t, flag)
flag = MatchIp("206.0.68-69.0", "206.0.68.0", "8080") flag = MatchIP("206.0.68-69.0", "206.0.68.0", "8080")
assert.True(t, flag) assert.True(t, flag)
flag = MatchIp("206.0.68-69.0", "206.0.70.0", "8080") flag = MatchIP("206.0.68-69.0", "206.0.70.0", "8080")
assert.False(t, flag) assert.False(t, flag)
} }
func TestMatchIpIpv6Equal(t *testing.T) { func TestMatchIpIpv6Equal(t *testing.T) {
flag := MatchIp("[1fff:0:a88:85a3::ac1f]:8080", "1fff:0:a88:85a3::ac1f", "8080") flag := MatchIP("[1fff:0:a88:85a3::ac1f]:8080", "1fff:0:a88:85a3::ac1f", "8080")
assert.True(t, flag) assert.True(t, flag)
flag = MatchIp("*", "1fff:0:a88:85a3::ac1f", "8080") flag = MatchIP("*", "1fff:0:a88:85a3::ac1f", "8080")
assert.True(t, flag) assert.True(t, flag)
flag = MatchIp("*", "1fff:0:a88:85a3::ac1f", "") flag = MatchIP("*", "1fff:0:a88:85a3::ac1f", "")
assert.True(t, flag) assert.True(t, flag)
flag = MatchIp("*.*.*.*", "1fff:0:a88:85a3::ac1f", "8080") flag = MatchIP("*.*.*.*", "1fff:0:a88:85a3::ac1f", "8080")
assert.True(t, flag) assert.True(t, flag)
flag = MatchIp("*", "", "") flag = MatchIP("*", "", "")
assert.False(t, flag) assert.False(t, flag)
} }
func TestMatchIpIpv6Subnet(t *testing.T) { func TestMatchIpIpv6Subnet(t *testing.T) {
flag := MatchIp("1fff:0:a88:85a3::ac1f/64", "1fff:0000:0a88:85a3:0000:0000:0000:0000", "8080") flag := MatchIP("1fff:0:a88:85a3::ac1f/64", "1fff:0000:0a88:85a3:0000:0000:0000:0000", "8080")
assert.True(t, flag) assert.True(t, flag)
flag = MatchIp("1fff:0:a88:85a3::ac1f/64", "2fff:0000:0a88:85a3:0000:0000:0000:0000", "8080") flag = MatchIP("1fff:0:a88:85a3::ac1f/64", "2fff:0000:0a88:85a3:0000:0000:0000:0000", "8080")
assert.False(t, flag) assert.False(t, flag)
} }
func TestMatchIpIpv6Range(t *testing.T) { func TestMatchIpIpv6Range(t *testing.T) {
flag := MatchIp("234e:0:4567:0:0:0:3d:*", "234e:0:4567:0:0:0:3d:4", "8080") flag := MatchIP("234e:0:4567:0:0:0:3d:*", "234e:0:4567:0:0:0:3d:4", "8080")
assert.True(t, flag) assert.True(t, flag)
flag = MatchIp("234e:0:4567:0:0:0:3d:*", "234e:0:4567:0:0:0:2d:4", "8080") flag = MatchIP("234e:0:4567:0:0:0:3d:*", "234e:0:4567:0:0:0:2d:4", "8080")
assert.False(t, flag) assert.False(t, flag)
flag = MatchIp("234e:0:4567:0:0:0:3d:1-2", "234e:0:4567:0:0:0:3d:1", "8080") flag = MatchIP("234e:0:4567:0:0:0:3d:1-2", "234e:0:4567:0:0:0:3d:1", "8080")
assert.True(t, flag) assert.True(t, flag)
flag = MatchIp("234e:0:4567:0:0:0:3d:1-2", "234e:0:4567:0:0:0:3d:3", "8080") flag = MatchIP("234e:0:4567:0:0:0:3d:1-2", "234e:0:4567:0:0:0:3d:3", "8080")
assert.False(t, flag) assert.False(t, flag)
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment