mirror of
				https://github.com/1Password/onepassword-operator.git
				synced 2025-10-31 11:49:40 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			67 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package utils
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"regexp"
 | |
| 	"strconv"
 | |
| 	"strings"
 | |
| 
 | |
| 	kubeValidate "k8s.io/apimachinery/pkg/util/validation"
 | |
| )
 | |
| 
 | |
| var invalidDNS1123Chars = regexp.MustCompile("[^a-z0-9-.]+")
 | |
| 
 | |
| func ContainsString(slice []string, s string) bool {
 | |
| 	for _, item := range slice {
 | |
| 		if item == s {
 | |
| 			return true
 | |
| 		}
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| func RemoveString(slice []string, s string) (result []string) {
 | |
| 	for _, item := range slice {
 | |
| 		if item == s {
 | |
| 			continue
 | |
| 		}
 | |
| 		result = append(result, item)
 | |
| 	}
 | |
| 	return
 | |
| }
 | |
| 
 | |
| func StringToBool(str string) (bool, error) {
 | |
| 	restartDeploymentBool, err := strconv.ParseBool(strings.ToLower(str))
 | |
| 	if err != nil {
 | |
| 		return false, err
 | |
| 	}
 | |
| 	return restartDeploymentBool, nil
 | |
| }
 | |
| 
 | |
| // formatSecretName rewrites a value to be a valid Secret name.
 | |
| //
 | |
| // The Secret meta.name and data keys must be valid DNS subdomain names
 | |
| // (https://kubernetes.io/docs/concepts/configuration/secret/#overview-of-secrets)
 | |
| func FormatSecretName(value string) string {
 | |
| 	if errs := kubeValidate.IsDNS1123Subdomain(value); len(errs) == 0 {
 | |
| 		return value
 | |
| 	}
 | |
| 	return CreateValidSecretName(value)
 | |
| }
 | |
| 
 | |
| func CreateValidSecretName(value string) string {
 | |
| 	result := strings.ToLower(value)
 | |
| 	result = invalidDNS1123Chars.ReplaceAllString(result, "-")
 | |
| 
 | |
| 	if len(result) > kubeValidate.DNS1123SubdomainMaxLength {
 | |
| 		result = result[0:kubeValidate.DNS1123SubdomainMaxLength]
 | |
| 	}
 | |
| 
 | |
| 	// first and last character MUST be alphanumeric
 | |
| 	return strings.Trim(result, "-.")
 | |
| }
 | |
| 
 | |
| func BuildInjectedOnePasswordItemName(vaultId, injectedId string) string {
 | |
| 	return FormatSecretName(fmt.Sprintf("injectedsecret-%s-%s", vaultId, injectedId))
 | |
| }
 | 
