From ed1d95c55dfa91d1c9a486bfb8e00375d4038e29 Mon Sep 17 00:00:00 2001 From: techknowlogick Date: Wed, 16 Mar 2022 00:08:31 -0400 Subject: use go1.18 to build gitea (#19099) * use go1.18 to build gitea& update min go version to 1.17 * bump in a few more places * add a few simple tests for isipprivate * update go.mod * update URL to https://go.dev/dl/ * golangci-lint * attempt golangci-lint workaround * change version * bump fumpt version * skip strings.title test * go mod tidy * update tests as some aren't private?? * update tests --- modules/util/net.go | 8 +------ modules/util/net_test.go | 56 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 7 deletions(-) create mode 100644 modules/util/net_test.go (limited to 'modules') diff --git a/modules/util/net.go b/modules/util/net.go index 54c0a2ca39..0339325dc3 100644 --- a/modules/util/net.go +++ b/modules/util/net.go @@ -8,12 +8,6 @@ import ( "net" ) -// IsIPPrivate for net.IP.IsPrivate. TODO: replace with `ip.IsPrivate()` if min go version is bumped to 1.17 func IsIPPrivate(ip net.IP) bool { - if ip4 := ip.To4(); ip4 != nil { - return ip4[0] == 10 || - (ip4[0] == 172 && ip4[1]&0xf0 == 16) || - (ip4[0] == 192 && ip4[1] == 168) - } - return len(ip) == net.IPv6len && ip[0]&0xfe == 0xfc + return ip.IsPrivate() } diff --git a/modules/util/net_test.go b/modules/util/net_test.go new file mode 100644 index 0000000000..93a95ab123 --- /dev/null +++ b/modules/util/net_test.go @@ -0,0 +1,56 @@ +// Copyright 2022 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package util + +import ( + "net" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestIsIPPPrivate(t *testing.T) { + cases := []struct { + ip string + isPrivate bool + }{ + // case 0 + { + ip: "127.0.0.1", + isPrivate: false, // TODO: according to go, this isn't private? + }, + // case 1 + { + ip: "127.1.2.3", + isPrivate: false, // TODO: according to go, this isn't private? + }, + // case 2 + { + ip: "10.255.255.0", + isPrivate: true, + }, + // case 3 + { + ip: "8.8.8.8", + isPrivate: false, + }, + // case 4 + { + ip: "::1", + isPrivate: false, // TODO: according to go, this isn't private? + }, + // case 4 + { + ip: "2a12:7c40::f00d", + isPrivate: false, + }, + } + + for n, c := range cases { + i := net.ParseIP(c.ip) + p := IsIPPrivate(i) + assert.Equal(t, c.isPrivate, p, "case %d: should be equal", n) + } +} -- cgit v1.2.3