add vault/etcd
This commit is contained in:
		
							
								
								
									
										98
									
								
								config/source/vault/util.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								config/source/vault/util.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,98 @@
 | 
			
		||||
package vault
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"github.com/micro/go-micro/config/source"
 | 
			
		||||
	"net"
 | 
			
		||||
	"net/url"
 | 
			
		||||
	"strings"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func makeMap(kv map[string]interface{}, secretName string) (map[string]interface{}, error) {
 | 
			
		||||
	data := make(map[string]interface{})
 | 
			
		||||
 | 
			
		||||
	// if secret version included
 | 
			
		||||
	if kv["data"] != nil && kv["metadata"] != nil {
 | 
			
		||||
		kv = kv["data"].(map[string]interface{})
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	target := data
 | 
			
		||||
 | 
			
		||||
	// if secretName defined, wrap secrets under a map
 | 
			
		||||
	if secretName != "" {
 | 
			
		||||
		path := strings.Split(secretName, "/")
 | 
			
		||||
		// find (or create) the location we want to put this value at
 | 
			
		||||
		for i, dir := range path {
 | 
			
		||||
			if _, ok := target[dir]; !ok {
 | 
			
		||||
				target[dir] = make(map[string]interface{})
 | 
			
		||||
			}
 | 
			
		||||
			if i < len(path)-1 {
 | 
			
		||||
				target = target[dir].(map[string]interface{})
 | 
			
		||||
			} else {
 | 
			
		||||
				target[dir] = kv
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return data, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func getAddress(options source.Options) string {
 | 
			
		||||
	// check if there are any addrs
 | 
			
		||||
	a, ok := options.Context.Value(addressKey{}).(string)
 | 
			
		||||
	if ok {
 | 
			
		||||
		// check if http protocol is defined
 | 
			
		||||
		if a[0] != 'h' {
 | 
			
		||||
			addr, port, err := net.SplitHostPort(a)
 | 
			
		||||
			if ae, ok := err.(*net.AddrError); ok && ae.Err == "missing port in address" {
 | 
			
		||||
				port = "8200"
 | 
			
		||||
				addr = a
 | 
			
		||||
				return fmt.Sprintf("https://%s:%s", addr, port)
 | 
			
		||||
			} else if err == nil {
 | 
			
		||||
				return fmt.Sprintf("https://%s:%s", addr, port)
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			u, _ := url.Parse(a)
 | 
			
		||||
 | 
			
		||||
			if host, port, _ := net.SplitHostPort(u.Host); host == "" {
 | 
			
		||||
				port = "8200"
 | 
			
		||||
				return fmt.Sprintf("%s://%s:%s", u.Scheme, u.Host, port)
 | 
			
		||||
			} else {
 | 
			
		||||
				return fmt.Sprintf("%s://%s", u.Scheme, u.Host)
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return ""
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func getToken(options source.Options) string {
 | 
			
		||||
	token, ok := options.Context.Value(tokenKey{}).(string)
 | 
			
		||||
	if ok {
 | 
			
		||||
		return token
 | 
			
		||||
	}
 | 
			
		||||
	return ""
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func getResourcePath(options source.Options) string {
 | 
			
		||||
	path, ok := options.Context.Value(resourcePath{}).(string)
 | 
			
		||||
	if ok {
 | 
			
		||||
		return path
 | 
			
		||||
	}
 | 
			
		||||
	return ""
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func getNameSpace(options source.Options) string {
 | 
			
		||||
	ns, ok := options.Context.Value(nameSpace{}).(string)
 | 
			
		||||
	if ok {
 | 
			
		||||
		return ns
 | 
			
		||||
	}
 | 
			
		||||
	return ""
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func getSecretName(options source.Options) string {
 | 
			
		||||
	ns, ok := options.Context.Value(secretName{}).(string)
 | 
			
		||||
	if ok {
 | 
			
		||||
		return ns
 | 
			
		||||
	}
 | 
			
		||||
	return ""
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user