30 lines
840 B
Go
30 lines
840 B
Go
package system
|
|
|
|
import (
|
|
"math/rand"
|
|
"regexp"
|
|
"strings"
|
|
)
|
|
|
|
var ipTrimRegex = regexp.MustCompile(`(:\d*)?$`)
|
|
|
|
const characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
|
|
|
|
// RandomString generates a random string of alpha-numeric characters using a
|
|
// pseudo-random number generator. The output of this function IS NOT cryptographically
|
|
// secure, it is used solely for generating random strings outside a security context.
|
|
func RandomString(n int) string {
|
|
var b strings.Builder
|
|
b.Grow(n)
|
|
for i := 0; i < n; i++ {
|
|
b.WriteByte(characters[rand.Intn(len(characters))])
|
|
}
|
|
return b.String()
|
|
}
|
|
|
|
// TrimIPSuffix removes the internal port value from an IP address to ensure we're only
|
|
// ever working directly with the IP address.
|
|
func TrimIPSuffix(s string) string {
|
|
return ipTrimRegex.ReplaceAllString(s, "")
|
|
}
|