PortAllocator: Generate crypto random string as secret
Change-Id: Icbeaa14e39c19507107444d1a358287819525696
diff --git a/core/port-allocator/.gitignore b/core/port-allocator/.gitignore
index ea6b1d9..62f1928 100644
--- a/core/port-allocator/.gitignore
+++ b/core/port-allocator/.gitignore
@@ -1 +1,2 @@
-server*
\ No newline at end of file
+server*
+port-allocator*
\ No newline at end of file
diff --git a/core/port-allocator/go.mod b/core/port-allocator/go.mod
index 4e1db75..a672f90 100644
--- a/core/port-allocator/go.mod
+++ b/core/port-allocator/go.mod
@@ -1,6 +1,6 @@
module github.com/giolekva/pcloud/core/port-allocator
-replace github.com/giolekva/pcloud/core/installer => /Users/lekva/dev/src/pcloud/core/installer
+replace github.com/giolekva/pcloud/core/installer => ../installer
go 1.22.0
diff --git a/core/port-allocator/go.sum b/core/port-allocator/go.sum
index ae2ebc8..390520e 100644
--- a/core/port-allocator/go.sum
+++ b/core/port-allocator/go.sum
@@ -51,8 +51,8 @@
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
-github.com/onsi/gomega v1.30.0 h1:hvMK7xYz4D3HapigLTeGdId/NcfQx1VHMJc60ew99+8=
-github.com/onsi/gomega v1.30.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
+github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI=
+github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M=
github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4=
github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
diff --git a/core/port-allocator/main.go b/core/port-allocator/main.go
index d99550b..6b4fd47 100644
--- a/core/port-allocator/main.go
+++ b/core/port-allocator/main.go
@@ -20,6 +20,10 @@
"golang.org/x/crypto/ssh"
)
+const (
+ secretLength = 20
+)
+
var port = flag.Int("port", 8080, "Port to listen on")
var repoAddr = flag.String("repo-addr", "", "Git repository address where Helm releases are stored")
var sshKey = flag.String("ssh-key", "", "Path to SHH key used to connect with Git repository")
@@ -280,7 +284,11 @@
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
- secret := generateSecret()
+ secret, err := generateSecret()
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
s.reserve[port] = secret
go func() {
time.Sleep(30 * time.Minute)
@@ -360,9 +368,13 @@
return soft.NewRepoIO(repo, signer)
}
-func generateSecret() string {
- // TODO(gio): implement
- return "foo"
+func generateSecret() (string, error) {
+ b := make([]byte, secretLength)
+ _, err := rand.Read(b)
+ if err != nil {
+ return "", fmt.Errorf("error generating secret: %v", err)
+ }
+ return string(b), nil
}
func main() {
diff --git a/core/port-allocator/main_test.go b/core/port-allocator/main_test.go
index ce9d3ff..caf2d51 100644
--- a/core/port-allocator/main_test.go
+++ b/core/port-allocator/main_test.go
@@ -163,3 +163,11 @@
t.Fatalf("Expected %d, got %d", http.StatusConflict, resp.StatusCode)
}
}
+
+func TestGenerateSecret(t *testing.T) {
+ secret, err := generateSecret()
+ if err != nil {
+ t.Fatalf("Error generating secret: %v", err)
+ }
+ t.Logf("Generated secret: %s", secret)
+}