From 28b2b627f1419a234b7a3ed6ee9dee884e5e08e6 Mon Sep 17 00:00:00 2001 From: Relentless Date: Mon, 20 Jul 2026 00:42:28 +0000 Subject: [PATCH] fix: add .dockerignore, rand.Read error handling - Add .dockerignore to reduce Docker build context - Handle crypto/rand.Read errors in auth package (New, GenerateToken, GenerateOTP, GenerateHandle) --- .dockerignore | 9 +++++++++ internal/auth/auth.go | 16 ++++++++++++---- 2 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..05cd004 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,9 @@ +.git +.gitignore +docs/ +*.md +LICENSE +VERSION +dist/ +*.json +*.exe diff --git a/internal/auth/auth.go b/internal/auth/auth.go index fa8c90c..97def73 100644 --- a/internal/auth/auth.go +++ b/internal/auth/auth.go @@ -18,7 +18,9 @@ func New(secret string) *AuthService { if secret == "" { // Generate a random secret b := make([]byte, 32) - rand.Read(b) + if _, err := rand.Read(b); err != nil { + panic(fmt.Sprintf("crypto/rand failed: %v", err)) + } secret = hex.EncodeToString(b) } return &AuthService{secret: secret} @@ -27,7 +29,9 @@ func New(secret string) *AuthService { // GenerateToken creates a new bearer token. func (a *AuthService) GenerateToken(workspace string) string { b := make([]byte, 24) - rand.Read(b) + if _, err := rand.Read(b); err != nil { + panic(fmt.Sprintf("crypto/rand failed: %v", err)) + } h := sha256.Sum256(append(b, []byte(a.secret)...)) return "tp_" + hex.EncodeToString(h[:16]) } @@ -35,7 +39,9 @@ func (a *AuthService) GenerateToken(workspace string) string { // GenerateOTP creates a 6-digit OTP code. func (a *AuthService) GenerateOTP() string { b := make([]byte, 4) - rand.Read(b) + if _, err := rand.Read(b); err != nil { + panic(fmt.Sprintf("crypto/rand failed: %v", err)) + } val := uint32(b[0])<<24 | uint32(b[1])<<16 | uint32(b[2])<<8 | uint32(b[3]) code := fmt.Sprintf("%06d", val%1000000) return code @@ -45,7 +51,9 @@ func (a *AuthService) GenerateOTP() string { func GenerateHandle(prefix string) string { const charset = "abcdefghijklmnopqrstuvwxyz0123456789" b := make([]byte, 5) - rand.Read(b) + if _, err := rand.Read(b); err != nil { + panic(fmt.Sprintf("crypto/rand failed: %v", err)) + } for i := range b { b[i] = charset[int(b[i])%len(charset)] }