33 lines
640 B
Go
33 lines
640 B
Go
package pxndscvm
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"encoding/binary"
|
|
)
|
|
|
|
const (
|
|
grn = "\033[32m"
|
|
red = "\033[31m"
|
|
ylw = "\033[33m"
|
|
rst = "\033[0m"
|
|
)
|
|
|
|
// randStrChoice returns a random element from the given string slice
|
|
func randStrChoice(choices []string) string {
|
|
strlen := len(choices)
|
|
n := uint32(0)
|
|
if strlen > 0 {
|
|
n = getRandomUint32() % uint32(strlen)
|
|
}
|
|
return choices[n]
|
|
}
|
|
|
|
// getRandomUint32 retrieves a cryptographically sound random 32 bit unsigned little endian integer
|
|
func getRandomUint32() uint32 {
|
|
b := make([]byte, 8192)
|
|
if _, err := rand.Read(b); err != nil {
|
|
panic(err)
|
|
}
|
|
return binary.LittleEndian.Uint32(b)
|
|
}
|