diff options
| author | Jeroen Wijenbergh <jeroen.wijenbergh@geant.org> | 2025-08-25 10:59:37 +0200 |
|---|---|---|
| committer | Jeroen Wijenbergh <jeroen.wijenbergh@geant.org> | 2025-08-25 13:06:41 +0200 |
| commit | 27b95b4911da055fe9b5fb37b5fb4a33eda6b989 (patch) | |
| tree | f6eb1143fa9bd2995d671b71d75c950e2c703660 /util | |
| parent | b4f4f5600298436c63b89f289c318d777300c499 (diff) | |
All: Remove util packages
Was giving linting errors and it's not a good idea anyways
Diffstat (limited to 'util')
| -rw-r--r-- | util/util.go | 84 | ||||
| -rw-r--r-- | util/util_test.go | 126 |
2 files changed, 0 insertions, 210 deletions
diff --git a/util/util.go b/util/util.go deleted file mode 100644 index 4609199..0000000 --- a/util/util.go +++ /dev/null @@ -1,84 +0,0 @@ -// Package util defines public utility functions to be used by applications -// these are outside of the client package as they can be used even if a client hasn't been created yet -package util - -import ( - "net" - "strings" - - "codeberg.org/eduVPN/eduvpn-common/i18nerr" -) - -// CalculateGateway takes a CIDR encoded subnet `cidr` and returns the gateway and an error -func CalculateGateway(cidr string) (string, error) { - _, ipn, err := net.ParseCIDR(cidr) - if err != nil { - return "", i18nerr.WrapInternalf(err, "failed to parse CIDR for calculating gateway: %v", cidr) - } - - ret := make(net.IP, len(ipn.IP)) - copy(ret, ipn.IP) - - for i := len(ret) - 1; i >= 0; i-- { - ret[i]++ - if ret[i] > 0 { - break - } - } - - if !ipn.Contains(ret) { - return "", i18nerr.Newf("IP network does not contain incremented IP: %v", ret) - } - - return ret.String(), nil -} - -// GetLanguageMatched uses a map from language tags to strings to extract the right language given the tag -// It implements it according to https://github.com/eduvpn/documentation/blob/dc4d53c47dd7a69e95d6650eec408e16eaa814a2/SERVER_DISCOVERY.md#language-matching -func GetLanguageMatched(langMap map[string]string, langTag string) string { - // If no map is given, return the empty string - if len(langMap) == 0 { - return "" - } - // Try to find the exact match - if val, ok := langMap[langTag]; ok { - return val - } - // Try to find a key that starts with the OS language setting - for k := range langMap { - if strings.HasPrefix(k, langTag) { - return langMap[k] - } - } - // Try to find a key that starts with the first part of the OS language (e.g. de-) - pts := strings.Split(langTag, "-") - // We have a "-" - if len(pts) > 1 { - for k := range langMap { - if strings.HasPrefix(k, pts[0]+"-") { - return langMap[k] - } - } - } - // search for just the language (e.g. de) - for k := range langMap { - if k == pts[0] { - return langMap[k] - } - } - - // Pick one that is deemed best, e.g. en-US or en, but note that not all languages are always available! - // We force an entry that is english exactly or with an english prefix - for k := range langMap { - if k == "en" || strings.HasPrefix(k, "en-") { - return langMap[k] - } - } - - // Otherwise just return one - for k := range langMap { - return langMap[k] - } - - return "" -} diff --git a/util/util_test.go b/util/util_test.go deleted file mode 100644 index fd35088..0000000 --- a/util/util_test.go +++ /dev/null @@ -1,126 +0,0 @@ -package util - -import ( - "testing" - - "codeberg.org/eduVPN/eduvpn-common/internal/test" -) - -func TestCalculateGateway(t *testing.T) { - cases := []struct { - in string - want string - err string - }{ - // normal cases - { - in: "10.10.10.5/24", - want: "10.10.10.1", - err: "", - }, - { - in: "10.10.10.130/25", - want: "10.10.10.129", - err: "", - }, - { - in: "fd42::5/112", - want: "fd42::1", - err: "", - }, - { - in: "5502:df9::/64", - want: "5502:df9::1", - err: "", - }, - // unrealistic scenario but we have to handle these! - { - in: "5502:df9::0/128", - want: "", - err: "IP network does not contain incremented IP: 5502:df9::1", - }, - { - in: "5502:df9::ffff/128", - want: "", - err: "IP network does not contain incremented IP: 5502:df9::1:0", - }, - { - in: "10.0.0.0/32", - want: "", - err: "IP network does not contain incremented IP: 10.0.0.1", - }, - { - in: "10.0.0.255/32", - want: "", - err: "IP network does not contain incremented IP: 10.0.1.0", - }, - // parsing errors - { - in: "10.0.0.1", - want: "", - err: "An internal error occurred. The cause of the error is: invalid CIDR address: 10.0.0.1.", - }, - { - in: "bla", - want: "", - err: "An internal error occurred. The cause of the error is: invalid CIDR address: bla.", - }, - { - in: "5502:df9::ffff", - want: "", - err: "An internal error occurred. The cause of the error is: invalid CIDR address: 5502:df9::ffff.", - }, - } - - for _, c := range cases { - got, err := CalculateGateway(c.in) - test.AssertError(t, err, c.err) - if got != c.want { - t.Fatalf("got: %v not equal to want: %v", got, c.want) - } - } -} - -func TestGetLanguageMatched(t *testing.T) { - // exact match - returned := GetLanguageMatched(map[string]string{"en": "test", "de": "test2"}, "en") - if returned != "test" { - t.Fatalf("Got: %s, want: %s", returned, "test") - } - - // starts with language tag - returned = GetLanguageMatched(map[string]string{"en-US-test": "test", "de": "test2"}, "en-US") - if returned != "test" { - t.Fatalf("Got: %s, want: %s", returned, "test") - } - - // starts with en- - returned = GetLanguageMatched(map[string]string{"en-UK": "test", "en": "test2"}, "en-US") - if returned != "test" { - t.Fatalf("Got: %s, want: %s", returned, "test") - } - - // exact match for en - returned = GetLanguageMatched(map[string]string{"de": "test", "en": "test2"}, "en-US") - if returned != "test2" { - t.Fatalf("Got: %s, want: %s", returned, "test2") - } - - // We default to english - returned = GetLanguageMatched(map[string]string{"es": "test", "en": "test2"}, "nl-NL") - if returned != "test2" { - t.Fatalf("Got: %s, want: %s", returned, "test2") - } - - // We default to english with a - as well - returned = GetLanguageMatched(map[string]string{"est": "test", "en-": "test2"}, "en-US") - if returned != "test2" { - t.Fatalf("Got: %s, want: %s", returned, "test2") - } - - // None found just return one - returned = GetLanguageMatched(map[string]string{"es": "test"}, "en-US") - if returned != "test" { - t.Fatalf("Got: %s, want: %s", returned, "test") - } -} |
