| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- package util
- import (
- "net"
- "strings"
- )
- // ParseIPAddress parses an IP address and removes port and/or IPV6 format
- func ParseIPAddress(input string) string {
- host, _ := SplitHostPort(input)
- ip := net.ParseIP(host)
- if ip == nil {
- return host
- }
- if ip.IsLoopback() {
- return "127.0.0.1"
- }
- return ip.String()
- }
- // SplitHostPortDefault splits ip address/hostname string by host and port. Defaults used if no match found
- func SplitHostPortDefault(input, defaultHost, defaultPort string) (host string, port string) {
- port = defaultPort
- s := input
- lastIndex := strings.LastIndex(input, ":")
- if lastIndex != -1 {
- if lastIndex > 0 && input[lastIndex-1:lastIndex] != ":" {
- s = input[:lastIndex]
- port = input[lastIndex+1:]
- } else if lastIndex == 0 {
- s = defaultHost
- port = input[lastIndex+1:]
- }
- } else {
- port = defaultPort
- }
- s = strings.Replace(s, "[", "", -1)
- s = strings.Replace(s, "]", "", -1)
- port = strings.Replace(port, "[", "", -1)
- port = strings.Replace(port, "]", "", -1)
- return s, port
- }
- // SplitHostPort splits ip address/hostname string by host and port
- func SplitHostPort(input string) (host string, port string) {
- return SplitHostPortDefault(input, "", "")
- }
|