From 6a5edb5054f37645b3d7b2c7ead3fe88f6d1d5b4 Mon Sep 17 00:00:00 2001 From: shamirShahzad Date: Sat, 16 Dec 2023 23:40:43 +0500 Subject: [PATCH 1/3] refactoring project Moved many files from lib to lb/iputils to remove import cycles --- ipinfo/cmd_bulk.go | 4 +- ipinfo/cmd_default.go | 3 +- ipinfo/cmd_map.go | 4 +- ipinfo/cmd_sum.go | 4 +- ipinfo/completions.go | 6 +- ipinfo/config.go | 6 +- ipinfo/main.go | 6 +- lib/cmd_asn_bulk.go | 12 +-- lib/cmd_calc.go | 28 ++++--- lib/cmd_cidr2ip.go | 3 +- lib/cmd_cidr2range.go | 9 ++- lib/cmd_grepip.go | 51 ++++++------ lib/cmd_match_ip.go | 35 +++++---- lib/cmd_prips.go | 3 +- lib/cmd_randip.go | 5 +- lib/cmd_range2cidr.go | 11 +-- lib/cmd_range2ip.go | 3 +- lib/cmd_splitcidr.go | 5 +- lib/cmd_tool_aggregate.go | 15 ++-- lib/cmd_tool_ip2n.go | 4 +- lib/cmd_tool_isV4In6.go | 14 ++-- lib/cmd_tool_is_global_unicast.go | 13 +-- lib/cmd_tool_is_interface_local_multicast.go | 13 +-- lib/cmd_tool_is_link_local_multicast.go | 13 +-- lib/cmd_tool_is_link_local_unicast.go | 13 +-- lib/cmd_tool_is_loopback.go | 13 +-- lib/cmd_tool_is_multicast.go | 13 +-- lib/cmd_tool_is_one_ip.go | 20 ++--- lib/cmd_tool_is_unspecified.go | 7 +- lib/cmd_tool_is_v4.go | 13 +-- lib/cmd_tool_is_v6.go | 13 +-- lib/cmd_tool_lower.go | 19 ++--- lib/cmd_tool_n2ip.go | 6 +- lib/cmd_tool_n2ip6.go | 6 +- lib/cmd_tool_next.go | 10 ++- lib/cmd_tool_prefix_addr.go | 7 +- lib/cmd_tool_prefix_bits.go | 7 +- lib/cmd_tool_prefix_masked.go | 7 +- lib/cmd_tool_prefix_valid.go | 7 +- lib/cmd_tool_prev.go | 10 ++- lib/cmd_tool_unmap.go | 10 ++- lib/cmd_tool_upper.go | 19 ++--- lib/cmd_tool_valid.go | 8 +- lib/init.go | 43 ---------- lib/{ => ipUtils}/asn_str.go | 2 +- lib/{ => ipUtils}/bogon.go | 10 +-- lib/{ => ipUtils}/cidr.go | 8 +- lib/{ => ipUtils}/errors.go | 2 +- lib/{ => ipUtils}/file.go | 2 +- lib/ipUtils/init.go | 45 +++++++++++ lib/{ => ipUtils}/ip.go | 2 +- lib/{ => ipUtils}/ip6.go | 2 +- lib/{ => ipUtils}/ip6_range.go | 2 +- lib/{ => ipUtils}/ip6_range_str.go | 2 +- lib/{ => ipUtils}/ip6_str.go | 2 +- lib/{ => ipUtils}/ip6_subnet.go | 2 +- lib/{ => ipUtils}/ip6_subnet_str.go | 2 +- lib/{ => ipUtils}/ip_conversions.go | 2 +- lib/{ => ipUtils}/ip_list.go | 2 +- lib/{ => ipUtils}/ip_list_write.go | 2 +- lib/{ => ipUtils}/ip_math.go | 4 +- lib/{ => ipUtils}/ip_range.go | 2 +- lib/{ => ipUtils}/ip_range_str.go | 2 +- lib/ipUtils/ip_range_test.go | 83 ++++++++++++++++++++ lib/{ => ipUtils}/ip_str.go | 6 +- lib/{ => ipUtils}/ip_subnet.go | 2 +- lib/{ => ipUtils}/ip_subnet_str.go | 2 +- lib/{ => ipUtils}/ip_subnet_test.go | 8 +- lib/{ => ipUtils}/regex.go | 48 +++++------ lib/{ => ipUtils}/string_slice.go | 2 +- lib/{ => ipUtils}/u128.go | 2 +- lib/{ => ipUtils}/utils_input.go | 2 +- lib/ip_range_test.go | 83 -------------------- 73 files changed, 453 insertions(+), 403 deletions(-) delete mode 100644 lib/init.go rename lib/{ => ipUtils}/asn_str.go (96%) rename lib/{ => ipUtils}/bogon.go (93%) rename lib/{ => ipUtils}/cidr.go (91%) rename lib/{ => ipUtils}/errors.go (98%) rename lib/{ => ipUtils}/file.go (92%) create mode 100644 lib/ipUtils/init.go rename lib/{ => ipUtils}/ip.go (99%) rename lib/{ => ipUtils}/ip6.go (99%) rename lib/{ => ipUtils}/ip6_range.go (99%) rename lib/{ => ipUtils}/ip6_range_str.go (99%) rename lib/{ => ipUtils}/ip6_str.go (91%) rename lib/{ => ipUtils}/ip6_subnet.go (99%) rename lib/{ => ipUtils}/ip6_subnet_str.go (95%) rename lib/{ => ipUtils}/ip_conversions.go (99%) rename lib/{ => ipUtils}/ip_list.go (99%) rename lib/{ => ipUtils}/ip_list_write.go (99%) rename lib/{ => ipUtils}/ip_math.go (95%) rename lib/{ => ipUtils}/ip_range.go (99%) rename lib/{ => ipUtils}/ip_range_str.go (99%) create mode 100644 lib/ipUtils/ip_range_test.go rename lib/{ => ipUtils}/ip_str.go (78%) rename lib/{ => ipUtils}/ip_subnet.go (99%) rename lib/{ => ipUtils}/ip_subnet_str.go (95%) rename lib/{ => ipUtils}/ip_subnet_test.go (95%) rename lib/{ => ipUtils}/regex.go (56%) rename lib/{ => ipUtils}/string_slice.go (92%) rename lib/{ => ipUtils}/u128.go (99%) rename lib/{ => ipUtils}/utils_input.go (99%) delete mode 100644 lib/ip_range_test.go diff --git a/ipinfo/cmd_bulk.go b/ipinfo/cmd_bulk.go index e3e04e08..45ee20ff 100644 --- a/ipinfo/cmd_bulk.go +++ b/ipinfo/cmd_bulk.go @@ -6,9 +6,9 @@ import ( "net" "github.com/fatih/color" - "github.com/ipinfo/cli/lib" "github.com/ipinfo/cli/lib/complete" "github.com/ipinfo/cli/lib/complete/predict" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/ipinfo/go/v2/ipinfo" "github.com/spf13/pflag" ) @@ -111,7 +111,7 @@ func cmdBulk() (err error) { return nil } - ips, err = lib.IPListFromAllSrcs(pflag.Args()[1:]) + ips, err = ipUtils.IPListFromAllSrcs(pflag.Args()[1:]) if err != nil { return err } diff --git a/ipinfo/cmd_default.go b/ipinfo/cmd_default.go index 887868ac..fee1216f 100644 --- a/ipinfo/cmd_default.go +++ b/ipinfo/cmd_default.go @@ -8,6 +8,7 @@ import ( "github.com/fatih/color" "github.com/ipinfo/cli/lib" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/ipinfo/go/v2/ipinfo" "github.com/spf13/pflag" ) @@ -196,7 +197,7 @@ func cmdDefault() (err error) { return nil } - ips = lib.IPListFromStdin() + ips = ipUtils.IPListFromStdin() if len(ips) == 0 { fmt.Println("no input ips") return nil diff --git a/ipinfo/cmd_map.go b/ipinfo/cmd_map.go index d430eca8..f75457fe 100644 --- a/ipinfo/cmd_map.go +++ b/ipinfo/cmd_map.go @@ -4,9 +4,9 @@ import ( "fmt" "net" - "github.com/ipinfo/cli/lib" "github.com/ipinfo/cli/lib/complete" "github.com/ipinfo/cli/lib/complete/predict" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/pkg/browser" "github.com/spf13/pflag" ) @@ -69,7 +69,7 @@ func cmdMap() (err error) { return nil } - ips, err = lib.IPListFromAllSrcs(pflag.Args()[1:]) + ips, err = ipUtils.IPListFromAllSrcs(pflag.Args()[1:]) if err != nil { return err } diff --git a/ipinfo/cmd_sum.go b/ipinfo/cmd_sum.go index e9975eb7..cb88618a 100644 --- a/ipinfo/cmd_sum.go +++ b/ipinfo/cmd_sum.go @@ -8,9 +8,9 @@ import ( "strings" "github.com/fatih/color" - "github.com/ipinfo/cli/lib" "github.com/ipinfo/cli/lib/complete" "github.com/ipinfo/cli/lib/complete/predict" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/ipinfo/go/v2/ipinfo" "github.com/spf13/pflag" ) @@ -101,7 +101,7 @@ func cmdSum() (err error) { return nil } - ips, err = lib.IPListFromAllSrcs(pflag.Args()[1:]) + ips, err = ipUtils.IPListFromAllSrcs(pflag.Args()[1:]) if err != nil { return err } diff --git a/ipinfo/completions.go b/ipinfo/completions.go index 8cdb3e47..f80534a5 100644 --- a/ipinfo/completions.go +++ b/ipinfo/completions.go @@ -3,9 +3,9 @@ package main import ( "os" - "github.com/ipinfo/cli/lib" "github.com/ipinfo/cli/lib/complete" "github.com/ipinfo/cli/lib/complete/predict" + "github.com/ipinfo/cli/lib/ipUtils" ) var completions = &complete.Command{ @@ -50,9 +50,9 @@ func handleCompletions() { args := complete.Parse(line) if len(args) > 1 { cmdSecondArg := args[1].Text - if lib.StrIsIPStr(cmdSecondArg) { + if ipUtils.StrIsIPStr(cmdSecondArg) { completions.Sub[cmdSecondArg] = completionsIP - } else if lib.StrIsASNStr(cmdSecondArg) { + } else if ipUtils.StrIsASNStr(cmdSecondArg) { completions.Sub[cmdSecondArg] = completionsASNSingle } } diff --git a/ipinfo/config.go b/ipinfo/config.go index 53ebb52e..9f8c066f 100644 --- a/ipinfo/config.go +++ b/ipinfo/config.go @@ -6,7 +6,7 @@ import ( "os" "path/filepath" - "github.com/ipinfo/cli/lib" + "github.com/ipinfo/cli/lib/ipUtils" ) // global config. @@ -62,7 +62,7 @@ func InitConfig() error { } // create default config if none yet. - if !lib.FileExists(configpath) { + if !ipUtils.FileExists(configpath) { gConfig = NewConfig() tokenpath, err := TokenPath() @@ -71,7 +71,7 @@ func InitConfig() error { } // if token exists, migrate it to the config file. - if lib.FileExists(tokenpath) { + if ipUtils.FileExists(tokenpath) { token, err := ReadTokenFile() if err != nil { return err diff --git a/ipinfo/main.go b/ipinfo/main.go index 53343841..b4d7826c 100644 --- a/ipinfo/main.go +++ b/ipinfo/main.go @@ -7,7 +7,7 @@ import ( "strings" "github.com/fatih/color" - "github.com/ipinfo/cli/lib" + "github.com/ipinfo/cli/lib/ipUtils" ) var progBase = filepath.Base(os.Args[0]) @@ -35,9 +35,9 @@ func main() { } switch { - case lib.StrIsIPStr(cmd): + case ipUtils.StrIsIPStr(cmd): err = cmdIP(cmd) - case lib.StrIsASNStr(cmd): + case ipUtils.StrIsASNStr(cmd): asn := strings.ToUpper(cmd) err = cmdASNSingle(asn) case len(cmd) >= 3 && strings.IndexByte(cmd, '.') != -1: diff --git a/lib/cmd_asn_bulk.go b/lib/cmd_asn_bulk.go index 5915db9b..6b6d776a 100644 --- a/lib/cmd_asn_bulk.go +++ b/lib/cmd_asn_bulk.go @@ -2,9 +2,11 @@ package lib import ( "errors" + "strings" + + "github.com/ipinfo/cli/lib/ipUtils" "github.com/ipinfo/go/v2/ipinfo" "github.com/spf13/pflag" - "strings" ) // CmdASNBulkFlags are flags expected by CmdASNBulk @@ -63,16 +65,16 @@ func CmdASNBulk(f CmdASNBulkFlags, ii *ipinfo.Client, args []string, printHelp f var asns []string - op := func(string string, inputType INPUT_TYPE) error { + op := func(string string, inputType ipUtils.INPUT_TYPE) error { switch inputType { - case INPUT_TYPE_ASN: + case ipUtils.INPUT_TYPE_ASN: asns = append(asns, strings.ToUpper(string)) default: - return ErrInvalidInput + return ipUtils.ErrInvalidInput } return nil } - err := GetInputFrom(args, true, true, op) + err := ipUtils.GetInputFrom(args, true, true, op) if err != nil { return nil, err } diff --git a/lib/cmd_calc.go b/lib/cmd_calc.go index 99f0432d..f973975a 100644 --- a/lib/cmd_calc.go +++ b/lib/cmd_calc.go @@ -2,14 +2,16 @@ package lib import ( "fmt" - "github.com/fatih/color" - "github.com/spf13/pflag" "math" "math/big" "net" "regexp" "strconv" "strings" + + "github.com/fatih/color" + "github.com/ipinfo/cli/lib/ipUtils" + "github.com/spf13/pflag" ) // CmdCalcFlags are flags expected by CmdCalc @@ -105,7 +107,7 @@ func EvaluatePostfix(postfix []string) (*big.Float, error) { if el == "" { continue } - if isFloat(el) || StrIsIPv4Str(el) || StrIsIPv6Str(el) { + if isFloat(el) || ipUtils.StrIsIPv4Str(el) || ipUtils.StrIsIPv6Str(el) { postfixStack.Push(el) continue } @@ -113,13 +115,13 @@ func EvaluatePostfix(postfix []string) (*big.Float, error) { // if operator pop two elements off of the stack. strNum1, isEmpty := postfixStack.Pop() if isEmpty { - return big.NewFloat(0), ErrInvalidInput + return big.NewFloat(0), ipUtils.ErrInvalidInput } num1, _, _ := big.ParseFloat(strNum1, 10, precision, big.ToZero) strNum2, isEmpty := postfixStack.Pop() if isEmpty { - return big.NewFloat(0), ErrInvalidInput + return big.NewFloat(0), ipUtils.ErrInvalidInput } num2, _, _ := big.ParseFloat(strNum2, 10, precision, big.ToZero) @@ -136,7 +138,7 @@ func EvaluatePostfix(postfix []string) (*big.Float, error) { case operator == "/": // Check for division by zero if num1.Cmp(big.NewFloat(0)) == 0 { - return big.NewFloat(0), ErrInvalidInput + return big.NewFloat(0), ipUtils.ErrInvalidInput } result = new(big.Float).Quo(num2, num1) case operator == "^": @@ -148,7 +150,7 @@ func EvaluatePostfix(postfix []string) (*big.Float, error) { res := math.Pow(num2F64, num1F64) result = new(big.Float).SetPrec(precision).SetFloat64(res) default: - return big.NewFloat(0), ErrInvalidInput + return big.NewFloat(0), ipUtils.ErrInvalidInput } strResult := result.Text('f', 50) postfixStack.Push(strResult) @@ -175,19 +177,19 @@ func translateToken(tempToken string, tokens []string) ([]string, error) { if isFloat(tempToken) { tokens = append(tokens, tempToken) - } else if StrIsIPv4Str(tempToken) { + } else if ipUtils.StrIsIPv4Str(tempToken) { // Convert ipv4 to decimal then append to tokens ip := net.ParseIP(tempToken) - decimalIP := IP4toInt(ip) + decimalIP := ipUtils.IP4toInt(ip) res := strconv.FormatInt(decimalIP, 10) tokens = append(tokens, res) - } else if StrIsIPv6Str(tempToken) { + } else if ipUtils.StrIsIPv6Str(tempToken) { ip := net.ParseIP(tempToken) - decimalIP := IP6toInt(ip) + decimalIP := ipUtils.IP6toInt(ip) tokens = append(tokens, decimalIP.String()) } else { - return []string{}, ErrInvalidInput + return []string{}, ipUtils.ErrInvalidInput } return tokens, nil } @@ -324,7 +326,7 @@ func CmdCalc(f CmdCalcFlags, args []string, printHelp func()) error { infix := args[0] if IsInvalidInfix(infix) { - return ErrInvalidInput + return ipUtils.ErrInvalidInput } tokens, err := TokenizeInfix(infix) diff --git a/lib/cmd_cidr2ip.go b/lib/cmd_cidr2ip.go index 40dca8d7..520884ea 100644 --- a/lib/cmd_cidr2ip.go +++ b/lib/cmd_cidr2ip.go @@ -3,6 +3,7 @@ package lib import ( "os" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -37,5 +38,5 @@ func CmdCIDR2IP(f CmdCIDR2IPFlags, args []string, printHelp func()) error { return nil } - return IPListWriteFrom(args, true, false, false, true, true) + return ipUtils.IPListWriteFrom(args, true, false, false, true, true) } diff --git a/lib/cmd_cidr2range.go b/lib/cmd_cidr2range.go index 31bbee46..daad8fcb 100644 --- a/lib/cmd_cidr2range.go +++ b/lib/cmd_cidr2range.go @@ -7,6 +7,7 @@ import ( "os" "strings" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -82,13 +83,13 @@ func CmdCIDR2Range( cidrStr := d[:sepIdx] if strings.IndexByte(cidrStr, ':') == -1 { - if r, err := IPRangeStrFromCIDR(cidrStr); err == nil { + if r, err := ipUtils.IPRangeStrFromCIDR(cidrStr); err == nil { fmt.Printf("%s%s", r.String(), rem) } else { goto noip } } else { - if r, err := IP6RangeStrFromCIDR(cidrStr); err == nil { + if r, err := ipUtils.IP6RangeStrFromCIDR(cidrStr); err == nil { fmt.Printf("%s%s", r.String(), rem) } else { goto noip @@ -123,12 +124,12 @@ func CmdCIDR2Range( if err != nil { // is it a CIDR? if strings.IndexByte(arg, ':') == -1 { - if r, err := IPRangeStrFromCIDR(arg); err == nil { + if r, err := ipUtils.IPRangeStrFromCIDR(arg); err == nil { fmt.Println(r.String()) continue } } else { - if r, err := IP6RangeStrFromCIDR(arg); err == nil { + if r, err := ipUtils.IP6RangeStrFromCIDR(arg); err == nil { fmt.Println(r.String()) continue } diff --git a/lib/cmd_grepip.go b/lib/cmd_grepip.go index f2c9ac45..74e230a6 100644 --- a/lib/cmd_grepip.go +++ b/lib/cmd_grepip.go @@ -12,6 +12,7 @@ import ( "strings" "github.com/fatih/color" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -146,49 +147,49 @@ func CmdGrepIP( // prepare regexp var rexp *regexp.Regexp if ipv == 4 { - rexp = ipV4Regex + rexp = ipUtils.IpV4Regex if f.CIDRsOnly && f.RangesOnly { - rexp = v4SubnetRegex + rexp = ipUtils.V4SubnetRegex } else if f.IncludeCIDRs && f.IncludeRanges { - rexp = v4IpSubnetRegex + rexp = ipUtils.V4IpSubnetRegex } else if f.IncludeCIDRs { - rexp = v4IpCidrRegex + rexp = ipUtils.V4IpCidrRegex } else if f.IncludeRanges { - rexp = v4IpRangeRegex + rexp = ipUtils.V4IpRangeRegex } else if f.CIDRsOnly { - rexp = v4CidrRegex + rexp = ipUtils.V4CidrRegex } else if f.RangesOnly { - rexp = v4RangeRegex + rexp = ipUtils.V4RangeRegex } } else if ipv == 6 { - rexp = ipV6Regex + rexp = ipUtils.IpV6Regex if f.CIDRsOnly && f.RangesOnly { - rexp = v6SubnetRegex + rexp = ipUtils.V6SubnetRegex } else if f.IncludeCIDRs && f.IncludeRanges { - rexp = v6IpSubnetRegex + rexp = ipUtils.V6IpSubnetRegex } else if f.IncludeCIDRs { - rexp = v6IpCidrRegex + rexp = ipUtils.V6IpCidrRegex } else if f.IncludeRanges { - rexp = v6IpRangeRegex + rexp = ipUtils.V6IpRangeRegex } else if f.CIDRsOnly { - rexp = v6CidrRegex + rexp = ipUtils.V6CidrRegex } else if f.RangesOnly { - rexp = v6RangeRegex + rexp = ipUtils.V6RangeRegex } } else { - rexp = ipRegex + rexp = ipUtils.IpRegex if f.CIDRsOnly && f.RangesOnly { - rexp = subnetRegex + rexp = ipUtils.SubnetRegex } else if f.IncludeCIDRs && f.IncludeRanges { - rexp = ipSubnetRegex + rexp = ipUtils.IpSubnetRegex } else if f.IncludeCIDRs { - rexp = ipCidrRegex + rexp = ipUtils.IpCidrRegex } else if f.IncludeRanges { - rexp = ipRangeRegex + rexp = ipUtils.IpRangeRegex } else if f.CIDRsOnly { - rexp = cidrRegex + rexp = ipUtils.CidrRegex } else if f.RangesOnly { - rexp = rangeRegex + rexp = ipUtils.RangeRegex } } @@ -232,15 +233,15 @@ func CmdGrepIP( goto next_match } if strings.Contains(mIPStr, ":") { - ip, _ := IP6FromStdIP(mIP.To16()) - for _, r := range bogonIP6List { + ip, _ := ipUtils.IP6FromStdIP(mIP.To16()) + for _, r := range ipUtils.BogonIP6List { if ip.Gte(r.Start) && ip.Lte(r.End) { goto next_match } } } else { - ip := IPFromStdIP(mIP) - for _, r := range bogonIP4List { + ip := ipUtils.IPFromStdIP(mIP) + for _, r := range ipUtils.BogonIP4List { if ip >= r.Start && ip <= r.End { goto next_match } diff --git a/lib/cmd_match_ip.go b/lib/cmd_match_ip.go index 6e33cb8f..e5eebae2 100644 --- a/lib/cmd_match_ip.go +++ b/lib/cmd_match_ip.go @@ -6,6 +6,7 @@ import ( "os" "strings" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -65,17 +66,17 @@ func CmdMatchIP( return parsedCIDRs } - processInput := func(container *[]SubnetPair, ips *[]net.IP, s string, inputType INPUT_TYPE) error { + processInput := func(container *[]SubnetPair, ips *[]net.IP, s string, inputType ipUtils.INPUT_TYPE) error { switch inputType { - case INPUT_TYPE_IP: + case ipUtils.INPUT_TYPE_IP: *ips = append(*ips, net.ParseIP(s)) - case INPUT_TYPE_CIDR: + case ipUtils.INPUT_TYPE_CIDR: pair := SubnetPair{ Raw: s, Parsed: parseCIDRs([]string{s}), } *container = append(*container, pair) - case INPUT_TYPE_IP_RANGE: + case ipUtils.INPUT_TYPE_IP_RANGE: cidrs, err := rangeToCidrs(s) if err == nil { pair := SubnetPair{ @@ -85,16 +86,16 @@ func CmdMatchIP( *container = append(*container, pair) } default: - return ErrInvalidInput + return ipUtils.ErrInvalidInput } return nil } - source_op := func(s string, inputType INPUT_TYPE) error { + source_op := func(s string, inputType ipUtils.INPUT_TYPE) error { return processInput(&sourceCIDRs, &sourceIPs, s, inputType) } - filter_op := func(s string, inputType INPUT_TYPE) error { + filter_op := func(s string, inputType ipUtils.INPUT_TYPE) error { return processInput(&filterCIDRs, &filterIPs, s, inputType) } @@ -102,17 +103,17 @@ func CmdMatchIP( for _, expr := range f.Expression { if expr == "-" && isStdin { - err = ProcessStringsFromStdin(filter_op) + err = ipUtils.ProcessStringsFromStdin(filter_op) if err != nil { return err } - } else if FileExists(expr) { - err = ProcessStringsFromFile(expr, filter_op) + } else if ipUtils.FileExists(expr) { + err = ipUtils.ProcessStringsFromFile(expr, filter_op) if err != nil { return err } } else { - err = InputHelper(expr, filter_op) + err = ipUtils.InputHelper(expr, filter_op) if err != nil { return err } @@ -121,17 +122,17 @@ func CmdMatchIP( for _, arg := range args { if arg == "-" && isStdin { - err = ProcessStringsFromStdin(source_op) + err = ipUtils.ProcessStringsFromStdin(source_op) if err != nil { return err } - } else if FileExists(arg) { - err = ProcessStringsFromFile(arg, source_op) + } else if ipUtils.FileExists(arg) { + err = ipUtils.ProcessStringsFromFile(arg, source_op) if err != nil { return err } } else { - err = InputHelper(arg, source_op) + err = ipUtils.InputHelper(arg, source_op) if err != nil { return err } @@ -148,13 +149,13 @@ func CmdMatchIP( func rangeToCidrs(r string) ([]string, error) { if strings.ContainsRune(r, ':') { - cidrs, err := CIDRsFromIP6RangeStrRaw(r) + cidrs, err := ipUtils.CIDRsFromIP6RangeStrRaw(r) if err != nil { return nil, err } return cidrs, nil } else { - cidrs, err := CIDRsFromIPRangeStrRaw(r) + cidrs, err := ipUtils.CIDRsFromIPRangeStrRaw(r) if err != nil { return nil, err } diff --git a/lib/cmd_prips.go b/lib/cmd_prips.go index 44b76d0a..fd0b9652 100644 --- a/lib/cmd_prips.go +++ b/lib/cmd_prips.go @@ -3,6 +3,7 @@ package lib import ( "os" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -42,5 +43,5 @@ func CmdPrips( return nil } - return IPListWriteFromAllSrcs(args) + return ipUtils.IPListWriteFromAllSrcs(args) } diff --git a/lib/cmd_randip.go b/lib/cmd_randip.go index c487bc00..8e7f1183 100644 --- a/lib/cmd_randip.go +++ b/lib/cmd_randip.go @@ -5,6 +5,7 @@ import ( "math/rand" "time" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -87,7 +88,7 @@ func CmdRandIP(f CmdRandIPFlags, args []string, printHelp func()) error { if f.EndIP == "" { f.EndIP = "255.255.255.255" } - if err := RandIP4RangeListWrite(f.StartIP, f.EndIP, f.N, f.ExcludeRes, f.Unique); err != nil { + if err := ipUtils.RandIP4RangeListWrite(f.StartIP, f.EndIP, f.N, f.ExcludeRes, f.Unique); err != nil { return err } } else if f.IPv6 { @@ -97,7 +98,7 @@ func CmdRandIP(f CmdRandIPFlags, args []string, printHelp func()) error { if f.EndIP == "" { f.EndIP = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff" } - if err := RandIP6RangeListWrite(f.StartIP, f.EndIP, f.N, f.ExcludeRes, f.Unique); err != nil { + if err := ipUtils.RandIP6RangeListWrite(f.StartIP, f.EndIP, f.N, f.ExcludeRes, f.Unique); err != nil { return err } } diff --git a/lib/cmd_range2cidr.go b/lib/cmd_range2cidr.go index 3e903454..40d58d93 100644 --- a/lib/cmd_range2cidr.go +++ b/lib/cmd_range2cidr.go @@ -7,6 +7,7 @@ import ( "os" "strings" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -84,7 +85,7 @@ func CmdRange2CIDR( // if so, try again against the next delim. if sepIdx != len(d)-1 && d[sepIdx] == ',' && - StrIsIPStr(d[:sepIdx]) { + ipUtils.StrIsIPStr(d[:sepIdx]) { nextSepIdx := strings.IndexAny(d[sepIdx+1:], ",\n") if nextSepIdx == -1 { sepIdx = len(d) @@ -113,7 +114,7 @@ func CmdRange2CIDR( } } if strings.IndexByte(rangeStr, ':') == -1 { - if cidrs, err := CIDRsFromIPRangeStrRaw(rangeStr); err == nil { + if cidrs, err := ipUtils.CIDRsFromIPRangeStrRaw(rangeStr); err == nil { for _, cidr := range cidrs { fmt.Printf("%s%s", cidr, rem) } @@ -121,7 +122,7 @@ func CmdRange2CIDR( goto noip } } else { - if cidrs, err := CIDRsFromIP6RangeStrRaw(rangeStr); err == nil { + if cidrs, err := ipUtils.CIDRsFromIP6RangeStrRaw(rangeStr); err == nil { for _, cidr := range cidrs { fmt.Printf("%s%s", cidr, rem) } @@ -164,14 +165,14 @@ func CmdRange2CIDR( if err != nil { // is it an IP range? if strings.IndexByte(arg, ':') == -1 { - if cidrs, err := CIDRsFromIPRangeStrRaw(arg); err == nil { + if cidrs, err := ipUtils.CIDRsFromIPRangeStrRaw(arg); err == nil { for _, cidr := range cidrs { fmt.Println(cidr) } continue } } else { - if cidrs, err := CIDRsFromIP6RangeStrRaw(arg); err == nil { + if cidrs, err := ipUtils.CIDRsFromIP6RangeStrRaw(arg); err == nil { for _, cidr := range cidrs { fmt.Println(cidr) } diff --git a/lib/cmd_range2ip.go b/lib/cmd_range2ip.go index 58a8f11e..18340e6b 100644 --- a/lib/cmd_range2ip.go +++ b/lib/cmd_range2ip.go @@ -3,6 +3,7 @@ package lib import ( "os" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -37,5 +38,5 @@ func CmdRange2IP(f CmdRange2IPFlags, args []string, printHelp func()) error { return nil } - return IPListWriteFrom(args, true, true, true, false, true) + return ipUtils.IPListWriteFrom(args, true, true, true, false, true) } diff --git a/lib/cmd_splitcidr.go b/lib/cmd_splitcidr.go index 28bd3cba..12d8932c 100644 --- a/lib/cmd_splitcidr.go +++ b/lib/cmd_splitcidr.go @@ -5,6 +5,7 @@ import ( "net" "strconv" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -53,7 +54,7 @@ func CmdSplitCIDR( } if ip.To4() != nil { - ipsubnet, err := IPSubnetFromCidr(cidrString) + ipsubnet, err := ipUtils.IPSubnetFromCidr(cidrString) if err != nil { return err } @@ -67,7 +68,7 @@ func CmdSplitCIDR( fmt.Println(s.ToCIDR()) } } else { - ipsubnet, err := IP6SubnetFromCidr(cidrString) + ipsubnet, err := ipUtils.IP6SubnetFromCidr(cidrString) if err != nil { return err } diff --git a/lib/cmd_tool_aggregate.go b/lib/cmd_tool_aggregate.go index 4be9a686..66444096 100644 --- a/lib/cmd_tool_aggregate.go +++ b/lib/cmd_tool_aggregate.go @@ -8,6 +8,7 @@ import ( "os" "strings" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -139,7 +140,7 @@ func CmdToolAggregate( parsedIPs = append(parsedIPs, ips...) } - adjacentCombined := combineAdjacent(stripOverlapping(list(parsedCIDRs))) + adjacentCombined := combineAdjacent(stripOverlapping(ipUtils.List(parsedCIDRs))) outlierIPs := make([]net.IP, 0) length := len(adjacentCombined) @@ -172,7 +173,7 @@ func CmdToolAggregate( // stripOverlapping returns a slice of CIDR structures with overlapping ranges // stripped. -func stripOverlapping(s []*CIDR) []*CIDR { +func stripOverlapping(s []*ipUtils.CIDR) []*ipUtils.CIDR { l := len(s) for i := 0; i < l-1; i++ { if s[i] == nil { @@ -187,14 +188,14 @@ func stripOverlapping(s []*CIDR) []*CIDR { return filter(s) } -func overlaps(a, b *CIDR) bool { +func overlaps(a, b *ipUtils.CIDR) bool { return (a.PrefixUint32() / (1 << (32 - b.MaskLen()))) == (b.PrefixUint32() / (1 << (32 - b.MaskLen()))) } // combineAdjacent returns a slice of CIDR structures with adjacent ranges // combined. -func combineAdjacent(s []*CIDR) []*CIDR { +func combineAdjacent(s []*ipUtils.CIDR) []*ipUtils.CIDR { for { found := false l := len(s) @@ -208,7 +209,7 @@ func combineAdjacent(s []*CIDR) []*CIDR { } if adjacent(s[i], s[j]) { c := fmt.Sprintf("%s/%d", s[i].IP.String(), s[i].MaskLen()-1) - s[i] = newCidr(c) + s[i] = ipUtils.NewCidr(c) s[j] = nil found = true } @@ -222,13 +223,13 @@ func combineAdjacent(s []*CIDR) []*CIDR { return filter(s) } -func adjacent(a, b *CIDR) bool { +func adjacent(a, b *ipUtils.CIDR) bool { return (a.MaskLen() == b.MaskLen()) && (a.PrefixUint32()%(2<<(32-b.MaskLen())) == 0) && (b.PrefixUint32()-a.PrefixUint32() == (1 << (32 - a.MaskLen()))) } -func filter(s []*CIDR) []*CIDR { +func filter(s []*ipUtils.CIDR) []*ipUtils.CIDR { out := s[:0] for _, x := range s { if x != nil { diff --git a/lib/cmd_tool_ip2n.go b/lib/cmd_tool_ip2n.go index 62d37449..297a04a5 100644 --- a/lib/cmd_tool_ip2n.go +++ b/lib/cmd_tool_ip2n.go @@ -2,6 +2,8 @@ package lib import ( "fmt" + + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -27,7 +29,7 @@ func CmdToolIP2n(f CmdToolIP2nFlags, args []string, printHelp func()) error { } ipString := args[0] - res, err := IPtoDecimalStr(ipString) + res, err := ipUtils.IPtoDecimalStr(ipString) if err != nil { return err } diff --git a/lib/cmd_tool_isV4In6.go b/lib/cmd_tool_isV4In6.go index 1a7f267d..fc2ff6e1 100644 --- a/lib/cmd_tool_isV4In6.go +++ b/lib/cmd_tool_isV4In6.go @@ -2,8 +2,10 @@ package lib import ( "fmt" - "github.com/spf13/pflag" "net/netip" + + "github.com/ipinfo/cli/lib/ipUtils" + "github.com/spf13/pflag" ) // CmdToolIsV4In6Flags are flags expected by CmdToolIsV4In6 @@ -27,20 +29,20 @@ func CmdToolIsV4In6(f CmdToolIsV4In6Flags, args []string, printHelp func()) erro return nil } - op := func(input string, inputType INPUT_TYPE) error { + op := func(input string, inputType ipUtils.INPUT_TYPE) error { switch inputType { - case INPUT_TYPE_IP: + case ipUtils.INPUT_TYPE_IP: addr, err := netip.ParseAddr(input) if err != nil { - return ErrInvalidInput + return ipUtils.ErrInvalidInput } fmt.Printf("%s,%t\n", input, addr.Is4In6()) default: - return ErrInvalidInput + return ipUtils.ErrInvalidInput } return nil } - return GetInputFrom(args, true, true, op) + return ipUtils.GetInputFrom(args, true, true, op) } diff --git a/lib/cmd_tool_is_global_unicast.go b/lib/cmd_tool_is_global_unicast.go index 2d3e6cee..3ae422ea 100644 --- a/lib/cmd_tool_is_global_unicast.go +++ b/lib/cmd_tool_is_global_unicast.go @@ -4,6 +4,7 @@ import ( "fmt" "net" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -35,18 +36,18 @@ func CmdToolIsGlobalUnicast( return nil } - actionFunc := func(input string, inputType INPUT_TYPE) error { + actionFunc := func(input string, inputType ipUtils.INPUT_TYPE) error { switch inputType { - case INPUT_TYPE_IP: + case ipUtils.INPUT_TYPE_IP: ActionIsGlobalUnicast(input) - case INPUT_TYPE_IP_RANGE: + case ipUtils.INPUT_TYPE_IP_RANGE: ActionIsGlobalUnicastRange(input) - case INPUT_TYPE_CIDR: + case ipUtils.INPUT_TYPE_CIDR: ActionIsGlobalUnicastCIDR(input) } return nil } - err := GetInputFrom(args, true, true, actionFunc) + err := ipUtils.GetInputFrom(args, true, true, actionFunc) if err != nil { fmt.Println(err) return err @@ -63,7 +64,7 @@ func ActionIsGlobalUnicast(input string) { } func ActionIsGlobalUnicastRange(input string) { - ipRange, err := IPRangeStrFromStr(input) + ipRange, err := ipUtils.IPRangeStrFromStr(input) if err != nil { return } diff --git a/lib/cmd_tool_is_interface_local_multicast.go b/lib/cmd_tool_is_interface_local_multicast.go index 0adcb7a3..6813bfb9 100644 --- a/lib/cmd_tool_is_interface_local_multicast.go +++ b/lib/cmd_tool_is_interface_local_multicast.go @@ -4,6 +4,7 @@ import ( "fmt" "net" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -35,18 +36,18 @@ func CmdToolIsInterfaceLocalMulticast( return nil } - actionFunc := func(input string, inputType INPUT_TYPE) error { + actionFunc := func(input string, inputType ipUtils.INPUT_TYPE) error { switch inputType { - case INPUT_TYPE_IP: + case ipUtils.INPUT_TYPE_IP: ActionIsInterfaceLocalMulticast(input) - case INPUT_TYPE_IP_RANGE: + case ipUtils.INPUT_TYPE_IP_RANGE: ActionIsInterfaceLocalMulticastRange(input) - case INPUT_TYPE_CIDR: + case ipUtils.INPUT_TYPE_CIDR: ActionIsInterfaceLocalMulticastCIDR(input) } return nil } - err := GetInputFrom(args, true, true, actionFunc) + err := ipUtils.GetInputFrom(args, true, true, actionFunc) if err != nil { fmt.Println(err) return err @@ -63,7 +64,7 @@ func ActionIsInterfaceLocalMulticast(input string) { } func ActionIsInterfaceLocalMulticastRange(input string) { - ipRange, err := IPRangeStrFromStr(input) + ipRange, err := ipUtils.IPRangeStrFromStr(input) if err != nil { return } diff --git a/lib/cmd_tool_is_link_local_multicast.go b/lib/cmd_tool_is_link_local_multicast.go index ace0d7bd..40bf8161 100644 --- a/lib/cmd_tool_is_link_local_multicast.go +++ b/lib/cmd_tool_is_link_local_multicast.go @@ -4,6 +4,7 @@ import ( "fmt" "net" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -35,18 +36,18 @@ func CmdToolIsLinkLocalMulticast( return nil } - actionFunc := func(input string, inputType INPUT_TYPE) error { + actionFunc := func(input string, inputType ipUtils.INPUT_TYPE) error { switch inputType { - case INPUT_TYPE_IP: + case ipUtils.INPUT_TYPE_IP: ActionIsLinkLocalMulticast(input) - case INPUT_TYPE_IP_RANGE: + case ipUtils.INPUT_TYPE_IP_RANGE: ActionIsLinkLocalMulticastRange(input) - case INPUT_TYPE_CIDR: + case ipUtils.INPUT_TYPE_CIDR: ActionIsLinkLocalMulticastCIDR(input) } return nil } - err := GetInputFrom(args, true, true, actionFunc) + err := ipUtils.GetInputFrom(args, true, true, actionFunc) if err != nil { fmt.Println(err) return err @@ -63,7 +64,7 @@ func ActionIsLinkLocalMulticast(input string) { } func ActionIsLinkLocalMulticastRange(input string) { - ipRange, err := IPRangeStrFromStr(input) + ipRange, err := ipUtils.IPRangeStrFromStr(input) if err != nil { return } diff --git a/lib/cmd_tool_is_link_local_unicast.go b/lib/cmd_tool_is_link_local_unicast.go index c6c627b8..e5dc874f 100644 --- a/lib/cmd_tool_is_link_local_unicast.go +++ b/lib/cmd_tool_is_link_local_unicast.go @@ -4,6 +4,7 @@ import ( "fmt" "net" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -35,18 +36,18 @@ func CmdToolIsLinkLocalUnicast( return nil } - actionFunc := func(input string, inputType INPUT_TYPE) error { + actionFunc := func(input string, inputType ipUtils.INPUT_TYPE) error { switch inputType { - case INPUT_TYPE_IP: + case ipUtils.INPUT_TYPE_IP: ActionIsLinkLocalUnicast(input) - case INPUT_TYPE_IP_RANGE: + case ipUtils.INPUT_TYPE_IP_RANGE: ActionIsLinkLocalUnicastRange(input) - case INPUT_TYPE_CIDR: + case ipUtils.INPUT_TYPE_CIDR: ActionIsLinkLocalUnicastCIDR(input) } return nil } - err := GetInputFrom(args, true, true, actionFunc) + err := ipUtils.GetInputFrom(args, true, true, actionFunc) if err != nil { fmt.Println(err) return err @@ -63,7 +64,7 @@ func ActionIsLinkLocalUnicast(input string) { } func ActionIsLinkLocalUnicastRange(input string) { - ipRange, err := IPRangeStrFromStr(input) + ipRange, err := ipUtils.IPRangeStrFromStr(input) if err != nil { return } diff --git a/lib/cmd_tool_is_loopback.go b/lib/cmd_tool_is_loopback.go index a021214c..fed2e607 100644 --- a/lib/cmd_tool_is_loopback.go +++ b/lib/cmd_tool_is_loopback.go @@ -4,6 +4,7 @@ import ( "fmt" "net" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -35,18 +36,18 @@ func CmdToolIsLoopback( return nil } - actionFuncLoopBack := func(input string, inputType INPUT_TYPE) error { + actionFuncLoopBack := func(input string, inputType ipUtils.INPUT_TYPE) error { switch inputType { - case INPUT_TYPE_IP: + case ipUtils.INPUT_TYPE_IP: ActionForIsLoopBack(input) - case INPUT_TYPE_IP_RANGE: + case ipUtils.INPUT_TYPE_IP_RANGE: ActionForISLoopBackRange(input) - case INPUT_TYPE_CIDR: + case ipUtils.INPUT_TYPE_CIDR: ActionForIsLoopBackCIDR(input) } return nil } - err := GetInputFrom(args, true, true, actionFuncLoopBack) + err := ipUtils.GetInputFrom(args, true, true, actionFuncLoopBack) if err != nil { fmt.Println(err) } @@ -62,7 +63,7 @@ func ActionForIsLoopBack(input string) { } func ActionForISLoopBackRange(input string) { - ipRange, err := IPRangeStrFromStr(input) + ipRange, err := ipUtils.IPRangeStrFromStr(input) if err != nil { return } diff --git a/lib/cmd_tool_is_multicast.go b/lib/cmd_tool_is_multicast.go index ae6a9385..1a9fd8f9 100644 --- a/lib/cmd_tool_is_multicast.go +++ b/lib/cmd_tool_is_multicast.go @@ -4,6 +4,7 @@ import ( "fmt" "net" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -35,18 +36,18 @@ func CmdToolIsMulticast( return nil } - actionFunc := func(input string, inputType INPUT_TYPE) error { + actionFunc := func(input string, inputType ipUtils.INPUT_TYPE) error { switch inputType { - case INPUT_TYPE_IP: + case ipUtils.INPUT_TYPE_IP: ActionForIsMulticast(input) - case INPUT_TYPE_IP_RANGE: + case ipUtils.INPUT_TYPE_IP_RANGE: ActionForIsMulticastRange(input) - case INPUT_TYPE_CIDR: + case ipUtils.INPUT_TYPE_CIDR: ActionForIsMulticastCIDR(input) } return nil } - err := GetInputFrom(args, true, true, actionFunc) + err := ipUtils.GetInputFrom(args, true, true, actionFunc) if err != nil { fmt.Println(err) return err @@ -63,7 +64,7 @@ func ActionForIsMulticast(input string) { } func ActionForIsMulticastRange(input string) { - ipRange, err := IPRangeStrFromStr(input) + ipRange, err := ipUtils.IPRangeStrFromStr(input) if err != nil { return } diff --git a/lib/cmd_tool_is_one_ip.go b/lib/cmd_tool_is_one_ip.go index c3031b54..483bd487 100644 --- a/lib/cmd_tool_is_one_ip.go +++ b/lib/cmd_tool_is_one_ip.go @@ -2,8 +2,10 @@ package lib import ( "fmt" - "github.com/spf13/pflag" "net/netip" + + "github.com/ipinfo/cli/lib/ipUtils" + "github.com/spf13/pflag" ) // CmdToolIsOneIpFlags are flags expected by CmdToolIP2n @@ -26,31 +28,31 @@ func CmdToolIsOneIp(f CmdToolIsOneIpFlags, args []string, printHelp func()) erro return nil } - op := func(input string, inputType INPUT_TYPE) error { + op := func(input string, inputType ipUtils.INPUT_TYPE) error { isOneIp := false switch inputType { - case INPUT_TYPE_CIDR: + case ipUtils.INPUT_TYPE_CIDR: prefix, err := netip.ParsePrefix(input) if err != nil { - return ErrInvalidInput + return ipUtils.ErrInvalidInput } isOneIp = prefix.IsSingleIP() - case INPUT_TYPE_IP: + case ipUtils.INPUT_TYPE_IP: isOneIp = true - case INPUT_TYPE_IP_RANGE: + case ipUtils.INPUT_TYPE_IP_RANGE: isOneIp = ipRangeContainsExactlyOneIP(input) default: - return ErrInvalidInput + return ipUtils.ErrInvalidInput } fmt.Printf("%s,%v\n", input, isOneIp) return nil } - return GetInputFrom(args, true, true, op) + return ipUtils.GetInputFrom(args, true, true, op) } func ipRangeContainsExactlyOneIP(ipRangeStr string) bool { - ipRange, err := IPRangeStrFromStr(ipRangeStr) + ipRange, err := ipUtils.IPRangeStrFromStr(ipRangeStr) if err != nil { return false } diff --git a/lib/cmd_tool_is_unspecified.go b/lib/cmd_tool_is_unspecified.go index b38284cb..69e7457d 100644 --- a/lib/cmd_tool_is_unspecified.go +++ b/lib/cmd_tool_is_unspecified.go @@ -4,6 +4,7 @@ import ( "fmt" "net" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -35,14 +36,14 @@ func CmdToolIsUnspecified( return nil } - actionFunc := func(input string, inputType INPUT_TYPE) error { + actionFunc := func(input string, inputType ipUtils.INPUT_TYPE) error { switch inputType { - case INPUT_TYPE_IP: + case ipUtils.INPUT_TYPE_IP: ActionIsUnspecified(input) } return nil } - err := GetInputFrom(args, true, true, actionFunc) + err := ipUtils.GetInputFrom(args, true, true, actionFunc) if err != nil { fmt.Println(err) return err diff --git a/lib/cmd_tool_is_v4.go b/lib/cmd_tool_is_v4.go index 7bc6015d..06cb2bb3 100644 --- a/lib/cmd_tool_is_v4.go +++ b/lib/cmd_tool_is_v4.go @@ -4,6 +4,7 @@ import ( "fmt" "net" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -35,18 +36,18 @@ func CmdToolIsV4( return nil } - actionFunc := func(input string, inputType INPUT_TYPE) error { + actionFunc := func(input string, inputType ipUtils.INPUT_TYPE) error { switch inputType { - case INPUT_TYPE_IP: + case ipUtils.INPUT_TYPE_IP: ActionForIsV4(input) - case INPUT_TYPE_IP_RANGE: + case ipUtils.INPUT_TYPE_IP_RANGE: ActionForIsV4Range(input) - case INPUT_TYPE_CIDR: + case ipUtils.INPUT_TYPE_CIDR: ActionForIsV4CIDR(input) } return nil } - err := GetInputFrom(args, true, true, actionFunc) + err := ipUtils.GetInputFrom(args, true, true, actionFunc) if err != nil { fmt.Println(err) } @@ -62,7 +63,7 @@ func ActionForIsV4(input string) { } func ActionForIsV4Range(input string) { - ipRange, err := IPRangeStrFromStr(input) + ipRange, err := ipUtils.IPRangeStrFromStr(input) if err != nil { return } diff --git a/lib/cmd_tool_is_v6.go b/lib/cmd_tool_is_v6.go index a7cd2bf8..a124298e 100644 --- a/lib/cmd_tool_is_v6.go +++ b/lib/cmd_tool_is_v6.go @@ -4,6 +4,7 @@ import ( "fmt" "net" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -35,18 +36,18 @@ func CmdToolIsV6( return nil } - actionFunc := func(input string, inputType INPUT_TYPE) error { + actionFunc := func(input string, inputType ipUtils.INPUT_TYPE) error { switch inputType { - case INPUT_TYPE_IP: + case ipUtils.INPUT_TYPE_IP: ActionForIsV6(input) - case INPUT_TYPE_IP_RANGE: + case ipUtils.INPUT_TYPE_IP_RANGE: ActionForIsV6Range(input) - case INPUT_TYPE_CIDR: + case ipUtils.INPUT_TYPE_CIDR: ActionForIsV6CIDR(input) } return nil } - err := GetInputFrom(args, true, true, actionFunc) + err := ipUtils.GetInputFrom(args, true, true, actionFunc) if err != nil { fmt.Println(err) } @@ -62,7 +63,7 @@ func ActionForIsV6(input string) { } func ActionForIsV6Range(input string) { - ipRange, err := IPRangeStrFromStr(input) + ipRange, err := ipUtils.IPRangeStrFromStr(input) if err != nil { return } diff --git a/lib/cmd_tool_lower.go b/lib/cmd_tool_lower.go index 3d4dba1d..0247b3e5 100644 --- a/lib/cmd_tool_lower.go +++ b/lib/cmd_tool_lower.go @@ -4,6 +4,7 @@ import ( "fmt" "net" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -35,21 +36,21 @@ func CmdToolLower( return nil } - actionFunc := func(input string, inputType INPUT_TYPE) error { + actionFunc := func(input string, inputType ipUtils.INPUT_TYPE) error { var err error switch inputType { - case INPUT_TYPE_IP: + case ipUtils.INPUT_TYPE_IP: fmt.Println(input) - case INPUT_TYPE_IP_RANGE: + case ipUtils.INPUT_TYPE_IP_RANGE: err = ActionForRange(input) - case INPUT_TYPE_CIDR: + case ipUtils.INPUT_TYPE_CIDR: err = ActionForCIDR(input) default: - return ErrInvalidInput + return ipUtils.ErrInvalidInput } return err } - err := GetInputFrom(args, true, true, actionFunc) + err := ipUtils.GetInputFrom(args, true, true, actionFunc) if err != nil { fmt.Println(err) } @@ -58,7 +59,7 @@ func CmdToolLower( } func ActionForRange(input string) error { - ipRange, err := IPRangeStrFromStr(input) + ipRange, err := ipUtils.IPRangeStrFromStr(input) if err != nil { return err } @@ -74,10 +75,10 @@ func ActionForCIDR(input string) error { var lower string if ipnet.IP.To4() != nil { - ipRange, _ := IPRangeStrFromCIDR(input) + ipRange, _ := ipUtils.IPRangeStrFromCIDR(input) lower = ipRange.Start } else if ipnet.IP.To16() != nil { - ipRange, _ := IP6RangeStrFromCIDR(input) + ipRange, _ := ipUtils.IP6RangeStrFromCIDR(input) lower = ipRange.Start } diff --git a/lib/cmd_tool_n2ip.go b/lib/cmd_tool_n2ip.go index e4378151..ba78ad1b 100644 --- a/lib/cmd_tool_n2ip.go +++ b/lib/cmd_tool_n2ip.go @@ -3,6 +3,8 @@ package lib import ( "errors" "fmt" + + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -36,7 +38,7 @@ func CmdToolN2IP(f CmdToolN2IPFlags, args []string, printHelp func()) error { expression := args[0] if IsInvalidInfix(expression) { - return ErrInvalidInput + return ipUtils.ErrInvalidInput } // NOTE: n2ip also accepts an expression, hence the tokenization and evaluation. @@ -57,7 +59,7 @@ func CmdToolN2IP(f CmdToolN2IPFlags, args []string, printHelp func()) error { // Convert to IP // Precision should be 0 i.e. number of digits after decimal // as ip cannot be derived from a float - res, err := DecimalStrToIP(result.Text('f', 0), f.ipv6) + res, err := ipUtils.DecimalStrToIP(result.Text('f', 0), f.ipv6) if err != nil { return errors.New("number is too large") } diff --git a/lib/cmd_tool_n2ip6.go b/lib/cmd_tool_n2ip6.go index d4e5f097..b4e407c7 100644 --- a/lib/cmd_tool_n2ip6.go +++ b/lib/cmd_tool_n2ip6.go @@ -3,6 +3,8 @@ package lib import ( "errors" "fmt" + + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -29,7 +31,7 @@ func CmdToolN2IP6(f CmdToolN2IP6Flags, args []string, printHelp func()) error { expression := args[0] if IsInvalidInfix(expression) { - return ErrInvalidInput + return ipUtils.ErrInvalidInput } // NOTE: n2ip6 also accepts an expression, hence the tokenization and evaluation. @@ -49,7 +51,7 @@ func CmdToolN2IP6(f CmdToolN2IP6Flags, args []string, printHelp func()) error { // Convert to IP // Precision should be 0 i.e. number of digits after decimal // as ip cannot be derived from a float - res, err := DecimalStrToIP(result.Text('f', 0), true) + res, err := ipUtils.DecimalStrToIP(result.Text('f', 0), true) if err != nil { return errors.New("number is too large") } diff --git a/lib/cmd_tool_next.go b/lib/cmd_tool_next.go index 20cd0a7e..b56a9159 100644 --- a/lib/cmd_tool_next.go +++ b/lib/cmd_tool_next.go @@ -2,6 +2,8 @@ package lib import ( "fmt" + + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -33,15 +35,15 @@ func CmdToolNext( return nil } - actionFunc := func(input string, inputType INPUT_TYPE) error { + actionFunc := func(input string, inputType ipUtils.INPUT_TYPE) error { switch inputType { - case INPUT_TYPE_IP: - newIP := ipAdd(input, 1) + case ipUtils.INPUT_TYPE_IP: + newIP := ipUtils.IpAdd(input, 1) fmt.Println(newIP) } return nil } - err := GetInputFrom(args, true, true, actionFunc) + err := ipUtils.GetInputFrom(args, true, true, actionFunc) if err != nil { fmt.Println(err) } diff --git a/lib/cmd_tool_prefix_addr.go b/lib/cmd_tool_prefix_addr.go index 8786961a..6a1138b3 100644 --- a/lib/cmd_tool_prefix_addr.go +++ b/lib/cmd_tool_prefix_addr.go @@ -4,6 +4,7 @@ import ( "fmt" "net/netip" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -25,9 +26,9 @@ func CmdToolPrefixAddr(f CmdToolPrefixAddrFlags, args []string, printHelp func() return nil } - op := func(input string, inputType INPUT_TYPE) error { + op := func(input string, inputType ipUtils.INPUT_TYPE) error { switch inputType { - case INPUT_TYPE_CIDR: + case ipUtils.INPUT_TYPE_CIDR: prefix, err := netip.ParsePrefix(input) if err != nil { return err @@ -37,5 +38,5 @@ func CmdToolPrefixAddr(f CmdToolPrefixAddrFlags, args []string, printHelp func() return nil } - return GetInputFrom(args, true, true, op) + return ipUtils.GetInputFrom(args, true, true, op) } diff --git a/lib/cmd_tool_prefix_bits.go b/lib/cmd_tool_prefix_bits.go index 01da4a54..f106adbd 100644 --- a/lib/cmd_tool_prefix_bits.go +++ b/lib/cmd_tool_prefix_bits.go @@ -4,6 +4,7 @@ import ( "fmt" "net/netip" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -25,9 +26,9 @@ func CmdToolPrefixBits(f CmdToolPrefixBitsFlags, args []string, printHelp func() return nil } - op := func(input string, inputType INPUT_TYPE) error { + op := func(input string, inputType ipUtils.INPUT_TYPE) error { switch inputType { - case INPUT_TYPE_CIDR: + case ipUtils.INPUT_TYPE_CIDR: prefix, err := netip.ParsePrefix(input) if err != nil { return err @@ -37,5 +38,5 @@ func CmdToolPrefixBits(f CmdToolPrefixBitsFlags, args []string, printHelp func() return nil } - return GetInputFrom(args, true, true, op) + return ipUtils.GetInputFrom(args, true, true, op) } diff --git a/lib/cmd_tool_prefix_masked.go b/lib/cmd_tool_prefix_masked.go index 090049b2..0aef0ab5 100644 --- a/lib/cmd_tool_prefix_masked.go +++ b/lib/cmd_tool_prefix_masked.go @@ -4,6 +4,7 @@ import ( "fmt" "net/netip" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -25,9 +26,9 @@ func CmdToolPrefixMasked(f CmdToolPrefixMaskedFlags, args []string, printHelp fu return nil } - op := func(input string, inputType INPUT_TYPE) error { + op := func(input string, inputType ipUtils.INPUT_TYPE) error { switch inputType { - case INPUT_TYPE_CIDR: + case ipUtils.INPUT_TYPE_CIDR: prefix, err := netip.ParsePrefix(input) if err != nil { return err @@ -37,5 +38,5 @@ func CmdToolPrefixMasked(f CmdToolPrefixMaskedFlags, args []string, printHelp fu return nil } - return GetInputFrom(args, true, true, op) + return ipUtils.GetInputFrom(args, true, true, op) } diff --git a/lib/cmd_tool_prefix_valid.go b/lib/cmd_tool_prefix_valid.go index 0a1b67e7..5ca26780 100644 --- a/lib/cmd_tool_prefix_valid.go +++ b/lib/cmd_tool_prefix_valid.go @@ -4,6 +4,7 @@ import ( "fmt" "net/netip" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -25,9 +26,9 @@ func CmdToolPrefixIsValid(f CmdToolPrefixIsValidFlags, args []string, printHelp return nil } - op := func(input string, inputType INPUT_TYPE) error { + op := func(input string, inputType ipUtils.INPUT_TYPE) error { switch inputType { - case INPUT_TYPE_CIDR: + case ipUtils.INPUT_TYPE_CIDR: prefix, err := netip.ParsePrefix(input) if err != nil { return err @@ -37,5 +38,5 @@ func CmdToolPrefixIsValid(f CmdToolPrefixIsValidFlags, args []string, printHelp return nil } - return GetInputFrom(args, true, true, op) + return ipUtils.GetInputFrom(args, true, true, op) } diff --git a/lib/cmd_tool_prev.go b/lib/cmd_tool_prev.go index a6ff3a54..08f654a0 100644 --- a/lib/cmd_tool_prev.go +++ b/lib/cmd_tool_prev.go @@ -2,6 +2,8 @@ package lib import ( "fmt" + + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -33,15 +35,15 @@ func CmdToolPrev( return nil } - actionFunc := func(input string, inputType INPUT_TYPE) error { + actionFunc := func(input string, inputType ipUtils.INPUT_TYPE) error { switch inputType { - case INPUT_TYPE_IP: - newIP := ipAdd(input, -1) + case ipUtils.INPUT_TYPE_IP: + newIP := ipUtils.IpAdd(input, -1) fmt.Println(newIP) } return nil } - err := GetInputFrom(args, true, true, actionFunc) + err := ipUtils.GetInputFrom(args, true, true, actionFunc) if err != nil { fmt.Println(err) } diff --git a/lib/cmd_tool_unmap.go b/lib/cmd_tool_unmap.go index 3ac3418b..4285b2f2 100644 --- a/lib/cmd_tool_unmap.go +++ b/lib/cmd_tool_unmap.go @@ -2,8 +2,10 @@ package lib import ( "fmt" - "github.com/spf13/pflag" "net/netip" + + "github.com/ipinfo/cli/lib/ipUtils" + "github.com/spf13/pflag" ) // CmdToolUnmapFlags are flags expected by CmdToolUnmap @@ -27,9 +29,9 @@ func CmdToolUnmap(f CmdToolUnmapFlags, args []string, printHelp func()) error { return nil } - op := func(input string, input_type INPUT_TYPE) error { + op := func(input string, input_type ipUtils.INPUT_TYPE) error { switch input_type { - case INPUT_TYPE_IP: + case ipUtils.INPUT_TYPE_IP: addr, err := netip.ParseAddr(input) if err != nil { return err @@ -39,5 +41,5 @@ func CmdToolUnmap(f CmdToolUnmapFlags, args []string, printHelp func()) error { return nil } - return GetInputFrom(args, true, true, op) + return ipUtils.GetInputFrom(args, true, true, op) } diff --git a/lib/cmd_tool_upper.go b/lib/cmd_tool_upper.go index 168c0594..acbed34a 100644 --- a/lib/cmd_tool_upper.go +++ b/lib/cmd_tool_upper.go @@ -4,6 +4,7 @@ import ( "fmt" "net" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -35,21 +36,21 @@ func CmdToolUpper( return nil } - actionFunc := func(input string, inputType INPUT_TYPE) error { + actionFunc := func(input string, inputType ipUtils.INPUT_TYPE) error { var err error switch inputType { - case INPUT_TYPE_IP: + case ipUtils.INPUT_TYPE_IP: fmt.Println(input) - case INPUT_TYPE_IP_RANGE: + case ipUtils.INPUT_TYPE_IP_RANGE: err = ActionForRangeUpper(input) - case INPUT_TYPE_CIDR: + case ipUtils.INPUT_TYPE_CIDR: err = ActionForCIDRUpper(input) default: - return ErrInvalidInput + return ipUtils.ErrInvalidInput } return err } - err := GetInputFrom(args, true, true, actionFunc) + err := ipUtils.GetInputFrom(args, true, true, actionFunc) if err != nil { fmt.Println(err) } @@ -58,7 +59,7 @@ func CmdToolUpper( } func ActionForRangeUpper(input string) error { - ipRange, err := IPRangeStrFromStr(input) + ipRange, err := ipUtils.IPRangeStrFromStr(input) if err != nil { return err } @@ -74,10 +75,10 @@ func ActionForCIDRUpper(input string) error { var upper string if ipnet.IP.To4() != nil { - ipRange, _ := IPRangeStrFromCIDR(input) + ipRange, _ := ipUtils.IPRangeStrFromCIDR(input) upper = ipRange.End } else if ipnet.IP.To16() != nil { - ipRange, _ := IP6RangeStrFromCIDR(input) + ipRange, _ := ipUtils.IP6RangeStrFromCIDR(input) upper = ipRange.End } diff --git a/lib/cmd_tool_valid.go b/lib/cmd_tool_valid.go index 6fe3ed01..97fbd2f7 100644 --- a/lib/cmd_tool_valid.go +++ b/lib/cmd_tool_valid.go @@ -2,6 +2,8 @@ package lib import ( "fmt" + + "github.com/ipinfo/cli/lib/ipUtils" "github.com/spf13/pflag" ) @@ -27,9 +29,9 @@ func CmdToolIsValid(f CmdToolIsValidFlags, args []string, printHelp func()) erro return nil } - op := func(input string, input_type INPUT_TYPE) error { + op := func(input string, input_type ipUtils.INPUT_TYPE) error { switch input_type { - case INPUT_TYPE_IP: + case ipUtils.INPUT_TYPE_IP: fmt.Printf("%s,%v\n", input, true) default: fmt.Printf("%s,%v\n", input, false) @@ -37,5 +39,5 @@ func CmdToolIsValid(f CmdToolIsValidFlags, args []string, printHelp func()) erro return nil } - return GetInputFrom(args, true, true, op) + return ipUtils.GetInputFrom(args, true, true, op) } diff --git a/lib/init.go b/lib/init.go deleted file mode 100644 index 3626d320..00000000 --- a/lib/init.go +++ /dev/null @@ -1,43 +0,0 @@ -package lib - -import "regexp" - -func init() { - bogonIP4List = GetBogonRange4() - bogonIP6List = GetBogonRange6() - - // IP - ipV4Regex = regexp.MustCompilePOSIX(IPv4RegexPattern) - ipV6Regex = regexp.MustCompilePOSIX(IPv6RegexPattern) - ipRegex = regexp.MustCompilePOSIX(IPv4RegexPattern + "|" + IPv6RegexPattern) - - // IP and CIDR - v4IpCidrRegex = regexp.MustCompilePOSIX(IPv4RegexPattern + "|" + IPv4CIDRRegexPattern) - v6IpCidrRegex = regexp.MustCompilePOSIX(IPv6RegexPattern + "|" + IPv6CIDRRegexPattern) - ipCidrRegex = regexp.MustCompilePOSIX(IPv4RegexPattern + "|" + IPv6RegexPattern + "|" + IPv4CIDRRegexPattern + "|" + IPv6CIDRRegexPattern) - - // IP and Range - v4IpRangeRegex = regexp.MustCompilePOSIX(IPv4RegexPattern + "|" + IPv4RangeRegexPattern) - v6IpRangeRegex = regexp.MustCompilePOSIX(IPv6RegexPattern + "|" + IPv6RangeRegexPattern) - ipRangeRegex = regexp.MustCompilePOSIX(IPv4RegexPattern + "|" + IPv6RegexPattern + "|" + IPv4RangeRegexPattern + "|" + IPv6RangeRegexPattern) - - // IP, CIDR and Range - v4IpSubnetRegex = regexp.MustCompilePOSIX(IPv4RegexPattern + "|" + IPv4CIDRRegexPattern + "|" + IPv4RangeRegexPattern) - v6IpSubnetRegex = regexp.MustCompilePOSIX(IPv6RegexPattern + "|" + IPv6RangeRegexPattern + "|" + IPv6CIDRRegexPattern) - ipSubnetRegex = regexp.MustCompilePOSIX(IPv4RegexPattern + "|" + IPv6RegexPattern + "|" + IPv4CIDRRegexPattern + "|" + IPv4RangeRegexPattern + "|" + IPv6RangeRegexPattern + "|" + IPv6CIDRRegexPattern) - - // CIDR - v4CidrRegex = regexp.MustCompilePOSIX(IPv4CIDRRegexPattern) - v6CidrRegex = regexp.MustCompilePOSIX(IPv6CIDRRegexPattern) - cidrRegex = regexp.MustCompilePOSIX(IPv4CIDRRegexPattern + "|" + IPv6CIDRRegexPattern) - - // Range - v4RangeRegex = regexp.MustCompilePOSIX(IPv4RangeRegexPattern) - v6RangeRegex = regexp.MustCompilePOSIX(IPv6RangeRegexPattern) - rangeRegex = regexp.MustCompilePOSIX(IPv4RangeRegexPattern + "|" + IPv6RangeRegexPattern) - - // CIDR and Range - v4SubnetRegex = regexp.MustCompilePOSIX(IPv4RangeRegexPattern + "|" + IPv4CIDRRegexPattern) - v6SubnetRegex = regexp.MustCompilePOSIX(IPv6RangeRegexPattern + "|" + IPv6CIDRRegexPattern) - subnetRegex = regexp.MustCompilePOSIX(IPv4RangeRegexPattern + "|" + IPv4CIDRRegexPattern + "|" + IPv6RangeRegexPattern + "|" + IPv6CIDRRegexPattern) -} diff --git a/lib/asn_str.go b/lib/ipUtils/asn_str.go similarity index 96% rename from lib/asn_str.go rename to lib/ipUtils/asn_str.go index fdac0ca5..427c9474 100644 --- a/lib/asn_str.go +++ b/lib/ipUtils/asn_str.go @@ -1,4 +1,4 @@ -package lib +package ipUtils import ( "strconv" diff --git a/lib/bogon.go b/lib/ipUtils/bogon.go similarity index 93% rename from lib/bogon.go rename to lib/ipUtils/bogon.go index acff66b1..9cf86919 100644 --- a/lib/bogon.go +++ b/lib/ipUtils/bogon.go @@ -1,8 +1,8 @@ -package lib +package ipUtils // these lists are initialized on startup inside this pkg's `init`. -var bogonIP4List []IPRange -var bogonIP6List []IP6Range +var BogonIP4List []IPRange +var BogonIP6List []IP6Range // list of bogon IPv4 IPs. var BogonRange4Str []string = []string{ @@ -84,7 +84,7 @@ func GetBogonRange4() []IPRange { // IsBogonIP4 returns true if IPv4 is a BogonIP. func IsBogonIP4(ip uint32) bool { - for _, bogonIP := range bogonIP4List { + for _, bogonIP := range BogonIP4List { if ip >= uint32(bogonIP.Start) && ip <= uint32(bogonIP.End) { return true } @@ -108,7 +108,7 @@ func GetBogonRange6() []IP6Range { // IsBogonIP6 returns true if IPv6 is a BogonIP. func IsBogonIP6(ip6 U128) bool { - for _, bogonIP := range bogonIP6List { + for _, bogonIP := range BogonIP6List { if (ip6.Cmp(bogonIP.Start.N) >= 0) && (ip6.Cmp(bogonIP.End.N) <= 0) { return true } diff --git a/lib/cidr.go b/lib/ipUtils/cidr.go similarity index 91% rename from lib/cidr.go rename to lib/ipUtils/cidr.go index 06b96d81..eada680e 100644 --- a/lib/cidr.go +++ b/lib/ipUtils/cidr.go @@ -1,4 +1,4 @@ -package lib +package ipUtils import ( "bytes" @@ -15,7 +15,7 @@ type CIDR struct { } // newCidr creates a newCidr CIDR structure. -func newCidr(s string) *CIDR { +func NewCidr(s string) *CIDR { ip, ipnet, err := net.ParseCIDR(s) if err != nil { panic(err) @@ -48,10 +48,10 @@ func (c *CIDR) Size() int { } // list returns a slice of sorted CIDR structures. -func list(s []string) []*CIDR { +func List(s []string) []*CIDR { out := make([]*CIDR, 0) for _, c := range s { - out = append(out, newCidr(c)) + out = append(out, NewCidr(c)) } sort.Sort(cidrSort(out)) return out diff --git a/lib/errors.go b/lib/ipUtils/errors.go similarity index 98% rename from lib/errors.go rename to lib/ipUtils/errors.go index eaba61c4..fd5233b3 100644 --- a/lib/errors.go +++ b/lib/ipUtils/errors.go @@ -1,4 +1,4 @@ -package lib +package ipUtils import ( "errors" diff --git a/lib/file.go b/lib/ipUtils/file.go similarity index 92% rename from lib/file.go rename to lib/ipUtils/file.go index 9a6fde72..705f19e7 100644 --- a/lib/file.go +++ b/lib/ipUtils/file.go @@ -1,4 +1,4 @@ -package lib +package ipUtils import ( "os" diff --git a/lib/ipUtils/init.go b/lib/ipUtils/init.go new file mode 100644 index 00000000..39e21f43 --- /dev/null +++ b/lib/ipUtils/init.go @@ -0,0 +1,45 @@ +package ipUtils + +import ( + "regexp" +) + +func init() { + BogonIP4List = GetBogonRange4() + BogonIP6List = GetBogonRange6() + + // IP + IpV4Regex = regexp.MustCompilePOSIX(IPv4RegexPattern) + IpV6Regex = regexp.MustCompilePOSIX(IPv6RegexPattern) + IpRegex = regexp.MustCompilePOSIX(IPv4RegexPattern + "|" + IPv6RegexPattern) + + // IP and CIDR + V4IpCidrRegex = regexp.MustCompilePOSIX(IPv4RegexPattern + "|" + IPv4CIDRRegexPattern) + V6IpCidrRegex = regexp.MustCompilePOSIX(IPv6RegexPattern + "|" + IPv6CIDRRegexPattern) + IpCidrRegex = regexp.MustCompilePOSIX(IPv4RegexPattern + "|" + IPv6RegexPattern + "|" + IPv4CIDRRegexPattern + "|" + IPv6CIDRRegexPattern) + + // IP and Range + V4IpRangeRegex = regexp.MustCompilePOSIX(IPv4RegexPattern + "|" + IPv4RangeRegexPattern) + V6IpRangeRegex = regexp.MustCompilePOSIX(IPv6RegexPattern + "|" + IPv6RangeRegexPattern) + IpRangeRegex = regexp.MustCompilePOSIX(IPv4RegexPattern + "|" + IPv6RegexPattern + "|" + IPv4RangeRegexPattern + "|" + IPv6RangeRegexPattern) + + // IP, CIDR and Range + V4IpSubnetRegex = regexp.MustCompilePOSIX(IPv4RegexPattern + "|" + IPv4CIDRRegexPattern + "|" + IPv4RangeRegexPattern) + V6IpSubnetRegex = regexp.MustCompilePOSIX(IPv6RegexPattern + "|" + IPv6RangeRegexPattern + "|" + IPv6CIDRRegexPattern) + IpSubnetRegex = regexp.MustCompilePOSIX(IPv4RegexPattern + "|" + IPv6RegexPattern + "|" + IPv4CIDRRegexPattern + "|" + IPv4RangeRegexPattern + "|" + IPv6RangeRegexPattern + "|" + IPv6CIDRRegexPattern) + + // CIDR + V4CidrRegex = regexp.MustCompilePOSIX(IPv4CIDRRegexPattern) + V6CidrRegex = regexp.MustCompilePOSIX(IPv6CIDRRegexPattern) + CidrRegex = regexp.MustCompilePOSIX(IPv4CIDRRegexPattern + "|" + IPv6CIDRRegexPattern) + + // Range + V4RangeRegex = regexp.MustCompilePOSIX(IPv4RangeRegexPattern) + V6RangeRegex = regexp.MustCompilePOSIX(IPv6RangeRegexPattern) + RangeRegex = regexp.MustCompilePOSIX(IPv4RangeRegexPattern + "|" + IPv6RangeRegexPattern) + + // CIDR and Range + V4SubnetRegex = regexp.MustCompilePOSIX(IPv4RangeRegexPattern + "|" + IPv4CIDRRegexPattern) + V6SubnetRegex = regexp.MustCompilePOSIX(IPv6RangeRegexPattern + "|" + IPv6CIDRRegexPattern) + SubnetRegex = regexp.MustCompilePOSIX(IPv4RangeRegexPattern + "|" + IPv4CIDRRegexPattern + "|" + IPv6RangeRegexPattern + "|" + IPv6CIDRRegexPattern) +} diff --git a/lib/ip.go b/lib/ipUtils/ip.go similarity index 99% rename from lib/ip.go rename to lib/ipUtils/ip.go index 1dd47e09..e5cc1e60 100644 --- a/lib/ip.go +++ b/lib/ipUtils/ip.go @@ -1,4 +1,4 @@ -package lib +package ipUtils import ( "encoding/binary" diff --git a/lib/ip6.go b/lib/ipUtils/ip6.go similarity index 99% rename from lib/ip6.go rename to lib/ipUtils/ip6.go index 5cb61477..6b0908e8 100644 --- a/lib/ip6.go +++ b/lib/ipUtils/ip6.go @@ -1,4 +1,4 @@ -package lib +package ipUtils import ( "encoding/binary" diff --git a/lib/ip6_range.go b/lib/ipUtils/ip6_range.go similarity index 99% rename from lib/ip6_range.go rename to lib/ipUtils/ip6_range.go index 2fa87d60..cb6b9c87 100644 --- a/lib/ip6_range.go +++ b/lib/ipUtils/ip6_range.go @@ -1,4 +1,4 @@ -package lib +package ipUtils import ( "encoding/binary" diff --git a/lib/ip6_range_str.go b/lib/ipUtils/ip6_range_str.go similarity index 99% rename from lib/ip6_range_str.go rename to lib/ipUtils/ip6_range_str.go index 2acd0cf6..5ef278d4 100644 --- a/lib/ip6_range_str.go +++ b/lib/ipUtils/ip6_range_str.go @@ -1,4 +1,4 @@ -package lib +package ipUtils import ( "net" diff --git a/lib/ip6_str.go b/lib/ipUtils/ip6_str.go similarity index 91% rename from lib/ip6_str.go rename to lib/ipUtils/ip6_str.go index 96eb2a46..cd496760 100644 --- a/lib/ip6_str.go +++ b/lib/ipUtils/ip6_str.go @@ -1,4 +1,4 @@ -package lib +package ipUtils import ( "net" diff --git a/lib/ip6_subnet.go b/lib/ipUtils/ip6_subnet.go similarity index 99% rename from lib/ip6_subnet.go rename to lib/ipUtils/ip6_subnet.go index 3644f971..d0a2a125 100644 --- a/lib/ip6_subnet.go +++ b/lib/ipUtils/ip6_subnet.go @@ -1,4 +1,4 @@ -package lib +package ipUtils import ( "encoding/binary" diff --git a/lib/ip6_subnet_str.go b/lib/ipUtils/ip6_subnet_str.go similarity index 95% rename from lib/ip6_subnet_str.go rename to lib/ipUtils/ip6_subnet_str.go index 892b5905..89e3a4b1 100644 --- a/lib/ip6_subnet_str.go +++ b/lib/ipUtils/ip6_subnet_str.go @@ -1,4 +1,4 @@ -package lib +package ipUtils import ( "net" diff --git a/lib/ip_conversions.go b/lib/ipUtils/ip_conversions.go similarity index 99% rename from lib/ip_conversions.go rename to lib/ipUtils/ip_conversions.go index 44d4fe17..e56200a6 100644 --- a/lib/ip_conversions.go +++ b/lib/ipUtils/ip_conversions.go @@ -1,4 +1,4 @@ -package lib +package ipUtils import ( "fmt" diff --git a/lib/ip_list.go b/lib/ipUtils/ip_list.go similarity index 99% rename from lib/ip_list.go rename to lib/ipUtils/ip_list.go index 09f84ae8..acf90881 100644 --- a/lib/ip_list.go +++ b/lib/ipUtils/ip_list.go @@ -1,4 +1,4 @@ -package lib +package ipUtils import ( "bufio" diff --git a/lib/ip_list_write.go b/lib/ipUtils/ip_list_write.go similarity index 99% rename from lib/ip_list_write.go rename to lib/ipUtils/ip_list_write.go index 6ef05950..f07d0895 100644 --- a/lib/ip_list_write.go +++ b/lib/ipUtils/ip_list_write.go @@ -1,4 +1,4 @@ -package lib +package ipUtils import ( "bufio" diff --git a/lib/ip_math.go b/lib/ipUtils/ip_math.go similarity index 95% rename from lib/ip_math.go rename to lib/ipUtils/ip_math.go index c5ae1d52..d1932375 100644 --- a/lib/ip_math.go +++ b/lib/ipUtils/ip_math.go @@ -1,4 +1,4 @@ -package lib +package ipUtils import ( "encoding/binary" @@ -6,7 +6,7 @@ import ( "net" ) -func ipAdd(input string, delta int) net.IP { +func IpAdd(input string, delta int) net.IP { ip := net.ParseIP(input) if ip.To4() != nil { ipInt := ipToUint32(ip) diff --git a/lib/ip_range.go b/lib/ipUtils/ip_range.go similarity index 99% rename from lib/ip_range.go rename to lib/ipUtils/ip_range.go index 796d05d4..0bec8e50 100644 --- a/lib/ip_range.go +++ b/lib/ipUtils/ip_range.go @@ -1,4 +1,4 @@ -package lib +package ipUtils import ( "encoding/binary" diff --git a/lib/ip_range_str.go b/lib/ipUtils/ip_range_str.go similarity index 99% rename from lib/ip_range_str.go rename to lib/ipUtils/ip_range_str.go index 057a9ee6..f74d88a6 100644 --- a/lib/ip_range_str.go +++ b/lib/ipUtils/ip_range_str.go @@ -1,4 +1,4 @@ -package lib +package ipUtils import ( "encoding/binary" diff --git a/lib/ipUtils/ip_range_test.go b/lib/ipUtils/ip_range_test.go new file mode 100644 index 00000000..63a4c46b --- /dev/null +++ b/lib/ipUtils/ip_range_test.go @@ -0,0 +1,83 @@ +package ipUtils_test + +import ( + "testing" + + "github.com/ipinfo/cli/lib/ipUtils" + "github.com/stretchr/testify/assert" +) + +func TestIPRangeStrFromStr(t *testing.T) { + var r ipUtils.IPRangeStr + var err error + + r, err = ipUtils.IPRangeStrFromStr("-") + assert.Equal(t, err, ipUtils.ErrNotIPRange) + + r, err = ipUtils.IPRangeStrFromStr(",") + assert.Equal(t, err, ipUtils.ErrNotIPRange) + + r, err = ipUtils.IPRangeStrFromStr("1") + assert.Equal(t, err, ipUtils.ErrNotIPRange) + + r, err = ipUtils.IPRangeStrFromStr("1,") + assert.Equal(t, err, ipUtils.ErrNotIPRange) + + r, err = ipUtils.IPRangeStrFromStr("1-") + assert.Equal(t, err, ipUtils.ErrNotIPRange) + + r, err = ipUtils.IPRangeStrFromStr("1.1.1,") + assert.Equal(t, err, ipUtils.ErrNotIPRange) + + r, err = ipUtils.IPRangeStrFromStr("1.1.1-") + assert.Equal(t, err, ipUtils.ErrNotIPRange) + + r, err = ipUtils.IPRangeStrFromStr("1.1.1.1-") + assert.Equal(t, err, ipUtils.ErrNotIPRange) + + r, err = ipUtils.IPRangeStrFromStr("1.1.1.1,") + assert.Equal(t, err, ipUtils.ErrNotIPRange) + + r, err = ipUtils.IPRangeStrFromStr("1.1.1.1,") + assert.Equal(t, err, ipUtils.ErrNotIPRange) + + r, err = ipUtils.IPRangeStrFromStr("1.1.1.1,,") + assert.Equal(t, err, ipUtils.ErrNotIPRange) + + r, err = ipUtils.IPRangeStrFromStr("1.1.1.1,-") + assert.Equal(t, err, ipUtils.ErrNotIPRange) + + r, err = ipUtils.IPRangeStrFromStr("1.1.1.1--") + assert.Equal(t, err, ipUtils.ErrNotIPRange) + + r, err = ipUtils.IPRangeStrFromStr("1.1.1.1,1.1.1") + assert.Equal(t, err, ipUtils.ErrNotIPRange) + + r, err = ipUtils.IPRangeStrFromStr("1.1.1.1,1.1.1,") + assert.Equal(t, err, ipUtils.ErrNotIPRange) + + r, err = ipUtils.IPRangeStrFromStr("1.1.1.1-1.1.1,") + assert.Equal(t, err, ipUtils.ErrNotIPRange) + + r, err = ipUtils.IPRangeStrFromStr("1.1.1.1-1.1.1-") + assert.Equal(t, err, ipUtils.ErrNotIPRange) + + r, err = ipUtils.IPRangeStrFromStr("1.1.1.1,1.1.1.2,") + assert.Equal(t, err, ipUtils.ErrNotIPRange) + + r, err = ipUtils.IPRangeStrFromStr("1.1.1.1,1.1.1.2-") + assert.Equal(t, err, ipUtils.ErrNotIPRange) + + r, err = ipUtils.IPRangeStrFromStr("1.1.1.1,1.1.1.2.3") + assert.Equal(t, err, ipUtils.ErrNotIPRange) + + r, err = ipUtils.IPRangeStrFromStr("1.1.1.1-1.1.1.2") + assert.Nil(t, err) + assert.Equal(t, r.Start, "1.1.1.1") + assert.Equal(t, r.End, "1.1.1.2") + + r, err = ipUtils.IPRangeStrFromStr("1.1.1.1,1.1.1.2") + assert.Nil(t, err) + assert.Equal(t, r.Start, "1.1.1.1") + assert.Equal(t, r.End, "1.1.1.2") +} diff --git a/lib/ip_str.go b/lib/ipUtils/ip_str.go similarity index 78% rename from lib/ip_str.go rename to lib/ipUtils/ip_str.go index 2b67772f..a49df80c 100644 --- a/lib/ip_str.go +++ b/lib/ipUtils/ip_str.go @@ -1,4 +1,4 @@ -package lib +package ipUtils import ( "net" @@ -11,10 +11,10 @@ func StrIsIPStr(ipStr string) bool { // StrIsIPv4Str checks if the given string is an IPv4 address func StrIsIPv4Str(expression string) bool { - return ipV4Regex.MatchString(expression) + return IpV4Regex.MatchString(expression) } // StrIsIPv6Str checks if the given string is an IPv6 address func StrIsIPv6Str(expression string) bool { - return ipV6Regex.MatchString(expression) + return IpV6Regex.MatchString(expression) } diff --git a/lib/ip_subnet.go b/lib/ipUtils/ip_subnet.go similarity index 99% rename from lib/ip_subnet.go rename to lib/ipUtils/ip_subnet.go index 41788dff..a898db6b 100644 --- a/lib/ip_subnet.go +++ b/lib/ipUtils/ip_subnet.go @@ -1,4 +1,4 @@ -package lib +package ipUtils import ( "encoding/binary" diff --git a/lib/ip_subnet_str.go b/lib/ipUtils/ip_subnet_str.go similarity index 95% rename from lib/ip_subnet_str.go rename to lib/ipUtils/ip_subnet_str.go index c6c17eb9..e5ed93ab 100644 --- a/lib/ip_subnet_str.go +++ b/lib/ipUtils/ip_subnet_str.go @@ -1,4 +1,4 @@ -package lib +package ipUtils import ( "net" diff --git a/lib/ip_subnet_test.go b/lib/ipUtils/ip_subnet_test.go similarity index 95% rename from lib/ip_subnet_test.go rename to lib/ipUtils/ip_subnet_test.go index a3f1ec9b..15fd66b2 100644 --- a/lib/ip_subnet_test.go +++ b/lib/ipUtils/ip_subnet_test.go @@ -1,9 +1,9 @@ -package lib_test +package ipUtils_test import ( "testing" - "github.com/ipinfo/cli/lib" + "github.com/ipinfo/cli/lib/ipUtils" "github.com/stretchr/testify/assert" ) @@ -16,7 +16,7 @@ func assertCIDRsFromIPRangeStrRaw( var _cidrs []string var err error - _cidrs, err = lib.CIDRsFromIPRangeStrRaw(start + "-" + end) + _cidrs, err = ipUtils.CIDRsFromIPRangeStrRaw(start + "-" + end) assert.Nil(t, err) assert.Equal(t, len(cidrs), len(_cidrs)) for i := 0; i < len(cidrs); i++ { @@ -24,7 +24,7 @@ func assertCIDRsFromIPRangeStrRaw( } // test reverse direction - _cidrs, err = lib.CIDRsFromIPRangeStrRaw(end + "-" + start) + _cidrs, err = ipUtils.CIDRsFromIPRangeStrRaw(end + "-" + start) assert.Nil(t, err) assert.Equal(t, len(cidrs), len(_cidrs)) for i := len(cidrs) - 1; i >= 0; i-- { diff --git a/lib/regex.go b/lib/ipUtils/regex.go similarity index 56% rename from lib/regex.go rename to lib/ipUtils/regex.go index e1c8822b..ef52b0a9 100644 --- a/lib/regex.go +++ b/lib/ipUtils/regex.go @@ -1,37 +1,37 @@ -package lib +package ipUtils import "regexp" -var ipV4Regex *regexp.Regexp -var ipV6Regex *regexp.Regexp -var ipRegex *regexp.Regexp +var IpV4Regex *regexp.Regexp +var IpV6Regex *regexp.Regexp +var IpRegex *regexp.Regexp -var v4IpCidrRegex *regexp.Regexp -var v6IpCidrRegex *regexp.Regexp -var ipCidrRegex *regexp.Regexp +var V4IpCidrRegex *regexp.Regexp +var V6IpCidrRegex *regexp.Regexp +var IpCidrRegex *regexp.Regexp -var v4IpRangeRegex *regexp.Regexp -var v6IpRangeRegex *regexp.Regexp -var ipRangeRegex *regexp.Regexp +var V4IpRangeRegex *regexp.Regexp +var V6IpRangeRegex *regexp.Regexp +var IpRangeRegex *regexp.Regexp -var v4IpSubnetRegex *regexp.Regexp -var v6IpSubnetRegex *regexp.Regexp -var ipSubnetRegex *regexp.Regexp +var V4IpSubnetRegex *regexp.Regexp +var V6IpSubnetRegex *regexp.Regexp +var IpSubnetRegex *regexp.Regexp -var v4CidrRegex *regexp.Regexp -var v6CidrRegex *regexp.Regexp -var cidrRegex *regexp.Regexp +var V4CidrRegex *regexp.Regexp +var V6CidrRegex *regexp.Regexp +var CidrRegex *regexp.Regexp -var v4RangeRegex *regexp.Regexp -var v6RangeRegex *regexp.Regexp -var rangeRegex *regexp.Regexp +var V4RangeRegex *regexp.Regexp +var V6RangeRegex *regexp.Regexp +var RangeRegex *regexp.Regexp -var v4SubnetRegex *regexp.Regexp -var v6SubnetRegex *regexp.Regexp -var subnetRegex *regexp.Regexp +var V4SubnetRegex *regexp.Regexp +var V6SubnetRegex *regexp.Regexp +var SubnetRegex *regexp.Regexp -const v4octet = `(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)` -const IPv4RegexPattern = `(` + v4octet + `\.){3}` + v4octet +const V4octet = `(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)` +const IPv4RegexPattern = `(` + V4octet + `\.){3}` + V4octet const IPv4RangeRegexPattern = IPv4RegexPattern + `[-,]` + IPv4RegexPattern const IPv4CIDRRegexPattern = IPv4RegexPattern + `\/([1-2]?[0-9]|3[0-2])` diff --git a/lib/string_slice.go b/lib/ipUtils/string_slice.go similarity index 92% rename from lib/string_slice.go rename to lib/ipUtils/string_slice.go index 771e13c6..f47caa2c 100644 --- a/lib/string_slice.go +++ b/lib/ipUtils/string_slice.go @@ -1,4 +1,4 @@ -package lib +package ipUtils // StringSliceRev reverses the order of elements inside of a string slice. func StringSliceRev(s []string) { diff --git a/lib/u128.go b/lib/ipUtils/u128.go similarity index 99% rename from lib/u128.go rename to lib/ipUtils/u128.go index 3cd08e60..4b6a96e3 100644 --- a/lib/u128.go +++ b/lib/ipUtils/u128.go @@ -1,4 +1,4 @@ -package lib +package ipUtils import ( "math" diff --git a/lib/utils_input.go b/lib/ipUtils/utils_input.go similarity index 99% rename from lib/utils_input.go rename to lib/ipUtils/utils_input.go index 6d6f22ae..daec7fcd 100644 --- a/lib/utils_input.go +++ b/lib/ipUtils/utils_input.go @@ -1,4 +1,4 @@ -package lib +package ipUtils import ( "bufio" diff --git a/lib/ip_range_test.go b/lib/ip_range_test.go deleted file mode 100644 index 4372823b..00000000 --- a/lib/ip_range_test.go +++ /dev/null @@ -1,83 +0,0 @@ -package lib_test - -import ( - "testing" - - "github.com/ipinfo/cli/lib" - "github.com/stretchr/testify/assert" -) - -func TestIPRangeStrFromStr(t *testing.T) { - var r lib.IPRangeStr - var err error - - r, err = lib.IPRangeStrFromStr("-") - assert.Equal(t, err, lib.ErrNotIPRange) - - r, err = lib.IPRangeStrFromStr(",") - assert.Equal(t, err, lib.ErrNotIPRange) - - r, err = lib.IPRangeStrFromStr("1") - assert.Equal(t, err, lib.ErrNotIPRange) - - r, err = lib.IPRangeStrFromStr("1,") - assert.Equal(t, err, lib.ErrNotIPRange) - - r, err = lib.IPRangeStrFromStr("1-") - assert.Equal(t, err, lib.ErrNotIPRange) - - r, err = lib.IPRangeStrFromStr("1.1.1,") - assert.Equal(t, err, lib.ErrNotIPRange) - - r, err = lib.IPRangeStrFromStr("1.1.1-") - assert.Equal(t, err, lib.ErrNotIPRange) - - r, err = lib.IPRangeStrFromStr("1.1.1.1-") - assert.Equal(t, err, lib.ErrNotIPRange) - - r, err = lib.IPRangeStrFromStr("1.1.1.1,") - assert.Equal(t, err, lib.ErrNotIPRange) - - r, err = lib.IPRangeStrFromStr("1.1.1.1,") - assert.Equal(t, err, lib.ErrNotIPRange) - - r, err = lib.IPRangeStrFromStr("1.1.1.1,,") - assert.Equal(t, err, lib.ErrNotIPRange) - - r, err = lib.IPRangeStrFromStr("1.1.1.1,-") - assert.Equal(t, err, lib.ErrNotIPRange) - - r, err = lib.IPRangeStrFromStr("1.1.1.1--") - assert.Equal(t, err, lib.ErrNotIPRange) - - r, err = lib.IPRangeStrFromStr("1.1.1.1,1.1.1") - assert.Equal(t, err, lib.ErrNotIPRange) - - r, err = lib.IPRangeStrFromStr("1.1.1.1,1.1.1,") - assert.Equal(t, err, lib.ErrNotIPRange) - - r, err = lib.IPRangeStrFromStr("1.1.1.1-1.1.1,") - assert.Equal(t, err, lib.ErrNotIPRange) - - r, err = lib.IPRangeStrFromStr("1.1.1.1-1.1.1-") - assert.Equal(t, err, lib.ErrNotIPRange) - - r, err = lib.IPRangeStrFromStr("1.1.1.1,1.1.1.2,") - assert.Equal(t, err, lib.ErrNotIPRange) - - r, err = lib.IPRangeStrFromStr("1.1.1.1,1.1.1.2-") - assert.Equal(t, err, lib.ErrNotIPRange) - - r, err = lib.IPRangeStrFromStr("1.1.1.1,1.1.1.2.3") - assert.Equal(t, err, lib.ErrNotIPRange) - - r, err = lib.IPRangeStrFromStr("1.1.1.1-1.1.1.2") - assert.Nil(t, err) - assert.Equal(t, r.Start, "1.1.1.1") - assert.Equal(t, r.End, "1.1.1.2") - - r, err = lib.IPRangeStrFromStr("1.1.1.1,1.1.1.2") - assert.Nil(t, err) - assert.Equal(t, r.Start, "1.1.1.1") - assert.Equal(t, r.End, "1.1.1.2") -} From 1a64f0d21d9df3a8dc05d4537a4f1417caa75955 Mon Sep 17 00:00:00 2001 From: shamirShahzad Date: Sun, 17 Dec 2023 00:30:31 +0500 Subject: [PATCH 2/3] ipUtils to iputil --- ipinfo/cmd_bulk.go | 4 +- ipinfo/cmd_default.go | 4 +- ipinfo/cmd_map.go | 4 +- ipinfo/cmd_sum.go | 4 +- ipinfo/completions.go | 6 +- ipinfo/config.go | 6 +- ipinfo/main.go | 6 +- lib/cmd_asn_bulk.go | 10 +-- lib/cmd_calc.go | 24 +++--- lib/cmd_cidr2ip.go | 4 +- lib/cmd_cidr2range.go | 10 +-- lib/cmd_grepip.go | 52 ++++++------ lib/cmd_match_ip.go | 36 ++++----- lib/cmd_prips.go | 4 +- lib/cmd_randip.go | 6 +- lib/cmd_range2cidr.go | 12 +-- lib/cmd_range2ip.go | 4 +- lib/cmd_splitcidr.go | 6 +- lib/cmd_tool_aggregate.go | 16 ++-- lib/cmd_tool_ip2n.go | 4 +- lib/cmd_tool_isV4In6.go | 12 +-- lib/cmd_tool_is_global_unicast.go | 14 ++-- lib/cmd_tool_is_interface_local_multicast.go | 14 ++-- lib/cmd_tool_is_link_local_multicast.go | 14 ++-- lib/cmd_tool_is_link_local_unicast.go | 14 ++-- lib/cmd_tool_is_loopback.go | 14 ++-- lib/cmd_tool_is_multicast.go | 14 ++-- lib/cmd_tool_is_one_ip.go | 18 ++--- lib/cmd_tool_is_unspecified.go | 8 +- lib/cmd_tool_is_v4.go | 14 ++-- lib/cmd_tool_is_v6.go | 14 ++-- lib/cmd_tool_lower.go | 20 ++--- lib/cmd_tool_n2ip.go | 6 +- lib/cmd_tool_n2ip6.go | 6 +- lib/cmd_tool_next.go | 10 +-- lib/cmd_tool_prefix_addr.go | 8 +- lib/cmd_tool_prefix_bits.go | 8 +- lib/cmd_tool_prefix_masked.go | 8 +- lib/cmd_tool_prefix_valid.go | 8 +- lib/cmd_tool_prev.go | 10 +-- lib/cmd_tool_unmap.go | 8 +- lib/cmd_tool_upper.go | 20 ++--- lib/cmd_tool_valid.go | 8 +- lib/ipUtils/ip_range_test.go | 83 -------------------- lib/{ipUtils => iputil}/asn_str.go | 2 +- lib/{ipUtils => iputil}/bogon.go | 2 +- lib/{ipUtils => iputil}/cidr.go | 2 +- lib/{ipUtils => iputil}/errors.go | 2 +- lib/{ipUtils => iputil}/file.go | 2 +- lib/{ipUtils => iputil}/init.go | 2 +- lib/{ipUtils => iputil}/ip.go | 2 +- lib/{ipUtils => iputil}/ip6.go | 2 +- lib/{ipUtils => iputil}/ip6_range.go | 2 +- lib/{ipUtils => iputil}/ip6_range_str.go | 2 +- lib/{ipUtils => iputil}/ip6_str.go | 2 +- lib/{ipUtils => iputil}/ip6_subnet.go | 2 +- lib/{ipUtils => iputil}/ip6_subnet_str.go | 2 +- lib/{ipUtils => iputil}/ip_conversions.go | 2 +- lib/{ipUtils => iputil}/ip_list.go | 2 +- lib/{ipUtils => iputil}/ip_list_write.go | 2 +- lib/{ipUtils => iputil}/ip_math.go | 2 +- lib/{ipUtils => iputil}/ip_range.go | 2 +- lib/{ipUtils => iputil}/ip_range_str.go | 2 +- lib/iputil/ip_range_test.go | 83 ++++++++++++++++++++ lib/{ipUtils => iputil}/ip_str.go | 2 +- lib/{ipUtils => iputil}/ip_subnet.go | 2 +- lib/{ipUtils => iputil}/ip_subnet_str.go | 2 +- lib/{ipUtils => iputil}/ip_subnet_test.go | 8 +- lib/{ipUtils => iputil}/regex.go | 2 +- lib/{ipUtils => iputil}/string_slice.go | 2 +- lib/{ipUtils => iputil}/u128.go | 2 +- lib/{ipUtils => iputil}/utils_input.go | 2 +- 72 files changed, 359 insertions(+), 359 deletions(-) delete mode 100644 lib/ipUtils/ip_range_test.go rename lib/{ipUtils => iputil}/asn_str.go (96%) rename lib/{ipUtils => iputil}/bogon.go (99%) rename lib/{ipUtils => iputil}/cidr.go (98%) rename lib/{ipUtils => iputil}/errors.go (98%) rename lib/{ipUtils => iputil}/file.go (92%) rename lib/{ipUtils => iputil}/init.go (99%) rename lib/{ipUtils => iputil}/ip.go (99%) rename lib/{ipUtils => iputil}/ip6.go (99%) rename lib/{ipUtils => iputil}/ip6_range.go (99%) rename lib/{ipUtils => iputil}/ip6_range_str.go (99%) rename lib/{ipUtils => iputil}/ip6_str.go (91%) rename lib/{ipUtils => iputil}/ip6_subnet.go (99%) rename lib/{ipUtils => iputil}/ip6_subnet_str.go (95%) rename lib/{ipUtils => iputil}/ip_conversions.go (99%) rename lib/{ipUtils => iputil}/ip_list.go (99%) rename lib/{ipUtils => iputil}/ip_list_write.go (99%) rename lib/{ipUtils => iputil}/ip_math.go (98%) rename lib/{ipUtils => iputil}/ip_range.go (99%) rename lib/{ipUtils => iputil}/ip_range_str.go (99%) create mode 100644 lib/iputil/ip_range_test.go rename lib/{ipUtils => iputil}/ip_str.go (96%) rename lib/{ipUtils => iputil}/ip_subnet.go (99%) rename lib/{ipUtils => iputil}/ip_subnet_str.go (95%) rename lib/{ipUtils => iputil}/ip_subnet_test.go (95%) rename lib/{ipUtils => iputil}/regex.go (99%) rename lib/{ipUtils => iputil}/string_slice.go (92%) rename lib/{ipUtils => iputil}/u128.go (99%) rename lib/{ipUtils => iputil}/utils_input.go (99%) diff --git a/ipinfo/cmd_bulk.go b/ipinfo/cmd_bulk.go index 45ee20ff..5c85690f 100644 --- a/ipinfo/cmd_bulk.go +++ b/ipinfo/cmd_bulk.go @@ -8,7 +8,7 @@ import ( "github.com/fatih/color" "github.com/ipinfo/cli/lib/complete" "github.com/ipinfo/cli/lib/complete/predict" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/ipinfo/go/v2/ipinfo" "github.com/spf13/pflag" ) @@ -111,7 +111,7 @@ func cmdBulk() (err error) { return nil } - ips, err = ipUtils.IPListFromAllSrcs(pflag.Args()[1:]) + ips, err = iputil.IPListFromAllSrcs(pflag.Args()[1:]) if err != nil { return err } diff --git a/ipinfo/cmd_default.go b/ipinfo/cmd_default.go index fee1216f..75f5e732 100644 --- a/ipinfo/cmd_default.go +++ b/ipinfo/cmd_default.go @@ -8,7 +8,7 @@ import ( "github.com/fatih/color" "github.com/ipinfo/cli/lib" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/ipinfo/go/v2/ipinfo" "github.com/spf13/pflag" ) @@ -197,7 +197,7 @@ func cmdDefault() (err error) { return nil } - ips = ipUtils.IPListFromStdin() + ips = iputil.IPListFromStdin() if len(ips) == 0 { fmt.Println("no input ips") return nil diff --git a/ipinfo/cmd_map.go b/ipinfo/cmd_map.go index f75457fe..b45c06c3 100644 --- a/ipinfo/cmd_map.go +++ b/ipinfo/cmd_map.go @@ -6,7 +6,7 @@ import ( "github.com/ipinfo/cli/lib/complete" "github.com/ipinfo/cli/lib/complete/predict" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/pkg/browser" "github.com/spf13/pflag" ) @@ -69,7 +69,7 @@ func cmdMap() (err error) { return nil } - ips, err = ipUtils.IPListFromAllSrcs(pflag.Args()[1:]) + ips, err = iputil.IPListFromAllSrcs(pflag.Args()[1:]) if err != nil { return err } diff --git a/ipinfo/cmd_sum.go b/ipinfo/cmd_sum.go index cb88618a..47ecb2dc 100644 --- a/ipinfo/cmd_sum.go +++ b/ipinfo/cmd_sum.go @@ -10,7 +10,7 @@ import ( "github.com/fatih/color" "github.com/ipinfo/cli/lib/complete" "github.com/ipinfo/cli/lib/complete/predict" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/ipinfo/go/v2/ipinfo" "github.com/spf13/pflag" ) @@ -101,7 +101,7 @@ func cmdSum() (err error) { return nil } - ips, err = ipUtils.IPListFromAllSrcs(pflag.Args()[1:]) + ips, err = iputil.IPListFromAllSrcs(pflag.Args()[1:]) if err != nil { return err } diff --git a/ipinfo/completions.go b/ipinfo/completions.go index f80534a5..39785127 100644 --- a/ipinfo/completions.go +++ b/ipinfo/completions.go @@ -5,7 +5,7 @@ import ( "github.com/ipinfo/cli/lib/complete" "github.com/ipinfo/cli/lib/complete/predict" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" ) var completions = &complete.Command{ @@ -50,9 +50,9 @@ func handleCompletions() { args := complete.Parse(line) if len(args) > 1 { cmdSecondArg := args[1].Text - if ipUtils.StrIsIPStr(cmdSecondArg) { + if iputil.StrIsIPStr(cmdSecondArg) { completions.Sub[cmdSecondArg] = completionsIP - } else if ipUtils.StrIsASNStr(cmdSecondArg) { + } else if iputil.StrIsASNStr(cmdSecondArg) { completions.Sub[cmdSecondArg] = completionsASNSingle } } diff --git a/ipinfo/config.go b/ipinfo/config.go index 9f8c066f..70121b37 100644 --- a/ipinfo/config.go +++ b/ipinfo/config.go @@ -6,7 +6,7 @@ import ( "os" "path/filepath" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" ) // global config. @@ -62,7 +62,7 @@ func InitConfig() error { } // create default config if none yet. - if !ipUtils.FileExists(configpath) { + if !iputil.FileExists(configpath) { gConfig = NewConfig() tokenpath, err := TokenPath() @@ -71,7 +71,7 @@ func InitConfig() error { } // if token exists, migrate it to the config file. - if ipUtils.FileExists(tokenpath) { + if iputil.FileExists(tokenpath) { token, err := ReadTokenFile() if err != nil { return err diff --git a/ipinfo/main.go b/ipinfo/main.go index b4d7826c..d7509ce0 100644 --- a/ipinfo/main.go +++ b/ipinfo/main.go @@ -7,7 +7,7 @@ import ( "strings" "github.com/fatih/color" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" ) var progBase = filepath.Base(os.Args[0]) @@ -35,9 +35,9 @@ func main() { } switch { - case ipUtils.StrIsIPStr(cmd): + case iputil.StrIsIPStr(cmd): err = cmdIP(cmd) - case ipUtils.StrIsASNStr(cmd): + case iputil.StrIsASNStr(cmd): asn := strings.ToUpper(cmd) err = cmdASNSingle(asn) case len(cmd) >= 3 && strings.IndexByte(cmd, '.') != -1: diff --git a/lib/cmd_asn_bulk.go b/lib/cmd_asn_bulk.go index 6b6d776a..5ddb2cbe 100644 --- a/lib/cmd_asn_bulk.go +++ b/lib/cmd_asn_bulk.go @@ -4,7 +4,7 @@ import ( "errors" "strings" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/ipinfo/go/v2/ipinfo" "github.com/spf13/pflag" ) @@ -65,16 +65,16 @@ func CmdASNBulk(f CmdASNBulkFlags, ii *ipinfo.Client, args []string, printHelp f var asns []string - op := func(string string, inputType ipUtils.INPUT_TYPE) error { + op := func(string string, inputType iputil.INPUT_TYPE) error { switch inputType { - case ipUtils.INPUT_TYPE_ASN: + case iputil.INPUT_TYPE_ASN: asns = append(asns, strings.ToUpper(string)) default: - return ipUtils.ErrInvalidInput + return iputil.ErrInvalidInput } return nil } - err := ipUtils.GetInputFrom(args, true, true, op) + err := iputil.GetInputFrom(args, true, true, op) if err != nil { return nil, err } diff --git a/lib/cmd_calc.go b/lib/cmd_calc.go index f973975a..015f074e 100644 --- a/lib/cmd_calc.go +++ b/lib/cmd_calc.go @@ -10,7 +10,7 @@ import ( "strings" "github.com/fatih/color" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -107,7 +107,7 @@ func EvaluatePostfix(postfix []string) (*big.Float, error) { if el == "" { continue } - if isFloat(el) || ipUtils.StrIsIPv4Str(el) || ipUtils.StrIsIPv6Str(el) { + if isFloat(el) || iputil.StrIsIPv4Str(el) || iputil.StrIsIPv6Str(el) { postfixStack.Push(el) continue } @@ -115,13 +115,13 @@ func EvaluatePostfix(postfix []string) (*big.Float, error) { // if operator pop two elements off of the stack. strNum1, isEmpty := postfixStack.Pop() if isEmpty { - return big.NewFloat(0), ipUtils.ErrInvalidInput + return big.NewFloat(0), iputil.ErrInvalidInput } num1, _, _ := big.ParseFloat(strNum1, 10, precision, big.ToZero) strNum2, isEmpty := postfixStack.Pop() if isEmpty { - return big.NewFloat(0), ipUtils.ErrInvalidInput + return big.NewFloat(0), iputil.ErrInvalidInput } num2, _, _ := big.ParseFloat(strNum2, 10, precision, big.ToZero) @@ -138,7 +138,7 @@ func EvaluatePostfix(postfix []string) (*big.Float, error) { case operator == "/": // Check for division by zero if num1.Cmp(big.NewFloat(0)) == 0 { - return big.NewFloat(0), ipUtils.ErrInvalidInput + return big.NewFloat(0), iputil.ErrInvalidInput } result = new(big.Float).Quo(num2, num1) case operator == "^": @@ -150,7 +150,7 @@ func EvaluatePostfix(postfix []string) (*big.Float, error) { res := math.Pow(num2F64, num1F64) result = new(big.Float).SetPrec(precision).SetFloat64(res) default: - return big.NewFloat(0), ipUtils.ErrInvalidInput + return big.NewFloat(0), iputil.ErrInvalidInput } strResult := result.Text('f', 50) postfixStack.Push(strResult) @@ -177,19 +177,19 @@ func translateToken(tempToken string, tokens []string) ([]string, error) { if isFloat(tempToken) { tokens = append(tokens, tempToken) - } else if ipUtils.StrIsIPv4Str(tempToken) { + } else if iputil.StrIsIPv4Str(tempToken) { // Convert ipv4 to decimal then append to tokens ip := net.ParseIP(tempToken) - decimalIP := ipUtils.IP4toInt(ip) + decimalIP := iputil.IP4toInt(ip) res := strconv.FormatInt(decimalIP, 10) tokens = append(tokens, res) - } else if ipUtils.StrIsIPv6Str(tempToken) { + } else if iputil.StrIsIPv6Str(tempToken) { ip := net.ParseIP(tempToken) - decimalIP := ipUtils.IP6toInt(ip) + decimalIP := iputil.IP6toInt(ip) tokens = append(tokens, decimalIP.String()) } else { - return []string{}, ipUtils.ErrInvalidInput + return []string{}, iputil.ErrInvalidInput } return tokens, nil } @@ -326,7 +326,7 @@ func CmdCalc(f CmdCalcFlags, args []string, printHelp func()) error { infix := args[0] if IsInvalidInfix(infix) { - return ipUtils.ErrInvalidInput + return iputil.ErrInvalidInput } tokens, err := TokenizeInfix(infix) diff --git a/lib/cmd_cidr2ip.go b/lib/cmd_cidr2ip.go index 520884ea..056b59a3 100644 --- a/lib/cmd_cidr2ip.go +++ b/lib/cmd_cidr2ip.go @@ -3,7 +3,7 @@ package lib import ( "os" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -38,5 +38,5 @@ func CmdCIDR2IP(f CmdCIDR2IPFlags, args []string, printHelp func()) error { return nil } - return ipUtils.IPListWriteFrom(args, true, false, false, true, true) + return iputil.IPListWriteFrom(args, true, false, false, true, true) } diff --git a/lib/cmd_cidr2range.go b/lib/cmd_cidr2range.go index daad8fcb..038b3b57 100644 --- a/lib/cmd_cidr2range.go +++ b/lib/cmd_cidr2range.go @@ -7,7 +7,7 @@ import ( "os" "strings" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -83,13 +83,13 @@ func CmdCIDR2Range( cidrStr := d[:sepIdx] if strings.IndexByte(cidrStr, ':') == -1 { - if r, err := ipUtils.IPRangeStrFromCIDR(cidrStr); err == nil { + if r, err := iputil.IPRangeStrFromCIDR(cidrStr); err == nil { fmt.Printf("%s%s", r.String(), rem) } else { goto noip } } else { - if r, err := ipUtils.IP6RangeStrFromCIDR(cidrStr); err == nil { + if r, err := iputil.IP6RangeStrFromCIDR(cidrStr); err == nil { fmt.Printf("%s%s", r.String(), rem) } else { goto noip @@ -124,12 +124,12 @@ func CmdCIDR2Range( if err != nil { // is it a CIDR? if strings.IndexByte(arg, ':') == -1 { - if r, err := ipUtils.IPRangeStrFromCIDR(arg); err == nil { + if r, err := iputil.IPRangeStrFromCIDR(arg); err == nil { fmt.Println(r.String()) continue } } else { - if r, err := ipUtils.IP6RangeStrFromCIDR(arg); err == nil { + if r, err := iputil.IP6RangeStrFromCIDR(arg); err == nil { fmt.Println(r.String()) continue } diff --git a/lib/cmd_grepip.go b/lib/cmd_grepip.go index 74e230a6..63bf66f0 100644 --- a/lib/cmd_grepip.go +++ b/lib/cmd_grepip.go @@ -12,7 +12,7 @@ import ( "strings" "github.com/fatih/color" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -147,49 +147,49 @@ func CmdGrepIP( // prepare regexp var rexp *regexp.Regexp if ipv == 4 { - rexp = ipUtils.IpV4Regex + rexp = iputil.IpV4Regex if f.CIDRsOnly && f.RangesOnly { - rexp = ipUtils.V4SubnetRegex + rexp = iputil.V4SubnetRegex } else if f.IncludeCIDRs && f.IncludeRanges { - rexp = ipUtils.V4IpSubnetRegex + rexp = iputil.V4IpSubnetRegex } else if f.IncludeCIDRs { - rexp = ipUtils.V4IpCidrRegex + rexp = iputil.V4IpCidrRegex } else if f.IncludeRanges { - rexp = ipUtils.V4IpRangeRegex + rexp = iputil.V4IpRangeRegex } else if f.CIDRsOnly { - rexp = ipUtils.V4CidrRegex + rexp = iputil.V4CidrRegex } else if f.RangesOnly { - rexp = ipUtils.V4RangeRegex + rexp = iputil.V4RangeRegex } } else if ipv == 6 { - rexp = ipUtils.IpV6Regex + rexp = iputil.IpV6Regex if f.CIDRsOnly && f.RangesOnly { - rexp = ipUtils.V6SubnetRegex + rexp = iputil.V6SubnetRegex } else if f.IncludeCIDRs && f.IncludeRanges { - rexp = ipUtils.V6IpSubnetRegex + rexp = iputil.V6IpSubnetRegex } else if f.IncludeCIDRs { - rexp = ipUtils.V6IpCidrRegex + rexp = iputil.V6IpCidrRegex } else if f.IncludeRanges { - rexp = ipUtils.V6IpRangeRegex + rexp = iputil.V6IpRangeRegex } else if f.CIDRsOnly { - rexp = ipUtils.V6CidrRegex + rexp = iputil.V6CidrRegex } else if f.RangesOnly { - rexp = ipUtils.V6RangeRegex + rexp = iputil.V6RangeRegex } } else { - rexp = ipUtils.IpRegex + rexp = iputil.IpRegex if f.CIDRsOnly && f.RangesOnly { - rexp = ipUtils.SubnetRegex + rexp = iputil.SubnetRegex } else if f.IncludeCIDRs && f.IncludeRanges { - rexp = ipUtils.IpSubnetRegex + rexp = iputil.IpSubnetRegex } else if f.IncludeCIDRs { - rexp = ipUtils.IpCidrRegex + rexp = iputil.IpCidrRegex } else if f.IncludeRanges { - rexp = ipUtils.IpRangeRegex + rexp = iputil.IpRangeRegex } else if f.CIDRsOnly { - rexp = ipUtils.CidrRegex + rexp = iputil.CidrRegex } else if f.RangesOnly { - rexp = ipUtils.RangeRegex + rexp = iputil.RangeRegex } } @@ -233,15 +233,15 @@ func CmdGrepIP( goto next_match } if strings.Contains(mIPStr, ":") { - ip, _ := ipUtils.IP6FromStdIP(mIP.To16()) - for _, r := range ipUtils.BogonIP6List { + ip, _ := iputil.IP6FromStdIP(mIP.To16()) + for _, r := range iputil.BogonIP6List { if ip.Gte(r.Start) && ip.Lte(r.End) { goto next_match } } } else { - ip := ipUtils.IPFromStdIP(mIP) - for _, r := range ipUtils.BogonIP4List { + ip := iputil.IPFromStdIP(mIP) + for _, r := range iputil.BogonIP4List { if ip >= r.Start && ip <= r.End { goto next_match } diff --git a/lib/cmd_match_ip.go b/lib/cmd_match_ip.go index e5eebae2..d7194d8b 100644 --- a/lib/cmd_match_ip.go +++ b/lib/cmd_match_ip.go @@ -6,7 +6,7 @@ import ( "os" "strings" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -66,17 +66,17 @@ func CmdMatchIP( return parsedCIDRs } - processInput := func(container *[]SubnetPair, ips *[]net.IP, s string, inputType ipUtils.INPUT_TYPE) error { + processInput := func(container *[]SubnetPair, ips *[]net.IP, s string, inputType iputil.INPUT_TYPE) error { switch inputType { - case ipUtils.INPUT_TYPE_IP: + case iputil.INPUT_TYPE_IP: *ips = append(*ips, net.ParseIP(s)) - case ipUtils.INPUT_TYPE_CIDR: + case iputil.INPUT_TYPE_CIDR: pair := SubnetPair{ Raw: s, Parsed: parseCIDRs([]string{s}), } *container = append(*container, pair) - case ipUtils.INPUT_TYPE_IP_RANGE: + case iputil.INPUT_TYPE_IP_RANGE: cidrs, err := rangeToCidrs(s) if err == nil { pair := SubnetPair{ @@ -86,16 +86,16 @@ func CmdMatchIP( *container = append(*container, pair) } default: - return ipUtils.ErrInvalidInput + return iputil.ErrInvalidInput } return nil } - source_op := func(s string, inputType ipUtils.INPUT_TYPE) error { + source_op := func(s string, inputType iputil.INPUT_TYPE) error { return processInput(&sourceCIDRs, &sourceIPs, s, inputType) } - filter_op := func(s string, inputType ipUtils.INPUT_TYPE) error { + filter_op := func(s string, inputType iputil.INPUT_TYPE) error { return processInput(&filterCIDRs, &filterIPs, s, inputType) } @@ -103,17 +103,17 @@ func CmdMatchIP( for _, expr := range f.Expression { if expr == "-" && isStdin { - err = ipUtils.ProcessStringsFromStdin(filter_op) + err = iputil.ProcessStringsFromStdin(filter_op) if err != nil { return err } - } else if ipUtils.FileExists(expr) { - err = ipUtils.ProcessStringsFromFile(expr, filter_op) + } else if iputil.FileExists(expr) { + err = iputil.ProcessStringsFromFile(expr, filter_op) if err != nil { return err } } else { - err = ipUtils.InputHelper(expr, filter_op) + err = iputil.InputHelper(expr, filter_op) if err != nil { return err } @@ -122,17 +122,17 @@ func CmdMatchIP( for _, arg := range args { if arg == "-" && isStdin { - err = ipUtils.ProcessStringsFromStdin(source_op) + err = iputil.ProcessStringsFromStdin(source_op) if err != nil { return err } - } else if ipUtils.FileExists(arg) { - err = ipUtils.ProcessStringsFromFile(arg, source_op) + } else if iputil.FileExists(arg) { + err = iputil.ProcessStringsFromFile(arg, source_op) if err != nil { return err } } else { - err = ipUtils.InputHelper(arg, source_op) + err = iputil.InputHelper(arg, source_op) if err != nil { return err } @@ -149,13 +149,13 @@ func CmdMatchIP( func rangeToCidrs(r string) ([]string, error) { if strings.ContainsRune(r, ':') { - cidrs, err := ipUtils.CIDRsFromIP6RangeStrRaw(r) + cidrs, err := iputil.CIDRsFromIP6RangeStrRaw(r) if err != nil { return nil, err } return cidrs, nil } else { - cidrs, err := ipUtils.CIDRsFromIPRangeStrRaw(r) + cidrs, err := iputil.CIDRsFromIPRangeStrRaw(r) if err != nil { return nil, err } diff --git a/lib/cmd_prips.go b/lib/cmd_prips.go index fd0b9652..f4616f22 100644 --- a/lib/cmd_prips.go +++ b/lib/cmd_prips.go @@ -3,7 +3,7 @@ package lib import ( "os" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -43,5 +43,5 @@ func CmdPrips( return nil } - return ipUtils.IPListWriteFromAllSrcs(args) + return iputil.IPListWriteFromAllSrcs(args) } diff --git a/lib/cmd_randip.go b/lib/cmd_randip.go index 8e7f1183..337f9c1c 100644 --- a/lib/cmd_randip.go +++ b/lib/cmd_randip.go @@ -5,7 +5,7 @@ import ( "math/rand" "time" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -88,7 +88,7 @@ func CmdRandIP(f CmdRandIPFlags, args []string, printHelp func()) error { if f.EndIP == "" { f.EndIP = "255.255.255.255" } - if err := ipUtils.RandIP4RangeListWrite(f.StartIP, f.EndIP, f.N, f.ExcludeRes, f.Unique); err != nil { + if err := iputil.RandIP4RangeListWrite(f.StartIP, f.EndIP, f.N, f.ExcludeRes, f.Unique); err != nil { return err } } else if f.IPv6 { @@ -98,7 +98,7 @@ func CmdRandIP(f CmdRandIPFlags, args []string, printHelp func()) error { if f.EndIP == "" { f.EndIP = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff" } - if err := ipUtils.RandIP6RangeListWrite(f.StartIP, f.EndIP, f.N, f.ExcludeRes, f.Unique); err != nil { + if err := iputil.RandIP6RangeListWrite(f.StartIP, f.EndIP, f.N, f.ExcludeRes, f.Unique); err != nil { return err } } diff --git a/lib/cmd_range2cidr.go b/lib/cmd_range2cidr.go index 40d58d93..82f0c28d 100644 --- a/lib/cmd_range2cidr.go +++ b/lib/cmd_range2cidr.go @@ -7,7 +7,7 @@ import ( "os" "strings" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -85,7 +85,7 @@ func CmdRange2CIDR( // if so, try again against the next delim. if sepIdx != len(d)-1 && d[sepIdx] == ',' && - ipUtils.StrIsIPStr(d[:sepIdx]) { + iputil.StrIsIPStr(d[:sepIdx]) { nextSepIdx := strings.IndexAny(d[sepIdx+1:], ",\n") if nextSepIdx == -1 { sepIdx = len(d) @@ -114,7 +114,7 @@ func CmdRange2CIDR( } } if strings.IndexByte(rangeStr, ':') == -1 { - if cidrs, err := ipUtils.CIDRsFromIPRangeStrRaw(rangeStr); err == nil { + if cidrs, err := iputil.CIDRsFromIPRangeStrRaw(rangeStr); err == nil { for _, cidr := range cidrs { fmt.Printf("%s%s", cidr, rem) } @@ -122,7 +122,7 @@ func CmdRange2CIDR( goto noip } } else { - if cidrs, err := ipUtils.CIDRsFromIP6RangeStrRaw(rangeStr); err == nil { + if cidrs, err := iputil.CIDRsFromIP6RangeStrRaw(rangeStr); err == nil { for _, cidr := range cidrs { fmt.Printf("%s%s", cidr, rem) } @@ -165,14 +165,14 @@ func CmdRange2CIDR( if err != nil { // is it an IP range? if strings.IndexByte(arg, ':') == -1 { - if cidrs, err := ipUtils.CIDRsFromIPRangeStrRaw(arg); err == nil { + if cidrs, err := iputil.CIDRsFromIPRangeStrRaw(arg); err == nil { for _, cidr := range cidrs { fmt.Println(cidr) } continue } } else { - if cidrs, err := ipUtils.CIDRsFromIP6RangeStrRaw(arg); err == nil { + if cidrs, err := iputil.CIDRsFromIP6RangeStrRaw(arg); err == nil { for _, cidr := range cidrs { fmt.Println(cidr) } diff --git a/lib/cmd_range2ip.go b/lib/cmd_range2ip.go index 18340e6b..e6470a4d 100644 --- a/lib/cmd_range2ip.go +++ b/lib/cmd_range2ip.go @@ -3,7 +3,7 @@ package lib import ( "os" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -38,5 +38,5 @@ func CmdRange2IP(f CmdRange2IPFlags, args []string, printHelp func()) error { return nil } - return ipUtils.IPListWriteFrom(args, true, true, true, false, true) + return iputil.IPListWriteFrom(args, true, true, true, false, true) } diff --git a/lib/cmd_splitcidr.go b/lib/cmd_splitcidr.go index 12d8932c..d60b0d0a 100644 --- a/lib/cmd_splitcidr.go +++ b/lib/cmd_splitcidr.go @@ -5,7 +5,7 @@ import ( "net" "strconv" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -54,7 +54,7 @@ func CmdSplitCIDR( } if ip.To4() != nil { - ipsubnet, err := ipUtils.IPSubnetFromCidr(cidrString) + ipsubnet, err := iputil.IPSubnetFromCidr(cidrString) if err != nil { return err } @@ -68,7 +68,7 @@ func CmdSplitCIDR( fmt.Println(s.ToCIDR()) } } else { - ipsubnet, err := ipUtils.IP6SubnetFromCidr(cidrString) + ipsubnet, err := iputil.IP6SubnetFromCidr(cidrString) if err != nil { return err } diff --git a/lib/cmd_tool_aggregate.go b/lib/cmd_tool_aggregate.go index 66444096..ff5026cb 100644 --- a/lib/cmd_tool_aggregate.go +++ b/lib/cmd_tool_aggregate.go @@ -8,7 +8,7 @@ import ( "os" "strings" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -140,7 +140,7 @@ func CmdToolAggregate( parsedIPs = append(parsedIPs, ips...) } - adjacentCombined := combineAdjacent(stripOverlapping(ipUtils.List(parsedCIDRs))) + adjacentCombined := combineAdjacent(stripOverlapping(iputil.List(parsedCIDRs))) outlierIPs := make([]net.IP, 0) length := len(adjacentCombined) @@ -173,7 +173,7 @@ func CmdToolAggregate( // stripOverlapping returns a slice of CIDR structures with overlapping ranges // stripped. -func stripOverlapping(s []*ipUtils.CIDR) []*ipUtils.CIDR { +func stripOverlapping(s []*iputil.CIDR) []*iputil.CIDR { l := len(s) for i := 0; i < l-1; i++ { if s[i] == nil { @@ -188,14 +188,14 @@ func stripOverlapping(s []*ipUtils.CIDR) []*ipUtils.CIDR { return filter(s) } -func overlaps(a, b *ipUtils.CIDR) bool { +func overlaps(a, b *iputil.CIDR) bool { return (a.PrefixUint32() / (1 << (32 - b.MaskLen()))) == (b.PrefixUint32() / (1 << (32 - b.MaskLen()))) } // combineAdjacent returns a slice of CIDR structures with adjacent ranges // combined. -func combineAdjacent(s []*ipUtils.CIDR) []*ipUtils.CIDR { +func combineAdjacent(s []*iputil.CIDR) []*iputil.CIDR { for { found := false l := len(s) @@ -209,7 +209,7 @@ func combineAdjacent(s []*ipUtils.CIDR) []*ipUtils.CIDR { } if adjacent(s[i], s[j]) { c := fmt.Sprintf("%s/%d", s[i].IP.String(), s[i].MaskLen()-1) - s[i] = ipUtils.NewCidr(c) + s[i] = iputil.NewCidr(c) s[j] = nil found = true } @@ -223,13 +223,13 @@ func combineAdjacent(s []*ipUtils.CIDR) []*ipUtils.CIDR { return filter(s) } -func adjacent(a, b *ipUtils.CIDR) bool { +func adjacent(a, b *iputil.CIDR) bool { return (a.MaskLen() == b.MaskLen()) && (a.PrefixUint32()%(2<<(32-b.MaskLen())) == 0) && (b.PrefixUint32()-a.PrefixUint32() == (1 << (32 - a.MaskLen()))) } -func filter(s []*ipUtils.CIDR) []*ipUtils.CIDR { +func filter(s []*iputil.CIDR) []*iputil.CIDR { out := s[:0] for _, x := range s { if x != nil { diff --git a/lib/cmd_tool_ip2n.go b/lib/cmd_tool_ip2n.go index 297a04a5..f1742146 100644 --- a/lib/cmd_tool_ip2n.go +++ b/lib/cmd_tool_ip2n.go @@ -3,7 +3,7 @@ package lib import ( "fmt" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -29,7 +29,7 @@ func CmdToolIP2n(f CmdToolIP2nFlags, args []string, printHelp func()) error { } ipString := args[0] - res, err := ipUtils.IPtoDecimalStr(ipString) + res, err := iputil.IPtoDecimalStr(ipString) if err != nil { return err } diff --git a/lib/cmd_tool_isV4In6.go b/lib/cmd_tool_isV4In6.go index fc2ff6e1..37b7e7b8 100644 --- a/lib/cmd_tool_isV4In6.go +++ b/lib/cmd_tool_isV4In6.go @@ -4,7 +4,7 @@ import ( "fmt" "net/netip" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -29,20 +29,20 @@ func CmdToolIsV4In6(f CmdToolIsV4In6Flags, args []string, printHelp func()) erro return nil } - op := func(input string, inputType ipUtils.INPUT_TYPE) error { + op := func(input string, inputType iputil.INPUT_TYPE) error { switch inputType { - case ipUtils.INPUT_TYPE_IP: + case iputil.INPUT_TYPE_IP: addr, err := netip.ParseAddr(input) if err != nil { - return ipUtils.ErrInvalidInput + return iputil.ErrInvalidInput } fmt.Printf("%s,%t\n", input, addr.Is4In6()) default: - return ipUtils.ErrInvalidInput + return iputil.ErrInvalidInput } return nil } - return ipUtils.GetInputFrom(args, true, true, op) + return iputil.GetInputFrom(args, true, true, op) } diff --git a/lib/cmd_tool_is_global_unicast.go b/lib/cmd_tool_is_global_unicast.go index 3ae422ea..43a08bf3 100644 --- a/lib/cmd_tool_is_global_unicast.go +++ b/lib/cmd_tool_is_global_unicast.go @@ -4,7 +4,7 @@ import ( "fmt" "net" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -36,18 +36,18 @@ func CmdToolIsGlobalUnicast( return nil } - actionFunc := func(input string, inputType ipUtils.INPUT_TYPE) error { + actionFunc := func(input string, inputType iputil.INPUT_TYPE) error { switch inputType { - case ipUtils.INPUT_TYPE_IP: + case iputil.INPUT_TYPE_IP: ActionIsGlobalUnicast(input) - case ipUtils.INPUT_TYPE_IP_RANGE: + case iputil.INPUT_TYPE_IP_RANGE: ActionIsGlobalUnicastRange(input) - case ipUtils.INPUT_TYPE_CIDR: + case iputil.INPUT_TYPE_CIDR: ActionIsGlobalUnicastCIDR(input) } return nil } - err := ipUtils.GetInputFrom(args, true, true, actionFunc) + err := iputil.GetInputFrom(args, true, true, actionFunc) if err != nil { fmt.Println(err) return err @@ -64,7 +64,7 @@ func ActionIsGlobalUnicast(input string) { } func ActionIsGlobalUnicastRange(input string) { - ipRange, err := ipUtils.IPRangeStrFromStr(input) + ipRange, err := iputil.IPRangeStrFromStr(input) if err != nil { return } diff --git a/lib/cmd_tool_is_interface_local_multicast.go b/lib/cmd_tool_is_interface_local_multicast.go index 6813bfb9..a9fe170e 100644 --- a/lib/cmd_tool_is_interface_local_multicast.go +++ b/lib/cmd_tool_is_interface_local_multicast.go @@ -4,7 +4,7 @@ import ( "fmt" "net" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -36,18 +36,18 @@ func CmdToolIsInterfaceLocalMulticast( return nil } - actionFunc := func(input string, inputType ipUtils.INPUT_TYPE) error { + actionFunc := func(input string, inputType iputil.INPUT_TYPE) error { switch inputType { - case ipUtils.INPUT_TYPE_IP: + case iputil.INPUT_TYPE_IP: ActionIsInterfaceLocalMulticast(input) - case ipUtils.INPUT_TYPE_IP_RANGE: + case iputil.INPUT_TYPE_IP_RANGE: ActionIsInterfaceLocalMulticastRange(input) - case ipUtils.INPUT_TYPE_CIDR: + case iputil.INPUT_TYPE_CIDR: ActionIsInterfaceLocalMulticastCIDR(input) } return nil } - err := ipUtils.GetInputFrom(args, true, true, actionFunc) + err := iputil.GetInputFrom(args, true, true, actionFunc) if err != nil { fmt.Println(err) return err @@ -64,7 +64,7 @@ func ActionIsInterfaceLocalMulticast(input string) { } func ActionIsInterfaceLocalMulticastRange(input string) { - ipRange, err := ipUtils.IPRangeStrFromStr(input) + ipRange, err := iputil.IPRangeStrFromStr(input) if err != nil { return } diff --git a/lib/cmd_tool_is_link_local_multicast.go b/lib/cmd_tool_is_link_local_multicast.go index 40bf8161..65e6947f 100644 --- a/lib/cmd_tool_is_link_local_multicast.go +++ b/lib/cmd_tool_is_link_local_multicast.go @@ -4,7 +4,7 @@ import ( "fmt" "net" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -36,18 +36,18 @@ func CmdToolIsLinkLocalMulticast( return nil } - actionFunc := func(input string, inputType ipUtils.INPUT_TYPE) error { + actionFunc := func(input string, inputType iputil.INPUT_TYPE) error { switch inputType { - case ipUtils.INPUT_TYPE_IP: + case iputil.INPUT_TYPE_IP: ActionIsLinkLocalMulticast(input) - case ipUtils.INPUT_TYPE_IP_RANGE: + case iputil.INPUT_TYPE_IP_RANGE: ActionIsLinkLocalMulticastRange(input) - case ipUtils.INPUT_TYPE_CIDR: + case iputil.INPUT_TYPE_CIDR: ActionIsLinkLocalMulticastCIDR(input) } return nil } - err := ipUtils.GetInputFrom(args, true, true, actionFunc) + err := iputil.GetInputFrom(args, true, true, actionFunc) if err != nil { fmt.Println(err) return err @@ -64,7 +64,7 @@ func ActionIsLinkLocalMulticast(input string) { } func ActionIsLinkLocalMulticastRange(input string) { - ipRange, err := ipUtils.IPRangeStrFromStr(input) + ipRange, err := iputil.IPRangeStrFromStr(input) if err != nil { return } diff --git a/lib/cmd_tool_is_link_local_unicast.go b/lib/cmd_tool_is_link_local_unicast.go index e5dc874f..97aa7649 100644 --- a/lib/cmd_tool_is_link_local_unicast.go +++ b/lib/cmd_tool_is_link_local_unicast.go @@ -4,7 +4,7 @@ import ( "fmt" "net" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -36,18 +36,18 @@ func CmdToolIsLinkLocalUnicast( return nil } - actionFunc := func(input string, inputType ipUtils.INPUT_TYPE) error { + actionFunc := func(input string, inputType iputil.INPUT_TYPE) error { switch inputType { - case ipUtils.INPUT_TYPE_IP: + case iputil.INPUT_TYPE_IP: ActionIsLinkLocalUnicast(input) - case ipUtils.INPUT_TYPE_IP_RANGE: + case iputil.INPUT_TYPE_IP_RANGE: ActionIsLinkLocalUnicastRange(input) - case ipUtils.INPUT_TYPE_CIDR: + case iputil.INPUT_TYPE_CIDR: ActionIsLinkLocalUnicastCIDR(input) } return nil } - err := ipUtils.GetInputFrom(args, true, true, actionFunc) + err := iputil.GetInputFrom(args, true, true, actionFunc) if err != nil { fmt.Println(err) return err @@ -64,7 +64,7 @@ func ActionIsLinkLocalUnicast(input string) { } func ActionIsLinkLocalUnicastRange(input string) { - ipRange, err := ipUtils.IPRangeStrFromStr(input) + ipRange, err := iputil.IPRangeStrFromStr(input) if err != nil { return } diff --git a/lib/cmd_tool_is_loopback.go b/lib/cmd_tool_is_loopback.go index fed2e607..32270ba7 100644 --- a/lib/cmd_tool_is_loopback.go +++ b/lib/cmd_tool_is_loopback.go @@ -4,7 +4,7 @@ import ( "fmt" "net" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -36,18 +36,18 @@ func CmdToolIsLoopback( return nil } - actionFuncLoopBack := func(input string, inputType ipUtils.INPUT_TYPE) error { + actionFuncLoopBack := func(input string, inputType iputil.INPUT_TYPE) error { switch inputType { - case ipUtils.INPUT_TYPE_IP: + case iputil.INPUT_TYPE_IP: ActionForIsLoopBack(input) - case ipUtils.INPUT_TYPE_IP_RANGE: + case iputil.INPUT_TYPE_IP_RANGE: ActionForISLoopBackRange(input) - case ipUtils.INPUT_TYPE_CIDR: + case iputil.INPUT_TYPE_CIDR: ActionForIsLoopBackCIDR(input) } return nil } - err := ipUtils.GetInputFrom(args, true, true, actionFuncLoopBack) + err := iputil.GetInputFrom(args, true, true, actionFuncLoopBack) if err != nil { fmt.Println(err) } @@ -63,7 +63,7 @@ func ActionForIsLoopBack(input string) { } func ActionForISLoopBackRange(input string) { - ipRange, err := ipUtils.IPRangeStrFromStr(input) + ipRange, err := iputil.IPRangeStrFromStr(input) if err != nil { return } diff --git a/lib/cmd_tool_is_multicast.go b/lib/cmd_tool_is_multicast.go index 1a9fd8f9..ef31caad 100644 --- a/lib/cmd_tool_is_multicast.go +++ b/lib/cmd_tool_is_multicast.go @@ -4,7 +4,7 @@ import ( "fmt" "net" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -36,18 +36,18 @@ func CmdToolIsMulticast( return nil } - actionFunc := func(input string, inputType ipUtils.INPUT_TYPE) error { + actionFunc := func(input string, inputType iputil.INPUT_TYPE) error { switch inputType { - case ipUtils.INPUT_TYPE_IP: + case iputil.INPUT_TYPE_IP: ActionForIsMulticast(input) - case ipUtils.INPUT_TYPE_IP_RANGE: + case iputil.INPUT_TYPE_IP_RANGE: ActionForIsMulticastRange(input) - case ipUtils.INPUT_TYPE_CIDR: + case iputil.INPUT_TYPE_CIDR: ActionForIsMulticastCIDR(input) } return nil } - err := ipUtils.GetInputFrom(args, true, true, actionFunc) + err := iputil.GetInputFrom(args, true, true, actionFunc) if err != nil { fmt.Println(err) return err @@ -64,7 +64,7 @@ func ActionForIsMulticast(input string) { } func ActionForIsMulticastRange(input string) { - ipRange, err := ipUtils.IPRangeStrFromStr(input) + ipRange, err := iputil.IPRangeStrFromStr(input) if err != nil { return } diff --git a/lib/cmd_tool_is_one_ip.go b/lib/cmd_tool_is_one_ip.go index 483bd487..2470ec79 100644 --- a/lib/cmd_tool_is_one_ip.go +++ b/lib/cmd_tool_is_one_ip.go @@ -4,7 +4,7 @@ import ( "fmt" "net/netip" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -28,31 +28,31 @@ func CmdToolIsOneIp(f CmdToolIsOneIpFlags, args []string, printHelp func()) erro return nil } - op := func(input string, inputType ipUtils.INPUT_TYPE) error { + op := func(input string, inputType iputil.INPUT_TYPE) error { isOneIp := false switch inputType { - case ipUtils.INPUT_TYPE_CIDR: + case iputil.INPUT_TYPE_CIDR: prefix, err := netip.ParsePrefix(input) if err != nil { - return ipUtils.ErrInvalidInput + return iputil.ErrInvalidInput } isOneIp = prefix.IsSingleIP() - case ipUtils.INPUT_TYPE_IP: + case iputil.INPUT_TYPE_IP: isOneIp = true - case ipUtils.INPUT_TYPE_IP_RANGE: + case iputil.INPUT_TYPE_IP_RANGE: isOneIp = ipRangeContainsExactlyOneIP(input) default: - return ipUtils.ErrInvalidInput + return iputil.ErrInvalidInput } fmt.Printf("%s,%v\n", input, isOneIp) return nil } - return ipUtils.GetInputFrom(args, true, true, op) + return iputil.GetInputFrom(args, true, true, op) } func ipRangeContainsExactlyOneIP(ipRangeStr string) bool { - ipRange, err := ipUtils.IPRangeStrFromStr(ipRangeStr) + ipRange, err := iputil.IPRangeStrFromStr(ipRangeStr) if err != nil { return false } diff --git a/lib/cmd_tool_is_unspecified.go b/lib/cmd_tool_is_unspecified.go index 69e7457d..401d8036 100644 --- a/lib/cmd_tool_is_unspecified.go +++ b/lib/cmd_tool_is_unspecified.go @@ -4,7 +4,7 @@ import ( "fmt" "net" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -36,14 +36,14 @@ func CmdToolIsUnspecified( return nil } - actionFunc := func(input string, inputType ipUtils.INPUT_TYPE) error { + actionFunc := func(input string, inputType iputil.INPUT_TYPE) error { switch inputType { - case ipUtils.INPUT_TYPE_IP: + case iputil.INPUT_TYPE_IP: ActionIsUnspecified(input) } return nil } - err := ipUtils.GetInputFrom(args, true, true, actionFunc) + err := iputil.GetInputFrom(args, true, true, actionFunc) if err != nil { fmt.Println(err) return err diff --git a/lib/cmd_tool_is_v4.go b/lib/cmd_tool_is_v4.go index 06cb2bb3..382b4390 100644 --- a/lib/cmd_tool_is_v4.go +++ b/lib/cmd_tool_is_v4.go @@ -4,7 +4,7 @@ import ( "fmt" "net" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -36,18 +36,18 @@ func CmdToolIsV4( return nil } - actionFunc := func(input string, inputType ipUtils.INPUT_TYPE) error { + actionFunc := func(input string, inputType iputil.INPUT_TYPE) error { switch inputType { - case ipUtils.INPUT_TYPE_IP: + case iputil.INPUT_TYPE_IP: ActionForIsV4(input) - case ipUtils.INPUT_TYPE_IP_RANGE: + case iputil.INPUT_TYPE_IP_RANGE: ActionForIsV4Range(input) - case ipUtils.INPUT_TYPE_CIDR: + case iputil.INPUT_TYPE_CIDR: ActionForIsV4CIDR(input) } return nil } - err := ipUtils.GetInputFrom(args, true, true, actionFunc) + err := iputil.GetInputFrom(args, true, true, actionFunc) if err != nil { fmt.Println(err) } @@ -63,7 +63,7 @@ func ActionForIsV4(input string) { } func ActionForIsV4Range(input string) { - ipRange, err := ipUtils.IPRangeStrFromStr(input) + ipRange, err := iputil.IPRangeStrFromStr(input) if err != nil { return } diff --git a/lib/cmd_tool_is_v6.go b/lib/cmd_tool_is_v6.go index a124298e..ba918670 100644 --- a/lib/cmd_tool_is_v6.go +++ b/lib/cmd_tool_is_v6.go @@ -4,7 +4,7 @@ import ( "fmt" "net" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -36,18 +36,18 @@ func CmdToolIsV6( return nil } - actionFunc := func(input string, inputType ipUtils.INPUT_TYPE) error { + actionFunc := func(input string, inputType iputil.INPUT_TYPE) error { switch inputType { - case ipUtils.INPUT_TYPE_IP: + case iputil.INPUT_TYPE_IP: ActionForIsV6(input) - case ipUtils.INPUT_TYPE_IP_RANGE: + case iputil.INPUT_TYPE_IP_RANGE: ActionForIsV6Range(input) - case ipUtils.INPUT_TYPE_CIDR: + case iputil.INPUT_TYPE_CIDR: ActionForIsV6CIDR(input) } return nil } - err := ipUtils.GetInputFrom(args, true, true, actionFunc) + err := iputil.GetInputFrom(args, true, true, actionFunc) if err != nil { fmt.Println(err) } @@ -63,7 +63,7 @@ func ActionForIsV6(input string) { } func ActionForIsV6Range(input string) { - ipRange, err := ipUtils.IPRangeStrFromStr(input) + ipRange, err := iputil.IPRangeStrFromStr(input) if err != nil { return } diff --git a/lib/cmd_tool_lower.go b/lib/cmd_tool_lower.go index 0247b3e5..ebca9158 100644 --- a/lib/cmd_tool_lower.go +++ b/lib/cmd_tool_lower.go @@ -4,7 +4,7 @@ import ( "fmt" "net" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -36,21 +36,21 @@ func CmdToolLower( return nil } - actionFunc := func(input string, inputType ipUtils.INPUT_TYPE) error { + actionFunc := func(input string, inputType iputil.INPUT_TYPE) error { var err error switch inputType { - case ipUtils.INPUT_TYPE_IP: + case iputil.INPUT_TYPE_IP: fmt.Println(input) - case ipUtils.INPUT_TYPE_IP_RANGE: + case iputil.INPUT_TYPE_IP_RANGE: err = ActionForRange(input) - case ipUtils.INPUT_TYPE_CIDR: + case iputil.INPUT_TYPE_CIDR: err = ActionForCIDR(input) default: - return ipUtils.ErrInvalidInput + return iputil.ErrInvalidInput } return err } - err := ipUtils.GetInputFrom(args, true, true, actionFunc) + err := iputil.GetInputFrom(args, true, true, actionFunc) if err != nil { fmt.Println(err) } @@ -59,7 +59,7 @@ func CmdToolLower( } func ActionForRange(input string) error { - ipRange, err := ipUtils.IPRangeStrFromStr(input) + ipRange, err := iputil.IPRangeStrFromStr(input) if err != nil { return err } @@ -75,10 +75,10 @@ func ActionForCIDR(input string) error { var lower string if ipnet.IP.To4() != nil { - ipRange, _ := ipUtils.IPRangeStrFromCIDR(input) + ipRange, _ := iputil.IPRangeStrFromCIDR(input) lower = ipRange.Start } else if ipnet.IP.To16() != nil { - ipRange, _ := ipUtils.IP6RangeStrFromCIDR(input) + ipRange, _ := iputil.IP6RangeStrFromCIDR(input) lower = ipRange.Start } diff --git a/lib/cmd_tool_n2ip.go b/lib/cmd_tool_n2ip.go index ba78ad1b..bf993b95 100644 --- a/lib/cmd_tool_n2ip.go +++ b/lib/cmd_tool_n2ip.go @@ -4,7 +4,7 @@ import ( "errors" "fmt" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -38,7 +38,7 @@ func CmdToolN2IP(f CmdToolN2IPFlags, args []string, printHelp func()) error { expression := args[0] if IsInvalidInfix(expression) { - return ipUtils.ErrInvalidInput + return iputil.ErrInvalidInput } // NOTE: n2ip also accepts an expression, hence the tokenization and evaluation. @@ -59,7 +59,7 @@ func CmdToolN2IP(f CmdToolN2IPFlags, args []string, printHelp func()) error { // Convert to IP // Precision should be 0 i.e. number of digits after decimal // as ip cannot be derived from a float - res, err := ipUtils.DecimalStrToIP(result.Text('f', 0), f.ipv6) + res, err := iputil.DecimalStrToIP(result.Text('f', 0), f.ipv6) if err != nil { return errors.New("number is too large") } diff --git a/lib/cmd_tool_n2ip6.go b/lib/cmd_tool_n2ip6.go index b4e407c7..ec5c96fa 100644 --- a/lib/cmd_tool_n2ip6.go +++ b/lib/cmd_tool_n2ip6.go @@ -4,7 +4,7 @@ import ( "errors" "fmt" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -31,7 +31,7 @@ func CmdToolN2IP6(f CmdToolN2IP6Flags, args []string, printHelp func()) error { expression := args[0] if IsInvalidInfix(expression) { - return ipUtils.ErrInvalidInput + return iputil.ErrInvalidInput } // NOTE: n2ip6 also accepts an expression, hence the tokenization and evaluation. @@ -51,7 +51,7 @@ func CmdToolN2IP6(f CmdToolN2IP6Flags, args []string, printHelp func()) error { // Convert to IP // Precision should be 0 i.e. number of digits after decimal // as ip cannot be derived from a float - res, err := ipUtils.DecimalStrToIP(result.Text('f', 0), true) + res, err := iputil.DecimalStrToIP(result.Text('f', 0), true) if err != nil { return errors.New("number is too large") } diff --git a/lib/cmd_tool_next.go b/lib/cmd_tool_next.go index b56a9159..71e37c72 100644 --- a/lib/cmd_tool_next.go +++ b/lib/cmd_tool_next.go @@ -3,7 +3,7 @@ package lib import ( "fmt" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -35,15 +35,15 @@ func CmdToolNext( return nil } - actionFunc := func(input string, inputType ipUtils.INPUT_TYPE) error { + actionFunc := func(input string, inputType iputil.INPUT_TYPE) error { switch inputType { - case ipUtils.INPUT_TYPE_IP: - newIP := ipUtils.IpAdd(input, 1) + case iputil.INPUT_TYPE_IP: + newIP := iputil.IpAdd(input, 1) fmt.Println(newIP) } return nil } - err := ipUtils.GetInputFrom(args, true, true, actionFunc) + err := iputil.GetInputFrom(args, true, true, actionFunc) if err != nil { fmt.Println(err) } diff --git a/lib/cmd_tool_prefix_addr.go b/lib/cmd_tool_prefix_addr.go index 6a1138b3..c2994246 100644 --- a/lib/cmd_tool_prefix_addr.go +++ b/lib/cmd_tool_prefix_addr.go @@ -4,7 +4,7 @@ import ( "fmt" "net/netip" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -26,9 +26,9 @@ func CmdToolPrefixAddr(f CmdToolPrefixAddrFlags, args []string, printHelp func() return nil } - op := func(input string, inputType ipUtils.INPUT_TYPE) error { + op := func(input string, inputType iputil.INPUT_TYPE) error { switch inputType { - case ipUtils.INPUT_TYPE_CIDR: + case iputil.INPUT_TYPE_CIDR: prefix, err := netip.ParsePrefix(input) if err != nil { return err @@ -38,5 +38,5 @@ func CmdToolPrefixAddr(f CmdToolPrefixAddrFlags, args []string, printHelp func() return nil } - return ipUtils.GetInputFrom(args, true, true, op) + return iputil.GetInputFrom(args, true, true, op) } diff --git a/lib/cmd_tool_prefix_bits.go b/lib/cmd_tool_prefix_bits.go index f106adbd..29ad8a4a 100644 --- a/lib/cmd_tool_prefix_bits.go +++ b/lib/cmd_tool_prefix_bits.go @@ -4,7 +4,7 @@ import ( "fmt" "net/netip" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -26,9 +26,9 @@ func CmdToolPrefixBits(f CmdToolPrefixBitsFlags, args []string, printHelp func() return nil } - op := func(input string, inputType ipUtils.INPUT_TYPE) error { + op := func(input string, inputType iputil.INPUT_TYPE) error { switch inputType { - case ipUtils.INPUT_TYPE_CIDR: + case iputil.INPUT_TYPE_CIDR: prefix, err := netip.ParsePrefix(input) if err != nil { return err @@ -38,5 +38,5 @@ func CmdToolPrefixBits(f CmdToolPrefixBitsFlags, args []string, printHelp func() return nil } - return ipUtils.GetInputFrom(args, true, true, op) + return iputil.GetInputFrom(args, true, true, op) } diff --git a/lib/cmd_tool_prefix_masked.go b/lib/cmd_tool_prefix_masked.go index 0aef0ab5..82b0ed21 100644 --- a/lib/cmd_tool_prefix_masked.go +++ b/lib/cmd_tool_prefix_masked.go @@ -4,7 +4,7 @@ import ( "fmt" "net/netip" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -26,9 +26,9 @@ func CmdToolPrefixMasked(f CmdToolPrefixMaskedFlags, args []string, printHelp fu return nil } - op := func(input string, inputType ipUtils.INPUT_TYPE) error { + op := func(input string, inputType iputil.INPUT_TYPE) error { switch inputType { - case ipUtils.INPUT_TYPE_CIDR: + case iputil.INPUT_TYPE_CIDR: prefix, err := netip.ParsePrefix(input) if err != nil { return err @@ -38,5 +38,5 @@ func CmdToolPrefixMasked(f CmdToolPrefixMaskedFlags, args []string, printHelp fu return nil } - return ipUtils.GetInputFrom(args, true, true, op) + return iputil.GetInputFrom(args, true, true, op) } diff --git a/lib/cmd_tool_prefix_valid.go b/lib/cmd_tool_prefix_valid.go index 5ca26780..23ab6c74 100644 --- a/lib/cmd_tool_prefix_valid.go +++ b/lib/cmd_tool_prefix_valid.go @@ -4,7 +4,7 @@ import ( "fmt" "net/netip" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -26,9 +26,9 @@ func CmdToolPrefixIsValid(f CmdToolPrefixIsValidFlags, args []string, printHelp return nil } - op := func(input string, inputType ipUtils.INPUT_TYPE) error { + op := func(input string, inputType iputil.INPUT_TYPE) error { switch inputType { - case ipUtils.INPUT_TYPE_CIDR: + case iputil.INPUT_TYPE_CIDR: prefix, err := netip.ParsePrefix(input) if err != nil { return err @@ -38,5 +38,5 @@ func CmdToolPrefixIsValid(f CmdToolPrefixIsValidFlags, args []string, printHelp return nil } - return ipUtils.GetInputFrom(args, true, true, op) + return iputil.GetInputFrom(args, true, true, op) } diff --git a/lib/cmd_tool_prev.go b/lib/cmd_tool_prev.go index 08f654a0..778c2e96 100644 --- a/lib/cmd_tool_prev.go +++ b/lib/cmd_tool_prev.go @@ -3,7 +3,7 @@ package lib import ( "fmt" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -35,15 +35,15 @@ func CmdToolPrev( return nil } - actionFunc := func(input string, inputType ipUtils.INPUT_TYPE) error { + actionFunc := func(input string, inputType iputil.INPUT_TYPE) error { switch inputType { - case ipUtils.INPUT_TYPE_IP: - newIP := ipUtils.IpAdd(input, -1) + case iputil.INPUT_TYPE_IP: + newIP := iputil.IpAdd(input, -1) fmt.Println(newIP) } return nil } - err := ipUtils.GetInputFrom(args, true, true, actionFunc) + err := iputil.GetInputFrom(args, true, true, actionFunc) if err != nil { fmt.Println(err) } diff --git a/lib/cmd_tool_unmap.go b/lib/cmd_tool_unmap.go index 4285b2f2..f51a8e61 100644 --- a/lib/cmd_tool_unmap.go +++ b/lib/cmd_tool_unmap.go @@ -4,7 +4,7 @@ import ( "fmt" "net/netip" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -29,9 +29,9 @@ func CmdToolUnmap(f CmdToolUnmapFlags, args []string, printHelp func()) error { return nil } - op := func(input string, input_type ipUtils.INPUT_TYPE) error { + op := func(input string, input_type iputil.INPUT_TYPE) error { switch input_type { - case ipUtils.INPUT_TYPE_IP: + case iputil.INPUT_TYPE_IP: addr, err := netip.ParseAddr(input) if err != nil { return err @@ -41,5 +41,5 @@ func CmdToolUnmap(f CmdToolUnmapFlags, args []string, printHelp func()) error { return nil } - return ipUtils.GetInputFrom(args, true, true, op) + return iputil.GetInputFrom(args, true, true, op) } diff --git a/lib/cmd_tool_upper.go b/lib/cmd_tool_upper.go index acbed34a..eb06e563 100644 --- a/lib/cmd_tool_upper.go +++ b/lib/cmd_tool_upper.go @@ -4,7 +4,7 @@ import ( "fmt" "net" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -36,21 +36,21 @@ func CmdToolUpper( return nil } - actionFunc := func(input string, inputType ipUtils.INPUT_TYPE) error { + actionFunc := func(input string, inputType iputil.INPUT_TYPE) error { var err error switch inputType { - case ipUtils.INPUT_TYPE_IP: + case iputil.INPUT_TYPE_IP: fmt.Println(input) - case ipUtils.INPUT_TYPE_IP_RANGE: + case iputil.INPUT_TYPE_IP_RANGE: err = ActionForRangeUpper(input) - case ipUtils.INPUT_TYPE_CIDR: + case iputil.INPUT_TYPE_CIDR: err = ActionForCIDRUpper(input) default: - return ipUtils.ErrInvalidInput + return iputil.ErrInvalidInput } return err } - err := ipUtils.GetInputFrom(args, true, true, actionFunc) + err := iputil.GetInputFrom(args, true, true, actionFunc) if err != nil { fmt.Println(err) } @@ -59,7 +59,7 @@ func CmdToolUpper( } func ActionForRangeUpper(input string) error { - ipRange, err := ipUtils.IPRangeStrFromStr(input) + ipRange, err := iputil.IPRangeStrFromStr(input) if err != nil { return err } @@ -75,10 +75,10 @@ func ActionForCIDRUpper(input string) error { var upper string if ipnet.IP.To4() != nil { - ipRange, _ := ipUtils.IPRangeStrFromCIDR(input) + ipRange, _ := iputil.IPRangeStrFromCIDR(input) upper = ipRange.End } else if ipnet.IP.To16() != nil { - ipRange, _ := ipUtils.IP6RangeStrFromCIDR(input) + ipRange, _ := iputil.IP6RangeStrFromCIDR(input) upper = ipRange.End } diff --git a/lib/cmd_tool_valid.go b/lib/cmd_tool_valid.go index 97fbd2f7..5796339c 100644 --- a/lib/cmd_tool_valid.go +++ b/lib/cmd_tool_valid.go @@ -3,7 +3,7 @@ package lib import ( "fmt" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/spf13/pflag" ) @@ -29,9 +29,9 @@ func CmdToolIsValid(f CmdToolIsValidFlags, args []string, printHelp func()) erro return nil } - op := func(input string, input_type ipUtils.INPUT_TYPE) error { + op := func(input string, input_type iputil.INPUT_TYPE) error { switch input_type { - case ipUtils.INPUT_TYPE_IP: + case iputil.INPUT_TYPE_IP: fmt.Printf("%s,%v\n", input, true) default: fmt.Printf("%s,%v\n", input, false) @@ -39,5 +39,5 @@ func CmdToolIsValid(f CmdToolIsValidFlags, args []string, printHelp func()) erro return nil } - return ipUtils.GetInputFrom(args, true, true, op) + return iputil.GetInputFrom(args, true, true, op) } diff --git a/lib/ipUtils/ip_range_test.go b/lib/ipUtils/ip_range_test.go deleted file mode 100644 index 63a4c46b..00000000 --- a/lib/ipUtils/ip_range_test.go +++ /dev/null @@ -1,83 +0,0 @@ -package ipUtils_test - -import ( - "testing" - - "github.com/ipinfo/cli/lib/ipUtils" - "github.com/stretchr/testify/assert" -) - -func TestIPRangeStrFromStr(t *testing.T) { - var r ipUtils.IPRangeStr - var err error - - r, err = ipUtils.IPRangeStrFromStr("-") - assert.Equal(t, err, ipUtils.ErrNotIPRange) - - r, err = ipUtils.IPRangeStrFromStr(",") - assert.Equal(t, err, ipUtils.ErrNotIPRange) - - r, err = ipUtils.IPRangeStrFromStr("1") - assert.Equal(t, err, ipUtils.ErrNotIPRange) - - r, err = ipUtils.IPRangeStrFromStr("1,") - assert.Equal(t, err, ipUtils.ErrNotIPRange) - - r, err = ipUtils.IPRangeStrFromStr("1-") - assert.Equal(t, err, ipUtils.ErrNotIPRange) - - r, err = ipUtils.IPRangeStrFromStr("1.1.1,") - assert.Equal(t, err, ipUtils.ErrNotIPRange) - - r, err = ipUtils.IPRangeStrFromStr("1.1.1-") - assert.Equal(t, err, ipUtils.ErrNotIPRange) - - r, err = ipUtils.IPRangeStrFromStr("1.1.1.1-") - assert.Equal(t, err, ipUtils.ErrNotIPRange) - - r, err = ipUtils.IPRangeStrFromStr("1.1.1.1,") - assert.Equal(t, err, ipUtils.ErrNotIPRange) - - r, err = ipUtils.IPRangeStrFromStr("1.1.1.1,") - assert.Equal(t, err, ipUtils.ErrNotIPRange) - - r, err = ipUtils.IPRangeStrFromStr("1.1.1.1,,") - assert.Equal(t, err, ipUtils.ErrNotIPRange) - - r, err = ipUtils.IPRangeStrFromStr("1.1.1.1,-") - assert.Equal(t, err, ipUtils.ErrNotIPRange) - - r, err = ipUtils.IPRangeStrFromStr("1.1.1.1--") - assert.Equal(t, err, ipUtils.ErrNotIPRange) - - r, err = ipUtils.IPRangeStrFromStr("1.1.1.1,1.1.1") - assert.Equal(t, err, ipUtils.ErrNotIPRange) - - r, err = ipUtils.IPRangeStrFromStr("1.1.1.1,1.1.1,") - assert.Equal(t, err, ipUtils.ErrNotIPRange) - - r, err = ipUtils.IPRangeStrFromStr("1.1.1.1-1.1.1,") - assert.Equal(t, err, ipUtils.ErrNotIPRange) - - r, err = ipUtils.IPRangeStrFromStr("1.1.1.1-1.1.1-") - assert.Equal(t, err, ipUtils.ErrNotIPRange) - - r, err = ipUtils.IPRangeStrFromStr("1.1.1.1,1.1.1.2,") - assert.Equal(t, err, ipUtils.ErrNotIPRange) - - r, err = ipUtils.IPRangeStrFromStr("1.1.1.1,1.1.1.2-") - assert.Equal(t, err, ipUtils.ErrNotIPRange) - - r, err = ipUtils.IPRangeStrFromStr("1.1.1.1,1.1.1.2.3") - assert.Equal(t, err, ipUtils.ErrNotIPRange) - - r, err = ipUtils.IPRangeStrFromStr("1.1.1.1-1.1.1.2") - assert.Nil(t, err) - assert.Equal(t, r.Start, "1.1.1.1") - assert.Equal(t, r.End, "1.1.1.2") - - r, err = ipUtils.IPRangeStrFromStr("1.1.1.1,1.1.1.2") - assert.Nil(t, err) - assert.Equal(t, r.Start, "1.1.1.1") - assert.Equal(t, r.End, "1.1.1.2") -} diff --git a/lib/ipUtils/asn_str.go b/lib/iputil/asn_str.go similarity index 96% rename from lib/ipUtils/asn_str.go rename to lib/iputil/asn_str.go index 427c9474..48164dcd 100644 --- a/lib/ipUtils/asn_str.go +++ b/lib/iputil/asn_str.go @@ -1,4 +1,4 @@ -package ipUtils +package iputil import ( "strconv" diff --git a/lib/ipUtils/bogon.go b/lib/iputil/bogon.go similarity index 99% rename from lib/ipUtils/bogon.go rename to lib/iputil/bogon.go index 9cf86919..037e7da2 100644 --- a/lib/ipUtils/bogon.go +++ b/lib/iputil/bogon.go @@ -1,4 +1,4 @@ -package ipUtils +package iputil // these lists are initialized on startup inside this pkg's `init`. var BogonIP4List []IPRange diff --git a/lib/ipUtils/cidr.go b/lib/iputil/cidr.go similarity index 98% rename from lib/ipUtils/cidr.go rename to lib/iputil/cidr.go index eada680e..49795782 100644 --- a/lib/ipUtils/cidr.go +++ b/lib/iputil/cidr.go @@ -1,4 +1,4 @@ -package ipUtils +package iputil import ( "bytes" diff --git a/lib/ipUtils/errors.go b/lib/iputil/errors.go similarity index 98% rename from lib/ipUtils/errors.go rename to lib/iputil/errors.go index fd5233b3..9af6b2ef 100644 --- a/lib/ipUtils/errors.go +++ b/lib/iputil/errors.go @@ -1,4 +1,4 @@ -package ipUtils +package iputil import ( "errors" diff --git a/lib/ipUtils/file.go b/lib/iputil/file.go similarity index 92% rename from lib/ipUtils/file.go rename to lib/iputil/file.go index 705f19e7..d750c6ea 100644 --- a/lib/ipUtils/file.go +++ b/lib/iputil/file.go @@ -1,4 +1,4 @@ -package ipUtils +package iputil import ( "os" diff --git a/lib/ipUtils/init.go b/lib/iputil/init.go similarity index 99% rename from lib/ipUtils/init.go rename to lib/iputil/init.go index 39e21f43..ac8ce8a0 100644 --- a/lib/ipUtils/init.go +++ b/lib/iputil/init.go @@ -1,4 +1,4 @@ -package ipUtils +package iputil import ( "regexp" diff --git a/lib/ipUtils/ip.go b/lib/iputil/ip.go similarity index 99% rename from lib/ipUtils/ip.go rename to lib/iputil/ip.go index e5cc1e60..440ca1ab 100644 --- a/lib/ipUtils/ip.go +++ b/lib/iputil/ip.go @@ -1,4 +1,4 @@ -package ipUtils +package iputil import ( "encoding/binary" diff --git a/lib/ipUtils/ip6.go b/lib/iputil/ip6.go similarity index 99% rename from lib/ipUtils/ip6.go rename to lib/iputil/ip6.go index 6b0908e8..232c5782 100644 --- a/lib/ipUtils/ip6.go +++ b/lib/iputil/ip6.go @@ -1,4 +1,4 @@ -package ipUtils +package iputil import ( "encoding/binary" diff --git a/lib/ipUtils/ip6_range.go b/lib/iputil/ip6_range.go similarity index 99% rename from lib/ipUtils/ip6_range.go rename to lib/iputil/ip6_range.go index cb6b9c87..8c354411 100644 --- a/lib/ipUtils/ip6_range.go +++ b/lib/iputil/ip6_range.go @@ -1,4 +1,4 @@ -package ipUtils +package iputil import ( "encoding/binary" diff --git a/lib/ipUtils/ip6_range_str.go b/lib/iputil/ip6_range_str.go similarity index 99% rename from lib/ipUtils/ip6_range_str.go rename to lib/iputil/ip6_range_str.go index 5ef278d4..d41138af 100644 --- a/lib/ipUtils/ip6_range_str.go +++ b/lib/iputil/ip6_range_str.go @@ -1,4 +1,4 @@ -package ipUtils +package iputil import ( "net" diff --git a/lib/ipUtils/ip6_str.go b/lib/iputil/ip6_str.go similarity index 91% rename from lib/ipUtils/ip6_str.go rename to lib/iputil/ip6_str.go index cd496760..3be3fde2 100644 --- a/lib/ipUtils/ip6_str.go +++ b/lib/iputil/ip6_str.go @@ -1,4 +1,4 @@ -package ipUtils +package iputil import ( "net" diff --git a/lib/ipUtils/ip6_subnet.go b/lib/iputil/ip6_subnet.go similarity index 99% rename from lib/ipUtils/ip6_subnet.go rename to lib/iputil/ip6_subnet.go index d0a2a125..eb8be326 100644 --- a/lib/ipUtils/ip6_subnet.go +++ b/lib/iputil/ip6_subnet.go @@ -1,4 +1,4 @@ -package ipUtils +package iputil import ( "encoding/binary" diff --git a/lib/ipUtils/ip6_subnet_str.go b/lib/iputil/ip6_subnet_str.go similarity index 95% rename from lib/ipUtils/ip6_subnet_str.go rename to lib/iputil/ip6_subnet_str.go index 89e3a4b1..41ea8de5 100644 --- a/lib/ipUtils/ip6_subnet_str.go +++ b/lib/iputil/ip6_subnet_str.go @@ -1,4 +1,4 @@ -package ipUtils +package iputil import ( "net" diff --git a/lib/ipUtils/ip_conversions.go b/lib/iputil/ip_conversions.go similarity index 99% rename from lib/ipUtils/ip_conversions.go rename to lib/iputil/ip_conversions.go index e56200a6..1450e780 100644 --- a/lib/ipUtils/ip_conversions.go +++ b/lib/iputil/ip_conversions.go @@ -1,4 +1,4 @@ -package ipUtils +package iputil import ( "fmt" diff --git a/lib/ipUtils/ip_list.go b/lib/iputil/ip_list.go similarity index 99% rename from lib/ipUtils/ip_list.go rename to lib/iputil/ip_list.go index acf90881..185645f5 100644 --- a/lib/ipUtils/ip_list.go +++ b/lib/iputil/ip_list.go @@ -1,4 +1,4 @@ -package ipUtils +package iputil import ( "bufio" diff --git a/lib/ipUtils/ip_list_write.go b/lib/iputil/ip_list_write.go similarity index 99% rename from lib/ipUtils/ip_list_write.go rename to lib/iputil/ip_list_write.go index f07d0895..1f0e62c9 100644 --- a/lib/ipUtils/ip_list_write.go +++ b/lib/iputil/ip_list_write.go @@ -1,4 +1,4 @@ -package ipUtils +package iputil import ( "bufio" diff --git a/lib/ipUtils/ip_math.go b/lib/iputil/ip_math.go similarity index 98% rename from lib/ipUtils/ip_math.go rename to lib/iputil/ip_math.go index d1932375..7aa23782 100644 --- a/lib/ipUtils/ip_math.go +++ b/lib/iputil/ip_math.go @@ -1,4 +1,4 @@ -package ipUtils +package iputil import ( "encoding/binary" diff --git a/lib/ipUtils/ip_range.go b/lib/iputil/ip_range.go similarity index 99% rename from lib/ipUtils/ip_range.go rename to lib/iputil/ip_range.go index 0bec8e50..f5085e96 100644 --- a/lib/ipUtils/ip_range.go +++ b/lib/iputil/ip_range.go @@ -1,4 +1,4 @@ -package ipUtils +package iputil import ( "encoding/binary" diff --git a/lib/ipUtils/ip_range_str.go b/lib/iputil/ip_range_str.go similarity index 99% rename from lib/ipUtils/ip_range_str.go rename to lib/iputil/ip_range_str.go index f74d88a6..e46f55ab 100644 --- a/lib/ipUtils/ip_range_str.go +++ b/lib/iputil/ip_range_str.go @@ -1,4 +1,4 @@ -package ipUtils +package iputil import ( "encoding/binary" diff --git a/lib/iputil/ip_range_test.go b/lib/iputil/ip_range_test.go new file mode 100644 index 00000000..1190a0ca --- /dev/null +++ b/lib/iputil/ip_range_test.go @@ -0,0 +1,83 @@ +package iputil_test + +import ( + "testing" + + "github.com/ipinfo/cli/lib/iputil" + "github.com/stretchr/testify/assert" +) + +func TestIPRangeStrFromStr(t *testing.T) { + var r iputil.IPRangeStr + var err error + + r, err = iputil.IPRangeStrFromStr("-") + assert.Equal(t, err, iputil.ErrNotIPRange) + + r, err = iputil.IPRangeStrFromStr(",") + assert.Equal(t, err, iputil.ErrNotIPRange) + + r, err = iputil.IPRangeStrFromStr("1") + assert.Equal(t, err, iputil.ErrNotIPRange) + + r, err = iputil.IPRangeStrFromStr("1,") + assert.Equal(t, err, iputil.ErrNotIPRange) + + r, err = iputil.IPRangeStrFromStr("1-") + assert.Equal(t, err, iputil.ErrNotIPRange) + + r, err = iputil.IPRangeStrFromStr("1.1.1,") + assert.Equal(t, err, iputil.ErrNotIPRange) + + r, err = iputil.IPRangeStrFromStr("1.1.1-") + assert.Equal(t, err, iputil.ErrNotIPRange) + + r, err = iputil.IPRangeStrFromStr("1.1.1.1-") + assert.Equal(t, err, iputil.ErrNotIPRange) + + r, err = iputil.IPRangeStrFromStr("1.1.1.1,") + assert.Equal(t, err, iputil.ErrNotIPRange) + + r, err = iputil.IPRangeStrFromStr("1.1.1.1,") + assert.Equal(t, err, iputil.ErrNotIPRange) + + r, err = iputil.IPRangeStrFromStr("1.1.1.1,,") + assert.Equal(t, err, iputil.ErrNotIPRange) + + r, err = iputil.IPRangeStrFromStr("1.1.1.1,-") + assert.Equal(t, err, iputil.ErrNotIPRange) + + r, err = iputil.IPRangeStrFromStr("1.1.1.1--") + assert.Equal(t, err, iputil.ErrNotIPRange) + + r, err = iputil.IPRangeStrFromStr("1.1.1.1,1.1.1") + assert.Equal(t, err, iputil.ErrNotIPRange) + + r, err = iputil.IPRangeStrFromStr("1.1.1.1,1.1.1,") + assert.Equal(t, err, iputil.ErrNotIPRange) + + r, err = iputil.IPRangeStrFromStr("1.1.1.1-1.1.1,") + assert.Equal(t, err, iputil.ErrNotIPRange) + + r, err = iputil.IPRangeStrFromStr("1.1.1.1-1.1.1-") + assert.Equal(t, err, iputil.ErrNotIPRange) + + r, err = iputil.IPRangeStrFromStr("1.1.1.1,1.1.1.2,") + assert.Equal(t, err, iputil.ErrNotIPRange) + + r, err = iputil.IPRangeStrFromStr("1.1.1.1,1.1.1.2-") + assert.Equal(t, err, iputil.ErrNotIPRange) + + r, err = iputil.IPRangeStrFromStr("1.1.1.1,1.1.1.2.3") + assert.Equal(t, err, iputil.ErrNotIPRange) + + r, err = iputil.IPRangeStrFromStr("1.1.1.1-1.1.1.2") + assert.Nil(t, err) + assert.Equal(t, r.Start, "1.1.1.1") + assert.Equal(t, r.End, "1.1.1.2") + + r, err = iputil.IPRangeStrFromStr("1.1.1.1,1.1.1.2") + assert.Nil(t, err) + assert.Equal(t, r.Start, "1.1.1.1") + assert.Equal(t, r.End, "1.1.1.2") +} diff --git a/lib/ipUtils/ip_str.go b/lib/iputil/ip_str.go similarity index 96% rename from lib/ipUtils/ip_str.go rename to lib/iputil/ip_str.go index a49df80c..c9ac00e8 100644 --- a/lib/ipUtils/ip_str.go +++ b/lib/iputil/ip_str.go @@ -1,4 +1,4 @@ -package ipUtils +package iputil import ( "net" diff --git a/lib/ipUtils/ip_subnet.go b/lib/iputil/ip_subnet.go similarity index 99% rename from lib/ipUtils/ip_subnet.go rename to lib/iputil/ip_subnet.go index a898db6b..cc5bc5e4 100644 --- a/lib/ipUtils/ip_subnet.go +++ b/lib/iputil/ip_subnet.go @@ -1,4 +1,4 @@ -package ipUtils +package iputil import ( "encoding/binary" diff --git a/lib/ipUtils/ip_subnet_str.go b/lib/iputil/ip_subnet_str.go similarity index 95% rename from lib/ipUtils/ip_subnet_str.go rename to lib/iputil/ip_subnet_str.go index e5ed93ab..f8ed075f 100644 --- a/lib/ipUtils/ip_subnet_str.go +++ b/lib/iputil/ip_subnet_str.go @@ -1,4 +1,4 @@ -package ipUtils +package iputil import ( "net" diff --git a/lib/ipUtils/ip_subnet_test.go b/lib/iputil/ip_subnet_test.go similarity index 95% rename from lib/ipUtils/ip_subnet_test.go rename to lib/iputil/ip_subnet_test.go index 15fd66b2..50d9d623 100644 --- a/lib/ipUtils/ip_subnet_test.go +++ b/lib/iputil/ip_subnet_test.go @@ -1,9 +1,9 @@ -package ipUtils_test +package iputil_test import ( "testing" - "github.com/ipinfo/cli/lib/ipUtils" + "github.com/ipinfo/cli/lib/iputil" "github.com/stretchr/testify/assert" ) @@ -16,7 +16,7 @@ func assertCIDRsFromIPRangeStrRaw( var _cidrs []string var err error - _cidrs, err = ipUtils.CIDRsFromIPRangeStrRaw(start + "-" + end) + _cidrs, err = iputil.CIDRsFromIPRangeStrRaw(start + "-" + end) assert.Nil(t, err) assert.Equal(t, len(cidrs), len(_cidrs)) for i := 0; i < len(cidrs); i++ { @@ -24,7 +24,7 @@ func assertCIDRsFromIPRangeStrRaw( } // test reverse direction - _cidrs, err = ipUtils.CIDRsFromIPRangeStrRaw(end + "-" + start) + _cidrs, err = iputil.CIDRsFromIPRangeStrRaw(end + "-" + start) assert.Nil(t, err) assert.Equal(t, len(cidrs), len(_cidrs)) for i := len(cidrs) - 1; i >= 0; i-- { diff --git a/lib/ipUtils/regex.go b/lib/iputil/regex.go similarity index 99% rename from lib/ipUtils/regex.go rename to lib/iputil/regex.go index ef52b0a9..08a73615 100644 --- a/lib/ipUtils/regex.go +++ b/lib/iputil/regex.go @@ -1,4 +1,4 @@ -package ipUtils +package iputil import "regexp" diff --git a/lib/ipUtils/string_slice.go b/lib/iputil/string_slice.go similarity index 92% rename from lib/ipUtils/string_slice.go rename to lib/iputil/string_slice.go index f47caa2c..1514f523 100644 --- a/lib/ipUtils/string_slice.go +++ b/lib/iputil/string_slice.go @@ -1,4 +1,4 @@ -package ipUtils +package iputil // StringSliceRev reverses the order of elements inside of a string slice. func StringSliceRev(s []string) { diff --git a/lib/ipUtils/u128.go b/lib/iputil/u128.go similarity index 99% rename from lib/ipUtils/u128.go rename to lib/iputil/u128.go index 4b6a96e3..66cba7ab 100644 --- a/lib/ipUtils/u128.go +++ b/lib/iputil/u128.go @@ -1,4 +1,4 @@ -package ipUtils +package iputil import ( "math" diff --git a/lib/ipUtils/utils_input.go b/lib/iputil/utils_input.go similarity index 99% rename from lib/ipUtils/utils_input.go rename to lib/iputil/utils_input.go index daec7fcd..e5852b21 100644 --- a/lib/ipUtils/utils_input.go +++ b/lib/iputil/utils_input.go @@ -1,4 +1,4 @@ -package ipUtils +package iputil import ( "bufio" From 447494293c8c1870bbcae39988193c1cd08a3be4 Mon Sep 17 00:00:00 2001 From: shamirShahzad Date: Sun, 17 Dec 2023 00:39:23 +0500 Subject: [PATCH 3/3] Capitalizing and better naming --- lib/cmd_asn_bulk.go | 2 +- lib/cmd_tool_aggregate.go | 2 +- lib/iputil/cidr.go | 6 +++--- lib/iputil/regex.go | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/cmd_asn_bulk.go b/lib/cmd_asn_bulk.go index 5ddb2cbe..ac86bf45 100644 --- a/lib/cmd_asn_bulk.go +++ b/lib/cmd_asn_bulk.go @@ -80,7 +80,7 @@ func CmdASNBulk(f CmdASNBulkFlags, ii *ipinfo.Client, args []string, printHelp f } if ii.Token == "" { - return nil, errors.New("bulk lookups require a token; login via `ipinfo init`.") + return nil, errors.New("bulk lookups require a token; login via `ipinfo init`") } return ii.GetASNDetailsBatch(asns, ipinfo.BatchReqOpts{ diff --git a/lib/cmd_tool_aggregate.go b/lib/cmd_tool_aggregate.go index ff5026cb..119d5218 100644 --- a/lib/cmd_tool_aggregate.go +++ b/lib/cmd_tool_aggregate.go @@ -140,7 +140,7 @@ func CmdToolAggregate( parsedIPs = append(parsedIPs, ips...) } - adjacentCombined := combineAdjacent(stripOverlapping(iputil.List(parsedCIDRs))) + adjacentCombined := combineAdjacent(stripOverlapping(iputil.NewCidrList(parsedCIDRs))) outlierIPs := make([]net.IP, 0) length := len(adjacentCombined) diff --git a/lib/iputil/cidr.go b/lib/iputil/cidr.go index 49795782..2cb6f1c8 100644 --- a/lib/iputil/cidr.go +++ b/lib/iputil/cidr.go @@ -14,7 +14,7 @@ type CIDR struct { Network *net.IPNet } -// newCidr creates a newCidr CIDR structure. +// NewCidr creates a NewCidr CIDR structure. func NewCidr(s string) *CIDR { ip, ipnet, err := net.ParseCIDR(s) if err != nil { @@ -47,8 +47,8 @@ func (c *CIDR) Size() int { return int(math.Pow(2, float64(bits-ones))) } -// list returns a slice of sorted CIDR structures. -func List(s []string) []*CIDR { +// NewCidrList returns a slice of sorted CIDR structures. +func NewCidrList(s []string) []*CIDR { out := make([]*CIDR, 0) for _, c := range s { out = append(out, NewCidr(c)) diff --git a/lib/iputil/regex.go b/lib/iputil/regex.go index 08a73615..fc052301 100644 --- a/lib/iputil/regex.go +++ b/lib/iputil/regex.go @@ -30,8 +30,8 @@ var V4SubnetRegex *regexp.Regexp var V6SubnetRegex *regexp.Regexp var SubnetRegex *regexp.Regexp -const V4octet = `(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)` -const IPv4RegexPattern = `(` + V4octet + `\.){3}` + V4octet +const V4Octet = `(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)` +const IPv4RegexPattern = `(` + V4Octet + `\.){3}` + V4Octet const IPv4RangeRegexPattern = IPv4RegexPattern + `[-,]` + IPv4RegexPattern const IPv4CIDRRegexPattern = IPv4RegexPattern + `\/([1-2]?[0-9]|3[0-2])`