func parseAddress(address string) (string, string, error) { if address == "" { return "", "", nil } if !urlutil.IsTransportURL(address) { return "", "", fmt.Errorf("syslog-address should be in form proto://address, got %v", address) } url, err := url.Parse(address) if err != nil { return "", "", err } // unix and unixgram socket validation if url.Scheme == "unix" || url.Scheme == "unixgram" { if _, err := os.Stat(url.Path); err != nil { return "", "", err } return url.Scheme, url.Path, nil } // here we process tcp|udp host := url.Host if _, _, err := net.SplitHostPort(host); err != nil { if !strings.Contains(err.Error(), "missing port in address") { return "", "", err } host = host + ":514" } return url.Scheme, host, nil }
func parseAddress(address string) (string, string, error) { if urlutil.IsTransportURL(address) { url, err := url.Parse(address) if err != nil { return "", "", err } // unix socket validation if url.Scheme == "unix" { if _, err := os.Stat(url.Path); err != nil { return "", "", err } return url.Scheme, url.Path, nil } // here we process tcp|udp host := url.Host if _, _, err := net.SplitHostPort(host); err != nil { if !strings.Contains(err.Error(), "missing port in address") { return "", "", err } host = host + ":514" } return url.Scheme, host, nil } return "", "", nil }
func parseAddress(address string) (*location, error) { if address == "" { return &location{ protocol: defaultProtocol, host: defaultHost, port: defaultPort, path: "", }, nil } protocol := defaultProtocol givenAddress := address if urlutil.IsTransportURL(address) { url, err := url.Parse(address) if err != nil { return nil, errors.Wrapf(err, "invalid fluentd-address %s", givenAddress) } // unix and unixgram socket if url.Scheme == "unix" || url.Scheme == "unixgram" { return &location{ protocol: url.Scheme, host: "", port: 0, path: url.Path, }, nil } // tcp|udp protocol = url.Scheme address = url.Host } host, port, err := net.SplitHostPort(address) if err != nil { if !strings.Contains(err.Error(), "missing port in address") { return nil, errors.Wrapf(err, "invalid fluentd-address %s", givenAddress) } return &location{ protocol: protocol, host: host, port: defaultPort, path: "", }, nil } portnum, err := strconv.Atoi(port) if err != nil { return nil, errors.Wrapf(err, "invalid fluentd-address %s", givenAddress) } return &location{ protocol: protocol, host: host, port: portnum, path: "", }, nil }
func parseAddress(address string) (string, error) { if urlutil.IsTransportURL(address) { url, err := url.Parse(address) if err != nil { return "", err } // we support only udp if url.Scheme != "udp" { return "", fmt.Errorf("gelf: endpoint needs to be UDP") } // get host and port if _, _, err = net.SplitHostPort(url.Host); err != nil { return "", fmt.Errorf("gelf: please provide gelf-address as udp://host:port") } return url.Host, nil } return "", nil }