From 170b2f3383598fd32cff347c6568a664fa8375bc Mon Sep 17 00:00:00 2001 From: Adrien Delorme Date: Mon, 3 Sep 2018 14:26:07 +0200 Subject: [PATCH] builder/azure/common.RandomString-> common/random.String * to share them * also removed unused PassworString func & arm.TempPasswordAlphabet package const --- builder/azure/arm/tempname.go | 10 ++--- builder/azure/common/randomstring.go | 45 ----------------------- builder/azure/common/randomstring_test.go | 15 -------- common/random/string.go | 29 +++++++++++++++ 4 files changed, 33 insertions(+), 66 deletions(-) delete mode 100644 builder/azure/common/randomstring.go delete mode 100644 builder/azure/common/randomstring_test.go create mode 100644 common/random/string.go diff --git a/builder/azure/arm/tempname.go b/builder/azure/arm/tempname.go index 501dfda65..0ddc5542a 100644 --- a/builder/azure/arm/tempname.go +++ b/builder/azure/arm/tempname.go @@ -4,7 +4,7 @@ import ( "fmt" "strings" - "github.com/hashicorp/packer/builder/azure/common" + "github.com/hashicorp/packer/common/random" ) const ( @@ -13,8 +13,6 @@ const ( numbers = "0123456789" lowerCase = "abcdefghijklmnopqrstuvwxyz" upperCase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - - TempPasswordAlphabet = numbers + lowerCase + upperCase ) type TempName struct { @@ -34,7 +32,7 @@ type TempName struct { func NewTempName() *TempName { tempName := &TempName{} - suffix := common.RandomString(TempNameAlphabet, 10) + suffix := random.String(TempNameAlphabet, 10) tempName.ComputeName = fmt.Sprintf("pkrvm%s", suffix) tempName.DeploymentName = fmt.Sprintf("pkrdp%s", suffix) tempName.KeyVaultName = fmt.Sprintf("pkrkv%s", suffix) @@ -46,7 +44,7 @@ func NewTempName() *TempName { tempName.ResourceGroupName = fmt.Sprintf("packer-Resource-Group-%s", suffix) tempName.AdminPassword = generatePassword() - tempName.CertificatePassword = common.RandomString(TempPasswordAlphabet, 32) + tempName.CertificatePassword = random.AlphaNum(32) return tempName } @@ -60,7 +58,7 @@ func NewTempName() *TempName { func generatePassword() string { var s string for i := 0; i < 100; i++ { - s := common.RandomString(TempPasswordAlphabet, 32) + s := random.AlphaNum(32) if !strings.ContainsAny(s, numbers) { continue } diff --git a/builder/azure/common/randomstring.go b/builder/azure/common/randomstring.go deleted file mode 100644 index a81f5b3c4..000000000 --- a/builder/azure/common/randomstring.go +++ /dev/null @@ -1,45 +0,0 @@ -package common - -import ( - "math/rand" - "os" - "time" -) - -var pwSymbols = []string{ - "abcdefghijklmnopqrstuvwxyz", - "ABCDEFGHIJKLMNOPQRSTUVWXYZ", - "0123456789", -} - -var rnd = rand.New(rand.NewSource(time.Now().UnixNano() + int64(os.Getpid()))) - -func RandomString(chooseFrom string, length int) (randomString string) { - cflen := len(chooseFrom) - for i := 0; i < length; i++ { - randomString += string(chooseFrom[rnd.Intn(cflen)]) - } - return -} - -func RandomPassword() (password string) { - pwlen := 15 - batchsize := pwlen / len(pwSymbols) - pw := make([]byte, 0, pwlen) - // choose character set - for c := 0; len(pw) < pwlen; c++ { - s := RandomString(pwSymbols[c%len(pwSymbols)], rnd.Intn(batchsize-1)+1) - pw = append(pw, []byte(s)...) - } - // truncate - pw = pw[:pwlen] - - // permute - for c := 0; c < pwlen-1; c++ { - i := rnd.Intn(pwlen-c) + c - x := pw[c] - pw[c] = pw[i] - pw[i] = x - } - return string(pw) -} diff --git a/builder/azure/common/randomstring_test.go b/builder/azure/common/randomstring_test.go deleted file mode 100644 index c3e0fae51..000000000 --- a/builder/azure/common/randomstring_test.go +++ /dev/null @@ -1,15 +0,0 @@ -package common - -import ( - "testing" -) - -func TestRandomPassword_generates_15char_passwords(t *testing.T) { - for i := 0; i < 100; i++ { - pw := RandomPassword() - t.Logf("pw: %v", pw) - if len(pw) != 15 { - t.Fatalf("len(pw)!=15, but %v: %v (%v)", len(pw), pw, i) - } - } -} diff --git a/common/random/string.go b/common/random/string.go new file mode 100644 index 000000000..d068cf9d7 --- /dev/null +++ b/common/random/string.go @@ -0,0 +1,29 @@ +package random + +import ( + "math/rand" + "os" + "time" +) + +var ( + numbers = "0123456789" + lowerCase = "abcdefghijklmnopqrstuvwxyz" + upperCase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + + alphaNum = numbers + lowerCase + upperCase +) + +var rnd = rand.New(rand.NewSource(time.Now().UnixNano() + int64(os.Getpid()))) + +func AlphaNum(length int) string { + return String(alphaNum, length) +} + +func String(chooseFrom string, length int) (randomString string) { + cflen := len(chooseFrom) + for i := 0; i < length; i++ { + randomString += string(chooseFrom[rnd.Intn(cflen)]) + } + return +}