...

Source file src/edge-infra.dev/pkg/edge/iam/util/url_mask.go

Documentation: edge-infra.dev/pkg/edge/iam/util

     1  package util
     2  
     3  import (
     4  	"net/url"
     5  )
     6  
     7  // MaskURLQuery masks specific url query string values
     8  func MaskURLQuery(originalURL string, keysToMask ...string) (string, error) {
     9  	parsedURL, err := url.Parse(originalURL)
    10  	if err != nil {
    11  		return "", err
    12  	}
    13  
    14  	queryParams := parsedURL.Query()
    15  	for _, key := range keysToMask {
    16  		if value, exists := queryParams[key]; exists {
    17  			for i := range value {
    18  				queryParams[key][i] = maskValue(value[i])
    19  			}
    20  		}
    21  	}
    22  
    23  	parsedURL.RawQuery = queryParams.Encode()
    24  
    25  	return parsedURL.String(), nil
    26  }
    27  
    28  func maskValue(value string) string {
    29  	const defaultMask = "xxxxx" // using `x` because `*` will be encoded
    30  
    31  	if len(value) < 5 {
    32  		return defaultMask
    33  	}
    34  
    35  	maskLength := len(value) - 5
    36  	return defaultMask + value[maskLength:]
    37  }
    38  

View as plain text