summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/hashicorp/go-sockaddr/template/template.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/hashicorp/go-sockaddr/template/template.go')
-rw-r--r--vendor/github.com/hashicorp/go-sockaddr/template/template.go155
1 files changed, 0 insertions, 155 deletions
diff --git a/vendor/github.com/hashicorp/go-sockaddr/template/template.go b/vendor/github.com/hashicorp/go-sockaddr/template/template.go
deleted file mode 100644
index bbed51361..000000000
--- a/vendor/github.com/hashicorp/go-sockaddr/template/template.go
+++ /dev/null
@@ -1,155 +0,0 @@
-package template
-
-import (
- "bytes"
- "fmt"
- "text/template"
-
- "github.com/hashicorp/errwrap"
- sockaddr "github.com/hashicorp/go-sockaddr"
-)
-
-var (
- // SourceFuncs is a map of all top-level functions that generate
- // sockaddr data types.
- SourceFuncs template.FuncMap
-
- // SortFuncs is a map of all functions used in sorting
- SortFuncs template.FuncMap
-
- // FilterFuncs is a map of all functions used in sorting
- FilterFuncs template.FuncMap
-
- // HelperFuncs is a map of all functions used in sorting
- HelperFuncs template.FuncMap
-)
-
-func init() {
- SourceFuncs = template.FuncMap{
- // GetAllInterfaces - Returns an exhaustive set of IfAddr
- // structs available on the host. `GetAllInterfaces` is the
- // initial input and accessible as the initial "dot" in the
- // pipeline.
- "GetAllInterfaces": sockaddr.GetAllInterfaces,
-
- // GetDefaultInterfaces - Returns one IfAddr for every IP that
- // is on the interface containing the default route for the
- // host.
- "GetDefaultInterfaces": sockaddr.GetDefaultInterfaces,
-
- // GetPrivateInterfaces - Returns one IfAddr for every IP that
- // matches RFC 6890, are attached to the interface with the
- // default route, and are forwardable IP addresses. NOTE: RFC
- // 6890 is a more exhaustive version of RFC1918 because it spans
- // IPv4 and IPv6, however it doespermit the inclusion of likely
- // undesired addresses such as multicast, therefore our
- // definition of a "private" address also excludes
- // non-forwardable IP addresses (as defined by the IETF).
- "GetPrivateInterfaces": sockaddr.GetPrivateInterfaces,
-
- // GetPublicInterfaces - Returns a list of IfAddr that do not
- // match RFC 6890, are attached to the default route, and are
- // forwardable.
- "GetPublicInterfaces": sockaddr.GetPublicInterfaces,
- }
-
- SortFuncs = template.FuncMap{
- "sort": sockaddr.SortIfBy,
- }
-
- FilterFuncs = template.FuncMap{
- "exclude": sockaddr.ExcludeIfs,
- "include": sockaddr.IncludeIfs,
- }
-
- HelperFuncs = template.FuncMap{
- // Misc functions that operate on IfAddrs inputs
- "attr": Attr,
- "join": sockaddr.JoinIfAddrs,
- "limit": sockaddr.LimitIfAddrs,
- "offset": sockaddr.OffsetIfAddrs,
- "unique": sockaddr.UniqueIfAddrsBy,
-
- // Misc math functions that operate on a single IfAddr input
- "math": sockaddr.IfAddrsMath,
-
- // Return a Private RFC 6890 IP address string that is attached
- // to the default route and a forwardable address.
- "GetPrivateIP": sockaddr.GetPrivateIP,
-
- // Return all Private RFC 6890 IP addresses as a space-delimited string of
- // IP addresses. Addresses returned do not have to be on the interface with
- // a default route.
- "GetPrivateIPs": sockaddr.GetPrivateIPs,
-
- // Return a Public RFC 6890 IP address string that is attached
- // to the default route and a forwardable address.
- "GetPublicIP": sockaddr.GetPublicIP,
-
- // Return allPublic RFC 6890 IP addresses as a space-delimited string of IP
- // addresses. Addresses returned do not have to be on the interface with a
- // default route.
- "GetPublicIPs": sockaddr.GetPublicIPs,
-
- // Return the first IP address of the named interface, sorted by
- // the largest network size.
- "GetInterfaceIP": sockaddr.GetInterfaceIP,
-
- // Return all IP addresses on the named interface, sorted by the largest
- // network size.
- "GetInterfaceIPs": sockaddr.GetInterfaceIPs,
- }
-}
-
-// Attr returns the attribute from the ifAddrRaw argument. If the argument is
-// an IfAddrs, only the first element will be evaluated for resolution.
-func Attr(selectorName string, ifAddrsRaw interface{}) (string, error) {
- switch v := ifAddrsRaw.(type) {
- case sockaddr.IfAddr:
- return sockaddr.IfAttr(selectorName, v)
- case sockaddr.IfAddrs:
- return sockaddr.IfAttrs(selectorName, v)
- default:
- return "", fmt.Errorf("unable to obtain attribute %s from type %T (%v)", selectorName, ifAddrsRaw, ifAddrsRaw)
- }
-}
-
-// Parse parses input as template input using the addresses available on the
-// host, then returns the string output if there are no errors.
-func Parse(input string) (string, error) {
- addrs, err := sockaddr.GetAllInterfaces()
- if err != nil {
- return "", errwrap.Wrapf("unable to query interface addresses: {{err}}", err)
- }
-
- return ParseIfAddrs(input, addrs)
-}
-
-// ParseIfAddrs parses input as template input using the IfAddrs inputs, then
-// returns the string output if there are no errors.
-func ParseIfAddrs(input string, ifAddrs sockaddr.IfAddrs) (string, error) {
- return ParseIfAddrsTemplate(input, ifAddrs, template.New("sockaddr.Parse"))
-}
-
-// ParseIfAddrsTemplate parses input as template input using the IfAddrs inputs,
-// then returns the string output if there are no errors.
-func ParseIfAddrsTemplate(input string, ifAddrs sockaddr.IfAddrs, tmplIn *template.Template) (string, error) {
- // Create a template, add the function map, and parse the text.
- tmpl, err := tmplIn.Option("missingkey=error").
- Funcs(SourceFuncs).
- Funcs(SortFuncs).
- Funcs(FilterFuncs).
- Funcs(HelperFuncs).
- Parse(input)
- if err != nil {
- return "", errwrap.Wrapf(fmt.Sprintf("unable to parse template %+q: {{err}}", input), err)
- }
-
- var outWriter bytes.Buffer
- err = tmpl.Execute(&outWriter, ifAddrs)
- if err != nil {
- return "", errwrap.Wrapf(fmt.Sprintf("unable to execute sockaddr input %+q: {{err}}", input), err)
- }
-
- return outWriter.String(), nil
-}