Custom private blocks (#1705)

Co-authored-by: Asim Aslam <asim@aslam.me>
This commit is contained in:
Di Wu 2020-06-17 00:05:42 +08:00 committed by GitHub
parent c67d78f1ef
commit 6add74b4f6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 30 additions and 0 deletions

View File

@ -17,6 +17,15 @@ func init() {
} }
} }
// AppendPrivateBlocks append private network blocks
func AppendPrivateBlocks(bs ...string) {
for _, b := range bs {
if _, block, err := net.ParseCIDR(b); err == nil {
privateBlocks = append(privateBlocks, block)
}
}
}
func isPrivateIP(ipAddr string) bool { func isPrivateIP(ipAddr string) bool {
ip := net.ParseIP(ipAddr) ip := net.ParseIP(ipAddr)
for _, priv := range privateBlocks { for _, priv := range privateBlocks {

View File

@ -56,3 +56,24 @@ func TestExtractor(t *testing.T) {
} }
} }
func TestAppendPrivateBlocks(t *testing.T) {
tests := []struct {
addr string
expect bool
}{
{addr: "9.134.71.34", expect: true},
{addr: "8.10.110.34", expect: false}, // not in private blocks
}
AppendPrivateBlocks("9.134.0.0/16")
for _, test := range tests {
t.Run(test.addr, func(t *testing.T) {
res := isPrivateIP(test.addr)
if res != test.expect {
t.Fatalf("expected %t got %t", test.expect, res)
}
})
}
}